lunes, 26 de octubre de 2015

Criptografía

Cifrados clásicos

el cifrado clásico es un tipo de cifrado que fue usado históricamente pero que ahora ha caído, mayormente, en desuso. En general, los cifrados clásicos operan en un alfabeto de letras (como "A-Z"), a las cuales se les aplican métodos a mano o con aparatos mecánicos muy simples. Son tipos muy básicos de cifrado, lo que no los hace muy fiables, especialemente después del desarrollo de las nuevas tecnologías como la informática. Los métodos más modernos usanordenadores u otras tecnologías digitales, que operan con bits y bytes. Muchos cifrados clásicos fueron usados por personajes muy conocidos como Julio César yNapoleón, quienes crearon sus propios cifrados que después han sido usados popularmente. Muchos cifrados tienen un origen militar y fueron usados para trasportar mensajes secretos entre personas del mismo bando. Los sistemas clásicos son bastante susceptibles de un ataque con solo texto cifrado, algunas veces incluso sin el conocimiento del sistema en sí mismo, usando herramientas como el análisis de frecuencias. Algunas veces se agrupan junto con los cifrados clásicos otras máquinas mecánicas o electromecánicas, como Enigma.
En un cifrado por sustitución, las letras (o grupos de letras) son sistemáticamente reemplazadas en el mensaje por otras letras (o grupos de letras).
Una sustitución muy conocida en el cifrado es la del Cifrado César. Para cifrar un mensaje mediante el Cifrado César, cada letra del mensaje es reemplazada por la letra ubicada tres posiciones después en el abecedario. Por tanto, la A sería reemplazada por la D, la B por la E, la C por la F, etc. Por último la X, la Y y la Z serían reemplazadas por la A, la B y la C respectivamente. De ahí, que por ejemplo, "WIKIPEDIA" quedaría como "ZLNLSHGLD". César rotaba el abecedario de tres en tres letras pero funciona con cualquier número.
Otro método de cifrado por sustitución está basado en una palabra clave. Todos los espacios y letras repetidas son quitadas de una palabra o frase, la cual será después usada por el codificador para empezar el abecedario cifrado. El final del abecedario cifrado será el resto del alfabeto en el orden correcto pero sin repetir las letras ya usadas en la palabra clave. Por ejemplo, si la palabra clave es CIPHER ("cifrado" en inglés), el abecedario cifrado (codificado) sería el siguiente: (no se ha incluido la ñ pero se podría incluir si se quisiera)
abecedario normal: 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
abecedario cifrado: c i p h e r s t u v w x y z a b d f g j k l m n o q
Los ejemplos anteriores son ejemplos de cifrados por substitución monoalfabética, ya que solo usa un alfabeto cifrado. Es también posible fabricar cifrados por substitución polialfabética, donde se usan varios alfabetos cifrados. El código se compondría con dos o más alfabetos cifrados usando cualquier técnica que se eligiera, y después se cifraría el mensaje, alternando el tipo de alfabeto cifrado en cada letra o palabra del mensaje que se quiera cifrar. Esto haría que el mensaje fuera mucho más complicado de descifrar ya que el descifrador tendría que descubrir todos los alfabetos cifrados usados.
Otro ejemplo de cifrado polialfabético por cifrado por sustitución que es mucho más complicado de descifrar es el Cifrado de Vigenère, un innovador método para codificar. Con el cuadrado que se forma con el cifrado de Vigenère, se usan 26 tipos de alfabetos cifrados para cifrar el texto. Cada alfabeto sufre un cambio más con respecto al anterior al estilo del método César a partir del alfabeto original. El cuadrado del cifrado de Vigenère se vería del siguiente modo:
                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
                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 A
                C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
                D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
                E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
                F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
                G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
                H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
                I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
                J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
                K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
                L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
                M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
                N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
                O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
                P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
                Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
                R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
                S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
                T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
                U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
                V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
                W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
                X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
                Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
                Z 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
