¿Qué sistemas admite CAESAR?
El texto cifrado es relativo al texto sin formato. El texto sin formato es en realidad el mensaje que desea transmitir, y el texto sin formato se convierte en texto cifrado después de cifrarse. El texto cifrado es en realidad un vocabulario para la seguridad de la información. Déjame presentártelo.
La historia del desarrollo de la seguridad de la información
El nacimiento de la ciencia de la seguridad de las comunicaciones
El cifrado César durante el antiguo Imperio Romano: capaz de transformar información en texto plano en algo que la gente no puede entender Cadena (texto cifrado), cuando el texto cifrado se transmite al socio, se puede restaurar fácilmente al formato de texto sin formato original. El cifrado César se obtiene rotando las letras del texto plano 3 bits.
En 1568, L. Battista inventó el cifrado de sustitución de tablas múltiples, que fue utilizado por las fuerzas de la coalición durante la Guerra Civil estadounidense. Ejemplos: cifrado Vigenere y cifrado Beaufort
En 1854, Playfair inventó un cifrado de sustitución de varias letras, que fue utilizado por los británicos en la Primera Guerra Mundial. Ejemplo: los cifrados Hill, de varias tablas y de sustitución de varias letras se han convertido en la corriente principal de la criptografía clásica.
El desarrollo de la tecnología de criptografía (criptoanálisis): Ejemplo: En 1918, W. Friedman utilizó el índice de coincidencia para descifrar la tecnología de criptografía de reemplazo de tablas múltiples como un hito. En 1949, el artículo de C. Shannon "Teoría de la comunicación de los sistemas de seguridad" se publicó en la revista Bell System Technology. Estos dos resultados sentaron las bases para la investigación científica de la criptografía. Del arte a la ciencia. De hecho, este fue el nacimiento de la ciencia de la seguridad de las comunicaciones, en la que la criptografía era la tecnología central.
Revolución de la criptografía de clave pública
Veinticinco años después, en la década de 1970, el DES (American Data Encryption Standard) de IBM y Diffie-Hellman propusieron en 1976 las ideas criptozoológicas de clave pública, la La propuesta del algoritmo criptográfico de clave pública RSA en 1977 inyectó nueva vitalidad al desarrollo de la criptografía.
La criptografía de clave pública desencadenó una revolución y realizó tres contribuciones a la seguridad de la información: por primera vez, caracterizó la solidez de los algoritmos criptográficos en términos de complejidad computacional, superando las limitaciones de Shannon, a quien solo le importaba fuerza teórica Los requisitos de confidencialidad en la gestión de dos claves en los algoritmos criptográficos tradicionales se transforman en requisitos para proteger la confidencialidad de una de las claves y la integridad de la otra; cambia la propiedad de la clave en los algoritmos criptográficos tradicionales de dos partes comunicantes; a uno. Separar a los usuarios, reduciendo así en gran medida la complejidad de la gestión de claves.
La propuesta de criptografía de clave pública, tenga en cuenta: en primer lugar, la investigación sobre criptografía ha trascendido gradualmente el alcance de la confidencialidad de la comunicación de datos y, en segundo lugar, ha llevado a cabo investigaciones sobre la integridad de los datos, la firma digital y otras tecnologías; el desarrollo de las computadoras Con el desarrollo de Internet e Internet, la criptografía se ha convertido gradualmente en un pilar importante de la seguridad informática y de la red, haciendo de la seguridad de los datos un contenido completamente nuevo de la seguridad de la información, superando el dominio anterior de la seguridad física en la seguridad informática. .
Tecnología de control de acceso y criterios de evaluación informática fiable
En 1969, B. Lampson propuso el modelo de control de acceso.
En 1973, D. Bell y L. Lapadula crearon un modelo de operación informática para simular estrategias de seguridad militar. Este es el modelo de seguridad multinivel informático más antiguo y más utilizado.
En 1985, el Departamento de Defensa de Estados Unidos propuso los Criterios de Evaluación de Computadoras Confiables (comúnmente conocido como Libro Naranja) basados en el modelo de Bell-Lapadula. Según las capacidades de protección de seguridad de los sistemas informáticos, se dividen en 8 niveles.
En 1987, se propuso el modelo Clark-Wilson para la protección de la integridad y aplicaciones comerciales.
Garantía de la Información
En octubre de 1998, la Agencia de Seguridad Nacional (NSA) de los EE. UU. promulgó el Marco Técnico de Garantía de la Información Versión 1.1. El 6 de febrero de 2003, el Departamento de Defensa de los EE. UU. (DOD. ) Se promulgó la Orden de Implementación de Aseguramiento de la Información 8500.2, por lo que el aseguramiento de la información se convirtió en la ideología rectora establecida para que las organizaciones de defensa estadounidenses implementen operaciones de información.
Aseguramiento de la información (IA: aseguramiento de la información): Protege los sistemas de información asegurando la disponibilidad, integridad, identificabilidad, confidencialidad y repudio de la información, al tiempo que introduce capacidades de protección, detección y respuesta para proporcionar información. El sistema proporciona funcionalidad de recuperación. . Este es el modelo de aseguramiento de la información PDRR.
Proteger protección, detectar detección, reaccionar respuesta, restaurar recuperación
El avance del marco tecnológico de aseguramiento de la información de EE. UU. ha hecho que las personas se den cuenta de que su comprensión de la seguridad de la información no debe permanecer dentro del marco. de protección. Al mismo tiempo, es necesario prestar atención a las capacidades de detección y respuesta del sistema de información.
En 2003, China emitió las "Opiniones del Grupo Líder Nacional de Información sobre el Trabajo de Garantía de Seguridad de la Información", que es un documento guía para que el país eleve la seguridad de la información a un nivel estratégico.
Confidencialidad de la información Resultados de investigaciones técnicas:
Desarrollar diversos algoritmos criptográficos y sus aplicaciones:
DES (Estándar de cifrado de datos), RSA (Sistema de clave pública), ECC (Logaritmo discreto de curva elíptica) Criptosistema), etc.
Modelo de seguridad del sistema de información informática y criterios de evaluación de seguridad:
Modelo de monitor de acceso, modelo de seguridad multinivel, etc. TCSEC (Criterios de evaluación de sistemas informáticos confiables), ITSEC (Tecnología de la información); Criterios de evaluación de seguridad), etc.
Cifrado
El cifrado es un medio de recombinar información de modo que sólo el remitente y el receptor puedan decodificar y restaurar la información.
Los sistemas de cifrado tradicionales se basan en claves, que es un tipo de cifrado simétrico, es decir, los usuarios utilizan la misma clave para cifrar y descifrar.
Actualmente, con el avance de la tecnología, el cifrado se está integrando gradualmente en sistemas y redes, como el Protocolo de Internet IPv6 de próxima generación que está desarrollando el IETF. En términos de hardware, Intel también está desarrollando coprocesadores de cifrado para PC y placas base de servidores.
Autenticación de Identidad (Authentication)
El firewall es la primera línea de defensa del sistema para evitar la intrusión de datos ilegales, mientras que la función del control de seguridad es prevenir usuarios ilegales. . Hay muchas formas de verificar la legitimidad de un usuario, las contraseñas son las más utilizadas, pero este método suele fallar porque muchos usuarios utilizan palabras o frases que se adivinan fácilmente como contraseñas. Otros métodos incluyen el reconocimiento de características fisiológicas humanas (como huellas dactilares), tarjetas IC inteligentes y discos USB.
Firma digital
Las firmas digitales se pueden utilizar para demostrar que un mensaje está realmente firmado por el remitente y, cuando se utiliza una firma digital para datos o programas almacenados, se puede utilizar para verificar la integridad de datos o programas.
El Estándar de Firma Digital (DSS) adoptado por el gobierno de Estados Unidos utiliza un algoritmo hash seguro. Usando este algoritmo para calcular la información procesada, se puede obtener una cadena digital de 160 bits. Esta cadena digital se combina con la clave de la información de cierta manera para obtener una firma digital.
Inspección de contenido
Incluso con firewalls, autenticación y cifrado, la gente todavía se preocupa por ser atacada por virus. Algunos virus se propagan a través de correos electrónicos o subprogramas ActiveX y Java descargados por los usuarios. Una vez activado el subprograma que contiene el virus, es posible que descargue automáticamente otros subprogramas. El software antivirus existente puede eliminar los virus del correo electrónico. También existen algunos métodos para combatir los nuevos virus Java y ActiveX, como mejorar el firewall para que pueda monitorear el funcionamiento de los applets o agregar etiquetas a los applets para informar a los usuarios. sus orígenes.
Presentación de algunos conocimientos sobre cifrado
Modelo de sistema de cifrado/descifrado de claves
En 1976, Diffie y Hellman publicaron su artículo "Nuevas direcciones en criptografía" [9] Antes , la llamada criptografía se refiere a criptosistemas de clave simétrica. Debido a que el cifrado/descifrado utiliza la misma clave, también se le llama criptosistema de clave única.
Este tipo de algoritmo tiene una larga historia, desde el primer cifrado César hasta el algoritmo de cifrado DES más utilizado, todos son criptosistemas de clave única.
Normalmente, un sistema de cifrado de claves incluye las siguientes partes:
① Espacio de mensaje M (Mensaje)
② Espacio de texto cifrado C (Texto cifrado)
③ Espacio clave K (Clave)
④ Algoritmo de cifrado E (Algoritmo de cifrado)
⑤ Algoritmo de descifrado D (Algoritmo de descifrado)
El mensaje M en el espacio del mensaje (llamado texto sin formato) se cifra mediante un algoritmo de cifrado controlado por la clave de cifrado K1 para obtener el texto cifrado C. El texto cifrado C puede recuperar el texto sin formato original M mediante el algoritmo de descifrado controlado por la clave de descifrado K2. Es decir:
EK1(M)=C
DK2(C)=M
DK2(EK1(M))=M
Concepto:
Cuando la clave de cifrado del algoritmo se puede deducir de la clave de descifrado, o por el contrario, la clave de descifrado se puede deducir de la clave de cifrado, el algoritmo se denomina algoritmo simétrico, también conocido como como algoritmo de clave secreta o algoritmo de clave única;
Cuando la clave de cifrado y la clave de descifrado son diferentes y una clave no se puede deducir de la otra clave, el algoritmo se denomina algoritmo de clave pública.
1.Transformación de cifrado César
La transformación de cifrado de sustitución por turnos más general es
Cifrado: E(m)=(m+k) mod 26 p>
Descifrado: D(c)=(c-k) mod 26
2. Cifrado por sustitución
En el cifrado por sustitución, las letras del texto plano y del texto cifrado permanecen iguales. , pero el orden se altera. En un cifrado de sustitución de columnas simple, el texto sin formato se escribe horizontalmente en una hoja de papel cuadriculado con un ancho fijo y el texto cifrado se lee verticalmente; el texto cifrado se escribe verticalmente en un papel cuadriculado con el mismo ancho y luego se lee sin formato; texto horizontalmente. Por ejemplo:
Texto sin formato: el cifrado es la transformación de datos en alguna forma ilegible.
Criptotexto: eiffob nsodml ctraee rhmtuf yeaano pttirr trinem iaota onnod nsosa
20. siglo En la década de 1940, Shannon propuso un concepto de evaluación de uso común. Se cree particularmente que un buen algoritmo de cifrado debe tener confusión y difusión.
Ambigüedad: el algoritmo de cifrado debe ocultar todos los patrones locales, es decir, cualquier carácter identificativo del idioma debe ocultarse, y el método de cifrado debe ocultar características sugerentes del lenguaje que puedan llevar a descifrar la clave; p>
p>
Difusión: Se requiere cifrado para mezclar diferentes partes del texto cifrado de modo que ningún carácter quede en su posición original.
La razón por la que el algoritmo de cifrado es fácil de descifrar es que no se cumplen estas dos condiciones de Shannon.
Estándar de cifrado de datos (DES)
El algoritmo DES convierte un bloque de entrada de texto plano de 64 bits en un bloque de salida de texto cifrado de 64 bits. La clave que utiliza también es de 64 bits. La función es recombinar los bloques de datos de entrada de 64 bits bit a bit y dividir la salida en dos partes, L0 y R0, cada parte tiene 32 bits de longitud, después de 16 iteraciones. Obtenga L16 y R16, tome esto como entrada, realice una permutación inversa y obtenga la salida del texto cifrado.
La permutación inversa es solo la operación inversa de la inicialización.
No puedo poner una imagen para el método específico, lo siento.
El algoritmo DES se puede resumir como sigue:
Generación de clave subsecreta:
C[0]D[0] = PC–1(K)
para 1 <= i < = 16
{C[ i] = LS[i](C[i?1])
D[i] = LS[i](D[i?1] )
K[i] = PC–2(C[i]D[i])}
Proceso de cifrado:
L[0]R[ 0] = IP(x)
para 1 <= i <= 16
{L[i] = R[i?1]
R[ i] = L[i?1] XOR f? (R[i?1], K[i])}
c= IP?1(R[16]L[16])v
Proceso de descifrado:
R[16]L[16] = IP(c)
para 1 <= i <= 16
{R[i?1] = L[i ]
L[i?1] = R[i] XOR f?(L[i], K[i])}
x= IP?1(L[0 ]R[0])
DES utiliza una clave de 56 bits para cifrar un bloque de datos de 64 bits y realiza 16 rondas de codificación en el bloque de 64 bits. bloque de datos de bits. Con la codificación por ronda, un valor de clave "por ronda" de 48 bits se deriva de la clave completa de 56 bits. DES tardó mucho en decodificarse usando software, mientras que la decodificación de hardware fue muy rápida, pero afortunadamente la mayoría de los piratas informáticos en ese momento no tenían suficiente equipo para crear dicho hardware.
En 1977, se estimó que costaría 20 millones de dólares construir una computadora especial para descifrar DES, y que se necesitarían 12 horas para descifrar el código y obtener el resultado. Por lo tanto, DES se consideraba un método de cifrado muy potente en ese momento. Pero las computadoras de hoy son cada vez más rápidas y el costo de construir una máquina especial como esta se ha reducido a alrededor de 100.000 dólares, por lo que utilizarla para proteger mil millones de dólares en cables interbancarios requiere una cuidadosa consideración. Por otro lado, si solo lo usa para proteger un servidor, entonces DES es de hecho un buen método, porque los piratas informáticos nunca gastarán tanto dinero para descifrar el texto cifrado DES sólo para invadir un servidor. Dado que ahora es posible construir una computadora especial que puede descifrar DES por 200.000 dólares, ya no es aplicable a situaciones que requieren un cifrado "fuerte"
Malentendidos en la aplicación del algoritmo DES
El algoritmo DES tiene una seguridad extremadamente alta. Hasta ahora, aparte de utilizar el método de búsqueda exhaustiva para atacar el algoritmo DES, no se ha encontrado ningún método más eficaz. El espacio exhaustivo de una clave de 56 bits es 256, lo que significa que si una computadora es capaz de detectar un millón de claves por segundo, tardará casi 2285 años en buscar todas las claves, se puede ver que esto es difícil de lograr. Por supuesto, con el desarrollo de la ciencia y la tecnología, cuando aparecen las computadoras de ultra alta velocidad, podemos considerar aumentar la longitud de la clave DES para lograr un mayor nivel de confidencialidad.
De la introducción anterior al algoritmo DES, podemos ver que solo se utilizan 56 bits de la clave de 64 bits en el algoritmo DES, mientras que el 8.º, 16.º, 24.º,... 64.º bit son 8. El dígito único no participa en la operación DES. Este punto nos plantea un requisito de aplicación, es decir, la seguridad de DES se basa en la combinación de los 56 bits restantes excepto 8, 16, 24,...64 bits. El cambio 256 está garantizado.
Por lo tanto, en aplicaciones prácticas, debemos evitar el uso de los bits 8, 16, 24, ... 64 como bits de datos válidos y usar los otros 56 bits como bits de datos válidos para garantizar que el algoritmo DES sea seguro y confiable. role. Si no comprende esto y utiliza 8, 16, 24,...64 bits de la clave como datos válidos, no podrá garantizar la seguridad de los datos cifrados DES, lo que causará problemas a los sistemas que utilizan DES. para lograr la confidencialidad El peligro de que los datos sean descifrados es precisamente el malentendido en la aplicación del algoritmo DES, dejando un gran peligro oculto de ser atacado y descifrado.
Algoritmo A5
Introducción a los cifrados de secuencia
Los cifrados de secuencia, también conocidos como cifrados de flujo, dividen el texto sin formato en caracteres (como letras individuales) o unidades básicas. de su codificación (como 0, 1), luego se usa con el flujo de claves para cifrar y el descifrado se implementa con el mismo flujo de claves generado de forma sincrónica.
La solidez de la criptografía de secuencia depende completamente de la aleatoriedad y la imprevisibilidad de la secuencia generada por el generador de flujo de claves. La cuestión central es el diseño del generador de flujo de claves. Mantener una sincronización precisa de los flujos de claves tanto en el extremo emisor como en el receptor es una tecnología clave para lograr un descifrado confiable.
Algoritmo A5
El algoritmo A5 es un cifrado de secuencia. Es un algoritmo de cifrado especificado en el estándar europeo GSM que se utiliza para el cifrado de teléfonos móviles celulares digitales del usuario. equipos a la estación base. Existen muchos tipos de algoritmos A5, principalmente A5/1 y A5/2. Entre ellos, A5/1 es un algoritmo de cifrado potente y adecuado para regiones europeas; A5/2 es un algoritmo de cifrado débil y adecuado para regiones fuera de Europa. El algoritmo A5/1 se discutirá en detalle aquí.
Los componentes principales del algoritmo A5/1 son tres registros de desplazamiento de retroalimentación lineal (LFSR) de diferentes longitudes R1, R2 y R3, cuyas longitudes son 19, 22 y 23 respectivamente. Los tres registros de desplazamiento se desplazan hacia la izquierda bajo el control del reloj. Después de cada desplazamiento hacia la izquierda, el bit más bajo del registro se llena con los bits XOR de algunos bits del registro. El polinomio de retroalimentación de cada registro es:
R1: x18+x17+x16+x13
R2: x21+x20
R3: x22+x21+x2 La entrada del algoritmo x7
A5 es una clave de sesión Kc de 64 bits y un número aleatorio de 22 bits (número de fotograma).
IDEA
IDEA es el Algoritmo Internacional de Cifrado de Datos, y su prototipo es PES (Proposed Encryption Standard). El nuevo algoritmo mejorado en PES se llamó IPES y pasó a llamarse IDEA (Algoritmo Internacional de Cifrado de Datos) en 1992.
IDEA es un algoritmo de cifrado de bloques con una longitud de bloque de 64 bits y una longitud de clave de 128 bits. El mismo algoritmo se puede utilizar para cifrar y descifrar.
El proceso de cifrado de IDEA incluye dos partes:
(1) El grupo de texto sin formato de 64 bits de entrada se divide en cuatro subgrupos de 16 bits: X1, X2, X3 y X4. Los cuatro subgrupos se utilizan como entrada de la primera ronda del algoritmo y se realizan un total de ocho rondas de operaciones iterativas para producir una salida de texto cifrado de 64 bits.
(2) La clave de sesión de entrada de 128 bits genera 52 subclaves necesarias para ocho rondas de iteraciones (se requieren seis para cada ronda de ocho rondas de operación y cuatro se utilizan para la transformación de salida)
p>
Generación de subclaves: la clave de entrada de 128 bits se divide en ocho subclaves de 16 bits (como las seis para la primera ronda de operación y las dos primeras claves para la segunda ronda de operación); La clave de 128 bits es Después de girar 25 bits hacia la izquierda, se obtienen ocho subclaves más (las primeras cuatro se usan para la segunda ronda y las últimas cuatro se usan para la tercera ronda). Este proceso se repite hasta que se generen todas las claves.
El proceso de descifrado de IDEA es el mismo que el proceso de cifrado, pero los requisitos para las subclaves son diferentes. La siguiente tabla proporciona las subclaves de cifrado y las subclaves de descifrado correspondientes.
Las claves satisfacen:
Zi(r) ⊙ Zi(r) ?1=1 mod (216+1) Zi(r) ?+? mod (216+1)
Algoritmo Blowfish
Blowfish fue diseñado por Bruce Schneier y se puede utilizar de forma gratuita.
Blowfish es un cifrado de bloques de 16 rondas con una longitud de bloque de texto plano de 64 bits y una clave de longitud variable (de 32 a 448 bits). El algoritmo Blowfish consta de dos partes: expansión de claves y cifrado de datos.
1. Cifrado de datos
El proceso de cifrado de datos pasa por 16 rondas de iteraciones, como se muestra en la figura. La descripción específica es (dividir el texto plano x en dos partes de 32 bits: xL, xR)
para i = 1 a 16
{
xL = xL XOR Pi
xR = F(xL) XOR xR
si
{
Intercambiar xL y xR
}
}
xR = xR XOR P17
xL = xL XOR P18
Fusionar xL y xR
Entre ellos, la matriz P tiene 18 subclaves de 32 bits P1, P2,..., P18.
El proceso de descifrado es exactamente el mismo que el proceso de cifrado, excepto que las claves P1, P2,..., P18 se utilizan en orden inverso.
2. Función F
Divida xL en cuatro subgrupos de 8 bits: a, b, cyd, y envíelos a cuatro cajas S respectivamente, cada caja S tiene 8 bits. Entrada, salida de 32 bits. Las salidas de las cuatro cajas S se combinan en una salida de 32 bits mediante ciertas operaciones. La operación es
F(xL) =((S1,a + S2,b mod 232) XOR S3,c. ) + S4, d mod 232
Entre ellos, Si,x representa la salida del subgrupo x (x=a, b, c o d) que pasa por Si (i=1, 2, 3 o 4 ) caja.
No hay mucho espacio para escribir sobre esto, por lo que no enumeraré el proceso completo, así que solo lo presentaré brevemente.
Algoritmo GOST
GOST es un algoritmo de cifrado de bloques diseñado por la antigua Unión Soviética y adoptado por la Oficina Nacional de Estándares de la antigua Unión Soviética. El número estándar es: 28147–89. [5].
La agrupación de mensajes de GOST es de 64 bits, la longitud de la clave es de 256 bits y hay algunas claves adicionales que utilizan 32 rondas de iteración.
Algoritmo RC5
RC5 es un sistema de cifrado de bloques con longitud de bloque variable, longitud de clave y rondas de iteración de cifrado. El algoritmo RC5 consta de tres partes: expansión de clave, algoritmo de cifrado y algoritmo de descifrado.
Algoritmo PKZIP
El algoritmo de cifrado PKZIP es un algoritmo de cifrado de secuencia que cifra un byte a la vez y tiene una longitud de clave variable. Está integrado en el programa de compresión de datos PKZIP.
Este algoritmo utiliza tres variables de 32 bits clave0, clave1, clave2 y una variable de 8 bits clave3 derivada de clave2. Key0, key1 y key2 se inicializan mediante la clave y se actualizan mediante el texto sin formato durante el proceso de cifrado. La función principal de la contraseña de secuencia PKZIP es update_keys(). Esta función actualiza tres variables de 32 bits y obtiene la clave3 en función de los bytes de entrada (normalmente texto sin formato).
Enfoque: función hash unidireccional
Algoritmo MD5
El nombre completo de md5 es message-?digest?algorithm?5 (algoritmo de resumen de mensajes) Fue desarrollado por Ronald L.rivest del MIT Laboratory for Computer Science y RSA Data Security Inc a principios de la década de 1990 y desarrollado a partir de md2, md3 y md4. Su función es permitir que la información de gran capacidad se "comprima" en un formato confidencial (es decir, convertir una cadena de bytes de cualquier longitud en un entero grande de cierta longitud) antes de firmar la clave privada con un software de firma digital. Ya sea md2, md4 o md5, todos necesitan obtener una longitud aleatoria de información y generar un resumen de información de 128 bits. Aunque las estructuras de estos algoritmos son más o menos similares, el diseño de md2 es completamente diferente al de md4 y md5. Esto se debe a que md2 está diseñado y optimizado para máquinas de 8 bits, mientras que md4 y md5 están diseñados para máquinas de 32 bits. ?cerebro.
rivest desarrolló el algoritmo md2 en 1989. En este algoritmo, la información primero se rellena con datos de modo que la longitud en bytes de la información sea múltiplo de 16. Luego, se agrega una suma de verificación de 16 bits al final del mensaje. Y calcule el valor hash en función de esta información recién generada. Más tarde, rogier y chauvaud descubrieron que se producirían conflictos md2 si se omitía la suma de comprobación. El resultado cifrado del algoritmo md2 es único, no duplicado. ? Para mejorar la seguridad del algoritmo, rivest desarrolló el algoritmo md4 en 1990. El algoritmo md4 también necesita rellenar la información para garantizar que la longitud del byte de la información más 448 pueda ser divisible por 512 (la longitud del byte de la información mod?512?=?448). Luego, se agrega una representación binaria de 64 bits de la longitud original del mensaje. La información se procesa en bloques de iteraciones damgörd/merkle de 512 bits, y cada bloque se procesa en tres pasos diferentes. Den?Boer y bosselaers y otros descubrieron rápidamente vulnerabilidades que atacaron el primer y tercer paso de la versión md4. Dobbertin muestra cómo se puede utilizar una PC normal para encontrar un conflicto en la versión completa de md4 en unos minutos (este conflicto es en realidad una vulnerabilidad que provocará el cifrado de contenido diferente pero el mismo resultado cifrado). No hay duda de que md4 ha sido eliminado. Aunque el algoritmo md4 tiene una laguna de seguridad tan grande, tiene un papel rector que no se puede ignorar en la aparición de varios algoritmos de cifrado de seguridad de la información que se desarrollaron posteriormente. Además de md5, los más famosos incluyen sha-1, rip-md y haval. ?
Un año después, en 1991, rivest desarrolló el algoritmo md5, que era técnicamente más maduro. Añade el concepto de "cinturones de seguridad" sobre la base de md4. Aunque md5 es ligeramente más lento que md4, es más seguro. Este algoritmo obviamente consta de cuatro pasos que son ligeramente diferentes del diseño md4. En el algoritmo md5, las condiciones necesarias para el tamaño y el relleno del resumen del mensaje son exactamente las mismas que para md4. Denboer y Bosselaers descubrieron pseudocolisiones en el algoritmo md5, pero no se descubrieron otros resultados de cifrado. Vanörschot y Wiener habían considerado una función hash de fuerza bruta que buscara colisiones en hashes, y especularon sobre una máquina diseñada específicamente para buscar colisiones md5 (esta máquina se introdujo en 1994 (su fabricación costó aproximadamente $ 1 millón) puede encontrar un conflicto cada 24 días en promedio. Pero en los 10 años transcurridos entre 1991 y 2001, no hubo ningún md6 que reemplazara al algoritmo md5 o un nuevo algoritmo llamado de otra manera. Podemos ver que esta falla no afectó demasiado la seguridad de md5. Todo lo anterior no es suficiente para ser un problema para md5 en aplicaciones prácticas.
Además, dado que el uso del algoritmo md5 no requiere el pago de derechos de autor, en circunstancias normales (no en campos de aplicación ultrasecretos). Pero incluso si se aplica en campos ultrasecretos, md5 puede considerarse como un algoritmo muy excelente tecnología intermedia). md5 debe considerarse muy seguro de todos modos.
Algoritmo
MD significa Message Digest. MD5 es una versión mejorada de MD4. Este algoritmo genera un valor hash de 128 bits (o resumen de mensaje) para el mensaje de entrada de cualquier longitud. El algoritmo MD5 se puede representar en la Figura 4-2.
Una breve descripción del algoritmo md5 puede ser: md5 utiliza grupos de 512 bits para procesar la información de entrada, y cada grupo se divide en 16 subgrupos de 32 bits. Después de una serie de procesamiento, la salida del algoritmo consta de cuatro 32. -grupos de bits Estos cuatro subgrupos de 32 bits son ¿La concatenación de grupos de bits producirá un valor hash de 128 bits?
1) Bits de relleno adicionales
Primero rellene el mensaje para que su longitud es 64 bits menor que un múltiplo de 512. número. Método de relleno: rellene un bit de 1 después del mensaje y luego rellene el número requerido de ceros. El número de bits de relleno oscila entre 1 y 512.
2) Agregar longitud
Agrega la representación de 64 bits de la longitud del mensaje original al final del mensaje rellenado. Cuando la longitud del mensaje original es mayor que 264, se completa con la longitud del mensaje mod 264. En este momento, la longitud del mensaje es exactamente un múltiplo entero de 512. Sea M[0 1…N?1] cada palabra del mensaje completo (cada palabra tiene 32 bits) y N es un múltiplo de 16.
3) Inicializar el búfer MD
Inicializa el búfer de 128 bits utilizado para calcular el resumen del mensaje. Este búfer está representado por cuatro registros de 32 bits A, B, C y D. El valor de inicialización del registro es (almacenado en orden de byte de orden inferior primero):
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
4) Procesar el mensaje de entrada en grupos de 512 bits
Este paso es el bucle principal de MD5, incluidas cuatro ruedas, como se muestra en la Figura 4-3. Cada ciclo toma como entrada el paquete Yq de 512 bits actualmente procesado y el valor del búfer ABCD de 128 bits, y luego actualiza el contenido del búfer.
La diferencia entre las cuatro rondas de operaciones es que las funciones no lineales utilizadas en cada ronda son diferentes. Antes de la primera ronda de operaciones, A, B, C y D se copian primero a otras variables a. b, y c. Estas cuatro funciones no lineales son (sus entradas/salidas son todas palabras de 32 bits):
F(X,Y,Z) = (XY)((~X) Z)
G(X,Y,Z) = (XZ)(Y(~Z))
H(X,Y,Z) = XYZ
I(X, Y, Z) = Y(X(~Z))
Entre ellos, significa AND bit a bit; significa OR bit a bit; significa inversión bit a bit;
Además, como se muestra en la Figura 4-4, en este paso también se utiliza una tabla T[1..64] con 64 elementos, T[i]=232×abs(sin(i) ), la unidad de i es radianes.
Basado en la descripción anterior, el proceso de este paso se resume de la siguiente manera:
para i = 0 a N/16?1 haga
/* cada vez Procese 16 palabras en un bucle, es decir, un grupo de mensajes de 512 bytes*/
/*Divida el i-ésimo bloque de palabras (512 bits) en 16 subgrupos de 32 bits y copie ellos a X*/
para j = 0 a 15 do
Establezca X[j] en M[i*16+j]
end /* j loop*/
/*Guardar A como AA, B como BB, C como CC y D como DD*/
AA = A
BB = B
CC = C
DD = D /* Primera ronda*/
/* Sea [abcd k s i] la operación
a = b + ((a + F(b,c,d) + /
/* Completa las siguientes 16 operaciones*/
[ABCD 0 7 1 ?] [DABC 1 12 2 ?] [CDAB 2 17 3 ?] [BCDA 3 22 4 ?]
[ABCD 4 7 5 ?] [DABC 5 12 6 ?] [CDAB 6 17 7 ?] [ BCDA 7 22 8 ?]
[ABCD 8 7 9 ? ] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13 ] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* Segunda ronda*/
/*Sea [abcd k s i] la operación
a = b + ((a + G(b,c ,d) + X[k] + T[i]) <<< s)*/
/*Completo las siguientes 16 operaciones*/
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [ CDAB 7 14 31] [BCDA 12 20 32]
/*Tercera ronda*/
/*Sea [abcd k s t] la operación
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s)* /
/*Completa las siguientes 16 operaciones*/ p>
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] p>
[ABCD 1 4 37] [DABC 4 11 3
8] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/*Cuarta Ronda*/
/*Orden [ abcd k s t] representa la operación
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s) */
/*Completa las siguientes 16 operaciones*/
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
A = A + AA
B = B + BB
C = C + CC
D = D + DD
fin /*i bucle*/
5) Salida
La salida de los cuatro registros A, B, C y D está en el orden del byte de orden inferior primero (es decir, comenzando con el byte de orden inferior). byte de A y el byte de orden superior de D al final del byte) para obtener un resumen del mensaje de 128 bits.
Lo anterior es la descripción del algoritmo MD5. Las operaciones del algoritmo MD5 son todas operaciones básicas, relativamente fáciles de implementar y muy rápidas.
Función Hash Segura (SHA)
Algoritmo
SHA es un Algoritmo Hash Seguro diseñado conjuntamente por el NIST y la NSA de EE. UU., utilizado en el estándar de firma digital. DSS (Estándar de Firma Digital). En 1995 se publicó una versión modificada de SHA, SHA–1, como Boletín de estándares federales de procesamiento de información de EE. UU. (FIPS PUB 180–1) [2].