Colección de citas famosas - Colección de consignas - Conceptos básicos de cifrado 2 Algoritmo RSA de cifrado asimétrico y cifrado simétrico

Conceptos básicos de cifrado 2 Algoritmo RSA de cifrado asimétrico y cifrado simétrico

En el proceso anterior, aparecieron la clave pública (3233,17) y la clave privada (3233,2753). Principio del algoritmo RSA de referencia (2)

Descripción del acrónimo: E significa cifrado (Encryption) D significa descifrado (Decryption) N significa número (Number).

1. Selecciona aleatoriamente dos números primos desiguales p y q.

Alice eligió 61 y 53. (En aplicaciones prácticas, cuanto más grandes son estos dos números primos, más difícil es descifrarlos).

2. Calcule el producto n de p y q.

n = 61×53 = 3233

La longitud de n es la longitud de la clave. 3233 escrito en binario es 110010100001. Hay 12 dígitos en un dígito, por lo que la clave tiene 12 dígitos. En aplicaciones prácticas, la clave RSA es generalmente de 1024 bits y, en casos importantes, de 2048 bits.

3. Calcula la función de Euler φ(n) de n. Llamado L

Según la fórmula φ(n) = (p-1)(q-1)

Alice calcula que φ(3233) es igual a 60×52, que es 3120.

4. Seleccione aleatoriamente un número entero e, que es el número utilizado para el cifrado en la clave pública

La condición es 1< e < φ(n), y e y φ( n ) son relativamente primos.

Alice está entre 1 y 3120, y se selecciona 17 al azar. (En aplicaciones prácticas, a menudo se elige 65537.)

5. Calcule el elemento inverso modular d de e con respecto a φ(n). Es decir, el número utilizado para descifrar en la clave

El llamado "elemento inverso modular" significa que hay un número entero d que puede hacer que el resto de ed dividido por φ(n) sea igual a 1 . ed ≡ 1 (mod φ(n))

alice encontró 2753, es decir, 17*2753 modo 3120 = 1

6. Encapsule n y e en claves públicas, n y d está encapsulado en una clave privada.

En el ejemplo de Alice, n=3233, e=17, d=2753, entonces la clave pública es (3233,17) y la clave privada es (3233, 2753).

En la historia anterior, el blob utiliza la clave pública para el cifrado con el fin de transmitir en secreto el número de móvil 6, es decir, 6^17 modo 3233 = 824. Después de que Alice recibe 824, lo descifra, es decir, 824^2753 mod 3233 = 6. En otras palabras, Alice recibió con éxito la cantidad de bits de movimiento utilizados por el blob.

Repasemos nuevamente todo el proceso:

p=17,q=19

n = 17 19 = 323

L = 16 18 = 144