Para usar el cifrado de Vigenère al codificar un mensaje, primero debemos elegir una palabra clave y después repetirla hasta que haya cubierto el mensaje (que queremos cifrar) entero. Esa será nuestra clave y la usaremos para saber cuál de todos los alfabetos (ya que hay 26) vamos a usar. Cada alfabeto lleva el nombre de la letra que sustituye a la "A". Así el alfabeto en el que utilicemos las B para la A y la C para la B, se nombrará "B". Pues cada letra de la palabra clave nos anunciará con qué alfabeto deberemos cifrar esa letra del mensaje. Por ejemplo si nuestra palabra clave es WORD ("palabra" en inglés) y el mensaje que queremos codificar es I LOVE CRYPTOGRAPHY ("Me gusta la criptografía" en inglés) sería de la siguiente manera:
mensaje: I LOVE CRYPTOGRAPHY
palabra clave: W ORDW ORDWORDWORDW (sustituimos por la clave y se repite si es necesario)
texto cifrado:E ZFYA QIBLHFJNOGKU (utilizamos cada letra de la palabra clave para saber qué alfabeto utilizar para cifrar cada letra del mensaje)
Algunas sustituciones incluyen el uso de números en vez de letras. Un ejemplo de esto es el Gran Cifrado, donde los números se usan para representar sílabas. También hay otro cifrado en el que se utilizan números e incluye cuatro parejas de combinaciones de números por cada letra basado en una palabra clave.
Los símbolos también han sido usados en vez de los números, reemplazando letras o sílabas. Un ejemplo de esto es el alfabeto Zodiaco, donde los símbolos del zodiaco se utilizan para representar diferentes letras, por ejemplo, el símbolo del Sol sustituiría a la A, Júpiter a la B, Saturno a la C. Los puntos, las líneas o los guiones también pueden usarse. Un ejemplo sería el Código morse, que aunque realmente no es un cifrado, usa puntos y guiones para representar letras. El cifrado francmasón usa un sistema de cuadrícula o líneas y puntos para establecer símbolos para cada letra. Hay otros métodos que incluyen la sustitución de letras del alfabeto por símbolos o puntos y guiones.

Cifrado por trasposición

Véase también: Cifrado por transposición
En un cifrado por trasposición, las letras no se cambian por otras sino que se cambia el orden de estas. El orden es alterado de acuerdo con un esquema bien definido. Muchos cifrados por trasposición se basan en un diseño geométrico. Un simple (y de nuevo fácil de decodificar) método de cifrado es el de escribir una palabra al revés (de atrás hacia delante). Por ejemplo: "Hola mi nombre es Pepa" sería "aloH im erbmon se apeP". Una escítala es un instrumento para ayudar en el método de cifrado por transposición.
En un cifrado con forma de columna, el mensaje original estará limitado a un rectángulo, de izquierda a derecha y de arriba hacia abajo. Después, se escoge una clave para asignar un número a cada columna del rectángulo para determinar el orden. El número correspondiente a la letra de la clave estará determinado por su posición en el alfabeto, por ejemplo, A es 1, B es 2, C es 3, etc. Por ejemplo si la palabra clave es CAT ("gato" en inglés) y el mensaje es THE SKY IS BLUE ("El cielo es azul" en inglés), el proceso sería el siguiente:
                         C A T
                         3 1 20
                         T H E
                         S K Y
                         I S B
                         L U E
Después, tomamos las letras por orden numérico y así es como transportaríamos el mensaje. Tomamos la columna debajo de la A primero, después la columna de C, y por último la columna de T, y como resultado el mensaje "The sky is blue" pasaría a ser: HKSUTSILEYBE
En el método de cifrado por transposición chino, las letras del mensaje son escritas de derecha a izquierda y de arriba para abajo en columnas. Después, empezando la primera hilera, las letras se toman para obtener el nuevo texto cifrado. Por ejemplo, si el mensaje que queremos codificar es THE DOG RAN FAR ("El perro corrió lejos" en inglés), el cifrado chino sería así:
                           R R G T
                           A A O H
                           F N D E
El texto cifrado se leería: RRGT AAOH FNDE
Muchos cifrados por trasposición son parecidos a estos dos ejemplos; normalmente incluyen el ordenamiento de las letras en filas y columnas y después se toman de alguna manera sistemática para trasportarlas. Otros ejemplos son el "Paralelo vertical" y el "Cifrado de trasposición doble".
Algunos algoritmos más complejos pueden formarse mezclando cifrados por sustitución y por trasposición en un cifrado por producto; por ejemplo el moderno cifrado por bloques así como el DES que reitera en varias fases la sustitución y la trasposición.

Criptoanálisis de los cifrados clásicos

