¿Qué es un algoritmo de ejemplo simple para explicarle a alguien cómo funciona el cifrado de clave pública?

No puedo ayudarte con las matemáticas, pero puedo describirlo con palabras de la manera más simple que se me ocurre:

El cifrado es una forma de codificar la información para que solo las personas que desee puedan verla.
Cuando encriptas algo, necesitas una clave que es básicamente una contraseña. La llave actúa como una llave física para una puerta cerrada o segura: proporciona acceso a la valiosa información que contiene

En el cifrado de clave pública, la clave se divide en dos partes, una parte pública y una parte privada. Estos están matemáticamente relacionados, de modo que se pertenecen entre sí y no tienen otra clave. El problema matemático suele ser muy fácil de resolver de una manera, pero muy difícil de resolver de otra manera. El cifrado de clave pública más común: RSA, utiliza la dificultad matemática de factorizar números primos muy grandes. Para calcular la clave privada a partir de la clave pública, deberá factorizar un número primo muy grande, más allá de las capacidades computacionales actuales de los sistemas actuales en un plazo razonable.

Cualquier cosa cifrada usando la parte pública de la clave solo puede ser descifrada o accedida por la parte privada y viceversa.

Fue inventado para resolver el problema de que si solo tiene una clave (o contraseña), ¿cómo puede darle esa clave a la persona que desea acceder a la información sin que nadie más tenga acceso a ella? Un buen ejemplo es que si protege con contraseña un documento de Winzip o Word, desea enviarlo por correo electrónico, pero si envía la contraseña también, entonces es un poco inútil.

La parte pública, como su nombre indica, no es sensible en absoluto, puede tener la parte pública de una clave y no tener acceso a nada que esté protegido con esa clave. Esto permite que la clave pública se publique para que cualquiera pueda acceder a ella.

La parte privada es la parte sensible, le permite descifrar o acceder a cualquier cosa que esté cifrada en su clave pública relacionada. Esto se mantiene muy seguro.

Esto le permite resolver el problema que describí anteriormente, para obtener un archivo sensible de Word o Winzip a alguien sin tener que transferir la clave, simplemente puedo obtener la clave pública de las personas (es decir, publicada en Internet), cifrar el archivo en esa clave y enviarla incluso por correo electrónico inseguro. Solo el destinatario previsto puede descifrarlo con su clave privada, que nunca tienen que darme.

Espero que esto ayude un poco.

La mayoría de las personas están familiarizadas con el cifrado de clave privada porque es como una frase de contraseña típica para bloquear algo. Entonces comienza explicando el cifrado de clave privada regular. Por ejemplo, si desea cifrar un archivo zip: utiliza una clave privada. Eliges encriptar, le das una frase de contraseña y está encriptada. Sin embargo, debe compartir esa contraseña con cada persona con la que desee compartir el archivo. Tal vez eso está bien porque quieres compartirlo con solo unas pocas personas.

Ahora hablemos de cifrar el correo electrónico. ¿Funcionará la solución anterior? ¿No porque? Porque desea recibir un correo electrónico seguro de cualquier persona en el mundo sin compartir previamente una clave privada. Entonces, ¿cómo podemos solucionar este problema? Le damos nuestra llave al mundo. Ah, pero si todos supieran la clave, ¡cualquiera podría leer mis correos electrónicos!

Ahh, por eso necesitamos encriptación de clave pública . Algunos matemáticos brillantes idearon este esquema y es así. Ahora tiene 2 tipos de claves: una clave pública y una clave privada. La clave pública es solo eso: la libera al público en general. Cualquiera puede usar esa clave para encriptar un mensaje solo para usted. Su clave privada es la única clave que puede desbloquear un mensaje cifrado con su clave pública. Entonces su clave pública se pone en el dominio público. Tu clave privada, bueno, la mantienes privada.

Así que voila: cualquier persona en el mundo puede enviarle un mensaje cifrado siempre que obtenga su clave pública primero. Una vez que te envían un mensaje, solo tú, con tu clave privada, puedes leerlo.

