Tengo un dispositivo de hardware (H)
, teléfono (P)
y servidor web (S)
. Me gustaría que P
pueda enviar comandos a H
, pero solo si está autorizado para hacerlo. Los permisos se almacenan en el servidor. Técnicamente podría hacer esto con Kerberos, pero eso parece una exageración. El protocolo que tengo actualmente es el siguiente:
- P solicita nonce desde H (prevenir ataque de repetición)
- H envía nonce a P
- P reenvía nonce, junto con el comando que desea enviar a H, a S
- Si P tiene permiso para ejecutar el comando en H, S envía Encrypt (Nonce | Command) al teléfono. Esto se cifra con una clave que H y S comparten de antemano. (P se autentica a S con nombre de usuario / contraseña)
- P reenvía Encrypt (Nonce | Command) a H.
- H descifra y verifica nonce. Si es correcto, ejecuta el comando.
¿Esto es seguro? Sé que no deberías crear protocolos tú mismo, así que tengo curiosidad por saber si esto ya existe y si se usa en otros lugares.