Supongamos que hay un servidor y un cliente y desea conectar esos dos. El servidor tiene un certificado autofirmado y, antes de establecer la conexión por primera vez (inscripción), el servidor crea un certificado de cliente y una contraseña de un solo uso para el cliente específico. (iniciado en el servidor)
El administrador tiene ambas máquinas frente a él, y luego escribe la contraseña de un solo uso en el cliente (asume el transporte seguro del token al cliente). El cliente luego se conecta al servidor (https) y, en caso de éxito, se identifica con la contraseña de un solo uso. El servidor luego envía el certificado de cliente al cliente.
La inseguridad está en el momento de la primera conexión. Como el cliente no conoce el certificado del servidor (y está autofirmado), alguien podría secuestrar la conexión y redirigir al cliente a un "servidor incorrecto" y enviar la contraseña de un solo uso a ese sin siquiera saberlo. (Lo más probable es que la intranet esté bien, el peligro real es que esto se haga a través de Internet).
Hay una manera de solucionar esto completamente: no solo le de al cliente una contraseña única, sino también la huella digital del certificado del servidor. Desafortunadamente, esto no se puede hacer en este escenario, y solo puedo transferir 4 a quizás 6 u 8 bytes con el fin de validar el certificado.
Sé que esto no establece una seguridad completa, pero supongo que es mejor que no comprobar, ¿verdad? ¿Qué tan fácil sería para un atacante crear un certificado que tenga la url correcta y coincida? Diga los primeros 4-8 caracteres de la huella digital. ¿Existe alguna forma de hacerlo más seguro con solo 4-8 bytes?