Los cifrados clásicos son normalmente bastante fáciles de descifrar. Muchos de los cifrados clásicos pueden ser descodificados incluso si el atacante solo conoce algo del texto cifrado y así serán susceptibles de un ataque de texto cifrado conocido. Algunos cifrados clásicos (como el Cifrado César) tienen pequeños espacios clave. Estos cifrados pueden ser descodificados por un ataque de fuerza bruta, que es simplemente probar con todas las combinaciones. Los cifrados por sustitución pueden tener un gran espacio clave, pero son susceptibles a un análisis de frecuencias, ya que por ejemplo las letras más frecuentes en un texto corresponderían a las más frecuentes en un texto cifrado. Los cifrados polialfabéticos como el cifrado de Vigenère previenen un simple análisis por frecuencias utilizando varias sustituciones. De todas formas, técnicas más avanzadas como el método Kasiski pueden descifrar estos tipos de cifrados.
Por otra parte, los cifrados modernos están diseñados para soportar ataques más potentes que ataques por solo texto cifrado. Un buen cifrado moderno debe estar seguro ante ataques potenciales como texto conocido de ataque y ataques de texto elegido así como los ataques de texto cifrado elegido. Por esto el atacante que quiera descifrar el texto no debería poder encontrar la clave incluso si sabe una gran parte del texto y del texto cifrado correspondiente e incluso si lo puede seleccionar él mismo. El cifrado clásico no satisface estos objetivos de seguridad y por ello no es utilizado en aplicaciones serias.

El cifrado César y otros cifrados de sustitución monoalfabeto

Cifrado César

El cifrado César es uno de los primeros métodos de cifrado conocidos históricamente. Julio César lo usó para enviar órdenes a sus generales en los campos de batalla. Consistía en escribir el mensaje con un alfabeto que estaba formado por las letras del alfabeto latino normal desplazadas tres posiciones a la derecha. Con nuestro alfabeto el sistema quedaría así:
Alfabeto en claro: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
Alfabeto cifrado:D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z A B C
Por ejemplo, si se quiere enviar el mensaje ATACARALAMANECER, lo que se escribirá realmente es DWDFDUDÑDODPHFHU
El receptor del mensaje conocía la clave secreta de éste (es decir, que estaba escrito con un alfabeto desplazado tres posiciones a la derecha), y podía descifrarlo fácilmente haciendo el desplazamiento inverso con cada letra del mensaje. Pero para el resto de la gente que pudiese accidentalmente llegar a ver el mensaje, el texto carecía de ningún sentido.
Aparentemente es un cifrado muy débil y poco seguro, pero en la época de Julio César no era de conocimiento general la idea de ocultar el significado de un texto mediante cifrado. De hecho, que un mensaje estuviese por escrito ya era un modo de asegurar la confidencialidad frente a la mayoría de la población analfabeta de la época.
Como dato curioso, más de 1500 años después, un cifrado similar al de César fue utilizado por la reina María Estuardo de Escocia, para conspirar junto con los españoles contra su prima Isabel I (en realidad, fue incitada a conspirar por agentes al servicio de Isabel I; una trampa bien urdida.) Los mensajes cifrados de María fueron fácilmente descifrados mediante sencillos análisis estadísticos por los agentes de Isabel I, y así pues quedó al descubierto la conspiración de la reina escocesa. Junto con la pérdida del secreto de la comunicación, María perdió la cabeza en su ejecución el 8 de febrero de 1587. Después de esto el cifrado César quedó definitivamente descartado como método de cifrado seguro para los gobernantes del mundo. Desde entonces a hoy, los cifrados usados por los estados para preservar sus secretos han mejorado considerablemente.
Lo que a nosotros nos interesa del cifrado César es que es un claro ejemplo de utilización de la aritmética modular para garantizar la confidencialidad de la información mediante el cifrado o encriptación. Matemáticamente, podemos describir el método usado por Julio César como una función lineal del tipo
E(x)=x+3 (mod 27)
para un alfabeto con 27 caracteres como el español. La x indica la posición que la letra "en claro" ocupa en alfabeto. E(x) indica la posición de la letra cifrada correspondiente a x en el alfabeto. Según esto, E(0)=3, y E(26)=2 (esto es, la a se cifra como d, y la z como c)
Para descifrar se emplea la función D(x)=x-3 (mod 27) Para cifrar y descifrar el mensaje los comunicantes han de conocer y usar una misma clave secreta, que en este caso es el desplazamiento aplicado sobre el alfabeto (desplazamiento=3). Por eso el cifrado César pertenece a los cifrados de clave privada, también llamados cifrados simétricos.

Cifrados por sustitución monoalfabeto

Una sustitución monoalfabeto como la del cifrado César puede expresarse mediante una transformación congruente lineal (también conocida criptográficamente como transformación afín). En el cifrado César esta se escribiría como E(M)= (M+3) mod N, siendo N la longitud o cardinal del alfabeto original.
Puede extenderse la transformación afín a un caso más general con la siguiente congruencia lineal:
E(a,b) (M) = (aM + b) mod N
siendo M el valor numérico de un carácter del alfabeto original, a y b dos números enteros menores que el cardinal N del alfabeto, y cumpliendo que a y N sean primos entre sí, esto es, que mcd(a,N) = 1, ya que de no ser así diferentes letras del alfabeto original darían lugar a una misma letra en el alfabeto cifrado equivalente. La clave de cifrado k viene entonces dada por el par (a,b).
a es una constante que determina el intervalo de separación entre dos letras del alfabeto cifrado cuando estas son consecutivas en el alfabeto original. Esta constante se denomina coeficiente o factor de decimaciónb es una constante que determina el desplazamientoentre las letras del mensaje claro y las correspondientes en el cifrado.
El cifrado César sería pues una transformación afín con una clave k = (1,3).
Correr aplicación Aplicación de ejemplo: Cifrado por sustitución monoalfabeto