E = 5 (E necesita satisfacer las dos condiciones siguientes: 1

D = 29 (D debe satisface dos condiciones Condición, 1

Supongamos que alguien necesita transmitir 123, luego después del cifrado: 123^5 modo 323 = 225

El destinatario recibe Después de 225, descifrar, 225^ 29 modo 323 = 123

Volviendo a los pasos de generación de claves anteriores, aparecen seis números en uno ***:

p

q

n

L es φ(n)

e

d

Estos seis Entre los números, dos se utilizan en la clave pública (n y e), y los cuatro números restantes no son públicos. El más crítico es d, porque nyd constituyen la clave privada. Una vez que se filtra d, significa que se filtra la clave privada.

Entonces, ¿es posible deducir d cuando se conocen n y e?

(1) ed≡1 (mod φ(n)). Sólo conociendo e y φ(n) podemos calcular d.

(2)φ(n)=(p-1)(q-1). Sólo conociendo p y q podemos calcular φ(n).

(3) n=pq. Sólo factorizando n podemos calcular p y q.

Conclusión: si n se puede factorizar, se puede calcular d, lo que significa que la clave privada ha sido descifrada.

Sin embargo, factorizar números enteros grandes es algo muy difícil. En la actualidad, aparte del craqueo por fuerza bruta, no se ha encontrado ningún otro método eficaz. Wikipedia escribe: "La dificultad de factorizar un número entero muy grande determina la confiabilidad del algoritmo RSA. En otras palabras, cuanto más difícil es factorizar un número entero muy grande, más confiable es el algoritmo RSA. Supongamos que alguien encuentra una factorización rápida algoritmo, entonces la confiabilidad de RSA será extremadamente baja, pero la posibilidad de encontrar dicho algoritmo es muy pequeña. Hoy en día, solo se pueden descifrar claves RSA cortas. A partir de 2008, no existe una forma confiable de atacar. el algoritmo RSA siempre que la longitud de la clave sea lo suficientemente larga, la información cifrada con RSA en realidad no se puede descifrar "

Sin embargo, aunque la seguridad de RSA se basa en la factorización de grandes números. No se ha demostrado teóricamente que la dificultad de descifrar RSA sea equivalente a la dificultad de descomponer números grandes. Es decir, el principal defecto de RSA es que es imposible comprender teóricamente su desempeño en materia de confidencialidad. Además, las deficiencias de RSA incluyen:

A) Es problemático generar claves. Está limitado por la tecnología de generación de números primos, por lo que es difícil lograr un cifrado único.

B) La longitud del bloque es demasiado grande para garantizar la seguridad, n debe ser de al menos 600 bits, lo que hace que el costo de la operación sea muy alto, especialmente la velocidad, que es varios órdenes de magnitud más lenta. el algoritmo criptográfico simétrico y con el desarrollo de la tecnología de descomposición de grandes números, esta longitud sigue aumentando, lo que no favorece la estandarización de los formatos de datos. Por lo tanto, solo se puede cifrar una pequeña cantidad de datos mediante RSA y grandes cantidades de datos se deben cifrar mediante algoritmos de criptografía simétrica.

El cifrado y descifrado son tecnologías que existen desde la antigüedad. A menudo veo escenas de películas de detectives en las que el valiente e ingenioso protagonista se angustia con una larga lista de números sin sentido. De repente, se le ocurre una idea y saca un libro grueso y relaciona el primer número con el número de página correspondiente. al número de líneas, y el tercer número corresponde a una determinada palabra en esa línea. Los números se convirtieron en una cadena de palabras muy significativas:

Come la tofu con maní. Sabe a jamón.

Este método de cifrado consiste en convertir la información original en una determinada A. el patrón está alterado. Cierta forma de codificación se llama código cifrado. La persona que envía el mensaje usa la clave para cifrar el mensaje y la persona que recibe el mensaje usa la misma clave para descifrarlo. Es como una caja cerrada. La persona que envió el mensaje lo colocó en la caja y la cerró con una llave. Y la persona que recibe el mensaje lo abre con la misma clave. Se utiliza la misma clave para cifrar y descifrar. Este cifrado se denomina cifrado simétrico.

Si es uno a uno, entonces las dos personas deben intercambiar una clave. Para comunicaciones de uno a muchos, como la comunicación entre la sede y varios agentes, aún se puede utilizar el mismo conjunto de claves. Pero en este caso, si el oponente roba una clave, conocerá toda la información intercambiada. Muchos de los logros de los aliados en la guerra de inteligencia en la Segunda Guerra Mundial provinieron de descifrar la clave de este cifrado simétrico.

Para mayor seguridad, la central necesita diseñar una clave diferente para cada agente. Si se trata de una organización enorme como el FBI, puede resultar difícil mantener tantas claves. En la sociedad moderna, la información de las tarjetas de crédito de todas las personas debe estar cifrada. Si diseñas las llaves una a una, probablemente el banco se arrodillará.

La debilidad del cifrado simétrico es dar las claves a demasiadas personas. Sería más fácil si sólo los agentes recibieran la cerradura y el cuartel general se quedara con la llave. El agente encerró la información en la caja con candado y nadie podía abrirla a menos que fuera a la sede y la abriera con la única llave. Es solo que si este es el caso, los agentes tendrán que usar muchos candados cada vez que salgan y será demasiado fácil descubrir sus identidades. El jefe de la sede pensó por un momento y simplemente hizo pública la tecnología de fabricación de cerraduras.

Los agentes, o cualquier otra persona, pueden usar materiales locales para construir una cerradura basada en un plano, pero no pueden crear una llave basada en un plano. La única llave es la del cuartel general.

La clave de lo anterior es que los procesos de bloqueo y llave son diferentes. Conocer la cerradura no significa conocer la llave. De esta forma, el banco puede publicar el método de "fabricación de candados" para todos los usuarios. Cada usuario puede utilizar el candado para cifrar la información de su tarjeta de crédito. Incluso si otras personas te escuchan, no te preocupes: ¡sólo el banco tiene la llave! Este algoritmo de cifrado se denomina cifrado asimétrico. El algoritmo clásico de cifrado asimétrico es el algoritmo RSA. Proviene de la maravillosa combinación de teoría de números y conteo por computadora.

En 1976, dos informáticos estadounidenses, Whitfield Diffie y Martin Hellman, propusieron una nueva idea que podía completar el descifrado sin transmitir directamente la clave. Esto se denomina "algoritmo de intercambio de claves Diffie-Hellman". Este algoritmo inspiró a otros científicos. Se reconoció que podían utilizarse reglas diferentes para el cifrado y el descifrado, siempre que hubiera cierta correspondencia entre las dos reglas, evitando así la necesidad de pasar la clave directamente. Este nuevo modo de cifrado se denomina "algoritmo de cifrado asimétrico".

En 1977, tres matemáticos, Rivest, Shamir y Adleman, diseñaron un algoritmo que podía lograr un cifrado asimétrico. Este algoritmo lleva el nombre de tres de ellos y se llama algoritmo RSA. Desde entonces hasta ahora, el algoritmo RSA ha sido el "algoritmo de cifrado asimétrico" más utilizado. No es exagerado decir que dondequiera que haya una red informática, existe un algoritmo RSA.

1. Una caja fuerte que se puede "golpear" (cifrado de clave pública/asimétrica)

El cifrado y descifrado de datos es muy similar a la cerradura de una puerta. Al principio, la gente sólo pensaba en el tipo de cerradura que sólo podía "bloquear" datos con una llave. Si cifra datos en su propia computadora, por supuesto, puede usar la cerradura de puerta original, que es conveniente, rápida y fácil de usar.

Pero ahora estamos en la era de la comunicación. ¿Qué debemos hacer si ambas partes queremos comunicarnos de forma segura? Si también se usa de esta manera, la comunicación es como enviarse mutuamente una contraseña segura... y ambas partes deben tener la clave para cifrar y descifrar. En otras palabras, ambas personas tienen las llaves de la caja fuerte. Tú pones los datos, los cierras con la llave y me los envías. Utilizo la misma clave para abrir la caja fuerte, encerrar mis datos en la caja fuerte y te los envío.

Esto parece estar bien. Pero la pregunta más importante aquí es: ¿Cómo conseguimos ambos la misma llave para la misma caja fuerte? Parece que la única manera es que los dos compremos una caja fuerte juntos, y luego cada uno recibirá una llave y usaremos esta caja fuerte de ahora en adelante. Sin embargo, en la sociedad de la comunicación moderna, en la mayoría de los casos es difícil incluso reunirse en persona, y mucho menos comprar una caja fuerte juntos. ¿Qué debo hacer?

Entonces, la gente pensó en el método de "golpear la puerta". Tengo una caja fuerte con la que se puede "chocar". También puedes comprar una caja fuerte como ésta allí. Al inicio de la comunicación, abrí la caja fuerte y te la envié abierta. Después de ingresar los datos, "golpea" la caja fuerte y envíamela. Después de la colisión, nadie excepto yo pudo abrir la caja fuerte. Esto es RSA. La caja fuerte pública es la clave pública, pero solo puedo abrirla si tengo la clave privada.

