Voglio autenticare un client di una pagina web e assicurarmi che sia un particolare utente.
Diciamo che abbiamo già concordato un hash particolare ( SHA256 , in realtà, che ritengo sia abbastanza sicuro per questo) e che entrambi abbiamo già scambiato un key in un file tramite un mezzo attendibile.
Questo key è praticamente un file di testo con 2K di lettere casuali. Lo ho memorizzato nel mio server, lo hanno memorizzato da qualche parte nel loro computer.
Questi sono i passi studiati per autenticare il client:
- Il server genera un
challenge, una stringa casuale di 128 lettere. - Il server invia
challengeal browser del client. - Il client ha accesso a un campo di input dove caricano il loro file
key. - Il client calcola un
answeraggiungendokeyal loro contenutochallengee calcolando il suo hash. - Il client restituisce solo
answerper questo particolarechallenge. - Il server confronta il
answerricevuto con uno generato localmente e, se corrispondono, posso supporre che il client sia la persona che penso che sia.
Assunzione finale, lo scambio di challenge e answer attraverso il web può avvenire attraverso un canale non sicuro. In realtà, supponiamo che accadrà attraverso un canale non sicuro, cioè HTTP.
Questo schema è sicuro?
In caso negativo, quali sono le sue insidie?
Nel passaggio 4, fa la differenza se computo l'hash come challenge + key invece di key + challenge . Immagino che questo abbia a che fare con l'algoritmo di hash che ho scelto, e penso che lo SHA256 gestisca bene quelle cose, ma non sono esperto.
Importa molto se aumento / diminuisci la lunghezza di key e challenge ?