Основы информационной безопасности систем и сетей
Выпускник должен:
Знать:
- основные способы атак на компьютеры и хранящуюся в них информацию;
- Principales metodos de ataque y la informacion almacenada en ellos
- программные, аппаратные и организационные средства и методы защиты информации;
- formas y aparatos para le proteccion de la informacion
- основы криптографии и способы ее применения для защиты информации.
- Fundamentos de criptografia y metodos para proteger la informacion
Уметь:
- анализировать информационную систему на предмет наличия уязвимостей и строить модель угроз;
- analizar sistemas de informacion de vulnerabilidades y construer un modelo de amenazas
- разрабатывать меры защиты информационной системы от внешних и внутренних угроз;
- desarrollar medidas para proteger el sistema de amenazas internas y externas
- применять криптографические средства защиты информации.
- Utilizar criptografia para proteger la informacion
Владеть:
- навыками анализа информационных систем, защиты информационных систем и использованием современных аппаратных и программных средств защиты информации.
- Habilidaddes de analisis de sistemas de la informacion, proteccion de los sistemas de informacion y utilizacion de aparator modernos y programas en la esfera de la proteccion de informacion
Теоретические вопросы:
1. Блочные шифры простой замены. Методы криптоанализа блочных шифров простой замены. Шифры Плейфера и Хилла.
Confindecialidad y contenido
Bloqueo de cirfado de simple cambio. Metodos criptográficos de bloqueo de cifrado de fácil cambio. Cifrado de plaifer y hill.
En Criptografía, una unidad de cifrado por bloques (block cipher en inglés) es una unidad de cifrado de clave simétrica que opera en grupos de bits de longitud fija, llamados bloques, aplicándoles una transformación invariante. Cuando realiza cifrado, una unidad de cifrado por bloques toma un bloque de texto plano o claro como entrada y produce un bloque de igual tamaño de texto cifrado. La transformación exacta es controlada utilizando una segunda entrada — la clave secreta. El descifrado es similar: se ingresan bloques de texto cifrado y se producen bloques de texto plano.
Para cifrar mensajes más largos que el tamaño del bloque, se utiliza un modo de operación.
Las unidades de cifrado por bloques se diferencian de las unidades de flujo de cifrado en que un flujo de cifrado trabaja sobre dígitos individuales, uno después del otro, y la transformación varía durante el proceso de cifrado. La diferencia entre los dos tipos de unidades es algo difusa, dado que una unidad de cifrado por bloques puede ser operada en un modo que permite utilizarla como una unidad de flujo de cifrado, donde en lugar de dígitos se opera con bloques.
Metodo de Playfair +uso de palabra clave
El cifrado de Playfair fue inventado por el físico Charles Wheatstone y difundido por su amigo Lord Playfair que acabó dándole el nombre. Es un cifrado poligráfico que a cada par de letras del texto claro hace corresponder otras dos letras en el texto cifrado.
Regla 1 si m1 y m2 estan en la misma FILA, coger c1 y c2 de su derecha (circularmente)
Regla 2 si m1 y m2 estan en la misma COLUMNA, coger c1 y c2 debajo (circularmente)
Regla 3 si m1 y m2 no cumple 1 y 2, coger diagonal opuesta.
Playfer: ver como funciona.
https://www.youtube.com/watch?v=Bfsj4AZhmCM
CRIPTOSISTEMA HILL
Este sistema esta basado en el álgebra lineal y ha sido importante en la historia de la criptografía. Fue Inventado por Lester S. Hill en 1929, y fue el primer sistema criptografico polialfabético que era práctico para trabajar con mas de tres símbolos simultaneamente.
Este sistema es polialfabético pues puede darse que un mismo caracter en un mensaje a enviar se encripte en dos caracteres distintos en el mensaje encriptado.
Suponiendo que trabajamos con un alfabeto de 26 caracteres.
Las letras se numeran en orden alfabético de forma tal que A=0, B=1,...,Z=25
A | B | C | D | E | F | G | H | I | J | K | L | M |
N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
Se elije un entero d que determina bloques de d elementos que son tratados como un vector de d dimensiones.
Se elije de forma aleatorea una matriz de d × d elementos los cuales seran la clave a utilizar.
Los elementos de la matriz de d × d serán enteros entre 0 y 25, además la matriz M debe ser inversible en .
Para la encriptación, el texto es dividido en bloques de d elementos los cuales se multiplican por la matriz d × d
Todas las operaciones aritméticas se realizan en la forma modulo 26, es decir que 26=0, 27=1, 28=2 etc.
Dado un mensaje a encriptar debemos tomar bloques del mensaje de "d" caracteres y aplicar:
M×Pi=C, donde C es el código cifrado para el mensaje Pi
Ejemplo:
Si tomamos la matriz como matriz de claves.
Para encriptar el mensaje "CODIGO" debemos encriptar los seis caracteres de "CODIGO" en bloques de 3 caracteres cada uno, el primer bloque
El primer bloque "COD" se codificara como "WLP"
El segundo bloque "IGO" se codificara como "GSE"
Luego 'CODIGO' encriptado equivale a 'WLPGSE'.
Observar que las dos "O" se codificaran de forma diferente.
Para desencriptar el método es idéntico al anterior pero usando la matriz inversa de la usada para encriptar.
Cálculo de la matriz inversa
Antes que nada debemos verificar que la matriz elegida sea invertible en modulo 26. Hay una forma relativamente sencilla de averiguar esto a través del cálculo del determinante. Si el determinante de la matriz es 0 o tiene factores comunes con el módulo (en el caso de 26 los factores son 2 y 13), entonces la matriz no puede utilizarse. Al ser 2 uno de los factores de 26 muchas matrices no podrán utilizarse (no servirán todas en las que su determinante sea 0, un múltiplo de 2 o un múltiplo de 13)
Para ver si es invertible calculo el determinante de A
5 (23 · 13 – 3 ·11) – 17 (9 · 13 – 3 · 2) + 20 (9 · 11 – 23 · 2) =
1215 – 1734 + 1060 = 503
503 = 9 mod 26
La matriz A es invertible en modulo 26 ya que 26 y 9 son coprimos
Para hallar la inversa de la matriz modulo 26, utilizamos la formula
Donde CT es la matriz de cofactores de A transpuesta
Hay que tener en cuenta que debe realizarse en modulo 26
por lo tanto para el ejemplo la inversa de 9 (mod 26) es 3 (mod 26) ya que
9 (mod 26) · 3 (mod 26) = 27 mod 26 = 1 (mod 26)
Por lo tanto 3 es la inversa multiplicativa de 9 en modulo 26
Para calcular C hay que calcular los cofactores de A
Ahora aplicamos la formula de la inversa
Esta última es la matriz que utilizamos para desencriptar
2. Шифры гаммирования. Шифр Виженера. Одноразовые блокноты. Методы криптоанализа.
En criptografía, el cifrado XOR es, como su nombre indica, un algoritmo de cifrado basado en el operador binario XOR:
A 0 = A,
A A = 0,
(B A) A = B 0 = B,
Donde es una operación OR exclusiva (XOR). Una cadena de texto puede ser cifrada aplicando el operador de bit XOR sobre cada uno de los caracteres utilizando una clave. Para descifrar la salida, solo hay que volver a aplicar el operador XOR con la misma clave.
Por ejemplo, la cadena "Wiki" (01010111 01101001 01101011 01101001 en 8-bit ASCII) puede ser cifrada con la clave 11110011 de la siguiente manera:
01010111 01101001 01101011 01101001 | |
11110011 11110011 11110011 11110011 | |
= | 10100100 10011010 10011000 10011010 |
Y viceversa para descifrarlo:
10100100 10011010 10011000 10011010 | |
11110011 11110011 11110011 11110011 | |
= | 01010111 01101001 01101011 01101001 |
El operador XOR es muy común como parte de cifrados más complejos. Sin embargo, por sí solo el cifrado XOR es muy vulnerable y es muy fácil obtener la clave a través del análisis de varios mensajes cifrados con la misma clave.
El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado César formando estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de Vigenère es un cifrado de sustitución simple polialfabético.
El cifrado Vigenère se ha reinventado muchas veces. El método original fue descrito por Giovan Battista Belasso en su libro de 1553 La cifra del Sig. Giovan Battista Belasso. Sin embargo, fue incorrectamente atribuido más tarde a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el "cifrado Vigenère".
Este cifrado es conocido porque es fácil de entender e implementar, además parece irresoluble; esto le hizo valedor del apodo el código indescifrable (le chiffre indéchiffrable, en francés).
Historia[editar]
El primer cifrado polialfabético fue el llamado cifrado de Alberti, creado por Leone Battista Alberti hacia 1467. Para facilitar los cálculos se aprovechaba de un disco de metal que permitía cambiar fácilmente entre los diferentes alfabetos disponibles. El sistema de Alberti sólo cambiaba entre alfabetos después de muchas palabras, y los cambios se indicaban escribiendo la letra del correspondiente alfabeto en el mensaje cifrado. Más tarde, en 1508, Johannes Trithemius, en su trabajo Poligraphia, inventó la tabula recta, que es básicamente la tabla de Vigenère. Trithemius, sin embargo, sólo proporcionó un progresivo, rígido y predecible sistema de cambio entre alfabetos.
Cuadro Vigènere con las 27 letras del español
Lo que ahora se conoce como el cifrado de Vigenère fue originalmente descrito por Giovan Battista Belasso en su libro 1533 La cifra del Sig. Giovan Battista Belasso, quien construyó el cifrado basándose en la tabula recta de Trithemius, pero añadió una clave repetida para cambiar cada carácter entre los diferentes alfabetos.
Blaise de Vigenère publicó su descripción de un cifrado de autoclave parecido, pero más robusto, antes del reinado de Enrique III de Francia, en 1586. Más tarde, en el siglo XIX, la invención del cifrado dejó de atribuirse a Vigenère.
El cifrado Vigenère ganó una gran reputación por ser excepcionalmente robusto. Incluso el escritor y matemático Charles Lutwidge Dodgson (Lewis Carroll) dijo que el cifrado Vigenère era irrompible en el artículo "The Alphabet Cipher" para una revista de niños.
El texto que sigue es una traducción defectuosa. Si quieres colaborar con Wikipedia, busca el artículo original y mejora esta traducción. Copia y pega el siguiente código en la página de discusión del autor: {{subst:Aviso mal traducido|Cifrado de Vigenère}} ~~~~ |
En 1917, "Scientific American" describió el cifrado Vigenère como imposible de romper. Esta reputación fue mantenida hasta que elmétodo Kasiski resolvió el cifrado en el siglo XIX y algunos criptoanalistas habilidosos pudieron romper ocasionalmente el cifrado en el siglo XVI.
El cifrado Vigenère es lo suficientemente simple si se usa con discos de cifrado. Los Estados confederados de América, por ejemplo, utilizaron un disco de cifrado para implementar el cifrado Vigenère durante la Guerra Civil estadounidense. Los mensajes confederados fueron poco secretos, ya que los miembros de la Unión solían descifrar los mensajes.
Gilbert Vernam trató de arreglar el cifrado (creando el cifrado Vernam-Vigenère en 1918), pero no importa lo que hiciera, el cifrado sigue siendo vulnerable al criptoanálisis. (No confundir con el cifrado de Vernam)
Funcionamiento[editar]
mensaje: P A R I S V A U T B I E N U N E M E S S E clave: L O U P L O U P L O U P L O U P L O U P L criptograma: A O L X D J U J E P C T Y I H T X S M H PEn este alfabeto solo existen 26 letras:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
En términos matemáticos puede expresarse la función de cifrado como:
Donde es la letra en la posición i del texto a cifrar, es el carácter de la clave correspondiente a , pues se encuentran en la misma posición, y es el tamaño del alfabeto. En este caso .
Para descifrar realizamos la operación inversa:
Donde es el carácter en la posición i del texto cifrado, viene siendo el carácter de la clave correspondiente a , y el tamaño del alfabeto.
Se observa que a una misma letra en el texto claro le pueden corresponder diferentes letras en el texto cifrado.
En criptografía, la libreta de un solo uso, también llamado Relleno de un solo uso (del inglés one-time pad), es un tipo dealgoritmos de cifrado por el que el texto en claro se combina con una clave aleatoria o «libreta» igual de larga que el texto en claro y que sólo se utiliza una vez. Fue inventado en 1917. Si la clave es verdaderamente aleatoria, nunca se reutiliza y, por supuesto, se mantiene en secreto, se puede demostrar que el método de la libreta de un solo uso es indescifrable. Uno de sus sinónimos puede ser cuaderno.
La parte del nombre relativa a la «libreta» procede de las implementaciones iniciales en las que la clave se distribuía en forma de libreta de papel, de manera que la página podía romperse y destruirse tras su uso. Para facilitar la ocultación, a veces la libreta era físicamente muy pequeña.1
El cifrado de Vernam pertenece a este tipo de cifrado, de hecho ambos fueron creados por la misma persona, Gilbert Vernam. El sistema de Vernam era un cifrado que combinaba un mensaje con una clave que se leía de un bucle de cinta de papel. En su forma original, el sistema de Vernam no era irrompible porque la clave se podía reutilizar. El uso único vino un poco después, cuando Joseph Mauborgne reconoció que si la cinta de la clave era completamente aleatoria, se incrementaría la dificultad criptoanalítica. Algunos autores emplean el término «cifrado de Vernam» como sinónimo de «libreta de un solo uso», mientras que otros lo utilizan para cualquier cifrado de flujo aditivo, incluyendo los basados en un generador de números pseudoaleatorios criptográficamente seguro; abajo lo usaremos en este último sentido.2
Iacute;ndice
[ocultar]
· 1Secreto
· 2Historia
o 2.1Desarrollo técnico
· 3Ejemplo
· 4Seguridad
· 5Ataques
· 6Requisitos para una verdadera aleatoriedad
o 6.1Métodos que pueden ofrecer seguridad empírica pero no tienen seguridad de Shannon
o 6.2Métodos que no ofrecen seguridad empírica ni seguridad de Shannon
o 6.3Conseguir la seguridad de Shannon
· 7Referencias
Secreto[editar]
Al principio se reconocía que la libreta de un solo uso de Vernam-Mauborgne era muy difícil de romper, pero su estatus especial fue descubierto por Claude Shannon unos 25 años después. Usando elementos de la teoría de la información, demostró que la libreta de un solo uso tenía una propiedad que él llamó secreto perfecto: esto es, el texto cifrado no proporciona absolutamente ninguna información acerca del texto en claro. Por tanto, la probabilidad a priori de un mensaje en claro M es igual que la probabilidad a posteriori de un mensaje en claro M dado el correspondiente texto cifrado. Y de hecho todos los textos en claro son igualmente probables. Esto es una poderosa noción de dificultad criptoanalítica.3
A pesar de la demostración de Shannon, la libreta de un solo uso tiene en la práctica serias desventajas:
· requiere libretas de un solo uso perfectamente aleatorias
· la generación e intercambio de las libretas de un solo uso tiene que ser segura, y la libreta tiene que ser al menos tan larga como el mensaje
· hace falta un tratamiento cuidadoso para asegurarse de que siempre permanecerán en secreto para cualquier adversario, y es necesario deshacerse de ellas correctamente para evitar cualquier reutilización parcial o completa —de ahí el «un solo uso».
Estas dificultades de implementación han provocado casos en los que se han roto algunos sistemas de libreta de un solo uso, y son tan serios que han evitado que la libreta de un solo uso haya sido adoptada como una herramienta generalizada de seguridad informática.
En particular, el uso único es absolutamente necesario. Si una libreta de un solo uso se utiliza tan sólo dos veces, unas sencillas operaciones matemáticas pueden reducirla a un cifrado de clave corrida. Si ambos textos en claro están en lenguaje natural (por ejemplo, en inglés o en ruso), aunque ambos sean secretos, hay muchas posibilidades de que sean recuperados con criptoanálisis, posiblemente con algunas ambigüedades. Por supuesto, del mensaje más largo de los dos sólo se podrá recuperar la parte que solape con el mensaje más corto, además, quizás, de un poco más completando una palabra o frase. La explotación más famosa de esta vulnerabilidad es el proyecto VENONA.4
La libreta de un solo uso no proporciona ningún mecanismo para asegurar la integridad del mensaje, y en teoría un atacante en el medio que conozca el mensaje exacto que se está enviando podría sustituir fácilmente parte o todo el mensaje con un texto de su elección que sea de la misma longitud. Se pueden usar las técnicas estándar para evitar esto, como un código de autentificación de mensaje, pero carecen de la prueba de seguridad de la que gozan las libretas de un solo uso.
Historia[editar]
Desarrollo técnico[editar]
La historia de la libreta de un solo uso está marcada por cuatro descubrimientos separados pero muy relacionados.
El primer sistema de libreta de un solo uso era eléctrico. En 1917, Gilbert Vernam (de AT&T) inventó y posteriormente patentó un cifrado basado en la tecnología de teletipo. Cada carácter del mensaje se combinaba eléctricamente con un carácter de una clave en cinta de papel. El capitán Joseph Mauborgne (más tarde capitán del ejército de los Estados Unidos y después jefe del Signal Corps) se dio cuenta de que la secuencia de la clave podía ser completamente aleatoria y que, en tal caso, el criptoanálisis sería más difícil. Juntos inventaron el primer sistema de cinta de un solo uso.2
El segundo desarrollo fue el sistema de libreta de papel. Los diplomáticos llevaban mucho tiempo usando códigos y cifrados para la confidencialidad y para minimizar los gastos en telégrafo. En el caso de los códigos, las palabras y las frases se convertían en grupos de números (normalmente 4 o 5 dígitos) utilizando un libro de códigos de tipo diccionario. Para más seguridad, podían combinarse números secretos (normalmente con suma modular) con cada grupo codificado antes de la transmisión, y los números secretos se cambiaban periódicamente (esto se llamaba supercifrado). A principio de los años 20, tres criptógrafos alemanes, Werner Kunze, Rudolf Schauffler y Erich Langlotz, que se dedicaban a romper sistemas así, se dieron cuenta de que nunca podrían romperse si se usaba un número aditivo separado, escogido al azar, para cada grupo codificado. Tenían libretas de papel duplicadas con líneas de grupos de números aleatorios. Cada página tenía un número de serie y ocho líneas. Cada línea tenía seis números de 5 dígitos. Una página se usaba como hoja de trabajo para codificar un mensaje y luego se destruía. El número de serie de la página se enviaba con el mensaje codificado. El destinatario haría el procedimiento a la inversa y luego destruiría su copia de la página. El Ministerio de Asuntos Exteriores alemán puso en funcionamiento este sistema en1923.2
Ejemplo[editar]
Supongamos que Alicia quiere enviarle el mensaje 'HOLA' a Roberto. Supongamos también que previamente, de alguna manera, se han producido dos libretas de papel que contienen idénticas secuencias de letras aleatorias y que se han enviado por vía segura a ambos. Alicia elige la página apropiada sin utilizar de la libreta. Normalmente la manera de hacer esto se decide a priori, por ejemplo «usar la hoja número 12 el Día del Trabajador», o «usar la siguiente hoja disponible para el siguiente mensaje». El material de la hoja seleccionada es la clave para este mensaje. Todas las letras de la libreta se combinarán de una forma predeterminada con una letra del mensaje. Es común, aunque no obligatorio, asignar a cada letra un valor numérico: por ejemplo, «A» es 0, «B» es 1, y así hasta la «Z», que es 26. En este ejemplo, la técnica es combinar la clave y el mensaje usando la suma modular. Se hace la suma módulo 27 (si se contabiliza la A como 0, siendo por tanto Z=26) de los valores numéricos de las letras correspondientes al mensaje y la clave. Si la clave empieza por:
X M C Ky el mensaje es «HOLA», entonces el cifrado se haría de la siguiente manera:
24 (X) 12 (M) 2 (C) 10 (K) clave+ 7 (H) 15 (O) 11 (L) 0 (A) mensaje= 31 27 13 10 clave + mensaje= 4 (E) 0 (A) 13 (N) 10 (K) Resultado (mod 27) = texto cifradoNótese que cuando el número es mayor que 25, entonces, por aritmética modular, el valor resultante queda truncado.
El texto cifrado que habría que enviarle a Roberto sería entonces «EANK». Para obtener el texto en claro, Roberto utiliza la página clave correspondiente y realiza el mismo proceso, pero a la inversa. Ahora, la clave es restada del texto cifrado, de nuevo usando aritmética modular:
27 27 27 27 valor 27+ 4 (E) 0 (A) 13 (N) 10 (K) texto cifrado- 24 (X) 12 (M) 2 (C) 10 (K) clave= 7 15 38 27 27 + texto cifrado - clave= 7 (H) 15 (O) 11 (L) 0 (A) resultado (mod 27) = texto descifradoNótese que a todo valor se le suma previamente 27, y al final se aplica igualmente el módulo 27.
Así, Roberto recupera el texto en claro de Alicia, el mensaje vital «HOLA». Tanto Alicia como Roberto destruyen la hoja con la clave inmediatamente después de su uso, previniendo así su reutilización y un ataque contra el cifrado que sería trivial en esencia. La KGB enviaba con frecuencia a sus agentes libretas de un solo uso impresas en minúsculas hojas de «papel flash» —papel convertido químicamente en nitrocelulosa, que arde casi instantáneamente y no deja cenizas.
La libreta de un solo uso clásica del espionaje (que solía consistir en verdaderas libretas de papel -a menudo minúsculas para su fácil ocultación-, un lápiz afilado y el uso de algún cálculo mental) se puede implementar en forma de software usando ficheros de datos como entrada (texto en claro), salida (texto cifrado) y clave (la secuencia aleatoria requerida). A menudo se utiliza la operación XOR para combinar el texto en claro con la clave, y es especialmente atractiva en computación, ya que normalmente es una instrucción máquina nativa y por tanto es muy rápida. Sin embargo, no es trivial asegurar que la clave es realmente aleatoria, que sólo se utiliza una vez, que nunca acaba en manos de adversarios y que queda completamente destruida tras su empleo. Las partes auxiliares de una implementación de la libreta de un solo uso por software presentan verdaderos desafíos: el manejo/transmisión seguro del texto en claro, claves verdaderamente aleatorias y el uso único de la clave.
Seguridad[editar]
Las libretas de un solo uso son seguras desde el punto de vista de la teoría de la información, en el sentido de que el mensaje cifrado no le proporciona a un criptoanalistaninguna información sobre el mensaje original. Esto es una poderosa noción de seguridad, desarrollada por primera vez durante la Segunda Guerra Mundial por Claude Shannon y demostrada matemáticamente por Shannon en la misma época. Sus resultados fueron publicados en el Bell Labs Technical Journal en 1949. Las libretas de un solo uso, utilizadas adecuadamente, son seguras en este sentido incluso contra adversarios con poder computacional infinito. Para seguir con el ejemplo de arriba, supongamos que Eva intercepta el texto cifrado de Alicia: «EANK». Si Eva dispusiera de una potencia computacional infinita, hallaría rápidamente que la clave «XMCK» produciría el texto en claro «HOLA», pero también hallaría que la clave «FCJR» produciría el texto en claro «ZYES», un mensaje igualmente plausible:
27 27 27 27 valor 27+ 4 (E) 0 (A) 13 (N) 10 (K) texto cifrado− 5 (F) 2 (C) 9 (J) 18 (R) posible clave= 26 25 31 19 27 + texto cifrado - posible clave= 26 (Z) 25 (Y) 4 (E) 19 (S) resultado (mod 27) = posible texto descifradoDe hecho, es posible «descifrar» cualquier mensaje con el mismo número de caracteres a partir del texto cifrado simplemente usando una clave diferente, y no existe ninguna información en el texto cifrado que le permita a Eva escoger entre las posibles lecturas del texto cifrado.
La mayoría de los algoritmos de cifrado convencionales, tanto simétricos como asimétricos, utilizan patrones complejos de sustitución y trasposición. En el caso del mejor algoritmo que se usa en la actualidad, no se sabe si existe un procedimiento criptoanalítico que pueda revertir (o revertir parcialmente) esas transformaciones sin conocer la clave utilizada durante el cifrado.
En términos prácticos, para el mejor de ellos no se conoce un procedimiento así, aunque puede que existan algoritmos computacionales que puedan hacerlo en un tiempo 'razonable'. Uno de los principales problemas sin resolver en teoría de la computabilidad está relacionado con este problema; si P=NP, entonces sería al menos posible que se puedan hallar algoritmos así, y seguramente se buscarían con más ahínco que hoy en día. Y aunque se demuestre que no, algunos criptosistemas actuales todavía podrían romperse. Sin embargo, la libreta de un solo uso no sería menos segura si se demostrara que P=NP. En la actualidad se cree que P≠NP, y por tanto es dudoso que esta cuestión tenga relevancia práctica para el criptoanálisis o para el diseño de algoritmos de cifrado.
Ataques[editar]
Aunque las libretas de un solo uso son demostrablemente seguras si se generan y utilizan adecuadamente, un pequeño error puede posibilitar un criptoanálisis exitoso:
· En 1944–1945, la Signal Security Agency del ejército de EEUU consiguió resolver un sistema de libreta de un solo uso utilizado por el Ministerio de Asuntos Exteriores alemán para su tráfico de alto nivel, de nombre en clave GEE (Erskine, 2001). El GEE era inseguro porque las libretas no eran completamente aleatorias — la máquina empleada para generar las libretas producía una salida predecible.
· En 1945, EEUU descubrió que los mensajes Canberra-Moscú se estaban cifrando primero mediante un libro de códigos y luego a base de una libreta de un solo uso. Sin embargo, la libreta de un solo uso era la misma que utilizaba Moscú para los mensajes Washington DC-Moscú. Combinado con el hecho de que algunos mensajes Canberra-Moscú incluían documentos gubernamentales británicos que eran conocidos, esto permitió que se rompieran algunos de los mensajes cifrados.
· Las agencias de espionaje soviéticas empleaban libretas de un solo uso para asegurar las comunicaciones con los agentes y los controladores de los agentes. El análisis demostró que estas libretas las generaban personas utilizando máquinas de escribir. Este método, por supuesto, no es «verdaderamente» aleatorio, ya que implica que ciertas secuencias de teclas convenientes sean más probables que otras, aunque demostró ser efectivo en general. Sin copias de las claves usadas, sólo ofrecían esperanzas de criptoanálisis algunos defectos en el método de generación o la reutilización de las claves. A principios de los 40, la inteligencia estadounidense y británica consiguió romper parte del tráfico de libreta de un solo uso hacia Moscú durante la Segunda Guerra Mundial, como resultado de ciertos errores cometidos al generar y distribuir las claves.
Requisitos para una verdadera aleatoriedad[editar]
Para explicar la libreta de uso único es necesario distinguir entre dos nociones de seguridad. La primera es la seguridad teórica del sistema de libreta de uso único demostrada por Shannon. La segunda es la seguridad ofrecida por los cifrados más punteros (por ejemplo, el AES) diseñados con los principios aprendidos durante la larga historia de la rotura de códigos y sujetos al testeo intensivo en un proceso de estandarización, bien en público o por un servicio de seguridad de primera clase (seguridad empírica). La primera está demostrada matemáticamente y está sujeta a la disponibilidad práctica de los números aleatorios. La segunda no está demostrada pero recibe la confianza de la mayoría de los gobiernos para proteger sus secretos más vitales.
Métodos que pueden ofrecer seguridad empírica pero no tienen seguridad de Shannon[editar]
Si la clave la genera un programa determinista, entonces no es aleatoria ni se puede afirmar que el sistema de cifrado ofrezca la seguridad teórica de la libreta de un solo uso. Se llama cifrado de flujo. Generalmente estos utilizan una clave pequeña que se usa como semilla para un flujo pseudoaleatorio largo, que luego se combina con el mensaje empleando algún mecanismo como los de la libreta de un solo uso (por ejemplo, XOR). Los cifrados en flujo pueden ser seguros en la práctica, pero no pueden ser absolutamente seguros en el mismo sentido demostrable de la libreta de un solo uso.
Los cifrados Fish usados por el ejército alemán en la Segunda Guerra Mundial resultaron ser cifrados en flujo inseguros, no útiles libretas de un solo uso automatizadas como pretendían sus diseñadores. Bletchley Park rompía uno de ellos regularmente, la máquina de cifrado de Lorenz.
Sin embargo, si se utiliza un famoso generador de números pseudoaleatorios criptográficamente seguro moderno, puede formar la base de un cifrado en flujo empíricamente seguro. Hay muchos diseños bien probados en el dominio público, que varían desde la simplicidad del RC4 al uso de un cifrado en bloque como el AES en modo contador. Parecería que hay pocos motivos para inventar nuevos cifrados en flujo, pero se piensa desde hace tiempo que la NSA y las agencias similares emplean un esfuerzo considerable en los cifrados en flujo para sus clientes gubernamentales.
Métodos que no ofrecen seguridad empírica ni seguridad de Shannon[editar]
La similitud entre los cifrados en flujo y las libretas de un solo uso lleva a menudo a que los criptográficamente incautos inventen cifrados en flujo inseguros bajo la creencia falsa de haber desarrollado una versión práctica de la libreta de un solo uso. Una versión especialmente insegura son los generadores de números aleatorios que se distribuyen en muchos (quizás la mayoría) de las bibliotecas accesorias de los lenguajes de programación o en forma de llamadas al sistema operativo. Normalmente producen secuencias que pasan alguna (o muchas) pruebas estadísticas, pero sin embargo son rompibles por técnicas criptoanalíticas. Durante un tiempo, el ANSI C estándar restringía la salida de la rutina de números aleatorios del lenguaje C a un entero de precisión simple, 16 bits para la mayoría de las implementaciones, dando 32768 valores distintos antes de repetirse. Esto es completamente inseguro y fácilmente rompible por fuerza bruta (para situarnos, basta saber que una computadora de 1 GHz que tarde 10.000 ciclos de reloj en comprobar un offset del ciclo RNG (un número ridículamente grande) tardaría menos de un tercio de segundo en comprobar todos los offsets posibles). Los generadores de números aleatorios estándar no sirven para propósitos criptográficos, concretamente para la libreta de un solo uso. En particular, el relativamente reciente algoritmo tornado de Mersenne, admirado ampliamente, aunque es lo bastante «aleatorio» para la mayoría de los usos de simulación o investigación, mejor que la mayoría de los generadores de su mismo tipo, y también bastante rápido, no debe utilizarse para generar claves de libreta de un solo uso. El algoritmo es determinista y no fue diseñado para la seguridad criptográfica.
Además, los valores conocidos públicamente como los dígitos finales de los tiempos de las carreras de maratón, los precios de cierre de valores de bolsa, por muy poco conocidos que sean, las temperaturas o presiones atmosféricas diarias, etc., aunque aparentemente aleatorios, son predecibles —después de que se produzca el hecho. De hecho, tampoco pueden usarse secuencias verdaderamente aleatorias que hayan sido publicadas, ya que si se identifican son predecibles. Un ejemplo es la publicación de una tabla de un millón de números aleatorios por la Rand Corp en 1950; ha pasado todos los tests estadísticos de aleatoriedad hasta ahora, y se cree que es verdaderamente aleatoria. Pero, al haberse publicado, es completamente predecible. También lo son los dígitos de pi, e, fi y otros números irracionales o trascendentales; puede que las secuencias sean aleatorias (una cuestión abierta, en realidad), pero son completamente predecibles.
Conseguir la seguridad de Shannon[editar]
Para conseguir la seguridad de Shannon se necesita una fuente de datos aleatorios perfectamente impredecibles. Una base teórica para la existencia física de la impredecibilidad es la mecánica cuántica. Sus afirmaciones de impredecibilidad están sujetas a la comprobación experimental. Ver: Experimentos de Bell. Otra base es la teoría de los sistemas dinámicos inestables y la teoría del caos. Estas teorías sugieren que incluso en el mundo determinista de la mecánica newtoniana, los sistemas reales evolucionan de maneras que no se pueden predecir en la práctica porque haría falta conocer las condiciones iniciales con una precisión que crece exponencialmente con el tiempo.
Para que se puedan usar en una libreta de un solo uso, los datos deben mostrar una aleatoriedad perfecta. En la práctica, la mayoría de las fuentes muestran alguna imperfección o desviación. La calidad de la aleatoriedad se mide por entropía. Un bit perfectamente aleatorio tiene una entropía uno. Una idea procedente de Von Neumann es utilizar un algoritmo para combinar varios bits aleatoriamente imperfectos, con una entropía menor que uno, para producir un bit con entropía igual a uno. Este proceso se llama destilación de entropía o blanqueamiento de Von Neumann, y permite generar en la práctica datos aleatorios adecuados para su uso en una libreta de un solo uso. El blanqueamiento de Von Neumann consiste en lo siguiente:5
Bits de entrada | Salida |
Sin salida | |
Devolver bit «1» | |
Devolver bit «0» | |
Sin salida |
En Linux (y otros sistemas tipo Unix), el generador de números aleatorios del kernel, /dev/random, utiliza el ruido ambiental para generar datos aleatorios y es mejor que muchos diseños basados en llamadas al sistema. Intenta estimar la cantidad de entropía que recoge y se bloquea si el fondo de entropía se agota. Pretende ser, y se piensa que realmente es, mejor que muchos generadores parecidos, y si es así, está muy cerca de ser satisfactoriamente aleatorio. Pero este proceso es lento en sistemas que tienen pocas fuentes de ruido utilizables. Sin embargo, puede alimentarse con entropía adicional leyendo de un dispositivo generador de ruido.
Linux también proporciona /dev/urandom, que emplea un algoritmo determinista para generar los datos cuando no hay ruido ambiental disponible. Existen diseños mejorados, como el algoritmo de Yarrow. Las claves de libreta de un solo uso generadas con este método (es decir, con generadores de números aleatorios deterministas) carecen de la seguridad teórica de una libreta de un solo uso. Yarrow ofrece al menos tanta fuerza como un cifrado en bloque basado en el Triple DES.
Si una computadora que se utiliza para generar libretas de un solo uso queda comprometida por un virus informático u otros malwares, o por un adversario que consiga acceso físico, el software puede ser modificado para que transmita los datos o genere datos aparentemente aleatorios que en realidad son predecibles. Una forma de reducir este riesgo es generar libretas en una máquina que nunca esté conectada a una red informática y que preferiblemente no se utilice para ninguna otra tarea. Si se recogen los datos en dispositivos de almacenamiento nuevos y vírgenes (por ejemplo, un disquete o un CD-R), se elimina otra fuente de infección de malware. Si se van a producir libretas de papel, es mejor que la impresora también sea dedicada. Una opción puede ser emplear un ordenador portátil antiguo para generar las libretas, borrado y reinstalado con una copia confiable de un sistema operativo de código abierto, como Linux o BSD. Su pequeño tamaño permitiría guardarlo fácilmente en una caja fuerte cuando no esté en funcionamiento.
Ataques criptoanalíticos[editar]
Los ataques criptoanalíticos consisten en la aplicación de estudios criptoanalíticos para explotar las debilidades de sistemas criptográficos y así 'romper' su seguridad.
Los ataques criptoanalíticos varían en potencia y en su capacidad de amenaza para los sistemas criptográficos. Se dice que un ataque explota una " debilidad certificacional " si es un ataque teórico que resulta improbable de aplicar en ninguna situación realista; Muchos de los resultados demostrados en la investigación criptoanalítica moderna son de este tipo.
Cada ataque tiene sus propiedades, las cuales lo caracterizan, y que hacen que ese ataque sea más o menos realizable.
No todos los ataques criptoanalíticos tienen como objetivo la ruptura total del sistema. El objetivo de un ataque criptoanalítico es obtener información desconocida sobre el sistema criptográfico de forma que se vaya debilitando su seguridad
Clasificación[editar]
Los ataques criptoanalíticos se puede clasificar en función de sus características.
Clasificación según la actitud del atacante[editar]
Los ataques se pueden clasificar según la forma de actuar del atacante
Ataques pasivos [editar]
En los ataques pasivos el atacante no altera la comunicación, sólo la escucha o monitoriza, para obtener información. Por tanto este tipo de ataques suelen usar técnicas de escucha de paquetes(sniffing) y de análisis de tráfico. Son difíciles de detectar ya que no implican alteración de los datos. En algunos casos este tipo de ataques se pueden dificultar cifrando la información posible objetivo de escuchas.
Ataques activos [editar]
Suponen alguna modificación del flujo de datos o la creación de flujos falsos. Hay muchas técnicas que se usan en este tipo de ataques. Ejemplos:
1. Suplantación
2. Modificación de mensajes:Capturar paquetes para luego ser borrados (dropping attacks), manipulados, modificados (tagging attack) o reordenados
3. Reactuación:Captura de paquetes y retransmisiones
4. Degradación: Técnicas para que el servicio se degrade
Clasificación según el conocimiento previo[editar]
El criptoanálisis puede realizarse bajo una serie de supuestos sobre cuánto puede observarse o descubrirse sobre el sistema en cuestión antes de realizar el ataque. Como un punto de comienzo básico se supone que, para los propósitos del análisis, el algoritmo general es conocido; ésta es la Máxima de Shannon, "el enemigo conoce el sistema". Éste es un supuesto razonable en la práctica - a lo largo de la Historia, hay incontables ejemplos de algoritmos secretos que fueron conocidos mediante el espionaje, la traición y la ingeniería inversa. (En algunas ocasiones, algunos códigos han sido reconstruidos mediante la pura deducción, por ejemplo, el código Lorenz y el código PURPLE, así como una cierta cantidad de códigos clásicos.)
Otros supuestos se pueden categorizar como sigue:
· Ataque con sólo texto cifrado disponible: el criptoanalista sólo tiene acceso a una colección de textos cifrados o codificados.
· Ataque con texto claro conocido: el atacante tiene un conjunto de textos cifrados de los que conoce el correspondiente texto claro o descifrado.
· Ataque con texto claro escogido (ataque con texto cifrado elegido): el atacante puede obtener los textos cifrados (claros) correspondientes a un conjunto arbitrario de textos claros (cifrados) de su propia elección.
· Ataque adaptativo de texto claro escogido: como un ataque de texto claro escogido, pero el atacante puede elegir textos claros subsiguientes basándose en la información obtenida de los descifrados anteriormente. Similarmente, existe el ataque adaptativo de texto cifrado escogido.
· Ataque de clave relacionada: como un ataque de texto claro escogido, pero el atacante puede obtener texto cifrado utilizando dos claves diferentes. Las claves son desconocidas, pero la relación entre ambas es conocida; por ejemplo, dos claves que difieren en un bit.
Estos tipos de ataque difieren evidentemente en la plausibilidad de que ocurran en la práctica. Aunque algunos son más probables que otros, los criptógrafos suelen adoptar un enfoque conservador y asumir el peor caso imaginable cuando diseñan algoritmos, razonando que si un sistema es seguro incluso contra amenazas tan poco realistas, entonces debería resistir también al criptoanálisis en el mundo real.
Los supuestos en los que se basan estos ataques son a menudo más realistas de lo que podría parecer a primera vista. Para obtener un ataque con texto claro conocido, el criptoanalista podría muy bien conocer o ser capaz de inferir una parte que probablemente forma parte del texto claro, como por ejemplo el encabezamiento de una cartacifrada ("Estimado Sr."), o que el inicio de una sesión de ordenador contenga las letras "LOGIN". Un ataque de texto claro escogido es menos probable, pero en algunos casos puede ser plausible: por ejemplo, si convences a alguien para reenviar un mensaje que tú mismo le has mandado antes, pero en forma cifrada. Los ataques de clave relacionada son básicamente teóricos, aunque pueden ser realistas en ciertas situaciones, como por ejemplo al construir funciones hash criptográficas utilizando un cifrado por bloques.
Clasificación según el objetivo en criptoanálisis[editar]
Los resultados de un criptoanálisis también pueden variar en utilidad. Por ejemplo, el criptógrafo Lars Knudsen (Knudsen, 1998) clasificó varios tipos de ataque sobre cifrados por bloques de acuerdo con la cantidad y la calidad de la información secreta que pudiera ser descubierta:
· Ruptura total - el atacante deduce la clave secreta.
· Deducción global - el atacante descubre un algoritmo funcionalmente equivalente para el cifrado y descifrado de mensajes, pero no obtiene la clave.
· Deducción local (o de instancia) - el atacante descubre textos claros o cifrados adicionales a los conocidos previamente.
· Deducción de información - el atacante descubre alguna información en el sentido de Shannon que no era conocida previamente.
· Distinción del algoritmo - el atacante puede distinguir la información cifrada de una permutación al azar.
Se pueden aplicar estas categorías a los ataques sobre otros tipos de algoritmos.
Clasificación según el coste[editar]
Los ataques se pueden categorizar por la cantidad de recursos que requieren. Éstos pueden tomar la forma de:
· Tiempo - el número de "operaciones primitivas" que deben ser realizadas. Esta categoría es bastante vaga; las operaciones primitivas podrían considerarse como instrucción básica de computación, como una suma, una operación XOR, un desplazamiento bit a bit, etc., o como métodos de cifrado enteros.
· Memoria - la cantidad de almacenamiento necesario para realizar el ataque.
· Datos - la cantidad de textos claros y cifrados necesaria.
En la criptografía académica, una debilidad o una ruptura en un algoritmo se definen de una manera bastante conservadora. Bruce Schneier resume esta posición de la siguiente manera: "Romper un cifrado simplemente significa encontrar una debilidad en el cifrado que puede ser explotada con una complejidad inferior a la de la fuerza bruta. No importa que la fuerza bruta pudiera requerir 2128 cifrados; un ataque que requiera 2110 cifrados se consideraría una ruptura... puesto de una manera simple, una ruptura puede ser tan sólo una debilidad certificacional: una evidencia de que el código no es tan bueno como se publicita" (Schneier, 2000).
Ejemplos[editar]
Hay multitud de métodos de ataque criptoanalíticos. Éstos se pueden clasificar en a si están especializado en algún tipo de criptografía o si son más generales. Los principales son los siguientes:
· Especializados en cifrado clásico:
· Análisis de frecuencias
· Método Kasiski
· Índice de coincidencia
· Índice mutuo de coincidencia
· Especializados en criptografía simétrica:
· Criptoanálisis diferencial
· Criptoanálisis lineal
· Criptoanálisis integral
· Criptoanálisis estadístico
· Criptoanálisis de módulo n
· Ataque XSL (eXtended Sparse Linearisation)
· Ataque de deslizamiento
· Generales (aplicados en distintos ámbitos):
· Ataque de cumpleaños
· Ataque Man-in-the-middle
· Ataque Meet-in-the-middle
· Ataque de fuerza bruta
· Jardinería (criptoanálisis)
· Análisis de energía
3. Асимметричные системы шифрования. Основной принцип работы. Система шифрования RSA. Методы криптоанализа и защиты.