Cifre utilizando el algoritmo rsa. Cifrado RSA. Descripción e implementación del algoritmo RSA. Intentos de piratería en los tiempos modernos.

Algoritmo de cifrado de clave pública RSA Fue uno de los primeros propuestos a finales de los años 70 del siglo XX. Su nombre se compone de las primeras letras de los apellidos de los autores: R. Rivest, A. Shamir y L. Adleman. El algoritmo RSA es probablemente el más popular y utilizado. algoritmo asimétrico en sistemas criptográficos.

El algoritmo se basa en el hecho de que el problema de descomponer un número grande en factores primos es difícil. El sistema criptográfico RSA se basa en los dos hechos siguientes de la teoría de números:

  1. la tarea de comprobar la primalidad de un número es relativamente fácil;
  2. el problema de descomponer números de la forma n = pq (p y q son números primos); factorizar es muy difícil si solo conocemos n, p y q - números grandes(Este es el llamado problema de factorización; para obtener más información al respecto, consulte “Principios básicos de la teoría de números utilizados en la criptografía de clave pública”).

El algoritmo RSA es un algoritmo de cifrado de bloques en el que los datos cifrados y no cifrados deben representarse como números enteros entre 0 y n -1 para algún n.

Cifrado

Entonces, veamos el algoritmo en sí. Deje que el suscriptor A quiera enviar un mensaje cifrado al suscriptor B. En este caso, el suscriptor B debe preparar un par (clave pública; clave privada) y enviar su clave pública al usuario A.

El primer paso es generar claves públicas y privadas. Para hacer esto, primero seleccione dos números primos grandes P y Q. Luego se calcula el producto N:

Después de esto, se determina el número auxiliar f:

f = (P - l)(Q - 1).

Entonces el número d se selecciona aleatoriamente< f и взаимно простое с f .

Los números d y N serán la clave pública del usuario y el valor e será la clave privada.

Entonces en este punto el usuario debería tener la información listada en la siguiente tabla:

Dado que el usuario B desea recibir un mensaje cifrado del usuario A, entonces el usuario B debe enviar su clave pública (d, N) al usuario A. Los números P y Q ya no son necesarios, pero no se pueden compartir con nadie; Lo mejor es olvidarlos por completo.

En este punto, se completa la etapa de preparación de la clave y se puede utilizar el protocolo RSA principal para cifrar los datos.

Segunda etapa: cifrado de datos. Si el suscriptor A quiere enviar algunos datos al suscriptor B, debe enviar su mensaje a formulario digital y romperlo en bloques m 1, m 2, m 3, ..., donde m i< N . El mensaje cifrado constará de bloques con i .

El suscriptor A cifra cada bloque de su mensaje usando la fórmula

c yo = metro yo re mod N

usando parámetros públicos usuario B, y envía el mensaje cifrado C=(c 1, c 2, c 3, ...) a través de una línea abierta.

El suscriptor B, que recibió un mensaje cifrado, descifra todos los bloques del mensaje recibido utilizando la fórmula

Todos los bloques descifrados serán exactamente iguales a los provenientes del usuario A.

Un atacante que intercepta todos los mensajes y lo sabe todo. abrir informacion, no podrá encontrar el mensaje original para valores grandes de P y Q.

Ejemplo de cálculos de algoritmos.

Deje que el usuario A quiera enviar un mensaje al usuario B. En este caso, el primer usuario B debe preparar una puerta abierta y claves privadas. Permítales seleccionar, por ejemplo, los siguientes parámetros:

P = 3, Q = 11, N = 3x11 = 33.

Entonces f = (P - l)(Q - 1) = (3-1)(11-1) = 20.

Luego, el usuario B elige cualquier número d que no tenga divisores comunes con f (esto es necesario para que el mensaje cifrado pueda recuperarse de forma única). Sea d = 13. Este número será uno de los componentes de la clave pública.

El esquema Rivest-Shamir-Adleman (RSA) es actualmente el único esquema de cifrado de clave pública ampliamente aceptado y utilizado en la práctica.

El esquema RSA es un cifrado de bloque en el que tanto el texto plano como el texto cifrado están representados por números enteros que van de 0 a PAG- 1 para algunos PAG.

