Estoy usando un Arduino Uno y un La placa nRF8001 de Adafruit se conecta a un teléfono Android a través de Bluetooth. Lo utilizaré para bloquear y desbloquear un bloqueo y debo asegurarme de que solo los dispositivos verificados puedan iniciar el bloqueo y desbloqueo. He buscado alrededor de un grupo y tengo problemas para encontrar un ejemplo claro de lo que debo hacer para verificar el dispositivo de conexión. Actualmente tengo el Arduino conectado al bloqueo y cada vez que el teléfono Android se conecta, se puede bloquear y desbloquear.
Soy bastante nuevo en criptografía y alguna orientación sería útil. Por lo que he leído, parece que el hashing md5 está roto y no es la solución correcta para mi problema. He encontrado SipHash y parece ser lo más parecido a lo que pueda necesitar. El proceso que tenía en mente es el siguiente.
- Android intenta conectarse al Arduino
- Arduino ve la solicitud y envía una cadena aleatoria al dispositivo Android
- El Android cifra la cadena con una clave secreta compartida y la envía al Arduino
- El Arduino descifra la cadena cifrada y verifica que coincida con el original que envió; si lo hace, sigue adelante y se conecta / continúa con el bloqueo o desbloqueo.
¿Estoy en el camino correcto con SipHash y el proceso anterior? ¿Hay una manera mejor y más común de hacer esto? Después de buscar por aquí encontré información aquí. Parece que debería preocuparme por los ataques del hombre en el medio y la falsificación de MAC. Solo revisaría la dirección MAC como verificación, pero por lo que recuerdo, es muy fácil falsificar las direcciones MAC. Cualquier ayuda sería apreciada.