Sono uno studente di master in informatica che lavora part-time con la mia azienda come consulente.
Il mio ultimo progetto è basato sulla mia tesi di laurea che gestisce tutto tranne la sicurezza. L'applicazione verrà verificata da una società molto più grande di quelle che mi hanno assunto e un requisito nella verifica è il doppio livello di sicurezza su tutti i canali.
Il primo strato sarà ovviamente ssl / tls. Per quanto riguarda il secondo, ho trovato il seguente.
- Autenticazione dell'accesso al digest HTTP - per lo scambio di credenziali
- DHKE - per creare un segreto condiviso che in seguito viene utilizzato per trasportare un tasto AES.
- RSA - per firmare digitalmente la risposta dal server per garantire che non ci sia un uomo nel mezzo.
Il mio primo pensiero è stato quello di utilizzare RSA per trasportare in modo sicuro la chiave. Ma ho pensato che avrei potuto ridurre l'overhead usando DHKE. Correggimi se sbaglio.
Il protocollo funzionerebbe in questo modo:
Client-> (username + public information for DHKE) -> Server
Server-> (B from DHKE, salt for HTTP digest, AES key encrypted with DHKE secret) -> Client
(Whole message signed with server private key)
Client-> AES(Hashed information for HTTP digest) -> Server
Server-> AES(Session token) -> Client
Una volta avviata la sessione, tutti i messaggi verranno crittografati con il tasto AES. Probabilmente sto pensando troppo a questo e mi mancano molti dettagli e apprezzerei molto qualche consiglio.
Cordiali saluti Johan Risch