Is there a way, to know, undeniably, from the communication, that the party is the agent, without storing cryptographic keys on the agent locally?
Bene, se l'agente deve utilizzare il segreto per autenticarsi sul server, allora l'agente deve avere qualche forma di accesso al segreto al momento dell'autenticazione ed è vulnerabile agli attacchi di rappresentazione a almeno durante questo periodo. Quindi è davvero una domanda su come possiamo:
- Riduci al minimo il modulo dell'accesso dell'agente al segreto;
- Riduci al minimo l'intervallo che il segreto è disponibile pure.
Una tecnica per fare # 1 è dare all'agente un modulo di sicurezza hardware - un modulo hardware isolato e rinforzato che genera e memorizza le chiavi, ma non consente ai segreti di fuggire da esso. In questo caso, l'agente non può effettivamente vedere le chiavi segrete: tutto ciò che può fare è inviare i dati all'HSM e richiederne l'esecuzione con le chiavi memorizzate.
Una rapida ricerca di "modulo di sicurezza hardware Raspberry Pi" mostra alcuni link, che potresti voler leggere. ( Questo è quello che ho trovato più interessante, personalmente.) potrebbe anche voler cercare informazioni sull'interfacciamento di Raspberry Pi con smartcard o dispositivi come Yubikeys, che sono anche processori crittografici esterni.
Una tecnica per # 2 è di proteggere il segreto di autenticazione primario dell'agente con un segreto o fattore secondo , esterno all'agente. Una soluzione potrebbe essere:
- Proteggere con password la chiave di autenticazione dell'agente, ad esempio utilizzando la crittografia basata su password;
- Prestare molta attenzione che l'agente non memorizzi copie di password o segreti di lunga durata; cancellali immediatamente dalla memoria non appena hai finito con loro.
Il lato negativo qui è che quando è richiesta l'autenticazione, l'utente deve inserire la password.
Per un'applicazione reale di queste idee, prendi in considerazione Guida alla sicurezza iOS di Apple . Le chiavi principali del telefono o del tablet si trovano all'interno di "Secure Enclave" (un HSM):
The Secure Enclave is a coprocessor fabricated in the Apple A7 or later A-series processor. It uses encrypted memory and includes a hardware random number generator. The Secure Enclave provides all cryptographic operations for Data Protection key management and maintains the integrity of Data Protection even if the kernel has been compromised. Communication between the Secure Enclave and the application processor is isolated to an interrupt-driven mailbox and shared memory data buffers. [p. 7]
Quando il telefono è bloccato, scarta o crittografa le chiavi master in modo che le applicazioni non possano eseguire operazioni con loro:
If Touch ID is turned off, when a device locks, the keys for Data Protection class Complete, which are held in the Secure Enclave, are discarded. The files and keychain items in that class are inaccessible until the user unlocks the device by entering their passcode. [p. 9]