Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es la diferencia de rendimiento entre el algoritmo RSA y el algoritmo DES?

¿Cuál es la diferencia de rendimiento entre el algoritmo RSA y el algoritmo DES?

El nombre completo del algoritmo DES es Data Encryption Standard, que es el algoritmo de cifrado de datos que IBM investigó y publicó públicamente con éxito en 1975. Hay tres parámetros de entrada para el algoritmo DES: clave, datos y modo. La clave es de 8 bytes a 64 bits, que es la clave de trabajo del algoritmo DES; los datos también son de 8 bytes y 64 bits, que son los datos que se van a cifrar o descifrar. El modo es el modo de trabajo de DES, y hay; dos tipos: cifrado o descifrado.

El algoritmo DES convierte un bloque de entrada de texto sin formato de 64 bits en un bloque de salida de texto cifrado de 64 bits. La clave que utiliza también es de 64 bits. El algoritmo se divide principalmente en dos pasos:

.

1? Reemplazo inicial

Su función es recombinar los bloques de datos de 64 bits de entrada bit a bit y dividir la salida en dos partes: L0 y R0, cada parte tiene 32 bits de longitud. La regla de reemplazo es: cambie el dígito de entrada 58 al primer dígito, el dígito 50 al segundo dígito... y así sucesivamente, hasta que el último dígito sea el dígito original 7. L0 y R0 son las dos partes después de la salida de transposición. L0 son los 32 bits izquierdos de la salida y R0 son los 32 bits derechos. Por ejemplo: establezca el valor de entrada antes de la transposición en D1D2D3...D64, luego el resultado después de la transposición. la transposición inicial es: L0=D58D50…D8; R0=D57D49…D7.

2? Permutación inversa

Después de 16 operaciones iterativas, se obtienen L16 y R16, que se utilizan como entrada para realizar la permutación inversa. La permutación inversa es exactamente la operación inversa de la inicial. permutación, ya que esto da como resultado la salida de texto cifrado.

Introducción al algoritmo RSA

Este algoritmo apareció en 1978. Fue el primer algoritmo que se pudo utilizar tanto para cifrado de datos como para firmas digitales. Es fácil de entender y operar, y es popular. El algoritmo lleva el nombre de sus inventores: Ron Rivest, AdiShamir y Leonard Adleman. Sin embargo, la seguridad de RSA no ha sido probada teóricamente.

La seguridad de RSA se basa en la descomposición de grandes números. Tanto la clave pública como la privada son funciones de dos números primos grandes (más de 100 dígitos decimales). Se especula que deducir el texto claro a partir de una clave y un texto cifrado es tan difícil como factorizar el producto de dos números primos grandes.

Generación de par de claves. Elija dos números primos grandes, p y q. Cálculo:

n = p * q

Luego, la clave de cifrado e se selecciona aleatoriamente, lo que requiere que e y ( p - 1 ) * ( q - 1 ) sean primos relativos. Finalmente, se utiliza el algoritmo de Euclides para calcular la clave de descifrado d, satisfaciendo

e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )

donde n y d también son primos entre sí. Los números e y n son claves públicas y d es la clave privada. Los dos números primos p y q ya no son necesarios y deben descartarse sin que nadie los sepa.

Al cifrar información m (representación binaria), primero divida m en bloques de datos de igual longitud m1, m2,..., mi, con una longitud de bloque s, donde 2^s lt = n, s; tanto como sea posible Grande. El texto cifrado correspondiente es:

ci = mi^e ( mod n ) ( a )

Se realiza el siguiente cálculo al descifrar:

mi = ci^ d ( mod n ) ( b )

RSA se puede utilizar para firmas digitales. La solución es utilizar (a) firma de tipo y (b) verificación de tipo. Durante la operación específica, teniendo en cuenta factores como la seguridad y la gran cantidad de información m, la operación HASH generalmente se realiza primero.

Seguridad de RSA.

La seguridad de RSA se basa en la descomposición de grandes números, pero no se ha demostrado teóricamente si es equivalente a la descomposición de grandes números, porque no hay pruebas de que romper RSA requiera una descomposición de grandes números. Supongamos que hay un algoritmo que no requiere descomposición de números grandes, entonces definitivamente se puede modificar a un algoritmo para descomposición de números grandes.

En la actualidad, se ha demostrado que algunas variantes de algoritmos de RSA son equivalentes a la descomposición de números grandes. De todos modos, descomponer n es el método de ataque más obvio. Ahora, la gente puede descomponer números primos grandes con más de 140 dígitos decimales. Por lo tanto, el módulo n debe elegirse mayor, dependiendo de las condiciones específicas aplicables.