El texto sin formato se cifra en bloques, cada uno de los cuales contiene un valor binario menor que un número específico. PAG. Esto significa que la longitud del bloque no debe ser superior a log2(“). En la práctica, la longitud del bloque se elige para que sea 2 mil bits donde 2 a El esquema desarrollado por Rivest, Shamir y Adleman se basa en expresiones con potencias. El cifrado y descifrado del bloque de texto plano M y el bloque de texto cifrado C se pueden representar mediante las siguientes fórmulas:

Tanto el remitente como el destinatario deben conocer el significado. PAG. El remitente conoce el significado. mi, y sólo el destinatario sabe el significado d. De este modo, este esquema es el algoritmo de cifrado de clave pública KU= (mi, p), y clave privada KR = (d,p).

Para que este algoritmo se pueda utilizar para el cifrado de clave pública, se deben cumplir los siguientes requisitos:

Deben existir tales valores. e, d Y PAG, Qué Med. = M(mod. PAG) para todos los M p.

IVT y debería ser relativamente fácil de calcular c1 para todos los valores de M p.

Debe ser casi imposible determinar d según disponible ella p.

Analicemos primero el primer requisito y veamos el resto más adelante. Es necesario encontrar una relación de la forma.

Aquí el corolario del teorema de Euler es más adecuado: para dos números primos cualesquiera R Y q y dos enteros cualesquiera Pete, Qué n=pqn0 y un número entero arbitrario A se mantienen las siguientes relaciones:

donde φ(i) es la función de Euler, cuyo valor es igual al número de enteros positivos menores que PAG y cebar mutuamente con PAG.

En el caso de simples R Y q tenemos f (pq) - (p - 1 )(q - 1). Por lo tanto, la relación requerida se obtiene bajo la condición

Esto equivale a las siguientes relaciones:

aquellos. rebaño son mutuamente inversos módulo φ(i). Tenga en cuenta que, de acuerdo con las reglas de la aritmética en las clases de residuos, esto sólo puede ocurrir cuando d(y por lo tanto mi) es primo relativo con φ(u). En notación equivalente (f(/7), d)=.

Ahora tenemos todo para presentar el circuito RSA. Los componentes del circuito son:

R Y q- dos números primos (secretos, seleccionados);

p-pq(abierto, calculado);

semejante mi, qué (f(i), mi)= 1,1 mi

d = el(mod f(/?)) (secreto, calculado).

La clave privada se compone de (d,n), y abierto - desde (e, p). Supongamos que el usuario A ha publicado su clave pública y ahora el usuario B le reenviará el mensaje M.

Luego el usuario B calcula el mensaje cifrado.

Habiendo recibido este texto cifrado, el usuario A lo descifra calculando

Tiene sentido proporcionar aquí una justificación para este algoritmo. fueron seleccionados rebaño tal que

Entonces, la vista apesta nudos>(p)+. Pero según un corolario del teorema de Euler, para dos números primos cualesquiera R Y que números enteros p = pqn M, queO las relaciones están satisfechas

Es por eso

Ahora tenemos

La Tabla 10.1 resume el algoritmo RSA y la Fig. La figura 10.1 muestra un ejemplo de su aplicación. En este ejemplo, las claves se calculan de la siguiente manera:

  • 1. Se seleccionan dos números primos: p- 7 wq- 17.
  • 2. Calculado p =pq= 7 x 17 = 119.
  • 3. Calcula f (p) - (p -)(q - 1) = 96.
  • 4. Seleccionado mi, coprimo con f (PAG)= 96 y menor que f(i); en este caso = 5.
  • 5. Esto está determinado d, Qué Delaware= 1 (mod 96) y d 96. El valor correspondiente sería re= 77, ya que 77 x 5 = 385 = 4 x 96 + 1.
  • 6. El resultado es una clave pública KU = (5, 119) y una clave privada KR = (77, 119).

EN en este ejemplo muestra el uso de estas claves con la entrada de texto sin formato M = 19. Al cifrar, 19 se eleva a la quinta potencia, lo que da como resultado 2,476,099. Dividir por 119 da un resto de 66. Por lo tanto, 19 5 = 66 (mod 119), y por lo tanto, el texto cifrado será 66. Después del descifrado resulta que


