Hay aplicaciones de banca móvil que utilizan el canal SMS para comunicarse con su servidor. Algunos de ellos ofrecen canales de internet y sms entre los que el cliente puede elegir.
Si bien hay mucha información sobre la comunicación segura a través de Internet (cómo implementar TLS, la fijación de certificados, etc.) por parte de OWASP, Enisa, Gartner y otras organizaciones, parece que faltan guías y tutoriales sobre cómo transmitir los datos de forma segura a través de SMS canal.
Varias opciones me vienen a la mente acerca de la arquitectura segura para la transmisión de datos SMS:
-
PGP como sistema donde la clave pública del servidor se incluye con la aplicación y reside en los teléfonos de los clientes. La aplicación utiliza esta clave y una clave simétrica para cifrar sus datos.
-
Sistema similar a HTTPS en el que cada vez que el cliente y el servidor se comunican, acuerdan una clave de sesión y los datos se cifran con eso.
Otras soluciones donde la clave simétrica se almacena o genera en el lado del cliente y no se usa criptografía de clave pública son generalmente inseguras.
El SMS tiene una duración limitada, por lo que uno de nuestros objetivos en este sistema es mantener los mensajes lo más cortos posible, cuáles son algunas de las formas en que podemos lograr este objetivo sin perder la seguridad del sistema. (¿Hace que la primera opción propuesta (PGP como) sea más adecuada?)
En este escenario, los datos están cifrados tanto por el servidor como por los clientes, la integridad también es nuestra preocupación aquí y queremos mantener el número / longitud de los mensajes transmitidos lo más corto posible para minimizar el tiempo de ida y vuelta y la cantidad de mensajes de texto enviado.