Criptografía: RSA (I)
La criptografía se refiere a la ciencia técnica de cifrar información y descifrar contraseñas. Los orígenes de la criptografía se remontan a 2.000 años. Según la leyenda, el general romano Julio César utilizó cifrados para transmitir mensajes y evitar que sus enemigos los interceptaran. El método de César era sencillo: creó una tabla de correspondencia para las veintitantos cartas romanas. De esta forma, si no se conoce el libro de códigos, incluso si se intercepta la información, no se puede leer.
Durante mucho tiempo, desde la época de Julio César hasta la década de 1970, la criptografía se desarrolló muy lentamente porque los diseñadores se basaban básicamente en la experiencia. No se utilizan principios matemáticos. La criptografía actual se basa en las matemáticas.
Un algoritmo de cifrado desarrollado en los años 1970. Lo especial de este algoritmo de cifrado es que requiere dos claves: una clave pública llamada clave pública y una clave privada llamada clave privada. Cifrado de clave pública, descifrado de clave privada, descifrado de clave pública; Este algoritmo de cifrado es el gran RSA.
Para cifrar y descifrar, debes utilizar operaciones matemáticas que sean fáciles de cifrar y difíciles de descifrar. Aquí es donde entra en juego la aritmética modular (aritmética de reloj).
Si modulas un número primo a 17 y encuentras un número 3 que es menor que ese módulo, obtienes el siguiente algoritmo:
3 modulado a la potencia x de 17 Siempre obtienes un número entre 1 y 16, donde 3 es la raíz principal de 17. Aquí, el modo se vuelve más grande y la retropropagación se vuelve más difícil de descifrar. Este es el problema del logaritmo discreto.
Dado cualquier entero positivo n, ¿cuántos enteros positivos <= n y n son mutuamente excluyentes?
El método para calcular este valor se llama función de Euler y su símbolo es: φ(n)
De los dos puntos anteriores, podemos obtener: Si N es dos coprimos números P1 y el producto de P2, entonces:
φ(N) = φ(P1)*φ(P2 )=(P1-1)*(P2-1)
Si dos enteros positivos myn son primos relativos, entonces m menos 1 elevado a la potencia de φ(n) puede ser divisible por n.
Si dos números enteros positivos m y n son primos relativos, entonces m menos 1 elevado a la potencia φ(n) es divisible por n.
Caso especial del teorema de Euler: Si dos enteros positivos m y n son primos relativos, ¡y n es un número primo! Entonces φ(n) resulta ser n-1.
Teorema de Euler m φ(n) % n ≡ 1 (m y n son primos relativos)
Porque 1 k % n ≡ 1, entonces:
Porque 1*m ≡ m, por lo tanto:
Verificación:
?Nota: La conversión solo es válida cuando m es menor que n. Cualquier valor mayor que n equivale a un turno extra.
Si dos números enteros positivos e y x son primos relativos, entonces se debe encontrar un número entero d tal que ed-1 sea divisible por x.
Entonces: d es el elemento inverso de e módulo x
Entonces se puede obtener la siguiente fórmula:
Asumiendo que el cociente es k, entonces se tiene lo siguiente se puede obtener Fórmula:
Cuando φ(n) es x, entonces:
Verifíquelo: M: 4, N: 15, φ(n): 8.
Según el teorema inverso de los elementos modulares, supongamos E: 3, D
3d -1 = 8k, entonces d = (8k + 1)/3 k = 4, entonces D = 11, k = 7, entonces d = 19
Todo el proceso de derivación es el siguiente:
Resolver el problema de confidencialidad de la transmisión de claves
Principio: p>
A través de Diffie-Helmann Intercambio de claves dividido m e*d % n ≡ m.
Un total de **** genera 6 números: p1, p2, n, φ(n), e, d
Verificación
M : 3 , 12, N : 3 * 5 = 15, φ(n): 8,
Suponiendo E: 3, luego mediante el cálculo del elemento inverso modal podemos obtener D: 11, 19 <
Excepto por las claves públicas que usan n y e, los otros 4 números no son públicos.
Actualmente, el método para descifrar RSA y obtener d es el siguiente:
1. Encuentre la clave privada d. Porque e*d = φ(n)*k + 1. Para conocer e y φ(n);
2. Se conoce e, pero para obtener φ(n), se deben conocer p1 y p2.
3. Porque n = p1*p2.
3. Dado que n = p1*p2, la única forma es factorizar n.
RSA es menos eficiente porque m es menor que n, por lo que cada vez que se cifra una pequeña cantidad de datos, se requiere un cifrado segmentado. Generalmente, se utiliza para cifrar grandes claves de cifrado simétricas.
Dado que Mac tiene OpenSSL (biblioteca de criptografía de código abierto) integrado, podemos usar el comando para ejecutar RSA directamente desde la terminal. El algoritmo RSA en OpenSSL tiene tres comandos principales:
Generar clave privada RSA, 1024 bits de longitud
e:65337(publicExponent)
Usar la clave pública para cifrar datos, utilizar la clave privada para descifrar los datos
Cifrado:
Descifrado:
Comando completo:
archivo enc.txt 128 bytes, archivo dec .txt 20 bytes.
Utilice la clave pública para cifrar los datos y utilice la clave privada para descifrar los datos.
Esta vez se convierte en firma y verificación.
Firma:
Verificación:
El directorio de archivos completo es el siguiente: