Ho un dispositivo hardware (H)
, telefono (P)
e server web (S)
. Vorrei che P
sia in grado di inviare comandi a H
, ma solo se è autorizzato a farlo. Le autorizzazioni sono memorizzate sul server. Tecnicamente potrei farlo con Kerberos, ma sembra eccessivo. Il protocollo che attualmente ho è il seguente:
- P richiede nonce da H (previene l'attacco di replay)
- H invia nonce a P
- P inoltra nonce, insieme al comando che desidera inviare a H, a S
- Se P ha il permesso di eseguire il comando su H, S invia Encrypt (Nonce | Command) al telefono. Questo è crittografato con una chiave che H e S condividono in anticipo. (P si autentica su S con nome utente / password)
- P inoltra Criptare (Nonce | Comando) su H.
- H decodifica e verifica nonce. Se corretto, esegue il comando.
Questo è sicuro? So che non dovresti creare protocolli tu stesso quindi sono curioso di sapere se questo esiste già e se è usato in altri posti?