Criptoanálisis de los Métodos de Cifrado Monoalfabéticos

El cifrado monoalfabético constituye la familia de métodos criptográficos más simple de criptoanalizar, puesto que las propiedades estadísticas del texto claro se conservan en el criptograma. Supongamos que, por ejemplo, la letra que más aparece en Castellano es la E. Parece lógico que la letra más frecuente en el texto codificado sea aquella que corresponde con la E. Emparejando las frecuencias relativas de aparición de cada símbolo en el mensaje cifrado con el histograma de frecuencias del idioma en el que se supone está el texto claro, podremos averiguar fácilmente la clave.
Distribución de frecuencias de letras en español para un texto literario
E - 16,78%R - 4,94%Y - 1,54%J - 0,30%
A - 11,96%U - 4,80%Q - 1,53%Ñ - 0,29%
O - 8,69%I - 4,15%B - 0,92%Z - 0,15%
L - 8,37%T - 3,31%H - 0,89%X - 0,06%
S - 7,88%C - 2,92%G - 0,73%K - 0,00%
N - 7,01%P - 2,77%F - 0,52%W - 0,00%
D - 6,87%M - 2,12%V - 0,39%-

Cifrados de sustitución polialfabeto

Como ya se vio en el apartado dedicado a los criptosistemas monoalfabéticos, su principal debilidad es que el texto cifrado mantiene la misma distribución de frecuencia de caracteres que tiene el texto claro original, lo que hace que los cifrados monoalfabeto sean criptoanalizables por métodos estadísticos sencillos. Una posible mejora de los cifrados por sustitución es intentar métodos que destruyan esa correspondencia de frecuencias entre el mensaje en claro y el criptograma. Por ejemplo, utilizando varios alfabetos a la vez para el cifrado.
En los cifrados polialfabéticos la sustitución aplicada a cada caracter varía en función de la posición que ocupe este dentro del texto claro. En realidad corresponde a una aplicación cíclica de n cifrados de sustitución monoalfabeto.

Cifrado de Vigenère

Es un ejemplo típico de cifrado polialfabético cuya invención fue imputada erróneamente a Blaise de Vigenère, y que data del siglo XVI. La clave está constituida por una secuencia de símbolos del alfabeto K = {k0, k1, ... ,kd-1}, de longitud d, y que emplea la siguiente transformación congruente lineal de cifrado:
Ek (mi) = mi + k (i mod d) (mod n)
siendo mi el i-ésimo símbolo del texto claro y n el cardinal (longitud) del alfabeto de entrada. Como clave se puede utilizar cualquier palabra de una longitud por ejemplo entre 6 y 8 caracteres, que no tenga letras repetidas.
Para ver mejor esto, supongamos que con nuestro alfabeto español de 27 símbolos, queremos cifrar el texto en claro "PLAN", y que para el cifrado utilizamos como clave la palabra "SOL". La primera letra del mensaje , la P se cifrará con la primera letra de la clave, S, lo que indica que tenemos que hacer la sustitución monoalfabeto E("P") = E(16) = (16 + 19) mod 27 = 8 = "I", ya que si A ocupa la posición 0, S ocupa la posición 19 en nuestro alfabeto. La letra L del mensaje se cifrará usando la letra O de la clave, y la letra A del mensaje se cifrará usando la letra L de la clave. Para la última letra del mensaje (N) volveremos a usar a primera letra de la clave (S).
Por lo tanto tenemos como resultado:
MensajePLAN
ClaveSOLS
CifradoIZLF
Para facilitar las operaciones con este criptosistema, se dispone el llamado cuadro de Vigenère, que está formado por una matriz cuadrada de 27x27 en el caso de un alfabeto de 27 letras como el español. La primera fila de la matriz está formada por el alfabeto empezando por la letra A y acabando en la letra Z, la segunda por el alfabeto que empieza por la B y acaba en A, y así hasta la última fila, la 27ª, que empieza por las letras ZAB... y acaba con la letra Y.
Cuadro de Vigenère

No hay comentarios:

Publicar un comentario