Arroz. 10.1.

Tabla 10.1

Digamos que el objeto A quiere enviar un mensaje al objeto B en forma cifrada. Para ello utilizamos el algoritmo RSA. Puede haber problemas durante la transmisión debido a o mal. Para hacer esto necesitas usar métodos de detección de errores. Pero diferentes redes tienen diferentes métodos.

  • al objeto B se le ocurren dos números primos grandes cualesquiera, P y Q;
  • el objeto B decide el valor del módulo N = P × Q;
  • El objeto B resuelve la función de Euler: φ(N) = (P-1) × (Q-1);
    y selecciona el valor de la clave pública K de cualquier forma, teniendo en cuenta la condición: 1 < K в ≤ φ(N), НОД (K в, φ(N)) = 1
  • El objeto B decide el valor de la clave secreta κ al resolver el algoritmo euclidiano cuando se cumple la condición: κ en ≡ K en -1 (mod φ(N)).
  • El objeto B envía al objeto A un par de números (N, K in) a través de una ruta desprotegida.
  • Si el objeto A quiere enviar un mensaje al objeto B METRO, debe dividir el texto sin formato original. METRO en bloques, cada uno de los cuales se puede mostrar como: M yo = 0, 1, 2,…, norte – 1.
  • El objeto A cifra los datos, que se muestran como una secuencia de números. mi yo según la fórmula: C i = M i K en (mod N), y envía el criptograma C 1, C 2, ..., C i ... al objeto B.
  • El usuario B descifra el criptograma C 1, C 2, ..., C i ... utilizando la clave secreta κ in según la fórmula: M i = C i K en (mod N)

Al implementar el algoritmo en la práctica, es necesario poder generar números primos grandes sin mucho gasto y también resolver rápidamente el valor de las claves.

Ejemplo: cifrado de mensajes

Para mayor claridad de los cálculos, utilizaremos números pequeños. Pero en la práctica se utilizan números muy grandes (entre 200 y 300 decimales).

Acciones del objeto B:

  • Toma P = 3, Q = 11.
  • Toma el módulo N = P × Q = 3 × 11 = 33.
  • Toma el valor de la función de Euler para N = 33: φ(N) = (P-1) × (Q-1)= 2 × 10 = 20.
  • Toma K como clave pública para un número arbitrario, teniendo en cuenta la condición: 1 < K в ≤ φ(N), НОД (K в, φ(N)) = 1 , digamos K en = 7.
  • Resolvemos el valor de la clave secreta κ in usando el algoritmo euclidiano: κ in ≡ = 3.
  • el objeto B envía al objeto A un par de números (N = 33, K in = 7).

Acciones del objeto A:

  • Muestra el mensaje cifrado como una secuencia de números enteros en el rango de 0 a 32. Digamos que la letra A se representa como el número 1, la letra B es el 2 y C = 3. Supongamos que el mensaje C A B se puede mostrar como una secuencia del número 321, es decir, M 1 = 3, M 2 = 1, M3 = 2.
  • Cifra el mensaje M usando la clave K in = 7 y N = 33 según la fórmula: C yo = M yo K en(mod N) = Mi 7 (mod 3).
  • Obtenemos:
    • Ci = 3 7 (mod 33) = 2187 (mod 33) = 9
    • C i = 1 7 (mod 33) = 1 (mod 33) = 1
    • Ci = 2 7 (mod 33) = 128 (mod 33) = 29
  • Transmite el criptograma al objeto B: C 1, C 2, C 3 = 9, 1, 29.

Acciones del objeto B:

  • Descifra el criptograma recibido C 1 , C 2 , C 3 usando la clave secreta ≡ = 3 según la fórmula: M i = C i K en (mod N)= C i 3 (mod 3)
    • M1 = 9 3 (mod 33) = 729 (mod 33) =3.
    • M2 = 1 3 (mod 33) = 1 (mod 33) =1.
    • M2 = 29 3 (mod 33) = 24389 (mod 33) =2.

El objeto recibió el mensaje original que envió el objeto A.

