Debo implementar un sistema donde los dispositivos Android se conecten a un servidor central y tengan que registrarse con diferentes cuentas de usuario, por lo que he decidido crear un dance similar al que se puede observar en bluetooth. emparejamiento, o software como el emparejamiento remoto de Apple con la biblioteca de itunes. Estoy buscando información sobre qué algoritmos de cifrado se pueden usar durante esta comunicación utilizando un canal de comunicación separado para la clave de cifrado. El algoritmo que he pensado seguiría estos pasos:
- El dispositivo se enciende y llama a un servidor fijo para anunciar a sí mismo.
- El dispositivo muestra algunos números aleatorios en la pantalla (por ejemplo, 392582).
- El usuario debe iniciar sesión en el servidor con un navegador web en su cuenta y escribir la secuencia numérica que se ve en el dispositivo (se puede hacer en el propio dispositivo Android).
Durante el paso 1, el cliente se comunicaría con el servidor a través de SSL. El número que se muestra al usuario en el paso 2 formará parte de una cadena estática predeterminada más larga que se incluirá como hash. El servidor y el cliente intercambiarían el hash y verificarían que es el mismo. Si lo es, significa que el emparejamiento está bien. Algunas preguntas me persiguen:
- ¿Esto es realmente un sonido o los dispositivos de emparejamiento se realizan de otras maneras?
- ¿El hash MD5 es suficiente para esto o debo usar otros hashes?
- ¿Qué tiempo y caducidad debe tener el código de la pantalla para evitar colisiones con otros usuarios potenciales?
- ¿Qué mejoras se pueden hacer para mejorar la autenticidad de la conexión? He pensado en reemplazar la cadena estática más larga predeterminada por el hash con una cadena aleatoria. El cliente enviaría la semilla del generador de números aleatorios durante el primer paso. Un hombre en el medio todavía lo conseguiría, pero ¿esto reduciría las colisiones de hash con otros usuarios?
- Carezco de la jerga de seguridad técnica, tal vez este sea un proceso bien estudiado y existan toneladas de artículos de wikipedia en él. La información en wikipedia sobre emparejamiento / vinculación de bluetooth no proporciona demasiados detalles técnicos sobre la implementación. ¿Dónde debería mirar?