Oggi ho annusato un traffico wlan non criptato durante le lezioni e ho trovato alcune password con una semplice ricerca di "pass" e "user" in wireshark. Si scopre che circa la metà dei siti che usiamo per la scuola non crittografano i loro dati in alcun modo - usano richieste GET come? Username = user123 & password = passwd123 al login. Ho iniziato a pensarci e ora mi chiedo; qual è il modo migliore per evitarlo? La crittografia sarebbe facile da annullare e anche le chiavi una tantum potrebbero essere "facilmente" catturate. Il mio miglior pensiero fino ad ora è l'hash del client, ma sarebbe una cattiva idea in qualche modo?
UPDATE: Ovviamente non ti ho detto i limiti qui, ma grazie per tutte le risposte! Il server non ha SSL e tutto ciò che uso deve essere implementato sul lato server php / asp / asp.net o javascript sul client. L'unica chiave già condivisa è la password. Tutto il resto sarà noto all'attaccante.
Sto solo cercando di nascondere la password dall'hacker. Il resto delle informazioni non sarebbe stato criptato, quindi sarebbe stato possibile rubare una sessione. Questo sarà il prossimo problema. Forse potresti criptare le informazioni sulla pagina con il sostantivo. Dal momento che ci sarà un sacco di testo crittografato, un attacco al dizionario sarebbe efficace. Questo è il motivo per cui non voglio usare la password dell'utente per la crittografia. Forse potrei usare qualcosa come una chiave XOR a 512/1024 bit che crittografo con la password dell'utente? O qualche parte della password, dal momento che un attacco di dizionario sarebbe ancora possibile - ma più difficile.
Un sostantivo criptato con i client direbbe che 2 primi caratteri della sua password sono una buona idea? Un numero casuale XOR con i primi 2 caratteri delle password. Questo dovrebbe essere decifrabile dall'utente, dal momento che lui / lei ha la chiave (che verrebbe presa dalla stringa password inserita tramite js). Il sostantivo sarebbe un numero casuale, quindi nulla dovrebbe essere in grado di dire se è stato correttamente decifrato.
In sostanza: 1. L'utente digita nome utente e post / lo ottiene sul server. 2. Il server risponde con una pagina con un nome cifrato e una casella di password. 3. Javascript decrittografa nounce, e la password ottiene XOR'd con esso. 4. La password viene inviata al server, la password viene decrittografata e quindi cancellata 5. Hash viene confrontato con uno memorizzato nel database.
Nota: il server è gratuito e supporta SSL, ma non voglio usarlo. SSL non mi piace perché è rotto.