Red de Respuestas Legales - Derecho empresarial - ¿Qué es PGP?

¿Qué es PGP?

PGP (Pretty Good Privacy) es un software de cifrado de correo electrónico basado en el sistema de cifrado de clave pública RSA. Se puede utilizar para mantener la confidencialidad de los correos electrónicos y evitar que personas no autorizadas los lean, y también puede agregar firmas digitales a los correos electrónicos para que los destinatarios puedan confirmar el remitente del correo electrónico y estar seguros de que el correo electrónico no ha sido manipulado. Puede proporcionar un método de comunicación seguro sin la necesidad de ningún canal confidencial para transferir claves por adelantado. Utiliza un algoritmo híbrido de RSA y cifrado tradicional, un algoritmo de resumen de correo para firmas digitales, compresión antes del cifrado, etc., además de un buen diseño ergonómico. Es potente y rápido. Y su código fuente es gratuito.

De hecho, las funciones de PGP también incluyen: PGP se puede usar para cifrar archivos y PGP también se puede usar en lugar de UUencode para generar archivos codificados en formato RADIX 64 (es decir, el formato BASE 64 de MIME). ).

El fundador de PGP es Phil Zimmermann de Estados Unidos. Su creatividad radica en el hecho de que combina la conveniencia del sistema de clave pública RSA con la alta velocidad del sistema de cifrado tradicional y tiene diseños ingeniosos en mecanismos de gestión de firma digital y autenticación de claves. Por lo tanto, PGP se ha convertido casi en el paquete de software de cifrado de clave pública más popular.

1. Primero, presente brevemente el proceso del sistema de cifrado PGP.

El sistema de cifrado PGP es una tecnología de cifrado que combina el cifrado de clave pública y el cifrado de clave tradicional. Utiliza un par de claves relacionadas matemáticamente, una de las cuales (la clave pública) se usa para cifrar información y la otra (clave privada) se usa para descifrar la información.

La clave utilizada en parte de la tecnología de cifrado tradicional utilizada por PGP se denomina "clave de sesión" (sek). Cada vez que se utiliza, PGP genera aleatoriamente una clave de sesión IDEA de 128 bits para cifrar el mensaje. La clave pública y la clave privada en la tecnología de cifrado de clave pública se utilizan para cifrar la clave de sesión y proteger indirectamente el contenido del mensaje.

Cada clave pública y privada en PGP va acompañada de un certificado de clave. Generalmente contiene el siguiente contenido:

Contenido de clave (una clave representada por un número grande de hasta cientos de dígitos)

Tipo de clave (que indica si la clave es una clave pública o una clave privada) clave)

Longitud de la clave (la longitud de la clave, expresada en bits binarios)

Número de clave (utilizado para identificar de forma única la clave)

Hora de creación

ID de usuario (información sobre la persona que creó la clave, como nombre, correo electrónico, etc.)

Huella digital de la clave (un número de 128 bits, que es un resumen del contenido de la clave) Las características únicas de la clave)

Firma del intermediario (firma digital del intermediario, que indica la autenticidad de la clave y su propietario, incluido el número de clave del intermediario y la información de identificación)

PGP almacena la clave pública y la clave privada en el archivo del conjunto de claves (KEYR). PGP proporciona algoritmos eficientes para encontrar las claves que los usuarios necesitan.

PGP requiere contraseñas en muchos lugares, que principalmente protegen claves privadas. Debido a que la clave privada es demasiado larga e irregular, es difícil de recordar. PGP la cifra con una contraseña y la almacena en el conjunto de claves, de modo que los usuarios puedan utilizar indirectamente la clave privada con una contraseña fácil de recordar.

Cada clave privada de PGP está cifrada mediante una contraseña correspondiente. PGP requiere principalmente que el usuario ingrese una contraseña en tres lugares:

Cuando es necesario descifrar la información cifrada, PGP requiere que el usuario ingrese la contraseña y extraiga la clave privada para descifrar la información