El cifrado mediante RSA es una de las formas de transmitir datos a través de Internet. El circuito Rabin es muy similar al circuito RSA. El algoritmo criptográfico RSA se reconoce como fuerte cuando la longitud de la clave es superior a 1024 bits. Cabe señalar que el algoritmo se utiliza tanto para cifrado como para firmas digitales electrónicas. Es fácil notar que en el criptosistema RSA asimétrico el número de claves está relacionado con el número de usuarios mediante una relación lineal (N usuarios usan 2 × N claves), y no cuadrática como se usa en los sistemas simétricos.

En la segunda parte veremos el popular algoritmo RSA, donde se utiliza una clave pública para el cifrado. Pero primero quiero advertirte de nuevo. El código presentado en este artículo tiene fines educativos únicamente. La criptografía es un campo muy amplio y complejo y, para evitar problemas, no recomiendo cifrar información usando mi truco.

En la segunda parte veremos el popular algoritmo RSA, donde se utiliza una clave pública para el cifrado. Pero primero quiero advertirte de nuevo. El código presentado en este artículo tiene fines educativos únicamente. La criptografía es un campo muy amplio y complejo y, para evitar problemas, no recomiendo cifrar información usando mi truco.

algoritmo RSA

Cifrado mediante clave pública

El cifrado de clave pública se utiliza en todas partes. Si pagó por algo en línea al menos una vez, ya utilizó este método (¡espero!). Inmediatamente surge la pregunta de cómo funciona esta protección. Si ingreso mi número tarjeta de crédito Para comprar algo, ¿por qué nadie, excepto el destinatario, no puede espiar esta información? Déjame darte una metáfora. Para abrir una caja fuerte se necesita una llave (o un martillo, pero afortunadamente las cajas fuertes y las cerraduras son resistentes a este tipo de actores). En el cifrado de clave pública sucede prácticamente lo mismo. Muestras la cerradura para que todos la vean, pero solo unos pocos tienen la llave de esta cerradura y es casi imposible abrir la puerta usando otros métodos.

RSA es uno de los algoritmos que implementa el esquema anterior. Además, podemos utilizar este algoritmo para verificar la autenticidad de nuestra identidad. Si envía un mensaje cifrado a alguien usando una clave privada, el destinatario puede descifrar su mensaje usando la clave pública. Esta tecnología permite firmar los mensajes, confirmando así la autenticidad del remitente.

Programa de demostración basado en el algoritmo RSA.

En la segunda parte veremos el popular algoritmo RSA, donde se utiliza una clave pública para el cifrado. Pero primero quiero advertirte de nuevo. El código presentado en este artículo tiene fines educativos únicamente. La criptografía es un campo muy amplio y complejo y, para evitar problemas, no recomiendo cifrar información usando mi truco.

En la segunda parte veremos el popular algoritmo RSA, donde se utiliza una clave pública para el cifrado. Pero primero quiero advertirte de nuevo. El código presentado en este artículo tiene fines educativos únicamente. La criptografía es un campo muy amplio y complejo y, para evitar problemas, no recomiendo cifrar información usando mi truco.

algoritmo RSA

Cifrado mediante clave pública

El cifrado de clave pública se utiliza en todas partes. Si pagó por algo en línea al menos una vez, ya utilizó este método (¡espero!). Inmediatamente surge la pregunta de cómo funciona esta protección. Si ingreso mi número de tarjeta de crédito para comprar algo, ¿por qué nadie excepto el destinatario puede ver esta información? Déjame darte una metáfora. Para abrir una caja fuerte se necesita una llave (o un martillo, pero afortunadamente las cajas fuertes y las cerraduras son resistentes a este tipo de actores). En el cifrado de clave pública sucede prácticamente lo mismo. Muestras la cerradura para que todos la vean, pero solo unos pocos tienen la llave de esta cerradura y es casi imposible abrir la puerta usando otros métodos.

RSA es uno de los algoritmos que implementa el esquema anterior. Además, podemos utilizar este algoritmo para verificar la autenticidad de nuestra identidad. Si envía un mensaje cifrado a alguien usando una clave privada, el destinatario puede descifrar su mensaje usando la clave pública. Esta tecnología permite firmar los mensajes, confirmando así la autenticidad del remitente.

Programa de demostración basado en el algoritmo RSA.