Ho un server di autenticazione web a più fattori, che oltre alle normali password utilizza le impronte digitali per l'autenticazione dell'utente.
Qualcuno può pensare a un difetto di sicurezza nel seguente scenario:
Ho un server di risorse che ospita risorse preziose, il proprietario della risorsa deve fornire la propria impronta digitale a un server di autenticazione per concedere l'accesso alle sue risorse.
La protezione dei dati delle impronte digitali è fondamentale. Prima che l'utente possa utilizzare il sistema. Deve installare un plugin per browser web. Durante l'installazione del plugin il plugin si collega al server di autenticazione e ottiene un certificato digitale dal server (una chiave pubblica del server).
Ora quando l'utente accede alla pagina web del server delle risorse, digita il suo nome utente / password e la pagina web gli chiede di scansionare l'impronta digitale. Quindi, il plug-in del browser Web si collega allo scanner per impronte digitali e attiva lo scanner per eseguire la scansione dell'impronta digitale dell'utente.
Il plug-in preleva l'impronta dallo scanner e lo crittografa utilizzando una chiave AES generata casualmente da 256 e quindi crittografa questo AES utilizzando la chiave pubblica del server di autenticazione.
Quindi il plugin restituisce un oggetto JSON contenente l'impronta digitale crittografata e la chiave AES crittografata. Successivamente uno script Java dalla pagina di accesso del server delle risorse che utilizza AJAX invia l'oggetto JSON al server delle risorse. Il server delle risorse inoltra l'oggetto JSON al server di autenticazione.
Il server di autenticazione decodifica la chiave AES utilizzando la sua chiave privata e quindi utilizza AES ripristinato per decrittografare i dati delle impronte digitali. Infine, confronta i dati delle impronte digitali ricevute con il modello di impronte digitali memorizzato e restituisce il risultato al server delle risorse. In base al risultato, il server delle risorse nega o concede l'accesso all'utente.
I modelli di impronte digitali sul server di autenticazione sono memorizzati in un database crittografato utilizzando una chiave AES 256.