Conexión segura entre dos dispositivos móviles (Android y / o iOS)

5

Tengo un Device A que se comunicará con varios dispositivos en una red (BLE y / o NFC).

Todos los dispositivos se manejarán con un Token tras la autenticación, que de alguna manera debe transferirse al Device A a través de la red de forma segura y confidencial.

¿Cuál es la mejor manera de lograrlo? Supongo que algo como el protocolo de enlace SSL será seguro, pero se preferirá una solución más simple.

Básicamente, Device A necesita actuar como un servidor.

La investigación realizada hasta ahora me ha llevado al siguiente flujo:

  • Device A logra enviar una clave pública al cliente.
  • El cliente usa la clave para cifrar el Token y enviarlo a Device A .
  • Solo Device A puede leer Token y autenticar al cliente.

Problemas con este enfoque (y sus soluciones, según mi conocimiento limitado al tratar con sistemas de seguridad):

  • El token es el mismo y la clave pública también podría repetirse, dando un punto débil en el sistema.

    • El token se transferirá a través de la red con un nonon.
  • Ataque MIM : cualquier Device X puede imitar a Device A y enviar una clave pública al cliente e iniciar la transacción. Ahora Device X conoce el Token e imita al cliente.

    • El Device A debe poseer algún tipo de certificado digital para demostrar su autenticidad. El certificado digital será asignado por un servidor escrito en Python / Django. Y todos los clientes deberían poder verificar el certificado sin interactuar con el servidor.

Preocupaciones:

  • Ya que necesito esto para dispositivos móviles, necesito que el par de claves privadas públicas sea lo más corto posible pero seguro.

Preguntas:

  • ¿Cómo puedo implementar el algoritmo de la última parte? ¿Hay alguna biblioteca de Python de código abierto disponible para generar, emitir y verificar certificados?
  • ¿Es seguro el algoritmo? Soy un novato en seguridad y me gustaría recibir comentarios valiosos.

¡Gracias de antemano!

    
pregunta Ankit Popli 21.04.2015 - 20:40
fuente

1 respuesta

1

Suena como un proyecto muy bueno. Parece que has redescubierto el mismo problema que Kerberos fue diseñado para resolver.

Mirando tu ejemplo, ¿por qué no usarías PKI de ambas maneras? ¿O no puedes controlar los certificados en ambos extremos? Puede consultar la inicialización de la sesión SSL para ver cómo puede transferir un mensaje confidencial bajo la mirada de un director.

Si está implementando su propia solución, encontrará que el almacenamiento seguro de claves es un problema muy difícil de superar.

EDITAR: Para abordar su preocupación bien pensada, la criptografía de curva elíptica se usa a menudo en dispositivos móviles debido a las limitaciones computacionales .

    
respondido por el M15K 21.04.2015 - 21:06
fuente

Lea otras preguntas en las etiquetas