La velocidad de RSA.

Dado que se realizan todos los cálculos de números grandes, RSA es 100 veces más lento que DES en su forma más rápida, ya sea que se trate de implementación de software o hardware. La velocidad siempre ha sido un inconveniente de RSA. Generalmente solo se usa para pequeñas cantidades de cifrado de datos.

El ataque de texto cifrado elegido por RSA.

RSA es vulnerable a ataques de texto cifrado seleccionados. Generalmente, un atacante disfraza cierta información (Blind) y le pide a una entidad con una clave privada que la firme. Luego, después del cálculo, se puede obtener la información que se desea. De hecho, los ataques explotan la misma debilidad, que es el hecho de que la exponenciación preserva la estructura multiplicativa de la entrada:

( XM )^d = X^d *M^d mod n

Como se mencionó anteriormente, este problema inherente proviene de la característica más útil de la criptografía de clave pública: todos pueden usar la clave pública. Sin embargo, este problema no se puede resolver algorítmicamente. Hay dos medidas principales: una es utilizar un buen protocolo de clave pública para garantizar que las entidades no descifren información generada arbitrariamente por otras entidades durante el proceso de trabajo y no firmen información que conocen. nada sobre; Uno es nunca firmar documentos aleatorios enviados por extraños. Al firmar, primero use la función Hash unidireccional para HASH el documento, o use diferentes algoritmos de firma al mismo tiempo. En . se mencionan varios tipos diferentes de métodos de ataque.

Ataque de módulo público *** de RSA.

Si hay un módulo en el sistema, pero diferentes personas tienen e y d diferentes, el sistema será peligroso. La situación más común es que la misma información se cifra con diferentes claves públicas. Estas claves públicas son completamente modulares y mutuamente primarias, por lo que la información se puede recuperar sin la clave privada. Supongamos que P es el texto sin formato del mensaje, las dos claves de cifrado son e1 y e2 y el módulo público es n, entonces:

C1 = P^e1 mod n

C2 = P^e2 mod n

Si el criptoanalista conoce n, e1, e2, C1 y C2, puede obtener P.

Debido a que e1 y e2 son primos mutuamente, r y s se pueden encontrar usando el algoritmo euclidiano, satisfaciendo:

r * e1 s * e2 = 1

Supongamos que r es un número negativo, debe usar el algoritmo euclidiano para calcular C1^(-1), luego

( C1^(-1) )^(-r) * C2^s = P mod n

Además, existen varios otros métodos para utilizar ataques de módulo público ***. En resumen, si conoce un par de e y d de un módulo dado, uno es útil para que el atacante descomponga el módulo y el otro es útil para que el atacante calcule otros pares de e' y d' sin descomponer el módulo. . Sólo hay una solución y es no compartir el módulo n.

Pequeño ataque exponencial a RSA. Una sugerencia para mejorar la velocidad de RSA es hacer que la clave pública e tome un valor menor, lo que facilitará la implementación del cifrado y aumentará la velocidad. Pero esto no es seguro. La solución es tomar valores mayores tanto para e como para d.

El algoritmo RSA es el primer algoritmo que se puede utilizar tanto para cifrado como para firmas digitales. Además, es fácil de entender y operar. RSA es el algoritmo de clave pública más estudiado. Han pasado casi veinte años desde que se propuso. Ha experimentado varios ataques y gradualmente ha sido aceptado por la gente. En general, se lo considera uno de los mejores esquemas de clave pública. La seguridad de RSA se basa en la factorización de números grandes, pero no se ha demostrado teóricamente que la dificultad de descifrar RSA sea equivalente a la dificultad de factorizar números grandes. Es decir, el principal defecto de RSA es que es imposible comprender teóricamente su rendimiento de confidencialidad, y la mayoría de las personas en la comunidad de criptografía tienden a creer que la factorización no es un problema de NPC. Las principales desventajas de RSA son: A) Generar claves es problemático y 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 encarece mucho la operación, especialmente la velocidad, que es varios órdenes de magnitud más lenta que el algoritmo criptográfico simétrico y con el desarrollo de; tecnología de descomposición de números grandes, esta longitud sigue aumentando, lo que no favorece la estandarización del formato de datos. Actualmente, el protocolo SET (Transacción Electrónica Segura) requiere que CA utilice una clave de 2048 bits y que otras entidades utilicen una clave de 1024 bits.