2. Firma digital

Este tipo de candado tiene muy buena pinta, pero existe un problema muy grave durante el transporte del candado: ¿cómo puedes estar seguro de que el que recibes? ¿Está abierta? ¿Me enviaron la caja fuerte? Una persona inteligente puede hacer esto:

(a) Fingir ser un trabajador del transporte. Ahora envío mi caja fuerte abierta a la otra parte. El transportista también hizo una caja fuerte de este tipo y la reemplazó por una hecha por él mismo durante el transporte.

(b) Una vez que la otra parte recibe la caja fuerte, no hay forma de saber si la envié originalmente o la reemplazó un trabajador del transporte. La otra parte ingresó los datos y abrió la caja fuerte.

(c) Al transportar la mercancía de regreso, los trabajadores del transporte utilizan sus propias llaves para abrir sus propias cajas fuertes y llevarse los datos. Luego haz una copia o falsificala, ponla en mi caja fuerte, bórrala y envíamela.

Desde mi perspectiva y la de la otra parte, creo que no hay ningún problema con el proceso de transmisión de datos. Sin embargo, los trabajadores del transporte obtuvieron los datos con éxito, pero todo el proceso aún era inseguro. El proceso aproximado es el siguiente:

¿Qué debo hacer? La razón esencial de este problema es que la gente no tiene forma de saber si la caja fuerte la hice "yo" o el trabajador del transporte. ¿Por qué no simplemente hacemos cajas fuertes? Dejamos que las autoridades hagan cajas fuertes y luego usamos herramientas especiales para grabar un número en cada caja fuerte. Cuando la otra parte reciba la caja fuerte, comprobará el número en el "tablón de anuncios" de la organización autorizada. Si es el mismo que el número de la caja fuerte, sabré que la caja fuerte es "mía" y puedo hacerlo con seguridad. Pon los datos en él. El proceso aproximado es el siguiente:

¿Cómo hacer una caja fuerte que tenga grabado un número y el número no se pueda modificar? Se trata de otra cuestión en el sistema de clave pública: las firmas digitales.

Ya sabes, cualquiera puede grabar, por lo que es realmente difícil hacer una caja fuerte que sólo puedas grabar tú mismo y que otros no puedan modificar. Entonces, ¿qué hacer? De hecho, esto ha preocupado a la gente durante mucho tiempo. Hasta que un día, la gente descubrió que no es necesario grabar palabras claras en la caja fuerte. Solo podemos grabar nombres escritos a mano. Además, el grabado es un poco problemático, por lo que también podríamos colocarle un trozo de papel y dejar que la gente escriba directamente en él. Es sencillo y sin complicaciones. El método específico es insertar una hoja de papel en la caja fuerte y luego dejar que el director ejecutivo de la organización autorizada firme su nombre en cada caja fuerte producida. Luego, el director general publica su firma en el "tablón de anuncios" de la organización autorizada. Por ejemplo, si el director ejecutivo se llama "Xuesu", todo el proceso se verá así:

El principio esencial de este método es que todos pueden saber a través de la escritura si las palabras en la caja fuerte están firmadas. por el CEO de Xuesu de. Sin embargo, esta fuente es la única utilizada por el CEO de Xuesu. A los demás les resulta difícil imitar. Si lo imitamos, podemos contarlo nosotros mismos. Si realmente no podemos notar la diferencia, le pediremos a un experto en escritura que la note. ¿No es esto genial? Esta es una firma digital en criptografía.

