In primo luogo vorrei chiarire che questo è per i proprietari di siti poveri che non possono permettersi l'opzione SSL ma richiedono accessi al loro sito, potenzialmente da un chiosco pubblico, e hanno bisogno di un metodo sicuro per consentire tali. Tutto quello che sto cercando è un controllo pubblico del processo che ho elaborato, se ci sono degli attacchi che potrei aver perso che questo processo consente, e qualsiasi incidente stradale prevedibile che potrebbe introdurre.
Il processo per la registrazione è quindi:
- L'utente arriva alla pagina e il modulo di accesso viene popolato con la chiave pubblica del server e un nonce.
- L'utente inserisce la password in forma (e altri dettagli identificativi). Password e nonce sono combinati e inseriti in una funzione di derivazione della chiave
- Utilizzando la chiave privata del server e la chiave pubblica del server, crittografare la password e inviare la chiave pubblica del client ad-hoc e la password crittografata (e i dettagli necessari per l'identificazione).
- Usando la chiave pubblica del client e la chiave privata del server, decrittografare la password, generare il sale, spingere sia attraverso l'hash lento che il risultato del negozio.
Il processo di accesso sarà quindi:
- arriva l'utente, riceve nonce e la chiave pubblica del server.
- l'utente immette nome utente / password combo. Come prima, nonce e password generano la coppia di chiavi
- crittografare la password con la chiave pubblica del server e generare la chiave privata, eliminare il privato, quindi inviare il client pubblico, la password crittografata e il nome utente
- lato server, decrittografare con server pubblico e client pubblico, afferrare sale corrispondente a nome utente, password hash lento salata, verificare nei confronti del database e continuare l'accesso se tutto va bene.
La mia preoccupazione principale è che l'uso della password per generare la coppia di chiavi introduce una vulnerabilità in quanto se la chiave pubblica ad-hoc inviata tramite fili può essere utilizzata per decodificare la combinazione nonce / password che ha generato la chiave coppia, o peggio ancora essere usato per creare in qualche modo la chiave privata per decrittografare la password se la funzione di derivazione non è abbastanza strong. Sono queste preoccupazioni legittime e questa opzione dovrebbe essere sul tavolo?