Autenticación de un dispositivo antes de aceptar datos de él

1

La situación es la siguiente: un dispositivo USB está conectado a una computadora y envía datos a un software específico, que solo debería aceptar estos datos si el dispositivo de envío fue validado / autenticado por él anteriormente.

Como cualquier persona puede realizar ingeniería inversa sobre lo que está haciendo el software (con más o menos esfuerzo), el código fuente del software se considera público por ahora.

El software del dispositivo, por supuesto, tampoco es 100% seguro y puede tener ingeniería inversa, pero abrir algunos chips, etc. tomaría mucho más tiempo y esfuerzo, por lo tanto, el dispositivo (y su software) es considerado privado.

Ni la computadora ni el dispositivo están conectados a Internet.

¿Tiene alguna idea de cómo se puede realizar el proceso de autenticación sin que el software de la computadora contenga alguna parte crítica (que podría ser invertida y reconstruida, lo que lleva a una autenticación positiva de un dispositivo USB "falso" y ¿El software acepta datos falsos?

¡Gracias a todos por su ayuda!

    
pregunta Alexander K. 20.07.2017 - 02:01
fuente

1 respuesta

1

Lo que está describiendo es cómo algunas tarjetas inteligentes realizan verificaciones de autenticación. En su caso, sin embargo, la tarjeta inteligente es un dispositivo USB. El enfoque es similar:

Autenticación unidireccional

Si solo el dispositivo USB tiene que demostrar su identidad, debe implementar un esquema de autenticación que se ejecute antes de que se realice el intercambio de datos. Los dispositivos USB almacenan una clave privada que puede usar para probar su identidad. Por ejemplo, la computadora envía un desafío al dispositivo USB, el dispositivo envía una respuesta firmada con su clave privada. La computadora (que conoce la clave pública del dispositivo USB) ahora puede verificar si se está comunicando con el dispositivo USB: solo el dispositivo "real" conocerá la clave privada y, por lo tanto, solo este dispositivo puede producir una respuesta válida a la reto.

Puede considerar un par de clave privada / pública codificado de manera rígida si desea implementar esta solución en una pequeña cantidad de dispositivos. Si desea implementar esta solución en una escala mayor o en un entorno más dinámico, puede considerar el uso de certificados (por ejemplo, X.509), como TLS hace.

Como se anotó deviantfan , consciente de que la revocación de claves / certificados puede convertirse en un problema bajo sus condiciones.

Autenticación bidireccional

Si desea una autenticación mutua (es decir, el dispositivo USB y la computadora tienen que demostrar sus identidades entre sí), se vuelve un poco más complejo. En este caso, la computadora también debe tener un par de claves privada / pública, y el dispositivo USB debe ser consciente de ello. Además de los pasos de autenticación mencionados anteriormente, el dispositivo USB ahora debe verificar si la computadora produjo una respuesta válida a su desafío.

    
respondido por el Wietze 20.07.2017 - 18:03
fuente

Lea otras preguntas en las etiquetas