Cuando el usuario necesita descifrar el archivo o al firmar información, el usuario ingresa una contraseña y extrae la clave privada para el cifrado

Cuando realiza el cifrado tradicional de archivos en el disco, el usuario necesita para ingresar una contraseña

2. Lo anterior presenta el flujo de trabajo de PGP. A continuación se presentarán los métodos de cifrado y descifrado relacionados con PGP y el mecanismo de administración de claves de PGP.

PGP es un software de cifrado de uso público. Los correos electrónicos se transmiten a través de redes abiertas y otras personas en la red pueden monitorear o interceptar correos electrónicos para obtener el contenido de los mismos. Por lo tanto, los problemas de seguridad del correo electrónico son más importantes. Para proteger la información de ser obtenida por un tercero, se requiere tecnología de cifrado. Otra cuestión es la autenticación de la información. Cómo convencer al destinatario de que el correo electrónico no ha sido manipulado por un tercero, lo que requiere tecnología de firma digital. Las características del sistema de clave pública RSA lo hacen muy adecuado para cumplir con los dos requisitos anteriores: confidencialidad (Privacidad) y autenticación (Authentication).

El algoritmo RSA (Rivest-Shamir-Adleman) es un sistema de clave pública basado en el supuesto de que es imposible factorizar números grandes en factores primos. En pocas palabras, es encontrar dos números primos muy grandes, uno que es público y la clave pública, y el otro que no se lo dice a nadie, que es la clave privada. Estas dos claves son complementarias, lo que significa que el texto cifrado cifrado con la clave pública se puede descifrar con la clave privada y viceversa.

Supongamos que A quiere enviar una carta a B y ambos conocen la clave pública del otro. A usa la clave pública de B para cifrar el correo electrónico y lo envía. Una vez que B lo recibe, puede usar su propia clave privada para descifrar el texto original de A. Como nadie más conoce la clave privada de B, ni siquiera A mismo puede descifrar la carta, lo que resuelve el problema de mantener la carta confidencial.

Por otro lado, como todos conocen la clave pública de B, todos pueden enviar una carta a B, por lo que B no puede estar seguro de si se trata de una carta de A. En este momento, se necesita una firma digital para la autenticación.

