Código fuente del algoritmo de base mixta
La intención original de la criptografía de clave pública es resolver el problema de distribución de claves.
Alice escribe lentamente una carta a Bob que está lejos, cifrada con el potente AES-256, pero pronto se da cuenta de que cifrar el contenido no es suficiente, debe encontrar una manera segura de decirle a Bob el cifrado. llave. Si la clave también se envía a través de la red, es probable que Eve, una experta en tecnología y voyeur, la escuche a escondidas.
No se puede enviar ni la clave ni la clave secreta. Este es el "problema de distribución de claves" bajo el algoritmo criptográfico simétrico.
Hay varias formas de resolver el problema de distribución de claves:
Este método es efectivo, pero también tiene limitaciones:
A diferencia del primer método, las claves son ya no son conservados por personas que se comunican, sino que son administrados y distribuidos de manera uniforme por el Centro de distribución de claves (KDC). Cuando dos partes necesitan cifrar una comunicación, el KDC generará una clave de comunicación para la comunicación y se la entregará a ambas partes. Ambas partes sólo necesitan compartir la clave con el KDC por adelantado. Esto reduce en gran medida los problemas de gestión y almacenamiento de claves.
Por lo tanto, KDC implica dos tipos de claves:
Apreciar el proceso de KDC:
KDC puede resolver eficazmente los problemas del primer método a través de medios centralizados. Problemas de gestión y distribución, la seguridad no es mala. Pero hay dos problemas obvios:
Cuando se utiliza cifrado de clave pública, la clave de cifrado es diferente de la clave de descifrado. Cualquiera puede cifrar siempre que tenga la clave de cifrado, pero sólo cualquiera que tenga la clave de descifrado puede descifrar. Entonces, con este proceso:
El problema de la distribución de claves se resuelve naturalmente. Por supuesto, la fuga de información causada por la pérdida de la clave de descifrado no es un problema de distribución de claves.
Ahora, echemos un vistazo más de cerca a este proceso.
El núcleo del proceso de cifrado de clave pública se puede resumir en las siguientes cuatro oraciones:
Debido a que la clave de cifrado es pública, también se la denomina "clave pública".
Debido a que la clave de descifrado es privada, también se la denomina "clave privada".
La clave pública y la clave privada están en correspondencia uno a uno y se denominan "pares de claves". Son como pares cuánticos entrelazados, relacionados entre sí mediante estrictos cálculos matemáticos y no pueden generarse individualmente.
Bajo el sistema de criptografía de clave pública, echemos un vistazo a cómo Alice se comunica con Bob.
Bajo el sistema de criptografía de clave pública, el proceso de comunicación lo inicia Bob:
El proceso parece muy simple, pero ¿por qué importa incluso si se roba la clave pública? Esto implica la estricta relación de cálculo matemático mencionada anteriormente. Si el artículo anterior resumió los algoritmos DES y AES de claves simétricas, la siguiente sección también explicará brevemente los principios matemáticos del sistema de clave pública.
Desde que Diffie y Hellman propusieron la idea de diseño de la criptografía de clave pública en 1976, en 1978, Ron Rivest, Adi Samour y Leonard Adleman *** publicaron el algoritmo de criptografía de clave pública, se trata del famoso RSA. , y también es el estándar de facto para el algoritmo criptográfico de clave pública actual. De hecho, los algoritmos de criptografía de clave pública también incluyen ElGamal, Rabin, curva elíptica y otros algoritmos. Esta sección presenta principalmente los principios matemáticos básicos del algoritmo RSA.
Un montón de símbolos, explique: e significa cifrado, d significa descifrado y n significa número.
Como se puede ver en la fórmula, la fórmula matemática para cifrar y descifrar RSA es muy simple (es decir, muy maravillosa). La operación más compleja de RSA no es el cifrado y descifrado, sino cómo generar un par de claves, que es muy diferente del algoritmo de clave simétrica. La llamada relación de cálculo matemático estricto significa que e y d no se seleccionan al azar.
La generación de pares de claves es el tema central de RSA, y la belleza y el misterio de RSA también se esconden en él.
1. Encuentra n
La fórmula para encontrar N: N = p × q
donde p y q son dos números primos, que deben ser muy grandes. pero no son números primos muy grandes. Si es demasiado pequeña, la contraseña se descifrará fácilmente; si es extremadamente grande, el tiempo de cálculo será muy largo.
Por ejemplo, una longitud de 512 bits (155 bits decimales) es más apropiada.
¿Cómo encontrar un número primo? Debe utilizar un generador de números pseudoaleatorios (PRNG) para generarlo y luego determinar si es un número primo. Si no, es necesario regenerarlo y rejuzgarlo.
Encontrar l
La fórmula para encontrar L: L = lcm(p-1, q-1).
Lcm significa "mínimo común múltiplo". Tenga en cuenta que l no es necesario para el cifrado y descifrado, solo aparece durante el proceso de generación del par de claves.
Encontrar e
e satisface dos condiciones:
1)1 & lt; E & ltL
2)gcd(E , L) = 1
Mcd representa el "máximo común divisor". Mcd(E, L) = 1 significa "el máximo común divisor de E y L es 1, es decir, E y L son primos relativos".
L se ha calculado en el segundo paso. Para encontrar E que cumpla las condiciones, se utiliza por segunda vez un generador de números pseudoaleatorios (PRNG) para generar un candidato para E entre 1 y. L para determinar si satisface la condición "gcd" (E, L) = 1".
Después de los primeros tres pasos se obtiene la "clave pública: {E, N}" del par de claves.
Encontrar d
d satisface dos condiciones:
1)1 & lt; D & ltL
2)E × D mod L = 1
Siempre que D cumpla las dos condiciones anteriores, el mensaje cifrado con {E, N} se puede descifrar con {D, N}.
En este punto, se han calculado N, L, E y D. Vamos a resolverlo nuevamente.
El proceso del ejercicio de simulación incluye dos partes, la primera parte es generar el par de claves y la segunda parte es cifrar y descifrar los datos. Para facilitar el cálculo, se utilizan números más pequeños.
Parte 1: Generar par de claves
1. Encuentra n
Prepara dos números primos, p = 5, q = 7, N = 5 × 7 =. 35.
Encuentra l
L = mcm(p-1, q-1) = mcm (4, 6) = 12
Encuentra e
Gcd(E, L) = 1, es decir, E y L son primos relativos, y 1
Encontrar d
E × D mod L = 1, es decir , 5 × D mod 12 = 1. También hay varias alternativas para D que cumplen las condiciones: 5, 17, 41. Elija 17 como D (si elige 5, las claves pública y privada se superponen, lo cual no es intuitivo.
Hasta ahora, tenemos el par de clave pública y clave privada:
Parte 2: Simulación de cifrado y descifrado
En texto sin formato, también usamos el número relativamente pequeño -4, usando la fórmula de cifrado de RSA:
p>
Texto cifrado = texto plano e mod n = 4 5 mod 35 = 9
Texto plano = texto cifrado d mod n = 9 17 mod 35 = 4
De esto se puede ver en el ejemplo de simulación pequeña, incluso si usamos un número pequeño, el resultado intermedio del cálculo es muy grande si se agrega un generador de números pseudoaleatorios para generar un número para determinar. Si se trata de un número primo, es doloroso pensar en este proceso. Afortunadamente, la tecnología de chip moderna ha permitido que las computadoras funcionen a velocidades suficientes. Sin embargo, esta operación matemática sigue siendo bastante lenta en comparación con las operaciones lógicas ordinarias, lo que también es un rendimiento clave. especificación de algunas tarjetas/suites criptográficas asimétricas. Esa es la velocidad de generación de pares de claves.
En el sistema de criptografía de clave pública, la clave pública se utiliza para el cifrado y la clave privada para el descifrado. La clave es pública y la clave privada está oculta. Por lo tanto:
p>La fórmula de cifrado es: texto cifrado = texto plano e mod n
El proceso de descifrado es la operación inversa de este. Dado que la "operación de módulo" se agrega al texto sin formato, la operación inversa es matemáticamente correcta. Ya no es un problema de logaritmo simple, sino un problema de logaritmo discreto que ha sido reconocido en el campo de las matemáticas. Algoritmo eficiente para resolver logaritmos discretos.
La esencia del craqueo por fuerza bruta es intentarlo uno por uno. En el algoritmo RSA convencional actual, P y Q son mayores que 1024 bits, por lo que la longitud de N es. mayor que 2048 bits La longitud de e y d es similar a n, por lo que para encontrar d, es necesario utilizar más de 2048 bits para el craqueo por fuerza bruta.
Incluso para el ejemplo simple anterior, lleva mucho tiempo calcular (obtener) la d en "9 d mod 35 = 4".
Debido a que E y N son conocidos, y D y E están estrechamente relacionados matemáticamente (a través del número medio L), ¿se puede resolver D usando el algoritmo inverso?
Desde este lugar se puede ver que P y Q son extremadamente críticos. Sin filtrar estos dos números, es casi imposible volver a calcular D mediante la fórmula. En otras palabras, para el algoritmo RSA, los piratas informáticos no deben obtener los números primos P y Q, de lo contrario equivaldrá a entregar la clave privada.
Dado que no se puede extraer, N = p × q, y N es conocido, ¿se pueden deducir pyq mediante "factorización prima"? En otras palabras, una vez que encuentre un algoritmo eficiente de "factorización prima", puede romper el algoritmo RSA.
Afortunadamente, esto es lo mismo que la "solución logarítmica discreta" mencionada anteriormente. Actualmente no existe ningún algoritmo de este tipo en matemáticas y, por supuesto, es imposible demostrar si la "factorización de números primos" es realmente un problema difícil. Por lo tanto, sólo puede depender de cálculos rigurosos, que no pueden completarse en un tiempo realista con las capacidades informáticas actuales. Esto también lo menciona mucha gente. "Con la llegada de la era cuántica, los sistemas de cifrado actuales colapsarán".
No sé agarrar ni contar. ¿Puedo adivinar? Es decir, "adivina P y Q para descifrar".
p y Q son generados por PRNG (generador de números pseudoaleatorios), por lo que otro factor clave es que el algoritmo del generador de números pseudoaleatorios utilizado debe ser lo suficientemente aleatorio.
Los números aleatorios son extremadamente importantes para la criptografía y más adelante se escribirá una explicación especial.
Los primeros tres métodos de ataque se basan en la idea de "ataque cara a cara", mientras que el "ataque de intermediario" es una idea indirecta. para descifrar el algoritmo criptográfico, pero engaña a ambas partes comunicantes para obtener el texto sin formato. Específicamente, Mallory, el agresor activo, se mezcla entre el emisor y el receptor, pretendiendo ser el receptor frente al remitente y fingiendo ser el remitente frente al receptor.
Este proceso se puede repetir varias veces. Es importante tener en cuenta que los ataques de intermediario se pueden realizar no sólo contra RSA sino también contra cualquier cifrado de clave pública. Se puede ver que durante todo el proceso la contraseña de la clave pública no ha sido descifrada y el sistema criptográfico opera normalmente, pero hay un problema de confidencialidad, es decir, Alice y Bob pierden la confidencialidad, pero en Alice y Mallory, Mallory Confidentiality Se mantuvo una relación entre Lee y Bob. Incluso si la criptografía de clave pública es n veces más potente, no ayudará. En otras palabras, los algoritmos criptográficos por sí solos no pueden proteger contra ataques de intermediarios.
Para defenderse de los ataques de intermediarios, necesita utilizar otra arma en su caja de herramientas criptográficas: la autenticación. Este tema será tratado en la siguiente nota.
Bien, estos son los conocimientos básicos de criptografía de clave pública.
El sistema de criptografía de clave pública puede resolver perfectamente el problema clave de la "distribución de claves" en el sistema de criptografía simétrica, pero aparte del problema del "ataque de intermediario", la criptografía de clave pública El sistema en sí tiene un problema grave:
Los cifrados de clave pública son mucho más lentos de procesar que los cifrados simétricos. No sólo en la generación de pares de claves, sino también en las operaciones de cifrado y descifrado.
Por lo tanto, en escenarios de aplicación práctica, a menudo se construye un "criptosistema híbrido" combinando las ventajas de la criptografía simétrica y la criptografía de clave pública. En pocas palabras: primero use un cifrado simétrico relativamente eficiente para cifrar el mensaje y garantizar la confidencialidad del mensaje; luego use un cifrado de clave pública para cifrar la clave del cifrado simétrico para garantizar la confidencialidad de la clave;
El siguiente es el diagrama de flujo de cifrado y descifrado del sistema de cifrado mixto. Todo el sistema se divide en dos partes: la parte izquierda es el proceso de cifrar la clave de sesión y la parte derecha es el proceso de cifrar el mensaje original. El mensaje original suele ser más largo y es más eficaz utilizar un algoritmo criptográfico simétrico. La clave de sesión suele ser corta (de decenas a docenas de bytes); Aunque los algoritmos de criptografía de clave pública son menos eficientes desde el punto de vista computacional, el cifrado y descifrado de claves de sesión no requiere mucho tiempo.
El conocido software criptográfico PGP, SSL/TLS, las especificaciones de construcción de seguridad pública de videovigilancia (GB35114) y otras aplicaciones utilizan criptosistemas híbridos.
Está bien, eso es todo en cuanto al contenido del algoritmo de criptografía de clave pública. Me llevó mucho tiempo, pero seré más diligente en el futuro.
Para evitar ser procesado por estúpidos robots de censura, no adjuntaré fotos de chicas hermosas (también por tu salud), y las cambiaré a mi fotografía, aunque espero que no afecte las calificaciones. Hay muchos chicos que vienen aquí por chicas.
Hablemos primero del viaje a Kanas.