Proceso y seguridad del algoritmo RSA

Introducción

     El algoritmo RSA es un algoritmo de cifrado y clave asimétrica bien conocido y confiable. Antes de introducir el algoritmo RSA, primero debemos conocer el concepto de números primos, porque esta es la base del algoritmo RSA.

Un número primo es un número que solo se puede dividir entre 1 y sí mismo, 1 y 2 son números primos, y los números primos superiores a 2 solo pueden ser números impares.

El algoritmo RSA se basa en el hecho matemático de que es fácil multiplicar dos números primos grandes, pero es difícil factorizar el producto. Las claves privadas y públicas en RSA se basan en números primos grandes (más de 100 dígitos). El algoritmo en sí mismo es muy simple, pero la dificultad real radica en las claves privadas y públicas seleccionadas y generadas por RSA.

Estructura de operación RSA:

Cómo generar claves privadas y públicas, y cómo usarlas para el cifrado y descifrado.

(1)选择两个大素数 P、Q

(2)计算 N = P * Q

(3)选择一个公钥(即加密密钥)E,使其不是(P-1)(Q-1)的因子

(4)选择私钥(即解密密钥)D,满足下列条件:
		(D * E)  mod (P-1) * (Q-1) = 1
		
(5)加密时,从明文PT计算密文CT如下:
		CT = PT^E mod N
		
(6)将密文CT发送给接收方

(7)解密时,从密文CT计算明文PT如下:
		PT = CT^D mod N

Ejemplo de RSA:

(1)选择两个大素数 P、Q。
	设计P = 7,Q = 17
	
(2)计算N = P * Q
	得 N = 7 * 17 = 119
	
(3)选择一个公钥(即加密密钥)E,使其不是(P-1)(Q-1)的因子
	·求出(7-1)(17-1)=6*16=96
	·96的因子为2,2,2,2,2,3(因为96=2*2*2*2*2*3)
	·因此,E不能有因子2和3。例如,不能选择4(因为2是它的因子),15(因为3是它的因子)或6(2,2都是它的因子)
	·假设选择E为5.
	
(4)选择私钥(即解密密钥)D,满足下列条件:
	(D*E) mod (P-1)*(Q-1) = 1
	·将E、P、Q的值带入公式。
	·得到:(D*5) mod (7-1)(17-1) = 1
	·经过计算,取D=77。
	
(5)加密时,从明文PT计算密文CT如下:
	CT = PT^E mod N
	·假设要加密的明文10。则
	·CT = 10^5 mod 119 = 100000 mod 119 = 40
	
(6)将密文CT发送给接收方。
	将密文40发送给接收方
	
(7)解密时,从密文CT计算明文PT如下:
	PT = CT^D mod N
	计算如下:
	·PT = CT^D mod N
	·即PT = 40^77 mod 119 =10
	·解出明文

Veamos el mismo ejemplo anterior, pero un poco diferente.

(1)取P=7,Q=17
(2)因此N=P*Q=119
(3)选择公钥E为5
(4)选择私钥D为77
	根据这些值,考虑上图所示的加密和解密过程。这里A是发送方,B是接收方。可以看出,可以用编码机制编码字母:
	A=1,B=2······Z=26。假设用这个机制编码字母,那么B的公钥为77(A和B知道),B的私钥为5(只有B知道)

	其工作如下,假设发送方A要向接收方B发送一个字母F。利用RSA算法,字母F编码如下:
	(1)用字母编号机制,F为6,因此将F的编码为6.
	(2)求这个数与指数为E的幂,即6^5.
	(3)计算6^5 mod 119,得到41,这是发送的加密信息
	接收方用下列方法解密41,得到初始密码F:
	(1)求这个数与指数为D的幂,即41^77
	(2)计算41^77 mod 119 得到6
	(3)按照字母编号机制得到F

