Usar TOTP en lugar de contraseñas para la autenticación de dispositivos IoT

2

Estoy tratando de encontrar una forma de autenticar un dispositivo IoT en un servidor. Dado que el dispositivo no está "monitoreado", no puedo esperar que un usuario ingrese una contraseña en el dispositivo cada vez que el dispositivo se inicie o reinicie.

No me preocupa demasiado el robo de dispositivos, pero me preocupa que el dispositivo se clone y que la copia se haga pasar por el original.

El dispositivo ejecutará Android y, según tengo entendido, es difícil copiar el almacén de claves de Android (corríjame si me equivoco). Se puede solicitar al almacén de claves que firme un valor HMAC, sin exponer la clave de firma.

  • Si utilizo una clave secreta regular como contraseña de autenticación, esa clave se puede extraer del almacén de claves y copiar al clon.
  • Si, por el contrario, uso TOTP, puedo presentar el valor de tiempo actual en el almacén de claves y hacer que HMAC tenga ese valor, luego continuar con el resto del protocolo TOTP, como se define en RFC 6238 .
  • Puedo usar el cifrado de clave pública y hacer que el almacén de claves firme algún valor (como "sí, soy yo"), y luego hacer que el servidor verifique que la firma es válida, pero eso sería vulnerable a un administrador. Ataque central seguido de un ataque de repetición. Podría hacer que el dispositivo firme un desafío proporcionado por el servidor, pero eso requiere un viaje de ida y vuelta extra para cada autenticación.

Planeo usar TLS para todas las conexiones.

Vi las respuestas en " ¿Cuáles son las implicaciones de seguridad de usar TOTP para la autenticación de un solo factor? " , pero quiero confirmar que estoy seleccionando un esquema razonable para IoT.

¿Son correctas mis suposiciones? ¿Existe una forma mejor y más segura de autenticar un dispositivo?

    
pregunta Ralph 05.05.2016 - 18:21
fuente

1 respuesta

3

Si asumimos que el almacén de claves es seguro y que las claves no pueden copiarse ni extraerse, pero puede realizar HMAC-SHA (1), entonces podría pensar en usar TOTP.

Pero también recomendaría echar un vistazo a OCRA . Aquí puedes hacer un verdadero desafío firmando. O bien solo hace una firma de desafío o puede agregar tiempo o un contador. De esta manera, no tendrías problemas con un cambio de reloj.

Pero ¿por qué no usar criptografía de clave pública? Si el almacén de claves también puede almacenar una clave privada RSA, probablemente me gustaría firmar el desafío con una clave privada.

Si todavía va con TOTP o OCRA, también puede querer echar un vistazo a privacyIDEA , que puede ayudarlo a administrar todos los claves secretas de tus dispositivos.

    
respondido por el cornelinux 05.05.2016 - 19:02
fuente

Lea otras preguntas en las etiquetas