El concepto de llave pública apareció en el 76 en un artículo debido a Diffie-Hellman [3].
En este esquema cada usuario tiene un ``buzón, con una ranura de entrada: cualquier otro usuario sabe cómo meter un mensaje en ese buzón, mas sólo el dueño del buzón puede extraer mensajes''.
El término inglés trapdoor one-way denota precisamente esta idea: Un ratón puede entrar con facilidad a una trampa mas de ella no puede salir.
Utilizaremos, con todas las reservas del caso, el término unidireccional para referirnos a one-way.
En todo esquema de llave pública cualquier usuario U posee dos llaves (eU,dU). Cuando un usuario V ha de enviar un mensaje m a U, calcula un código c=f(m,eU) utilizando la llave pública de U. U desencripta el mensaje calculando m=g(c,dU) utilizando su propia llave secreta dU. Así pues la llave secreta de U está en función de su llave pública eU. Naturalmente, dU no ha de ser calculable sólo a partir de eU.
Por otro lado, las funciones f y g, que guardan cierta relación de inversibilidad, una respecto a la otra, han de ser funciones de iguales complejidades.
En la actualidad, RSA es el prototípico esquema de llave pública.
Veremos en esta lección algunos otros esquemas de llave pública.