Quindi penso che, data la mancanza di sicurezza fisica dei dispositivi, qualunque cosa tu faccia sarà solo il miglior sforzo. Non puoi semplicemente impedire a qualcuno di rimuovere il dispositivo, leggere i dati, modificarlo, ecc ... Prendiamolo come dato e andare avanti.
Questa soluzione utilizza HMAC . Un HMAC prende due input, una stringa e un segreto, e produce una stringa di output che è crittograficamente difficile / impossibile da falsificare senza conoscere il segreto.
Metti su tutti i dispositivi un segreto condiviso (lo stesso) che è anche conosciuto dagli amministratori dei dispositivi (sono loro che forniscono informazioni di autenticazione ai tecnici). Poiché il dispositivo non è fisicamente sicuro, l'archiviazione del segreto sarà meno perfetta, ma abbiamo già convenuto che saremmo stati d'accordo con questo.
Un amministratore darà a un utente un nome utente e una password. La password sarà il risultato di HMAC(secret, username)
(probabilmente troncato a una lunghezza ragionevole). Quando l'utente accede a un dispositivo, inserirà il nome utente e la password. Il dispositivo ricalcolerà l'HMAC, lo troncerà alla lunghezza appropriata e lo confronterà con la password dell'utente.
A seconda delle tue esigenze, puoi apportare alcune modifiche al sistema:
- Invece di memorizzare lo stesso segreto su ogni dispositivo, puoi memorizzare diversi segreti. Ciò, ovviamente, aumenterà i costi di amministrazione, ma aggiungerà un po 'di sicurezza. Puoi assegnare a ciascun dispositivo i propri dispositivi segreti o di gruppo per posizione geografica, data di pubblicazione o altri mezzi.
- Insieme al nome utente e alla password, è possibile fornire a ciascun utente una data di scadenza della password. Avrebbero quindi inserito il nome utente, la password e la data di scadenza al momento del login. La loro password sarebbe
HMAC(secret, username + expiration date)
. Il vantaggio di questo è che le password si esauriscono in modo naturale, quindi una password scoperta non ti perseguiterà per sempre. Lo svantaggio è che gli utenti dovranno continuamente ottenere nuove password. Diversamente dalla scadenza tipica della password, gli utenti dovranno contattare gli amministratori per ottenere la loro nuova password. Anche in questo caso la mancanza di sicurezza fisica può consentire agli aggressori di ripristinare la data sul dispositivo, riattivando una password scaduta. Ancora una volta, abbiamo convenuto che la sicurezza perfetta non sarebbe possibile senza la sicurezza dell'hardware.
- A seconda della flessibilità del dispositivo, è possibile spostare le credenziali su un'unità USB, una scheda SD o un altro dispositivo che può essere utilizzato per l'autenticazione. Una chiave USB crittografata come questa ti fornirà l'autenticazione a 2 fattori.
- Con ogni utente con un accesso univoco, è possibile implementare un tipo di controllo.
I notevoli problemi con questo sistema includono:
- Impossibilità di disabilitare una password. Anche se si utilizza l'estensione di data, è necessario attendere la scadenza della password.
- A meno che non si utilizzi una chiave USB sicura (o dispositivo di sicurezza simile) per l'autenticazione, è ancora aperto agli utenti che creano file "passwords.txt".
- La mancanza di sicurezza hardware riduce notevolmente gli sforzi di sicurezza.