Criptografía y los principales métodos de cifrado de información.

09.07.2003

¿Qué es el cifrado?

El cifrado ha sido utilizado por la humanidad desde el momento en que apareció la primera información secreta, es decir, aquella información a la que el acceso debería estar limitado. Esto fue hace mucho tiempo; por ejemplo, uno de los métodos de cifrado más famosos lleva el nombre de César, quien, si no lo inventó él mismo, lo utilizó activamente (ver recuadro).

La criptografía garantiza que el significado de un mensaje esté oculto y se revele mediante el descifrado utilizando claves y algoritmos especiales. Entendemos la clave como un estado secreto específico de los parámetros de los algoritmos de cifrado y descifrado. Conocer la clave permite leer el mensaje secreto. Sin embargo, como verás a continuación, el desconocimiento de la clave no siempre garantiza que el mensaje no pueda ser leído por un extraño.

El proceso de descifrar un cifrado sin conocer la clave se llama criptoanálisis. El tiempo necesario para descifrar un cifrado está determinado por su solidez criptográfica. Cuanto más grande es, más "fuerte" es el algoritmo de cifrado. Es incluso mejor si inicialmente es imposible saber si el resultado del hack es alcanzable.

Métodos básicos de cifrado modernos.

Entre los distintos métodos de cifrado, se pueden distinguir los siguientes métodos principales:

  • Algoritmos de reemplazo o sustitución: los caracteres del texto original se reemplazan con caracteres de otro (o el mismo) alfabeto de acuerdo con un esquema predeterminado, que será la clave de este cifrado. Por otra parte, este método prácticamente no se utiliza en los criptosistemas modernos debido a su fuerza criptográfica extremadamente baja.
  • Algoritmos de permutación: los caracteres del texto original se intercambian según un principio determinado, que es la clave secreta. El algoritmo de permutación en sí tiene una fuerza criptográfica baja, pero se incluye como elemento en muchos criptosistemas modernos.
  • Algoritmos gamma: los caracteres del texto original se agregan a los caracteres de una determinada secuencia aleatoria. El ejemplo más común es el cifrado de archivos "username.pwl", en el que el sistema operativo Microsoft Windows 95 almacena contraseñas para los recursos de red de un usuario determinado (contraseñas para iniciar sesión en servidores NT, contraseñas para acceso telefónico a Internet, etc.) .

Cuando un usuario ingresa su contraseña al iniciar sesión en Windows 95, se genera una gamma (siempre la misma) utilizando el algoritmo de cifrado RC4, que se utiliza para cifrar las contraseñas de la red. La simplicidad de la selección de contraseña en este caso se debe al hecho de que Windows siempre prefiere el mismo esquema de color.

  • Algoritmos basados ​​en transformaciones matemáticas complejas del texto fuente según una fórmula determinada. Muchos de ellos utilizan problemas matemáticos sin resolver. Por ejemplo, el algoritmo de cifrado RSA ampliamente utilizado en Internet se basa en las propiedades de los números primos.

Criptosistemas simétricos y asimétricos.

Antes de pasar a los algoritmos individuales, consideremos brevemente el concepto de criptosistemas simétricos y asimétricos. Generar una clave secreta y cifrar un mensaje con ella es sólo la mitad de la batalla. Pero, ¿cómo se puede enviar esa clave a alguien que debe utilizarla para descifrar el mensaje original? La transmisión de la clave de cifrado se considera uno de los principales problemas de la criptografía.

Permaneciendo dentro del marco de un sistema simétrico (llamado así porque se utiliza la misma clave para cifrar y descifrar), es necesario disponer de un canal de comunicación fiable para transmitir la clave secreta. Pero este canal no siempre está disponible y, por eso, los matemáticos estadounidenses Diffie, Hellman y Merkle desarrollaron el concepto de clave pública y cifrado asimétrico en 1976. En tales criptosistemas, sólo la clave para el proceso de cifrado está disponible públicamente y el procedimiento de descifrado sólo lo conoce el propietario de la clave secreta.

Por ejemplo, cuando quiero que me envíen un mensaje, genero claves públicas y privadas. Te lo envío, cifras el mensaje y me lo envías. Sólo yo puedo descifrar el mensaje, ya que no le di la clave secreta a nadie. Por supuesto, ambas claves están vinculadas de una manera especial (de diferentes maneras en cada criptosistema), y la distribución de la clave pública no destruye la fortaleza criptográfica del sistema.

En sistemas asimétricos, se debe cumplir el siguiente requisito: no existe ningún algoritmo (o aún no se conoce) que pueda derivar el texto original a partir del criptotexto y la clave pública. Un ejemplo de este tipo de sistema es el conocido criptosistema RSA.

algoritmo RSA

El algoritmo RSA (después de las primeras letras de los apellidos de sus creadores Rivest-Shamir-Adleman) se basa en las propiedades de los números primos (y de los muy grandes). Los números primos son aquellos números que no tienen más divisores que ellos mismos y el uno. Y los números coprimos son aquellos números que no tienen divisores comunes distintos de 1.

Primero, elijamos dos números primos muy grandes (se necesitan números primos grandes para construir claves criptográficas grandes. Por ejemplo, el programa Unix ssh-keygen genera claves de 1024 bits de longitud de forma predeterminada).

Definamos el parámetro norte como resultado de la multiplicación pag Y q. Elijamos un número aleatorio grande y llamémoslo d, y debe ser coprimo con el resultado de la multiplicación (p -1)*(q -1).

Encontremos un número e para el cual la relación es verdadera.

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

(modo- resto de la división, es decir, si e multiplicado por d se divide por ((p -1)*(q -1)), entonces el resto es 1).

La clave pública es un par de números. e y n, y cerrado - d y n.

Al cifrar, el texto fuente se trata como una serie de números y realizamos una operación en cada número.

C(i)= (M(i) e) mod n.

