Acá voy a tratar de ser breve y conciso por dos simples razones, la primera porque yo no soy ningún guru de criptografía de claves públicas (por lo tanto aunque quisiera explayarme en el tema no podría ;-)) y la otra porque lo corto y conciso es más simple de entender que lo largo y tedioso.
Cuando se trabaja con este tipo de criptografiía hay que tener en cuenta lo siguiente: todo el mundo tiene dos claves, una clave privada y una clave pública.
De esto se desprende lo obvio, la clave pública debe estar disponible para todo aquel que la requiera y debe poder viajar libremente por Internet. Por otro lado, la clave privada debe ser guardada celosamente por su dueño y no enviarla a través de ningún transporte inseguro (bajo ningún punto de vista). Solamente vos tenes que tener la posibilidad de desencriptar datos dirigidos a vos únicamente, y vos debes ser la única persona que pueda firmar algo que los demás vean como tuyo.
Lo importante de la clave pública es su integridad como tal (que este
``entera'' y sin modificación alguna al momento de llegar a destino), no lo
secreta
o no que es. Hay que tener en claro que la debilidad de este sistema se
encuentra en este tema, si nadie puede distinguir entre tu verdadera clave
pública y una clave pública modificada (que supuestamente es tuya), tenes
un verdadero problema1.3.
Todas las aplicaciones que trabajan con este tipo de criptografía tienen
este problema y varias de estas aplicaciones han creado formas de evitar esta
debilidad o minimizarla.
GnuPG y PGP tienen mecanismos para validar estas claves, pero depende de vos
si los utilizas o no. Estos mecanismos son utilizando lo que se llamó
``The Web of Trust'' (La Red1.4 de Confianza).