Se riesci a rompere questo sistema di autenticazione, puoi entrare nella mia casa

1

Prevedo questo dicendo che conosco circa 0 su cyber-sec

Ho creato un server che consentirà agli smartphone di fungere da telecomando per la mia casa (es. accendere / spegnere le luci e sbloccare le porte). Ovviamente la sicurezza di questo server è molto importante per me. Mi piacerebbe anche che la latenza sull'app fosse la più bassa possibile, quindi ho progettato il sistema per ridurre al minimo il numero di chiamate distinte al server. Se qualcuno di voi potrebbe segnalare eventuali vulnerabilità e / o passaggi non necessari, lo apprezzerei:

Un messaggio al server assume la forma di una richiesta di ottenimento per

/[username]/[command]/[random noise]/[signature]

Sto usando Sha256 come funzione hash. la firma è calcolata con

Sha256( Sha256( [username]+[password]+[command]+[random noise] ) + [previous successful signature] )

+ in questo contesto significa concatenazione

Se in qualsiasi momento perdi traccia della precedente firma andata a buon fine, puoi richiederla. Cioè, la precedente firma di successo è di pubblico dominio (e ovviamente quella firma non funzionerà due volte di seguito).

Per quanto posso supporre, non sono vulnerabile a un attacco di replay (come il prev sig contribuisce al prossimo sig) né a un attacco di estensione della lunghezza (poiché l'aggiunta al messaggio non aiuta e anche se lo facevi tu potrebbe solo aggiungere Sha256 interno anziché dati effettivi).

Mi manca qualcosa? Il mio sistema è sicuro?

    
posta IIAOPSW 26.01.2015 - 07:48
fonte

1 risposta

2

Alcune cose:

Innanzitutto, esiste già uno schema per trasformare un hash non cifrato in un hash con chiave. Si chiama HMAC; se si dispone di un processo in quattro fasi (il client dice "inviami un nonce", il server invia un client nonce, il client calcola HMAC sul nonce con password come chiave e lo invia al server, il server verifica HMAC), che dovrebbe funzionare ( le proprietà di un MAC richiedono che un utente malintenzionato senza la password non possa creare in modo qualsiasi coppie di dati-MAC forgiati, anche se può ottenere che l'utente reale crei tutte le coppie di dati-MAC che desidera Se il server non si ripete (ad esempio se utilizza un contatore), questo dovrebbe funzionare, non è necessario preoccuparsi di un nonce casuale, perché HMAC non lo richiede.

Meglio, soprattutto se hai bisogno di inviare qualsiasi informazione in seguito, sarebbe di utilizzare un protocollo standardizzato come TLS-SRP. A differenza del normale TLS, TLS-SRP non richiede un certificato; usi invece una password.

Non importa cosa, dovresti non progettare il tuo schema. Progettare il proprio protocollo di sicurezza è qualcosa che ha una tendenza a male sbagliato. La sicurezza è difficile ; errori minori possono facilmente distruggere totalmente la sicurezza di uno schema. Utilizzare un protocollo standardizzato. TLS-SRP potrebbe funzionare bene; anche un normale protocollo TLS funzionerebbe, ma sarebbe un po 'più complicato perché è necessario un certificato. Possono funzionare anche altri schemi di autenticazione standardizzati. Ma fai non semplicemente buttare i dati in un hash e presumere che sia sicuro.

    
risposta data 26.01.2015 - 09:56
fonte

Leggi altre domande sui tag