El resultado es la secuencia C(yo), que conformará el criptotexto. La decodificación de la información se produce según la fórmula.

M(i) = (C(i) d) mod n.

Como puede ver, el descifrado requiere conocer la clave secreta.

Probémoslo con números pequeños.

vamos a instalar p=3,q=7. Entonces n=p*q=21. Elegir d como 5. De la fórmula (e*5) mod 12=1 calcular e=17. Clave pública 17, 21 , secreto - 5, 21 .

Cifremos la secuencia "12345":

C(1)= 1 17 módulo 21= 1

C(2)= 2 17 módulo 21 =11

C(3)= 3 17 módulo 21= 12

C(4)= 4 17 módulo 21= 16

C(5)= 5 17 módulo 21= 17

Criptotexto - 1 11 12 16 17.

Comprobemos el descifrado:

M(1)= 1 5 módulo 21= 1

M(2)= 11 5 módulo 21= 2

M(3)= 12 5 módulo 21= 3

M(4)= 16 5 módulo 21= 4

M(5)= 17 5 módulo 21= 5

Como puede ver, el resultado coincidió.

El criptosistema RSA se utiliza ampliamente en Internet. Cuando se conecta a un servidor seguro a través de SSL, instala un certificado WebMoney en su PC o se conecta a un servidor remoto usando Open SSH o SecureShell, todos estos programas utilizan cifrado de clave pública utilizando ideas del algoritmo RSA. ¿Es este sistema realmente tan confiable?

Competiciones de piratería RSA

Desde su creación, RSA ha estado constantemente sujeta a ataques de fuerza bruta. En 1978, los autores del algoritmo publicaron un artículo en el que presentaban una cadena cifrada utilizando el método que acababan de inventar. La primera persona que descifrara el mensaje recibió una recompensa de 100 dólares, pero para ello era necesario dividir un número de 129 dígitos en dos factores. Esta fue la primera competencia en descifrar RSA. El problema se resolvió sólo 17 años después de la publicación del artículo.

La fortaleza criptográfica de RSA se basa en la suposición de que es extremadamente difícil, si no imposible, determinar la clave privada a partir de la clave pública. Para ello, era necesario resolver el problema de la existencia de divisores de un número entero enorme. Hasta ahora, nadie lo ha resuelto utilizando métodos analíticos y el algoritmo RSA sólo puede descifrarse mediante la fuerza bruta. Estrictamente hablando, la afirmación de que el problema de factorización es difícil y que romper el sistema RSA es difícil tampoco está probada.

El número obtenido como resultado del procesamiento del texto del mensaje mediante la función hash se cifra mediante el algoritmo RSA en la clave privada del usuario y se envía al destinatario junto con la carta y una copia de la clave pública. El destinatario, utilizando la clave pública del remitente, realiza la misma función hash en el mensaje entrante. Si ambos números son iguales, esto significa que el mensaje es genuino, pero si se ha cambiado al menos un carácter, los números no coincidirán.

Uno de los clientes de correo electrónico más comunes en Rusia, el programa The Bat, tiene capacidades integradas para agregar firmas digitales a las cartas (preste atención al elemento del menú Privacidad al editar una carta). Lea más sobre esta técnica en el artículo (ver “PC World”, No. 3/02).

Arroz. 3

Criptografía

La criptografía es la ciencia de los principios, medios y métodos de transformar la información para protegerla del acceso no autorizado y la distorsión. Últimamente se ha estado desarrollando muy, muy rápidamente. Es una carrera emocionante e interminable que requiere mucho tiempo y esfuerzo: los criptoanalistas descifran algoritmos que hasta hace poco eran estándares y ampliamente utilizados. Por cierto, recientemente los matemáticos Dan Goldston (EE.UU.) y Kem Ildirim (Turquía) demostraron la primera regularidad en la distribución de números primos (estas regularidades no se habían observado hasta ahora). Los números primos se encuentran en el eje numérico en ciertos grupos, lo que los hace algo más fáciles de encontrar.

Las investigaciones matemáticas realizadas en todo el mundo conducen constantemente a nuevos descubrimientos. Quién sabe, tal vez estemos a punto de romper el algoritmo RSA u otros criptosistemas basados ​​en problemas matemáticos no resueltos.