Antes de explicar las firmas digitales, debemos explicar qué es un "resumen de mensaje". El resumen de correo electrónico consiste en utilizar un determinado algoritmo para calcular un número que refleje mejor las características del correo electrónico. Una vez que se cambia el correo electrónico, este número cambiará luego este número más el nombre del autor (en realidad, en la clave del autor (entrada) y el. fecha, etc., se puede utilizar como firma. PGP utiliza un número binario de 128 bits como "resumen de correo" y el algoritmo utilizado para generarlo se llama MD5 (resumen de mensaje 5). MD5 es un algoritmo hash unidireccional. A diferencia del código de verificación CRC, es difícil encontrar un correo electrónico de reemplazo con el mismo valor de característica MD5 que el original.

Volviendo a la firma digital, A usa su clave privada para cifrar el valor característico de 128 bits anterior, lo adjunta al correo electrónico y luego usa la clave pública de B para cifrar todo el correo electrónico. De esta manera, después de que B recibe el texto cifrado, B usa su propia clave privada para descifrar el correo electrónico y obtiene el texto y la firma originales de A. El PGP de B también calcula un valor característico de 128 bits a partir del texto original y usa la clave pública de A para. descifrarlo. Compare los números obtenidos de las firmas. Si coinciden, significa que el correo electrónico efectivamente es de la persona A. De esta manera se cumplen ambos requisitos de seguridad.

PGP también sólo puede firmar sin cifrar. Esto es adecuado para realizar declaraciones públicas. Para verificar su identidad, el declarante puede firmar con su clave privada. Esto permite al destinatario confirmar la identidad del remitente y evita que el remitente niegue su declaración. Esto tiene grandes perspectivas de aplicación en el campo comercial. Puede evitar que el remitente rechace la carta y que la carta sea manipulada en el camino.

PGP en realidad utiliza un algoritmo híbrido de RSA y cifrado tradicional. Debido a que el algoritmo RSA requiere muchos cálculos y no es adecuado para cifrar grandes cantidades de datos en términos de velocidad, PGP en realidad no utiliza el propio RSA para el cifrado, sino un algoritmo de cifrado tradicional llamado IDEA. El cifrado tradicional generalmente utiliza una clave para cifrar el texto sin formato y luego usa la misma clave para descifrarlo. El representante de este método es DES, que es el cifrado multiplicativo. Su principal desventaja es que el canal de transmisión de claves no puede resolver el problema de seguridad y no es adecuado para las necesidades de cifrado de correo electrónico del entorno de red. La velocidad de cifrado (descifrado) de IDEA es mucho más rápida que la de RSA, por lo que, de hecho, PGP utiliza una clave generada aleatoriamente (diferente para cada cifrado) para cifrar el texto sin formato usando el algoritmo IDEA y luego cifra la clave usando el algoritmo RSA. De esta manera, el destinatario también usa RSA para descifrar la clave aleatoria y luego usa IDEA para descifrar el correo electrónico. Este cifrado en cadena logra tanto la confidencialidad del sistema RSA como la velocidad del algoritmo IDEA. PGP utiliza este cifrado en cadena para garantizar tanto la confidencialidad como la velocidad del cifrado.

Las funciones principales de PGP son: cifrado de archivos, cifrado de comunicaciones y firma digital. A continuación se presentarán algunas funciones auxiliares de PGP. Aunque no son el núcleo de todo el sistema de cifrado, desempeñan un papel en la coordinación de varias partes y facilitan a los usuarios. Aquí presentamos principalmente el mecanismo de gestión de claves de PGP.

Un sistema de cifrado maduro debe ir acompañado de un mecanismo de gestión de claves maduro. El sistema de clave pública se propuso para resolver el problema de que el proceso de distribución de claves del sistema de cifrado tradicional es difícil de mantener en secreto. Si la clave se transmite a través de la red, otras personas en la red pueden obtenerla escuchando. Por ejemplo: en la versión antigua de Novell Netware, la contraseña del usuario se transmitía en texto claro en la línea, de modo que el oyente podía obtener fácilmente las contraseñas de otras personas. Por supuesto, la contraseña de usuario en el encabezado del paquete ahora está cifrada en Netware 4.1. Para PGP, la clave pública debe hacerse pública, por lo que no hay problema para evitar escuchas ilegales. Sin embargo, todavía existen problemas de seguridad en la liberación de claves públicas, como la manipulación de claves públicas, que puede ser la mayor vulnerabilidad en el sistema de criptografía de claves públicas. Debe existir un mecanismo para garantizar que la clave pública obtenida por el usuario sea correcta y no falsificada por otros. Aquí hay un ejemplo para ilustrar este problema y cómo usar PGP correctamente para tapar esta laguna.

Supongamos que Mike quiere enviarle una carta a Alice, entonces debe tener la clave pública de Alice. El usuario descargó la clave pública de Alice de BBS, la usó para cifrar la carta y se la envió a Alice usando la función de correo electrónico de BBS. Sin embargo, otro usuario llamado Charlie se coló en la BBS y reemplazó la clave pública de Alice con la clave pública en el par de claves que generó usando el nombre de Alice, sin el conocimiento de las dos personas involucradas en la comunicación. Entonces la clave pública utilizada por Mike para enviar la carta no es la de Alice sino la de Charlie, y todo parece normal. Entonces Charlie puede usar la clave privada que tiene en la mano para descifrar la carta de Mike a Alice, e incluso puede usar la clave pública real de Alice para reenviar la carta de Mike a Alice, de modo que nadie sospeche si quiere cambiar la carta de Mike a Alice. Tampoco hay nada malo en la carta de Alice. Incluso puede falsificar la firma de Alice y enviar una carta a Mike u otros. Debido a que las claves públicas en manos de estos usuarios están falsificadas, pensarán que en realidad es una carta de Alice.

La mejor manera de prevenir esta situación es evitar darle a otra persona la oportunidad de alterar la clave pública, como obtener la clave pública de Alice directamente de sus manos. Sin embargo, esto es difícil en muchos casos. PGP desarrolló un mecanismo de introducción de clave pública para resolver este problema. Por ejemplo: si Mike y Alice tienen el mismo amigo David, y David sabe que la clave pública de Alice en su mano es correcta (sobre cómo autenticar la clave pública, PGP tiene otro método, que se discutirá más adelante, asumiendo aquí que David ha autentificado su clave pública con Alice). De esta manera, David puede usar su propia clave privada para firmar la clave pública de Alice, lo que indica que garantiza que la clave pública pertenece a Alice. Por supuesto, Mike necesita usar la clave pública de David para verificar la clave pública de Alice que le dio. De manera similar, David también puede autenticar la clave pública de Mike ante Alice, de modo que David se convierta en el "presentador" entre Mike y Alice. De esta manera, Alice o David pueden cargar de forma segura la clave pública de Alice firmada por David al BBS para que Mike la obtenga. Nadie puede alterarla sin ser descubierto, ni siquiera el administrador del BBS. Este es un medio seguro para transferir claves públicas desde canales públicos.

Entonces, ¿cómo se puede obtener la clave pública de David de forma segura? De hecho, es posible que la clave pública de David que obtuvo Mike también sea falsa, pero esto requiere que la persona que falsificó la clave participe en todo el proceso. Hay que estar familiarizado con estas tres personas y hay que planificar durante mucho tiempo, lo que generalmente es imposible. Por supuesto, PGP también tiene sugerencias preventivas para esta posibilidad, es decir, una persona o institución en la que generalmente todos confían debe desempeñar este papel, es decir, el llamado "camarero clave" o "autoridad de certificación" (centro de certificación). , y cada firma será firmada por él. La clave pública de cada uno se considera genuina, por lo que todos solo necesitan tener una copia de su clave pública. Es conveniente autenticar la clave pública de esta persona porque él proporciona este servicio ampliamente y es extremadamente. Es difícil falsificar su clave pública porque su clave pública circula ampliamente. Esa "autoridad" puede ser ejercida por organizaciones de control no individuales o agencias gubernamentales, y ya existen instituciones con sistemas de certificación jerárquicos.

Para aquellos que están muy dispersos, PGP prefiere el uso de métodos de referencia de clave privada, porque estos canales orgánicos y no oficiales pueden reflejar mejor las interacciones sociales naturales de las personas, y las personas pueden elegir libremente a alguien en quien confíen para presentarlo. En definitiva, es lo mismo que interactuar con personas que no conoces. Cada clave pública tiene al menos una "ID de usuario" y es mejor agregar su dirección de correo electrónico para evitar confusiones.

3. A continuación, presentaremos cómo autenticar la clave a través del teléfono.

Cada clave tiene su propia identificación (keyID). keyID es un número hexadecimal de ocho dígitos. La probabilidad de que dos claves tengan el mismo keyID es de una entre miles de millones, y PGP también proporciona un método de identificación más confiable. claves: la "huella digital de la clave". Cada clave corresponde a una cadena de números (dieciséis dígitos hexadecimales de dos dígitos), y la posibilidad de que esta huella digital se repita es aún menor. Además, nadie puede especificar que se genere una clave con una determinada huella digital. La clave se genera aleatoriamente y la clave no se puede deducir de la huella digital. De esta manera, cuando obtienes la clave pública de alguien, puedes verificar la huella digital con él en el teléfono para autenticar su clave pública. Si no puede realizar una llamada telefónica directa con la otra parte en la comunicación, puede llamar al presentador intermediario en el mecanismo de introducción de clave pública para autenticar la clave pública del presentador, autenticando así la clave pública de la otra parte en la comunicación a través del presentador. Esta es autenticación directa e introducción indirecta.

Esto lleva a otro método, que consiste en recopilar tus propias claves públicas firmadas por diferentes personas y enviarlas a lugares públicos. De esta manera, puedes esperar que la mayoría de las personas conozcan al menos una de ellas. para que autentique indirectamente su clave pública. De manera similar, después de firmar la clave pública de tu amigo, debes enviársela de vuelta para que sus otros amigos puedan autenticarlo a través de usted. Es lo mismo que las interacciones de las personas en la sociedad real. PGP descubrirá automáticamente cuáles de las claves públicas que obtuvo fueron introducidas por sus amigos, cuáles fueron introducidas por los amigos de sus amigos y cuáles fueron introducidas por los amigos de los amigos de sus amigos... Le ayudará a dividirlas. en diferentes niveles de confianza para que puedas decidir cuánto confiar en ellos. Puede designar a alguien para que tenga varios niveles de capacidad para referir claves públicas, lo que disminuye a medida que se aprueba el certificado.

El mecanismo de autenticación de referencias es transitivo, lo cual es un tema interesante. Phil Zimmermann, autor de PGP, dijo: "La confianza no es transitiva; tengo un amigo que creo que nunca mentirá. Pero es un tonto el que cree que el presidente nunca mentirá, pero obviamente no creo que el presidente nunca mentirá. ”

Lo anterior trata sobre la seguridad de las claves públicas, que es el núcleo de la seguridad de PGP. Además, al igual que en el sistema tradicional de clave única, la confidencialidad de la clave privada también es decisiva. En comparación con la clave pública, la clave privada no tiene el problema de ser manipulada, pero sí el problema de la fuga. La clave privada de RSA es un número muy largo y es imposible que los usuarios la recuerden. El método de PGP es permitir que los usuarios especifiquen una contraseña (fase de paso) para la clave privada RSA generada aleatoriamente.

La clave privada sólo puede liberarse para su uso proporcionando una contraseña. El método de cifrar la clave privada con una contraseña es tan confidencial como el propio PGP. Por lo tanto, la cuestión de seguridad de las claves privadas es en realidad la confidencialidad de las contraseñas de los usuarios. Por supuesto, perder la confidencialidad del archivo de clave privada en sí también es muy peligroso, porque todo lo que necesita el descifrador es utilizar métodos exhaustivos (ataques de fuerza bruta) para probar la contraseña. Aunque es muy difícil, aún pierde una capa de seguridad. . Cabe señalar que es mejor no escribir la clave privada en papel o en un archivo, porque otras personas pueden obtenerla fácilmente.

La cuidadosa consideración de los problemas de seguridad por parte de PGP se refleja en cada aspecto de PGP. Por ejemplo, la clave real para cada cifrado es un número aleatorio. Todo el mundo sabe que las computadoras no pueden generar números verdaderamente aleatorios. El programa PGP es muy cauteloso con la generación de números aleatorios. La generación de números aleatorios clave, como las claves RSA, obtiene semillas de números aleatorios a partir de los intervalos de tiempo entre las pulsaciones de teclas del usuario. El archivo randseed.bin en el disco está cifrado con la misma seguridad que el correo electrónico. Esto evita efectivamente que otros analicen los patrones de claves de cifrado reales del archivo randseed.bin.

4. Finalmente, mencionemos el procesamiento de precompresión previo al cifrado de PGP. El núcleo de PGP utiliza el algoritmo PKZIP para comprimir el texto sin formato antes del cifrado.

Por un lado, en el caso de los correos electrónicos, el texto cifrado que se comprime, cifra y luego codifica con 7 bits puede ser más corto que el texto sin formato, lo que ahorra tiempo de transmisión en la red. Por otro lado, una vez comprimido el texto sin formato, en realidad es equivalente a una transformación. La información es más confusa y desorganizada, y la resistencia a los ataques de texto sin formato es más fuerte. El algoritmo PKZIP es un algoritmo de compresión reconocido con muy buena tasa y velocidad de compresión. El algoritmo utilizado en PGP es compatible con PKZIP versión 2.0.

5. Referencias:

Philip Zimmermann: "Guía del usuario de PGP Volumen I: Temas esenciales"

NAI