Cifrado adecuado para el cifrado de SMS

11

Me gustaría crear una aplicación para cifrar mensajes SMS. Después de discusiones lo suficientemente largas, decidí usar el cifrado simétrico, ya que manejar el problema de las claves públicas / privadas es demasiado difícil para la mayoría de los usuarios.

Supongo que esa clave secreta debe transferirse a través de la interacción de voz entre partes u otro método.

Mi pregunta es: ¿cuál será el algoritmo adecuado para cifrar SMS? El cifrado debe considerar la longitud máxima de los 160 caracteres del mensaje y aceptar solo los símbolos imprimibles. La fragmentación de mensajes y todo tipo de problemas son inaceptables. Sé que algunos teléfonos pueden combinar automáticamente mensajes fragmentados, pero teniendo en cuenta la gran diversidad de marcas / modelos, es imposible de trabajar.

¿Algún pensamiento, consejo?

    
pregunta barmaley 17.02.2011 - 10:20
fuente

3 respuestas

9

Le insto a revisar su premisa. Si ambos puntos finales tienen una aplicación, entonces sus criterios para la elección del algoritmo no son válidos: la aplicación manejará el cifrado / descifrado, no el usuario. El cifrado de clave pública puede proporcionar una mejor seguridad en este contexto; por ejemplo, puede habilitar la administración de claves de confianza en el primer uso (similar a SSH). Además, le sugiero que comience por pensar primero en el modelo de amenaza. La primera pregunta no debería ser, ¿qué algoritmo criptográfico utilizo? Tu primera pregunta debería ser: ¿contra qué amenazas estoy tratando de defenderme?

Si debe usar cifrado simétrico para textos SMS, AES en modo CBC con robo de texto cifrado es una opción plausible. El robo de texto cifrado evitará el desperdicio si el mensaje que se va a cifrar no es un múltiplo par de 16 bytes. Aún necesitarás un IV, que ocupará un poco de espacio. Para ahorrar espacio, puede enviar un contador y utilizar el cifrado AES del contador como su IV.

Si hay alguna forma de evitar el transporte de textos cifrados a través de SMS, evítelo. 160 caracteres es muy limitante. ¿Puedes transportar mensajes a través de Internet?

Si puede evitar la tunelización a través de SMS, puede explorar un modelo en el que la aplicación tenga su propia clave privada / pública y mantenga una clave pública para cada contacto. Cuando se comunica con alguien nuevo, la aplicación envía su propia clave pública, recibe una clave pública de la otra persona, recuerda esa clave pública y envía el mensaje cifrado con esa clave pública. Por supuesto, esto es vulnerable a los ataques de intermediarios, pero puede ser más fácil de usar.

    
respondido por el D.W. 17.02.2011 - 20:29
fuente
4

Si está intentando una diversidad de marcas y modelos, simplemente no va a funcionar, aunque muchos teléfonos inteligentes permiten que software de terceros envíen mensajes SMS a través de pasarelas de Internet, todos menos los sistemas operativos más abiertos. no permita que software de terceros maneje mensajes SMS entrantes.

Sin embargo, si ignoramos la imposibilidad, 128 AES debería funcionar bien. Eso te dará un texto cifrado no más grande que el texto simple; 8 de los cuales pueden caber en un SMS de 140 bytes. Al usar la codificación de caracteres de SMS, eso significa que todavía tiene 146 caracteres de mensaje.

Ya que especificó el cifrado simétrico, ¡estoy más que contento de dejar el problema de la distribución de claves a su disposición!

    
respondido por el user502 17.02.2011 - 15:11
fuente
0

Deberá usar AES o una combinación de AES + RSA. Ahora viene el tema de los 160 caracteres. En realidad, la carga útil disponible es de sólo 140 bytes. En móviles (GSM o CDMA); Los 140 bytes disponibles están codificados en una codificación de 7 bits, lo que permite colocar 160 caracteres en 140 bytes.

Ahora, ya que SMS es el canal y el cifrado debe realizarse, el modo de comunicación ya no puede ser un mensaje de texto sino un mensaje binario. Un mensaje binario tomará 7 bytes adicionales para UDH (encabezado de datos de usuario). Por lo tanto, la cantidad de caracteres con los que puede operar es de solo 133.

Creo que si está utilizando un canal SMS, necesita una aplicación en ambos extremos. Puede utilizar mensajes basados en el puerto; mediante el cual el mensaje será procesado directamente por la aplicación final y no por la bandeja de entrada nativa.

Una de las ventajas del canal SMS es el protocolo de almacenamiento y reenvío, significa que las posibilidades de que otra parte reciba el mensaje son altas, el problema es el retraso y las limitaciones de la carga útil. Al usar la segmentación a nivel de aplicación, también podría enviar mensajes largos.

Otra ventaja del canal SMS, es que en una comunicación bidireccional, se confirmará que la parte de confianza real solo está involucrada en la mensajería. A puede simular ser B mientras envía un SMS a C; pero cuando C responde, siempre irá a A solamente. Por lo tanto, utilizando las negociaciones bidireccionales, puede crear un algoritmo de generación de claves e intercambio para la comunicación mutua.

    
respondido por el Mohit Sethi 22.06.2012 - 11:32
fuente

Lea otras preguntas en las etiquetas