Oleg Bunin- especialista en desarrollo de software para grandes proyectos de Internet, empleado de la empresa Rambler, http://www..htm).

  • Introducción a la criptografía / Ed. V.V. Yáshchenko. M.: MTsNMO, 2000.
  • Nosov V. A. Breve reseña histórica del desarrollo de la criptografía // Actas de la conferencia "La Universidad de Moscú y el desarrollo de la criptografía en Rusia", MSU, 17 al 18 de octubre de 2002.
  • Salomaa A. Criptografía de clave pública. M., 1996.
  • Zimmerman F. PGP: cifrado de clave pública para todos.
  • Sistema de cifrado César

    Un ejemplo de algoritmo de reemplazo es el sistema de cifrado Caesar. Este método se basa en sustituir cada letra del mensaje por otra desplazándose del original en un número fijo de caracteres. Intente descifrar la cuarteta de Omar Khayyam (tiempo para completarla: 10 minutos).

    RLZ YOMEYZ AVBZHU IYZAVLU, BZHSCHLU ZHSCHEZZHZ ZHUOSCHZ, EYSH YSHCHAZhFO IYSHCHYVESH BSHCHIZHV EESH ZHSCHRSCHG: LF EMRSYU ЪZEZESCHG, RYU RLZ IZISHCHEZ YUKLU, IN EMRSYU BMEU ZEVZH, RYO OYYUKLU K DUYO IZISHCHEZ.

    ¿Lo lograste? Aquí está la respuesta:

    Para vivir tu vida sabiamente, necesitas saber mucho,

    Recuerde dos reglas importantes para comenzar:

    Preferirías morir de hambre antes que comer cualquier cosa.

    Y es mejor estar solo que con cualquiera.

    Clave de descifrado: desplazar siete caracteres (tomar el séptimo) hacia la izquierda alfabéticamente. El alfabeto está en bucle. Las mayúsculas y minúsculas no son sensibles.

    Windows y contraseñas

    ¿Cómo cifra Windows las contraseñas?

    El sistema toma la contraseña, la convierte a mayúsculas, la recorta a 14 caracteres, luego los divide en dos mitades de 7, cifra cada uno por separado y lo guarda de esa manera, lo que facilita un poco el hackeo. Por cierto, cuando se te ocurra una contraseña, ten en cuenta que una combinación de más de 14 caracteres tiene poco significado.

    Concurso AES (Estándar de cifrado avanzado)

    En los años 80 en los EE. UU. Adoptaron un estándar de cifrado simétrico para uso interno: DES ((Estándar de cifrado de datos, existe un estándar similar en Rusia). Pero en 1997, cuando quedó claro que la clave DES de 56 bits no era suficiente para una seguridad confiable criptosistema, el American Standards Institute anunció un concurso para un nuevo algoritmo estándar. Entre 15 opciones, se eligió el mejor: el algoritmo belga Rijndael (su nombre se compone de los nombres de los autores: Rijmen y Daemen, leídos como "Rijndael". Este algoritmo ya está integrado en varias herramientas criptográficas suministradas al mercado por otros finalistas). Los ganadores del concurso fueron MARS, RC6, Serpent, TwoFish. Todos estos algoritmos resultaron ser bastante robustos y resistieron con éxito todos los métodos de criptoanálisis conocidos. .

    Funciones hash criptográficas

    Las funciones hash criptográficas convierten datos de entrada de cualquier tamaño en una cadena de tamaño fijo. Es extremadamente difícil encontrarles:

    • dos conjuntos de datos diferentes con el mismo resultado de transformación (resistencia a la colisión); por ejemplo, el número de operaciones aritméticas necesarias para encontrar un bloque de datos que también tenga un mensaje corto para la función hash MD5 es aproximadamente 2·64;
    • valor de entrada basado en un resultado de hash conocido (irreversibilidad); para MD5, el número estimado de operaciones necesarias para calcular el mensaje original es 2128.

    Como recordarás, los cifrados de desplazamiento, sustitución, permutación y Vernam aplican una operación a cada carácter específico del texto. Necesitamos cambiar: cambiamos el carácter, aplicamos la clave, la aplicamos al carácter, luego al siguiente carácter, y así sucesivamente, hasta que cifremos todos los caracteres de texto sin formato. Este método de cifrado se llama cifrado de flujo: ciframos cada carácter individualmente. Otro enfoque consiste en dividir el texto sin formato original en grupos de varios caracteres (bloques) y realizar operaciones de cifrado en cada bloque. Este es un método de cifrado en bloque.

    Para aclarar la diferencia entre cifrados de bloque y de flujo, daremos un ejemplo utilizando un cifrado de sustitución simple.

    Cifrado de flujo

    Cifremos la palabra CIPHER con un cifrado de flujo de reemplazo:

    Ciframos cada carácter y obtuvimos un texto cifrado. No podría ser más sencillo.

    CIFRADO DE BLOQUES

    Ciframos la palabra AVADAKEDAVRA. Dado que el cifrado es de bloques, dividiremos el texto plano en bloques de cuatro caracteres: AVAD | REALIZADO | AVRA (en la práctica, los bloques de texto constan de 64-256 bits). Para cada bloque crearemos nuestra propia tabla de reemplazo:

    Ahora ciframos cada uno de los bloques con el alfabeto correspondiente:
    Resultó un poco mejor que con el enfoque en línea, si hablamos de durabilidad. Después de todo, aprendimos a descifrar el cifrado de sustitución habitual con una mano izquierda. Y con tal enfoque de bloque, el atacante tendrá que devanarse los sesos antes de poder seleccionar la longitud del bloque y luego aplicar el criptoanálisis para reemplazar los cifrados para cada bloque.

    RED FEISTEL

    Ahora estamos listos para pasar a un tema muy importante que abre la puerta al mundo infinito de los sistemas de cifrado modernos. La red Feistel es un método de cifrado en bloques desarrollado por Horst Feistel en el laboratorio de IBM en 1971. Hoy en día, la red Feistel es la base de una gran cantidad de protocolos criptográficos. Intentemos descubrir "con los dedos" qué es.

    La red Feistel opera en bloques de texto plano, por lo que veremos el mecanismo de su funcionamiento en uno de los bloques. Las acciones para los bloques restantes serán similares.

    • El bloque se divide en dos partes iguales: izquierda (L) y derecha (R).
    • Después de la partición, el subbloque izquierdo se modifica mediante una función f usando la tecla K: x = f(L, K). Como función, puede imaginar cualquier transformación, por ejemplo, el viejo cifrado de desplazamiento con clave K.
    • Al subbloque resultante se le suma módulo 2 con el subbloque derecho R, que no se usó antes: x=x+R
    • A continuación, las piezas resultantes se intercambian y se pegan.

    Como puedes ver, todo es bastante sencillo. Para entender cómo funciona esto, mire el diagrama:

    Esta disposición se llama celda de Feistel. La propia red Feistel consta de varias células. Los subbloques obtenidos en la salida de la primera celda van a la entrada de la segunda celda, los subbloques resultantes de la segunda celda van a la entrada de la tercera celda, y así sucesivamente, dependiendo del número de rondas de la red Feistel. En cada una de estas rondas, se utiliza una clave de ronda predeterminada. La mayoría de las veces, las claves de ronda se generan a partir de la clave secreta principal K. Cuando se han completado todas las rondas, los subbloques de texto se pegan y se obtiene un texto cifrado normal.

    Ahora veamos el funcionamiento de la red Feistel usando un ejemplo. Tomemos la palabra AVADAKEDAVRA y dividámosla en dos bloques de seis caracteres - AVADAK | EDAVRA. Para la función tomamos el cifrado de desplazamiento por el número de posiciones determinadas por la clave redonda. Sea la clave secreta K = . Como claves redondas tomamos K = 1, K = 2. Para la suma módulo 2, convertimos el texto en código binario según el alfabeto telegráfico, que casi nadie utiliza.

    Esto es lo que pasó:

    Ahora ejecutemos el primer bloque a través de la red Feistel en dos rondas:

    Intente cifrar el segundo bloque usted mismo, obtuve MOSSTR.

    El descifrado se realiza exactamente de la misma manera: el texto cifrado se divide en bloques y luego en subbloques, el subbloque izquierdo entra en la función, se suma en módulo 2 al de la derecha y luego se intercambian los subbloques. La diferencia es que las claves de ronda se envían en orden inverso, es decir, en nuestro caso, en la primera ronda usaremos la clave K = 2, y luego en la segunda ronda K = 1.

    La investigación en la red Feistel ha demostrado que con claves redondas independientes y una función pseudoaleatoria f criptorresistente, tres rondas de la red Feistel serán suficientes para que el texto cifrado sea pseudoaleatorio. Esto sugiere que los cifrados basados ​​en la red Feistel son actualmente bastante seguros.

    GOST 28147-89 (MAGMA)

    Ya tenemos casi todos los conceptos necesarios en nuestro arsenal, por lo que estamos listos para pasar al primer tema importante de la criptografía nacional: GOST 28147-89. Vale la pena decir que solo los perezosos no han escrito sobre este estándar, por lo que intentaré por millonésima y primera vez resumir brevemente y sin una nube de fórmulas la esencia de los modos de cifrado del gran y terrible Magma. Si decide leer el estándar en sí, debe acumular tiempo, energía, paciencia y comida, porque, como sabe, está estrictamente prohibido escribir estándares en lenguaje humano.

    Características principales: clave 256 bits, bloque 64 bits.

    Antes de analizar Magma, es necesario aprender un nuevo concepto: las tablas de sustitución o S-boxes. Este es el mismo tipo de tabla que la tabla del cifrado de sustitución. Diseñado para reemplazar símbolos de subbloque con símbolos registrados en la tabla. No crea que el S-box son números aleatorios generados por la función rand(). Las S-boxes son el resultado de secuencias cuidadosamente generadas, porque en ellas reside la fuerza criptográfica de todo el cifrado.

    GOST 28147 describe sus tablas de reemplazo con mucha moderación. Sólo dice que son un elemento secreto adicional (junto con la clave secreta) y que se “entregan de la manera prescrita”. Nada más. Desde la adopción de GOST 28147, la incertidumbre científica y técnica asociada con la elección de las cajas S ha dado lugar a rumores y especulaciones. Se habló de criterios secretos que sólo conocen los desarrolladores de GOST. Naturalmente, esta incertidumbre redujo la confianza en el criptosistema.

    Esta deficiencia proporcionó excelentes motivos para criticar la norma. El criptógrafo francés Nicolas Courtois publicó varios artículos que contienen una serie de disposiciones controvertidas sobre la solidez de GOST. Courtois cree que el estándar ruso es fácil de atacar y no puede considerarse internacional. Sin embargo, Courtois realiza sus análisis para S-boxes distintos a los reales, por lo que no debes confiar en su opinión.

    Ahora veamos qué se les ocurrió dentro de los muros de la sombría Lubyanka.

    Modo de reemplazo fácil

    En modo de reemplazo simple para 32 rondas, según el estándar, necesitamos 32 llaves redondas. Para generar claves redondas, la clave original de 256 bits se divide en ocho bloques de 32 bits: K1...K8. Las teclas K9...K24 son una repetición cíclica de las teclas K1...K8. Las claves K25…K32 son las claves K8…K1.

    1. Cada bloque de 64 bits se divide en dos subbloques: Ai y Bi.
    2. El subbloque izquierdo Ai se añade módulo 232 con la tecla redonda K1: Ai+1 = Ai + Ki mod 232.
    3. El subbloque izquierdo pasa por la S-box.
    4. Los bits del subbloque izquierdo se desplazan 11 posiciones (desplazamiento cíclico).
    5. El subbloque izquierdo se suma al derecho módulo 2: A = A ⊕ B . III
    6. El subbloque derecho toma el valor inicial del subbloque izquierdo: Bi+1 = Ai.
    7. Los subbloques se intercambian.

    Sólo un ejemplo de una ronda. Clave de 256 bits:

    arvadek adava arvadek adava arvadek adava arvadek adava arva

    00011 01010 11110 00011 01001 00001 01111 00011 01001 00011 11110

    00011... . . . 00011 01010 11110 0

    Luego las llaves redondas

    K1 = 00011 01010 11110 00011 01001 00001 01

    K2 = 111 00011 01001 00011 11110 00011 0001

    K3 = . . .

    S - caja = [ 1 , 15 , 13 , 0 , 5 , 7 , 10 , 4 , 9 , 2 , 3 , 14 , 6 , 11 , 8 , 12 ]

    ¿Cómo utilizar esta S-box? ¡Muy sencillo! Si la entrada del S-box es 0, entonces la salida será 1 (tome el símbolo 0 del S-box), si es 4, entonces la salida será 5 (tome el 4º símbolo), si la entrada es 7 , entonces la salida será 4, y así sucesivamente.

    Texto sin formato:

    Dividido en dos bloques de 32 bits de bits altos y bajos:

    El ejemplo, por supuesto, resultó ser descabellado, porque GOST todavía no es un estándar que todos puedan seguir con sus propias manos.

    El modo de reemplazo simple es demasiado simple y tiene importantes desventajas:

    • un error en un bloque cifrado corrompe todos los bits de ese bloque;
    • al cifrar bloques idénticos de texto plano, se obtienen bloques idénticos de texto cifrado, que pueden proporcionar cierta información a un criptoanalista.

    Por lo tanto, es recomendable utilizar GOST 28147-89 en modo de reemplazo simple solo para cifrar datos clave.

    MODO DE JUEGO

    Este modo no tiene las desventajas del modo de reemplazo simple. El modo gamma se llama así porque utiliza gamma, una secuencia pseudoaleatoria que se agrega módulo 2 al texto sin formato en cada ronda. Gamma se forma a partir del mensaje de sincronización S: una secuencia pseudoaleatoria que cambia con cada iteración y se cifra en el modo de reemplazo simple, después de lo cual se convierte en gamma y se superpone al texto sin formato.

    Y ahora todo está en orden.

    Los pasos 3 a 5 se repiten para cada bloque. Todas estas manipulaciones se pueden ver en el diagrama.

    El descifrado se realiza de la misma manera; en lugar de un bloque de texto sin formato, se proporciona un bloque de texto cifrado.

    Modo gamma con retroalimentación

    Pongámonos más complicados. El algoritmo es similar al modo gamma, pero la gamma se forma en función del bloque anterior de datos cifrados, por lo que el resultado del cifrado del bloque actual también depende de los bloques anteriores. 1. Mensaje de sincronización S: secuencia pseudoaleatoria de 64 bits.

    2. S está cifrado en modo de reemplazo simple.
    3. El texto sin formato se agrega módulo 2 a la gamma resultante.
    4. El texto cifrado resultante se envía como un mensaje de sincronización para el siguiente bloque y también se envía a la salida. Puedes ver cómo se ve en el diagrama.

    Modo de inserción simulado

    En este modo, se genera una inserción simulada: un bloque adicional de longitud fija, dependiendo del texto fuente y las claves. Un bloque tan pequeño es necesario para confirmar que no se introdujeron distorsiones accidental o intencionalmente en el texto cifrado, es decir, para verificar la integridad. Este modo funciona así:

    1. Un bloque de texto plano pasa por 16 rondas en modo de reemplazo simple.
    2. Se agrega otro bloque de texto plano al bloque resultante módulo 2.
    3. La suma pasa por otras 16 rondas en modo de reemplazo simple.
    4. Se agrega el siguiente bloque de texto sin formato y nuevamente se realiza un reemplazo simple, y así sucesivamente hasta que no queden más bloques de texto sin formato.

    Para verificarlo, el destinatario, tras descifrar el texto, realiza un procedimiento similar al descrito. Si el resultado no coincide con el inserto imitativo transmitido, todos los bloques M correspondientes se consideran falsos.

    GOST 34.12-2015 (SALTAMANOS)

    Muchos consideran que GOST 28147-89 está desactualizado y no es lo suficientemente sólido en comparación con algoritmos extranjeros. Para reemplazarlo, los criptógrafos nacionales lanzaron un nuevo estándar de cifrado. Dicen que esto sucedió debido a la gran cantidad de ataques al antiguo GOST o porque la longitud de este bloque ya está desactualizada y es demasiado pequeña para los conjuntos de datos modernos. Nadie anuncia las verdaderas razones. Por supuesto, hubo algunos cambios en las características principales.

    Características principales: clave 256 bits, bloque 128 bits.

    También vale la pena decir que en el nuevo estándar, las cajas S son fijas y reflexivas, por lo que no es necesario inventar sus propias sustituciones aleatorias milagrosas. El nuevo GOST tiene muchos más modos de cifrado:
    modo de sustitución simple (libro de códigos electrónico, BCE);
    modo gamma (Contador, CTR);
    modo gamma con retroalimentación de salida (Output Feedback, OFB);
    modo de reemplazo simple con compromiso (Cipher Block Chaining, SBC);
    modo gamma con retroalimentación de texto cifrado (Cipher Feedback, CFB);
    modo de generación de inserción de simulación (algoritmo de código de autenticación de mensaje).

    Veamos los nuevos modos.

    Modo de reemplazo fácil con compromiso

    Como se vio en el estándar anterior, el modo de reemplazo simple es el más débil de los modos, por lo que en el nuevo estándar ahora sobresale con compromiso y ya no es tan simple en absoluto.

    1. Un vector de inicialización suena aterrador, pero en realidad es solo una secuencia de bits que ingresan a la entrada.
    2. El vector se divide en dos partes: L y R, una de las cuales se agrega módulo 2 con el texto sin formato y la otra se convierte en la mitad del vector de inicialización para el siguiente bloque.
    3. La suma del texto sin formato y una parte del vector de inicialización se pasa a través de un cifrado de sustitución simple.
    4. Los bloques de texto cifrado resultantes se pegan entre sí.

    Una vez que miras el diagrama, todo queda claro de inmediato.

    Por supuesto, el vector de inicialización no es tan simple: pasa por una serie de transformaciones lineales (usando un registro de desplazamiento lineal) antes de comenzar a cifrar un nuevo bloque. Pero para familiarizarse con el cifrado, basta con imaginar tal esquema. El descifrado en este modo tampoco es del todo obvio, por lo que es mejor mirar el diagrama.

    Para los profesionales: cifrados. Entre los desarrollos nacionales se encuentra el proveedor de criptomonedas CryptoPro CSP.

    Algunas palabras sobre la solidez de los modos de cifrado. Muchos criptógrafos extranjeros han intentado levantar la mano contra nuestro estándar, pero por el momento no se conoce ningún ataque que pueda implementarse con el nivel actual de desarrollo tecnológico. Durante mucho tiempo, este estándar no fue muy popular entre los programadores, ya que es difícil comprender el algoritmo operativo a partir de su texto y no hay suficientes descripciones más claras. Pero ahora ya existen muchas implementaciones en muchos lenguajes de programación. Así que ahora el uso de GOST es bastante posible y, en muchos aspectos, supera los estándares extranjeros. Al final, ¿dónde está el patriotismo?

    El cifrado de datos es extremadamente importante para proteger la privacidad. En este artículo, analizaré los diferentes tipos y métodos de cifrado que se utilizan en la actualidad para proteger los datos.

    ¿Sabías?
    En la época romana, Julio César utilizaba el cifrado para hacer que las cartas y los mensajes fueran ilegibles para el enemigo. Desempeñó un papel importante como táctica militar, especialmente durante las guerras.

    A medida que las capacidades de Internet continúan creciendo, cada vez más de nuestros negocios se realizan en línea. Entre ellos, los más importantes son la banca por Internet, el pago en línea, el correo electrónico, el intercambio de mensajes privados y oficiales, etc., que implican el intercambio de datos e información confidencial. Si estos datos caen en las manos equivocadas, pueden dañar no sólo al usuario individual, sino también a todo el sistema empresarial online.

    Para evitar que esto suceda, se han tomado varias medidas de seguridad de la red para proteger la transmisión de datos personales. Los principales son los procesos de cifrado y descifrado de datos, lo que se conoce como criptografía. Hay tres métodos de cifrado principales que se utilizan en la mayoría de los sistemas actuales: hash, cifrado simétrico y asimétrico. En las siguientes líneas hablaré con más detalle de cada uno de estos tipos de cifrado.

    Tipos de cifrado

    Cifrado simétrico

    En el cifrado simétrico, los datos legibles normales, conocidos como texto sin formato, se cifran para que se vuelvan ilegibles. Esta codificación de datos se realiza mediante una clave. Una vez que los datos están cifrados, se pueden enviar de forma segura al receptor. En el destinatario, los datos cifrados se decodifican utilizando la misma clave que se utilizó para la codificación.

    Por tanto, está claro que la clave es la parte más importante del cifrado simétrico. Debe estar oculto a los extraños, ya que cualquiera que tenga acceso a él podrá descifrar datos privados. Por eso este tipo de cifrado también se conoce como "clave secreta".

    En los sistemas modernos, la clave suele ser una cadena de datos que se deriva de una contraseña segura o de una fuente completamente aleatoria. Se introduce en un software de cifrado simétrico, que lo utiliza para mantener en secreto los datos de entrada. La codificación de datos se logra mediante un algoritmo de cifrado simétrico, como el Estándar de cifrado de datos (DES), el Estándar de cifrado avanzado (AES) o el Algoritmo internacional de cifrado de datos (IDEA).

    Restricciones

    El eslabón más débil de este tipo de cifrado es la seguridad de la clave, tanto en términos de almacenamiento como de transmisión al usuario autenticado. Si un pirata informático puede obtener esta clave, puede descifrar fácilmente los datos cifrados, frustrando todo el propósito del cifrado.

    Otra desventaja es que el software que procesa los datos no puede funcionar con datos cifrados. Por lo tanto, para poder utilizar este software, primero se deben decodificar los datos. Si el software en sí se ve comprometido, un atacante puede obtener los datos fácilmente.

    Cifrado asimétrico

    El cifrado de clave asimétrica funciona de manera similar al de clave simétrica en el sentido de que utiliza una clave para cifrar los mensajes que se transmiten. Sin embargo, en lugar de utilizar la misma clave, utiliza una completamente diferente para descifrar este mensaje.

    La clave utilizada para la codificación está disponible para todos los usuarios de la red. Como tal, se la conoce como clave "pública". Por otro lado, la clave utilizada para el descifrado se mantiene secreta y está destinada al uso privado del propio usuario. De ahí que se la conozca como clave "privada". El cifrado asimétrico también se conoce como cifrado de clave pública.

    Dado que, con este método, la clave secreta necesaria para descifrar el mensaje no tiene que transmitirse cada vez y, por lo general, sólo la conoce el usuario (receptor), la probabilidad de que un pirata informático pueda descifrar el mensaje es mucho mayor. más bajo.

    Diffie-Hellman y RSA son ejemplos de algoritmos que utilizan cifrado de clave pública.

    Restricciones

    Muchos piratas informáticos utilizan el intermediario como forma de ataque para evitar este tipo de cifrado. En el cifrado asimétrico, se le proporciona una clave pública que se utiliza para intercambiar datos de forma segura con otra persona o servicio. Sin embargo, los piratas informáticos utilizan el engaño de la red para engañarlo y lograr que se comunique con ellos mientras le hacen creer que está en una línea segura.

    Para comprender mejor este tipo de piratería, considere dos partes que interactúan, Sasha y Natasha, y un hacker, Sergei, con la intención de interceptar su conversación. Primero, Sasha envía un mensaje a través de la red destinado a Natasha, pidiéndole su clave pública. Sergei intercepta este mensaje y obtiene la clave pública asociada con ella y la usa para cifrar y enviar un mensaje falso a Natasha que contiene su clave pública en lugar de la de Sasha.

    Natasha, pensando que este mensaje vino de Sasha, ahora lo cifra con la clave pública de Sergei y lo devuelve. Este mensaje fue nuevamente interceptado por Sergei, descifrado, modificado (si se desea), cifrado nuevamente usando la clave pública que Sasha envió originalmente y devuelto a Sasha.

    Por lo tanto, cuando Sasha recibe este mensaje, le han hecho creer que proviene de Natasha y no se da cuenta de que se ha cometido un crimen.

    hash

    La técnica de hash utiliza un algoritmo conocido como función hash para generar una cadena especial a partir de los datos dados, conocida como hash. Este hash tiene las siguientes propiedades:

    • los mismos datos siempre producen el mismo hash.
    • No es posible generar datos sin procesar únicamente a partir de un hash.
    • No es práctico probar diferentes combinaciones de entradas para intentar generar el mismo hash.

    Por lo tanto, la principal diferencia entre el hash y las otras dos formas de cifrado de datos es que una vez que los datos se cifran (hash), no se pueden recuperar en su forma original (descifrados). Este hecho garantiza que incluso si un hacker consigue el hash, no le servirá de nada, ya que no podrá descifrar el contenido del mensaje.

    Message Digest 5 (MD5) y Secure Hashing Algorithm (SHA) son dos algoritmos de hash ampliamente utilizados.

    Restricciones

    Como se mencionó anteriormente, es casi imposible descifrar datos de un hash determinado. Sin embargo, esto sólo es cierto si se implementa un hash fuerte. En el caso de una implementación débil de la técnica de hash, utilizando suficientes recursos y ataques de fuerza bruta, un hacker persistente puede encontrar datos que coincidan con el hash.

    Combinación de métodos de cifrado

    Como se analizó anteriormente, cada uno de estos tres métodos de cifrado tiene algunas desventajas. Sin embargo, cuando se utiliza una combinación de estos métodos, forman un sistema de cifrado seguro y muy eficaz.

    Muy a menudo, las técnicas de clave pública y privada se combinan y utilizan juntas. El método de clave privada permite un descifrado rápido, mientras que el método de clave pública ofrece una forma más segura y conveniente de transmitir la clave secreta. Esta combinación de métodos se conoce como "sobre digital". El software de cifrado de correo electrónico PGP se basa en la técnica del "sobre digital".

    El hash se utiliza como medio para comprobar la seguridad de una contraseña. Si el sistema almacena un hash de la contraseña en lugar de la contraseña en sí, será más seguro, ya que incluso si un hacker consigue este hash, no podrá entenderlo (leerlo). Durante la verificación, el sistema verificará el hash de la contraseña entrante y verá si el resultado coincide con lo almacenado. De esta manera, la contraseña real sólo será visible durante breves momentos en los que sea necesario cambiarla o verificarla, lo que reduce en gran medida la probabilidad de que caiga en las manos equivocadas.

    El hashing también se utiliza para autenticar datos mediante una clave secreta. Se genera un hash utilizando los datos y esta clave. Por lo tanto, sólo los datos y el hash son visibles y la clave en sí no se transmite. De esta manera, si se realizan cambios en los datos o en el hash, se detectarán fácilmente.

    En conclusión, estas técnicas se pueden utilizar para codificar datos de manera eficiente en un formato ilegible que pueda garantizar su seguridad. La mayoría de los sistemas modernos suelen utilizar una combinación de estos métodos de cifrado junto con implementaciones de algoritmos sólidos para mejorar la seguridad. Además de la seguridad, estos sistemas también aportan muchos beneficios adicionales, como verificar la identidad del usuario y garantizar que los datos recibidos no puedan ser manipulados.

    Introducción

    El problema de proteger la información transformándola para evitar que sea leída por un extraño ha preocupado a la mente humana desde la antigüedad. La historia de la criptografía es contemporánea a la historia del lenguaje humano. Además, la escritura en sí era originalmente un sistema criptográfico, ya que en las sociedades antiguas sólo unos pocos elegidos la dominaban.

    Los libros sagrados del Antiguo Egipto y la Antigua India son ejemplos de ello.

    Con el uso generalizado de la escritura, la criptografía comenzó a surgir como una ciencia independiente. Los primeros criptosistemas se encuentran ya al comienzo de nuestra era. Así, César en su correspondencia utilizó un cifrado más o menos sistemático, que recibió su nombre.

    Los sistemas criptográficos se desarrollaron rápidamente durante los años de la Primera y Segunda Guerra Mundial. Desde la posguerra hasta la actualidad, la llegada de la informática ha acelerado el desarrollo y la mejora de los métodos criptográficos.

    ¿Por qué el problema del uso de métodos criptográficos en los sistemas de información (SI) se ha vuelto particularmente relevante en este momento?

    Por un lado, se ha ampliado el uso de las redes informáticas, en particular la Internet global, a través de las cuales se transmiten grandes volúmenes de información de carácter estatal, militar, comercial y privado, impidiendo el acceso a ella a personas no autorizadas.

    Por otro lado, la aparición de nuevas y potentes tecnologías de ordenadores, redes y computación neuronal ha permitido desacreditar los sistemas criptográficos que hasta hace poco se consideraban prácticamente irrompibles.

    En el primer capítulo de este trabajo podrá familiarizarse con los conceptos básicos de la criptografía moderna, sus requisitos y las posibilidades de su aplicación práctica.

    En el segundo capítulo se trabaja con los protocolos de distribución de claves criptográficas, el concepto de firma electrónica y los protocolos de firma electrónica.

    El tercer capítulo de este trabajo habla sobre funciones hash y (métodos de) algoritmos para su construcción.

    El cuarto capítulo hablará sobre la modernización de la firma electrónica El Gamal y el problema del logaritmo discreto.

    Capítulo 1. Conceptos básicos de la criptografía moderna.

    La criptología (kryptos - secreto, logos - ciencia) aborda el problema de proteger la información transformándola. La criptología se divide en dos áreas: criptografía y criptoanálisis. Los objetivos de estas direcciones son directamente opuestos.

    La criptografía se ocupa de la búsqueda y estudio de métodos matemáticos para convertir información.

    El área de interés del criptoanálisis es el estudio de la posibilidad de descifrar información sin conocer las claves.

    Este trabajo se centrará en los métodos criptográficos.

    La criptografía moderna incluye cuatro secciones principales:

    Criptosistemas simétricos.

    Criptosistemas de clave pública.

    Sistemas de firma electrónica.

    Gestión de claves.

    Las principales áreas de uso de métodos criptográficos son la transferencia de información confidencial a través de canales de comunicación (por ejemplo, correo electrónico), el establecimiento de la autenticidad de los mensajes transmitidos y el almacenamiento de información (documentos, bases de datos) en medios encriptados.

    La criptografía permite transformar la información de tal manera que su lectura (recuperación) sólo es posible si se conoce la clave.

    Los textos basados ​​en un determinado alfabeto se considerarán información a cifrar y descifrar. Estos términos significan lo siguiente.

    Un alfabeto es un conjunto finito de signos que se utilizan para codificar información.

    El texto es un conjunto ordenado de elementos alfabéticos.

    Los siguientes son ejemplos de alfabetos utilizados en los sistemas de información modernos:

    alfabeto Z33: 32 letras del alfabeto ruso y un espacio;

    alfabeto Z256: caracteres incluidos en los códigos estándar ASCII y KOI-8;

    alfabeto binario - Z2 = (0,1);

    alfabeto octal o alfabeto hexadecimal;

    El cifrado es un proceso de transformación: el texto original, también llamado texto plano, se reemplaza por texto cifrado.

    El descifrado es el proceso inverso al cifrado. Según la clave, el texto cifrado se convierte al original.

    La clave es la información necesaria para cifrar y descifrar textos sin problemas.

    Un sistema criptográfico es una familia de transformaciones de texto plano T. Los miembros de esta familia están indexados o designados con el símbolo k; El parámetro k es la clave. El espacio clave K es el conjunto de posibles valores clave. Generalmente la clave es una serie secuencial de letras del alfabeto.

    Los criptosistemas se dividen en clave simétrica y pública.

    En los criptosistemas simétricos, se utiliza la misma clave tanto para el cifrado como para el descifrado.

    Los sistemas de clave pública utilizan dos claves, una clave pública y una clave privada, que están relacionadas matemáticamente entre sí. La información se cifra mediante una clave pública, que está disponible para todos, y se descifra mediante una clave privada, conocida únicamente por el destinatario del mensaje. Los términos distribución de claves y gestión de claves se refieren a los procesos de un sistema de procesamiento de información, cuyo contenido es la recopilación y distribución de claves entre usuarios.

    Una firma electrónica (digital) es una transformación criptográfica adjunta al texto, que permite, cuando el texto es recibido por otro usuario, verificar la autoría y autenticidad del mensaje.

    La fuerza criptográfica es una característica de un cifrado que determina su resistencia al descifrado sin conocer la clave (es decir, criptoanálisis). Existen varios indicadores de fortaleza criptográfica, que incluyen:

    el número de todas las claves posibles;

    tiempo promedio requerido para el criptoanálisis.

    La transformación Tk está determinada por el algoritmo correspondiente y el valor del parámetro k. La eficacia del cifrado para proteger la información depende de mantener el secreto de la clave y la solidez criptográfica del cifrado.

    El proceso de cierre de datos criptográficos se puede realizar tanto en software como en hardware. La implementación hardware es sensiblemente más cara, pero también tiene ventajas: alto rendimiento, sencillez, seguridad, etc. La implementación del software es más práctica y permite cierta flexibilidad de uso.

    Se formulan los siguientes requisitos generalmente aceptados para los sistemas modernos de seguridad de la información criptográfica:

    el mensaje cifrado debe ser legible sólo si la clave está disponible;

    el número de operaciones necesarias para determinar la clave de cifrado utilizada a partir de un fragmento de un mensaje cifrado y el texto claro correspondiente no debe ser inferior al número total de claves posibles;

    la cantidad de operaciones necesarias para descifrar información buscando entre todas las claves posibles debe tener un límite inferior estricto e ir más allá de las capacidades de las computadoras modernas (teniendo en cuenta la posibilidad de utilizar la computación en red);

    el conocimiento del algoritmo de cifrado no debería afectar la confiabilidad de la protección;

    un ligero cambio en la clave debería provocar un cambio significativo en la apariencia del mensaje cifrado, incluso cuando se utiliza la misma clave;

    los elementos estructurales del algoritmo de cifrado no deben modificarse;

    los bits adicionales introducidos en el mensaje durante el proceso de cifrado deben ocultarse de forma completa y segura en el texto cifrado;

    la longitud del texto cifrado debe ser igual a la longitud del texto original;

    no debe haber dependencias simples y fáciles de establecer entre las claves utilizadas secuencialmente en el proceso de cifrado;

    cualquiera de las muchas claves posibles debe proporcionar una protección confiable de la información;

    el algoritmo debe permitir la implementación tanto de software como de hardware, mientras que cambiar la longitud de la clave no debe provocar un deterioro cualitativo del algoritmo de cifrado.

    Capítulo 2. Protocolos de distribución de claves criptográficas y protocolos de firma electrónica.

    Por complejos y fiables que sean los sistemas criptográficos, su punto débil en la implementación práctica es el problema de la distribución de claves. Para que sea posible el intercambio de información confidencial entre dos sujetos de propiedad intelectual, la clave debe ser generada por uno de ellos y luego, de alguna manera, nuevamente de forma confidencial, transferida al otro. Aquellos. en general, transferir nuevamente la clave requiere el uso de algún tipo de criptosistema.

    Para solucionar este problema se han propuesto sistemas de clave pública basados ​​en los resultados obtenidos del álgebra clásica y moderna.

    Su esencia es que cada destinatario IP genera dos claves que están conectadas entre sí según una regla determinada. Una clave se declara pública y la otra privada. La clave pública se publica y está disponible para cualquiera que desee enviar un mensaje al destinatario. La clave secreta se mantiene en secreto.

    El texto original se cifra con la clave pública del destinatario y se le transmite. El texto cifrado no puede, en principio, ser descifrado por el mismo texto plano.


    llave. El descifrado de un mensaje sólo es posible utilizando una clave privada, que sólo conoce el destinatario.

    Los sistemas criptográficos de clave pública utilizan las llamadas funciones irreversibles o unidireccionales, que tienen la siguiente propiedad: dado un valor de x, es relativamente fácil calcular el valor de f(x), pero si y=f(x), entonces no existe una manera fácil de calcular el valor de x.

    El conjunto de clases de funciones irreversibles da lugar a toda la variedad de sistemas de clave pública. Sin embargo, no todas las funciones irreversibles son adecuadas para su uso en circuitos integrados reales.



    
    Arriba