Supponiamo che ci sia un server e un client e vuoi collegarli. Il server ha un certificato autofirmato e, prima di stabilire la connessione per la prima volta (iscrizione), il server crea un certificato client e una password monouso per il cliente specifico. (avviato sul server)
L'amministratore ha entrambe le macchine di fronte a sé, quindi digita la password monouso nel client (presuppone il trasporto sicuro del token al client). Il client si collega quindi al server (https) e in caso di successo lo identifica con la password monouso. Il server invia quindi il certificato client al client.
L'insicurezza è nel momento della prima connessione. Poiché il client non conosce il certificato del server (ed è autofirmato), qualcuno potrebbe dirottare la connessione e reindirizzare il client a un "server non valido" e inviare la password monouso a quello senza nemmeno saperlo. (La rete intranet dovrebbe essere molto probabile, il vero pericolo è quando questo viene fatto su Internet)
C'è un modo per risolvere completamente questo problema: non solo fornire al client una password monouso, ma anche l'impronta digitale del certificato server. Sfortunatamente questo non può essere fatto in questo scenario, e posso solo trasferire 4 a 6 o 8 byte per lo scopo di validare il certificato.
So che questo non stabilisce una sicurezza completa, ma suppongo che sia meglio di nessun controllo, giusto? Com'è facile per un utente malintenzionato, creare un certificato con l'URL e le corrispondenze corretti. Pronunciare i primi 4-8 caratteri dell'impronta digitale. C'è un modo per renderlo più sicuro con solo 4-8 byte?