El problema que describe es cómo Alice sabe que la clave pública utilizada para firmar pertenece realmente a Bob. Como se dio cuenta correctamente, no funciona si Alice recibe la clave pública solo junto con el mensaje firmado y no tiene forma de verificar que la clave le pertenece a Bob, porque en este caso, Eve podría simplemente reemplazar la clave y la firma con la suya propia. / p>
Una forma de resolver el problema es asegurarse de que Alice reciba la clave pública de Bobs de manera confiable, por ejemplo, durante una reunión personal. Por lo general, esto solo es posible en unos pocos casos, por lo que, en lugar de tener esta confianza directa, se puede usar una confianza derivada, es decir, Carl recibe la clave de Bob, Alice obtiene la clave de Carl y Alice confía en que Carl realmente es la clave de Bobs. Puede implementar dichas relaciones de confianza con firmas para obtener una red de confianza más escalable con más partes. Esta es la base para la Web of Trust utilizada por PGP, pero también para una Infraestructura de clave pública utilizada para S / MIME y también para HTTPS.
Usando tales redes de confianza, también es posible enviar la clave pública junto con el mensaje siempre y cuando la propia clave pública esté firmada por una parte confiable. Por ejemplo, podría Bob pedirle a Carl que firme la clave de Bob con la clave de Carl y luego enviar un mensaje a Alicia firmada con esta clave firmada. Si Alice confía en Carl, es decir, tiene la clave pública de Carls, entonces Alice no solo puede verificar que el mensaje fue realmente firmado por la clave de Bobs, sino también que esta clave realmente pertenece a Bob porque puede verificar la firma de Carls.