Mi interessa utilizzare l'autenticazione reciproca TLS per migliorare la sicurezza dei miei servizi web basati su javascript . Ho esaminato l'elemento Keygen e dati tutti i suoi problemi , non sono sicuro che questo possa essere usato anche per questo scopo.
Se ho ragione nel pensare che l'autenticazione reciproca TLS è una delle forme più sicure di TLS (per dirla semplicemente), è ragionevole o una buona idea usare il materiale crittografico inviato da Keygen per questo scopo?
Aggiornamento:
Il mio modello di minaccia è quello di proteggere da un attacco in stile Diginotar. La soluzione sarebbe simile a questa:
iscrizione
- L'utente accede al sito Web o crea un account.
- Se la macchina non è mai stata vista prima (nuovo account) invece di aggiungere un cookie persistente, all'utente viene richiesto di creare un certificato lato client.
- Il certificato del lato client è firmato dal server e importato nel browser Web ai fini dell'autenticazione client
- Il server registra i dettagli del certificato client (identificazione personale / hash / chiave pubblica) e lo utilizzerà successivamente per la verifica della sessione.
Autenticazione
- L'utente accede al sito Web (n + 1 visita)
- All'utente viene richiesto un certificato client
- Il server verifica il certificato cliente
- Il TLS reciproco è stato stabilito.
- Il server verifica la chiamata autenticata con un certificato client noto. Se il certificato chiamante è vuoto o di un altro utente, è possibile che venga eseguito un MITM e l'accesso venga negato.