Mi piacerebbe costruire un sistema semplice, ci sono evidenti difetti di sicurezza in esso? Questo meccanismo di hashing sarà abbastanza sicuro senza altri livelli di crittografia?
Ho un semplice modulo in cui le persone possono inserire i codici e un server che mantiene un elenco di codici consentiti (che vengono utilizzati solo una volta e ne vengono aggiunti di nuovi, ma non riutilizzati). Supponiamo che la connessione wifi tra il modulo e il server non sia sicura.
Ecco i passaggi che il codice viene verificato:
- il modulo invia un hash sha1 del codice al server
- (se valido) il server risponde con un hash sha1 del codice + un salt codificato (noto al modulo, ma sconosciuto agli hacker)
- il modulo può verificarlo e accettare o rifiutare l'utente
(La ragione per cui solo gli hash sono usati è quindi impossibile per un hacker trasmettere un messaggio Allow / Deny direttamente al modulo. Viene usato un salt, è così che gli middle-men non possono inserire un codice casuale e poi trasmettere il proprio hash di sha1)
Sto evitando la complessità di SSL perché il modulo verrà eseguito su un sistema embedded estremamente semplice senza OS.
Esempio aggiornato che ha più senso: Consentire ai corrieri UPS di scansionare il numero di tracking dei pacchi per sbloccare una porta in modo che possano lasciare il pacco. Solo i numeri di tracciamento conosciuti sono consentiti in modo che i ladri non possano semplicemente eseguire la scansione di un pacchetto irrilevante per entrare in azione.
Note :
- Suppongo che "password" non sia la parola giusta, è solo codici di utilizzo monouso. Sì, il sale è hard-coded e spero di evitare la crittografia. Il motivo per cui è stato inviato il codice è che, indipendentemente da ciò che un hacker potrebbe trasmettere al modulo, sarà impossibile autenticarlo a meno che non conosca il sale.
- Per quanto riguarda dove avviene l'autenticazione: il server saprà se il codice è valido o meno, ma il modulo accetterà solo il codice hash di sale + in modo che il modulo sappia che la risposta proviene dal server e non dagli hacker, e anche così gli hacker non riescono a capire il sale.