Cifrado de conocimiento de cifrado y descifrado de algoritmos RSA

Resumen de RSA

Primero mire el nombre de este algoritmo de cifrado, es muy interesante, en realidad es el nombre de tres personas. Ya en 1977, tres encriptadores Rivest, Shamir y Adleman del Instituto de Tecnología de Massachusetts propusieron este algoritmo de encriptación y los nombraron con las letras iniciales de sus tres apellidos.
RSA se puede usar como cifrado asimétrico. La clave pública y la clave secreta son relativas. Esto se debe a que la información cifrada por uno puede ser descifrada por el otro. En general, la clave secreta que usted mantiene es la clave privada y la clave pública se envía a la otra parte. A continuación, solucionemos el algoritmo RSA. Prerrequisitos: teoría de números relacionada

Pasos clave de generación

Utilizamos un ejemplo para comprender el algoritmo RSA. Supongamos que Alice quiere comunicarse encriptada con Bob, ¿cómo debería generar claves públicas y privadas?

  • El primer paso es seleccionar 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 descifrarlo).

  • En el segundo paso, se calcula el producto n de pyq.

Alice multiplicó 61 y 53.

n = 61 × 53 = 3233

La longitud de n es la longitud de la clave. 3233 se escribe como binario es 110010100001, hay 12 bits en total, por lo que esta clave es de 12 bits. En aplicaciones prácticas, la clave RSA es generalmente de 1024 bits y 2048 bits en ocasiones importantes.

  • El tercer paso es calcular la función de Euler φ (n) de n.

    De acuerdo con la fórmula:
    φ (n) = (p-1) (q-1)

Alice calculó que φ (3233) es igual a 60 × 52, o 3120.

  • En el cuarto paso, se selecciona aleatoriamente un número entero e, siempre que 1 <e <φ (n), y e y φ (n) sean relativamente primos.

Alice tiene entre 1 y 3120, eligiendo al azar 17. (En la práctica, a menudo se selecciona 65537).

  • En el quinto paso, calcule el elemento inverso d de e para φ (n).

    El llamado "elemento inverso del módulo" se refiere a un número entero d, que puede dividirse entre φ (n), el resto es 1.

    ed ≡ 1 (mod φ (n))

    Esta fórmula es equivalente a

    ed - 1 = kφ (n)

    Por lo tanto, encontrar el elemento inverso d es esencialmente resolver la siguiente ecuación lineal binaria.

    ex + φ(n)y = 1

Se sabe que e = 17, φ (n) = 3120,

17x + 3120y = 1

Esta ecuación se puede resolver mediante "Algoritmo euclidiano extendido", y el proceso específico se omite aquí. En resumen, Alice calculó un conjunto de soluciones enteras como (x, y) = (2753, -15), es decir, d = 2753.

En este punto, todos los cálculos están completos.

  • El sexto paso es encapsular nye en una clave pública, ynyd 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).

Cifrar y descifrar

(1) La clave pública (n, e) se usa para el cifrado

Supongamos que Bob quiere enviar información encriptada m a Alice, él encriptará m con la clave pública de Alice (n, e)
. Debe notarse aquí que m debe ser un número entero (la cadena puede tomar un valor ascii o unicode), ym debe ser menor que n.

El llamado "cifrado" es calcular la siguiente fórmula c:
  

La clave pública de Alice es (3233, 17), y la hipótesis m de Bob es 65, entonces se puede calcular la siguiente ecuación:

6517 ≡ 2790 (mod 3233)

Entonces, c es igual a 2790, y Bob envía 2790 a Alice.

(2) Use la clave privada (n, d) para descifrar

Después de que Alice recibió el 2790 de Bob, lo descifró con su clave privada (3233, 2753). Se puede demostrar que se debe establecer la siguiente ecuación:

es decir, el resto de c dividido por la potencia de d dividido por n es m.

Ahora, c es igual a 2790, y la clave privada es (3233, 2753), entonces, Alice calculó

27902753 ≡ 65 (mod 3233)

Por lo tanto, Alice sabía que el texto original antes del cifrado de Bob era 65.

En este punto, se completa todo el proceso de "cifrado-descifrado".

Verificación de firma RSA

El criptosistema RSA se puede usar tanto para cifrado como para firmas digitales. La función de firma digital RSA se presenta a continuación.
Clave pública conocida (e, n), clave privada d:

1) La firma para el mensaje m es: signo ≡ m ^ d mod n
2) Verificación: Para el par de firma de mensaje (m, signo), si m ≡ signo ^ e mod n, entonces el signo es una firma válida de m

Fiabilidad del algoritmo RSA

Recordando los pasos de generación de claves anteriores, aparece un total de seis números:

p q n φ (n) yd

De estos seis números, dos (nye) se usan para la clave pública, y los cuatro números restantes son privados. La más crítica es d, porque ny d forman una clave privada, una vez que d se filtra, es igual aFuga de clave privada

Entonces, ¿es posible derivar d si n y e son conocidos?

  • (1) ed≡1 (mod φ (n)). Solo conociendo e y φ (n) podemos calcular d.

  • (2) φ (n) = (p-1) (q-1). Solo conociendo pyq podemos calcular φ (n).

  • (3) n = pq. Solo factorizando n pueden calcularse pyq.

Conclusión: si n puede factorizarse, d puede calcularse, lo que significa que la clave privada está descifrada.

Sin embargo, factorizar enteros grandes es algo muy difícil. En la actualidad, además del craqueo por fuerza bruta, no se han encontrado otros métodos efectivos. Wikipedia escribe:

La dificultad de factorizar enteros grandes 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. Mientras la longitud de la clave sea lo suficientemente larga, la información cifrada con RSA no se puede romper. Hoy, solo las claves RSA cortas pueden ser forzadas por la fuerza bruta. A partir de 2008, no existe una forma confiable de atacar el algoritmo RSA en el mundo. La clave RSA más larga que está actualmente descifrada es de 768 bits.

Práctica RSA

Es fácil simular el proceso de cifrado y descifrado RSA utilizando el openssl que viene con mac.

1) Generamos una clave pública:
Inserte la descripción de la imagen aquí
2) Extraemos la clave pública de la clave privada
Inserte la descripción de la imagen aquí
Ahora tenemos estos dos archivos:

3 、 Primero escribimos un pedazo de datos de archivos claros, ciframos los datos con la clave pública y luego desciframos los datos con la clave privada
Inserte la descripción de la imagen aquí

Enlace de referencia

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

Publicado 4 artículos originales · recibido 1 · vistas 232

Supongo que te gusta

Origin blog.csdn.net/hito_Chen/article/details/105438797
Recomendado
Clasificación