Aunque el método de firma anterior es bueno, todavía tiene un problema bastante doloroso. Debido a que la firma es pública, una persona inteligente puede hacer una fotocopia de la firma pública, construir una caja fuerte y luego incrustar en ella las palabras fotocopiadas. De esta forma, este inteligente también podrá construir una caja fuerte con la misma firma. Una forma muy sencilla de resolver este problema es que al mirar la firma en la caja fuerte, no solo mire la fuente en sí, sino también si la fuente es exactamente la misma que la fuente pública. Si son exactamente iguales, puedes considerar que la firma puede ser una fotocopia. Aún más, compruebe si la fuente es exactamente la misma que la de otras cajas fuertes. Porque para engañar a todos, una persona inteligente no puede fotocopiar la firma pública, sino fotocopiarla en otras cajas fuertes. Aunque esta solución es sencilla, resulta más problemática a la hora de verificar la firma. El problema es que no sólo necesito comparar si la firma en la caja fuerte es la misma que la escritura pública, sino también si la firma obtenida es exactamente la misma que la escritura pública, o incluso si es exactamente la misma que las firmas. en todas las cajas fuertes liberadas. ¿Hay alguna manera mejor?

Por supuesto, la gente ha pensado en una forma mejor. Es decir, al firmar como director general, no solo debes firmar con tu nombre, sino también llevar la fecha de la firma o el número de la caja fuerte. De esta forma, la firma en cada caja fuerte será única. Esta firma es la firma del CEO de Xuesu + la hora o número escrito por el CEO de Xuesu. De esta forma, aunque alguien la falsifique, sólo podrá falsificar cajas fuertes usadas. Este problema está completamente solucionado.

El proceso probablemente se vea así:

3 cuestiones de costos (mecanismo de encapsulación de claves)

Después de resolver los problemas anteriores, debemos considerar el costo... Aunque este tipo de caja fuerte Puede "golpear" la puerta es bueno, el costo de este tipo de cerradura es generalmente más alto que el de las cerraduras comunes y el tiempo de producción de la cerradura también será más largo. En criptografía, para la misma cerradura "fuerte", el costo de una cerradura que puede "golpear" una puerta es generalmente miles de veces mayor que el de una cerradura normal. Al mismo tiempo, las cerraduras que pueden "golpear" la puerta generalmente sólo se pueden instalar en cajas fuertes pequeñas. Después de todo, ¡una cerradura tan complicada es muy complicada de instalar! Se pueden instalar cerraduras comunes en cualquier caja fuerte. Si dos personas quieren transferir una gran cantidad de datos, es mucho mejor usar una caja fuerte grande que usar un montón de cajas fuertes pequeñas para transferir lentamente. ¿Cómo solucionar este problema? A la gente se le ocurrió otra excelente manera: combinamos dos tipos de cerraduras. Una caja fuerte que se puede "golpear" contiene la llave de una cerradura normal. Luego construya una caja fuerte común para bloquear una gran cantidad de datos. De esta forma, equivalemos a enviar una llave a una caja fuerte que puede ser "golpeada". Después de que la otra parte recibió las dos cajas fuertes, primero abrió la pequeña caja fuerte con su propia llave y la sacó. Luego use esta llave para abrir la caja fuerte grande. Lo que es aún mejor de esto es que dado que la otra parte ha obtenido una clave, ya no necesitamos una caja fuerte con la que podamos "chocar" cuando nos comuniquemos nuevamente. Podemos simplemente usar una caja fuerte común durante un cierto período de tiempo en el futuro. Sí, es cómodo y rápido.

La siguiente referencia: ¿Cuál es la relación entre firmas digitales, certificados digitales, SSL y https?

4. Firma Digital (Firma Digital)

Cuando los datos se transmiten entre el navegador y el servidor, el contenido puede ser reemplazado por un ladrón que se hace pasar por un ladrón durante el proceso de transmisión. ¿Y qué? ¿Cómo garantizar que los datos sean enviados por el servidor real sin ser transferidos y cómo garantizar que los datos transmitidos no hayan sido manipulados? Para resolver estos dos problemas, solo se deben utilizar firmas digitales. como las firmas en la vida diaria. Una vez que su nombre está en el contrato, se determina legalmente que es su firma. Nadie puede imitarla porque es su letra exclusiva y nadie puede crearla. Entonces, ¿qué pasa con las firmas digitales en las computadoras? Las firmas digitales se utilizan para verificar si el contenido transmitido son los datos enviados por el servidor real y si los datos enviados han sido manipulados. Hace estas dos cosas y es un escenario de aplicación de cifrado asimétrico. Pero en su lugar utiliza la clave privada para cifrarla y descifrarla a través de la clave pública emparejada.