He estado pensando en cómo explicar la criptografía durante algún tiempo, y descubrí que la mayoría de los ejemplos (incluida la respuesta de Toli Kuznets y la de Wikipedia ( http://en.wikipedia.org/wiki/Pub …) no proporcione un ejemplo claro de cómo una clave se puede hacer realmente pública sin comprometer el sistema. Este es un ejemplo muy simple que muestra cómo se puede hacer, en términos generales [1].

Imagínese entrando en un laberinto. Es un enorme laberinto cúbico, compuesto de pequeños cubículos. En cada cubículo, debe dar un paso adelante y luego decidir si se moverá horizontalmente (izquierda / derecha) y verticalmente (arriba / abajo). Nunca puedes volver.

Para caminar dentro del laberinto, necesita instrucciones completas para la dirección vertical y horizontal. La secuencia completa se puede reducir a la mitad: la primera mitad le dice cómo caminar en el laberinto, deteniéndose en una posición desconocida, mientras que la segunda parte le dice cómo salir.

Imagínese ahora que se le pide que lleve un mensaje para dos de sus amigos, llamados Alice y Bob. Alice conoce la clave pública de Bob: de hecho, es una secuencia simple de instrucciones para que te muevas dentro del laberinto horizontalmente, en forma de instrucciones izquierda / derecha. Bob también tiene la clave pública de Alice: también es una secuencia de instrucciones, pero esta vez para moverse hacia arriba y hacia abajo. Como ambas claves son públicas, debe asumir que todos las conocen.

Ahora, Alice “encriptará” su mensaje. Ella te da un par de hojas de instrucciones: una es la clave pública de Bob, que te dice que te muevas hacia la izquierda y hacia la derecha mientras caminas dentro del laberinto. La otra es la clave privada de Alice, que le dice que se mueva hacia arriba y hacia abajo.

Al entrar en el laberinto, sigue las instrucciones de Bob y Alice, y luego se detiene en medio del laberinto. No puede regresar, y la única salida es recibir nuevas instrucciones que le digan cómo hacerlo.

Ahora, Bob recibe el laberinto [2], y luego llama a tu teléfono móvil dentro del laberinto (funciona increíblemente allí), dándote un nuevo par de instrucciones: la clave pública de Alice (que todos saben), que te dice cómo moverse verticalmente; y también, la clave privada de Bob (que es secreta), que le indica cómo moverse horizontalmente al salir. Siguiendo estas nuevas instrucciones, ahora puede salir del laberinto y entregar el mensaje a Bob [3].

Este ejemplo también explica algunas de las propiedades de la criptografía de clave pública:

  1. Cuando entregue el mensaje, Bob puede estar seguro de que vino de Alice, porque si no lo hiciera, entonces no podría encontrar el camino en la dirección vertical. La única forma de salir usando la información pública de Alice es si llegaste allí (dentro del laberinto) usando su clave privada. Cualquier otra combinación de movimientos te llevaría a otro lugar dentro del laberinto y las instrucciones nunca funcionarían.
  2. Lo mismo ocurre si alguien más trata de hacerse pasar por Bob y le da instrucciones para sacarlo. La información pública de Alice te dice qué movimientos debes hacer para salir en una dirección, pero necesitas la clave privada de Bob para salir en la otra.


[1] El ejemplo puede hacerse más realista al incluir algunas suposiciones más; por ejemplo, podemos suponer que el punto de entrada / salida en la parte privada del mensaje también es privado, para cada dirección; y lo mismo se aplica para el punto de entrada / salida público (es parte de la clave pública). Además, en lugar de instrucciones simples, la llave puede estar compuesta por una secuencia de llaves para puertas dentro del laberinto. De todos modos, eso es solo para fortalecer el ejemplo, y la idea básica sigue siendo la misma.

[2] Supongamos que el laberinto puede ser miniaturizado y luego enviado por correo ordinario.

[3] Por supuesto, en un sistema criptográfico real, la clave se daría a un sistema automatizado. Darle las llaves significa que debe ser asesinado cuando salga del laberinto, pero olvidemos esto por ahora.