La clave para entender RSA

     Según el cálculo del ejemplo, se puede ver que el algoritmo RSA en sí mismo es muy simple, la clave es seleccionar la clave que se está determinando. Suponiendo que B quiere recibir la información confidencial de A, debe generar una clave privada (D) y una clave pública (E), y luego enviar la clave pública y el número N a A. A cifra el mensaje con E y N, y luego envía la información cifrada a B. B usa la clave privada (D) para descifrar el mensaje.
     El problema es que dado que B puede calcular y encontrar D, otros también pueden calcular y encontrar D, pero no es fácil, que es la clave para RSA.
     Mientras el atacante conozca la clave pública E y el número N, parece que la clave privada D se puede encontrar por prueba y error, pero en la práctica, P y Q eligen un número grande, por lo que no es fácil encontrar P y Q de N. El análisis matemático muestra que cuando N es 100, se necesitan 70 pares de años para encontrar P y Q.

Seguridad RSA

     Aunque hasta ahora no ha habido informes de ataques exitosos contra RSA, la posibilidad de futuros ataques no está exenta. Aquí hay algunos posibles ataques contra RSA

Ataques de
     texto sin formato Los ataques de texto sin formato se dividen en los siguientes tres subtipos.

     (1) Ataques que usan mensajes más cortos. Supongamos que el atacante conoce algunos bloques de texto sin formato, de ser así, puede intentar cifrar cada bloque de texto sin formato para ver si puede obtener el texto cifrado conocido. Para evitar este tipo de ataque, se recomienda tomar cierta protección antes de cifrar el texto sin formato

     (2) Ataques periódicos. Aquí, el atacante supone que el texto cifrado se obtiene reemplazando el texto sin formato de alguna manera. Si esta suposición es cierta, entonces el atacante puede realizar un procesamiento inverso, es decir, reemplazar continuamente el texto cifrado conocido para obtener el texto sin formato original. Sin embargo, para el atacante, la dificultad aquí es que al usar este método, el atacante no sabe qué texto sin formato puede considerarse correcto. Por lo tanto, el atacante realiza continuamente operaciones de sustitución en el texto cifrado hasta que se obtiene el cuerpo del texto cifrado, entonces el atacante puede saber que el texto obtenido en el paso anterior para obtener el texto cifrado original debe ser el texto sin formato original. Por lo tanto, este ataque se llama ataque periódico.

     (3) Ataques con información pública. En teoría, en casos excepcionales, el texto cifrado cifrado es el mismo que el texto sin formato original. Si este es el caso, el mensaje de texto sin formato original no se puede ocultar. Este tipo de ataque se llama ataque mediante mensajes públicos. Por lo tanto, después de usar RSA para el cifrado, antes de enviar el texto cifrado al receptor, asegúrese de que el texto cifrado sea diferente del texto sin formato original.

Ataque del texto cifrado parcial seleccionado En
     este ataque, el atacante usa el algoritmo euclidiano extendido para encontrar el texto sin formato basado en el texto cifrado original.


     Toda la seguridad del ataque de factorización RSA se basa en el supuesto de que un atacante no puede descomponer el dígito N en dos comillas P y Q. Si el atacante puede obtener P y Q de la ecuación N = P * Q, entonces el atacante puede obtener la clave privada. Como se mencionó anteriormente, suponiendo que N es un número decimal de 300 dígitos, el atacante no necesita encontrar P y Q. Fácil

Ataque a la clave de cifrado
     Cuando el valor de la clave pública E es muy pequeño, RSA se ejecutará más rápido, lo que provocará un posible ataque. Este ataque se denomina ataque a la clave de cifrado. Por lo tanto, se recomienda utilizar E como 65537 o cerca del número entero Valor.

Ataques en claves de descifrado
     Este ataque se puede dividir en dos categorías:
     (1) Ataques que adivinan el número de valores de descifrado. Si un atacante puede adivinar la clave de descifrado D, no solo existe el peligro de cifrar el texto cifrado obtenido en texto sin formato con la correspondiente clave de cifrado E, incluso el mensaje posterior es peligroso. Para evitar este ataque, se recomienda que el remitente use valores inusuales para P, Q, N y E.
     (2) Ataque en un índice de descifrado más pequeño. Como se explica en la clave de cifrado, el uso de un número menor para la clave de descifrado D puede hacer que RSA se ejecute más rápido. Esto ayudará al atacante a adivinar la clave de descifrado D durante el ataque.

Publicado 71 artículos originales · Me gusta 3 · Visitas 4044

Supongo que te gusta

Origin blog.csdn.net/zouchengzhi1021/article/details/105531886
Recomendado
Clasificación