Paso 1: El servidor procesa el mensaje a través de Hash para generar el resumen de información. La información del resumen se cifra utilizando la clave privada para generar una firma. El servidor envía la firma junto con el mensaje. al cliente.

Paso 2: Después de recibir los datos, el cliente extrae la firma y usa la clave pública para descifrarla. Si Digest2 se puede descifrar normalmente, se puede confirmar que fue enviado por la otra parte.

Paso 3: El cliente extrae el texto del mensaje y realiza el mismo proceso de hash. La información de resumen obtenida Digest1 se compara con el Digist2 previamente descifrado. Si los dos son iguales, significa que el contenido tiene. No ha habido manipulación, en caso contrario el contenido ha sido alterado. Porque siempre que haya algún ligero cambio en el contenido del texto, se generará una información resumida completamente diferente.

5. Certificado digital (Autoridad certificadora)

El certificado digital, denominado CA, es un certificado reconocido emitido por una organización autorizada para un sitio web. Este certificado es reconocido por todos (. navegador) Como se reconoce, ¿por qué necesitamos utilizar certificados digitales? ¿No son las firmas digitales lo suficientemente seguras? Existe una situación en la que el navegador no puede determinar si todos los servidores reales son reales. Aquí hay un ejemplo simple: el fabricante A instala una cerradura para su casa y le entrega la llave al mismo tiempo, siempre que la llave pueda abrir la cerradura. puede estar seguro de que la llave y la cerradura coinciden. Si alguien cambia la llave o la cerradura y no puede abrir la puerta, sabrá que debe haber sido robada. Pero si alguien reemplaza la cerradura y la llave por otra, los juegos parecen. similar en la superficie, pero la calidad es mucho peor. Aunque la llave y la cerradura coinciden, no está seguro de si realmente se la entregó el fabricante A. En este momento, puede solicitar al departamento de inspección de calidad que verifique si. El juego de cerraduras realmente proviene del fabricante A, el departamento de inspección de calidad es una organización autorizada y lo que dice puede ser reconocido por el público (jaja).

De manera similar, porque si alguien (Zhang San) reemplaza la clave pública enviada por el servidor real al navegador con su propia clave pública, entonces Zhang San usa su propia clave privada para realizar los mismos pasos para realizar el hash del texto, firma digital, no hay nada de malo en el resultado final, pero de hecho lo que ve el navegador no es lo que proporciona el servidor real, sino que Zhang San lo cambia de adentro hacia afuera (de clave pública a clave privada). Entonces, ¿cómo garantizar que la clave pública que está utilizando ahora sea la que le envió el servidor real? Utilizamos certificados digitales para solucionar este problema. Los certificados digitales generalmente son emitidos por una autoridad de certificación digital (Autoridad de certificación). El certificado contiene la clave pública del servidor real y alguna otra información sobre el sitio web. La autoridad de certificación digital la cifra con su propia clave privada y la envía al navegador. El navegador utiliza el certificado digital. La clave pública de la organización se descifra para obtener la clave pública del servidor real. Este proceso se basa en la clave pública obtenida de una autoridad certificadora reconocida por todos, por lo que es un método seguro.

Los algoritmos de cifrado simétrico comunes incluyen DES, 3DES, AES, RC5 y RC6. Los algoritmos de cifrado asimétrico son muy utilizados como SSH,

HTTPS, TLS, certificados electrónicos, firmas electrónicas, DNI electrónicos, etc.

Referencia diferencias DES/3DES/AES