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?