
















































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Apuntes de la asignatura de Criptografía
Tipo: Apuntes
1 / 56
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!

















































Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéis el autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un uso comercial y no hagáis una obra derivada. La licencia completa se puede consultar en http://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
Lectura recomendada Para hacer más comprensible este módulo didáctico se puede acompañar del libro de Criptografía de J. Domingo, J. Herrera y H. Rifà-Pous de los estudios de Informática y Multimedia, de la UOC.
Tradicionalmente, la criptografía tiene como objetivo la transmisión o alma- cenamiento de mensajes indescifrables para todo receptor que no disponga de la clave del algoritmo de descifrado.
Hoy, la criptografía se presenta como la solución al problema de la vulnera- bilidad de los sistemas de transmisión, o de almacenamiento, con respecto al secreto y a la autenticidad de la información transmitida, o almacenada. El objetivo concerniente a la privacidad y autenticidad asociados a una red de sistemas es evitar que un espía pueda violar o eliminar la protección del sis- tema en referencia a las líneas de comunicación, a la conexión de acceso a la red (contraseñas) y a la utilización de los recursos de un determinado sistema.
En tiempos pasados, la criptografía ha sido una actividad casi exclusivamente utilizada en la diplomacia y en la guerra, pero, a partir de la Segunda Guerra Mundial, la aparición de los ordenadores ha hecho que todos los sistemas crip- tográficos utilizados antes, excepto el método de Vernam (basado en claves de un solo uso y del cual se puede demostrar matemáticamente su inviolabili- dad), formen parte de la historia puesto que la velocidad en el tratamiento de la información hace que sea un juego de niños el problema de encontrar sus correspondientes claves (criptoanálisis).
De esta simplicidad de los métodos clásicos es un ejemplo el sistema cripto- gráfico, llamado de Julio César, por ser él su primer usuario, utilizado todavía durante la segunda guerra mundial, que consistía en numerar los caracteres alfabéticos y cifrar el mensaje m como el criptograma c , mediante una trasla- ción cíclica que hoy enunciaríamos como c = ( m + k ) (mod 25), donde m es el valor numérico asignado a cada letra del alfabeto { A = 0, B = 1,..., Z = 24}, por ejemplo, y para un cierto valor de k previamente elegido (Cesar escogía k = 3). El texto AMOR quedaría, en valores numéricos, 0,12,14,17 que se cifrarían en 3,15,17,20; es decir, se transmitiría el mensaje cifrado (criptograma): DPRU.
Desde siempre, toda técnica criptográfica que opera sobre un mensaje, sin tener en cuenta su estructura lingüística, está basada en una operación ejecu- tada por el emisor, transformando el mensaje original en un mensaje cifrado, mediante un algoritmo que implementa esta operación, ligado a una clave k. Al mismo tiempo, esta operación posee la operación inversa, ejecutada por el receptor, que permite encontrar el mensaje original.
Todo sistema criptográfico, también denominado criptosistema, consta de cin- co componentes: { M , C , K , E y D }, donde M es el conjunto de todos los mensa-
Consideraciones a los criptosistemas
Actualmente, se consideran dos tipos de criptosistemas, según la utilización y administración de los algoritmos de cifrado y descifrado. El criptosistema clásico o convencional, en el cual la clave correspondiente a ambos algoritmos es la misma o, en su defecto, una fácilmente deducible de la otra. En este caso, cada usuario dispone de su pareja de algoritmos Ek y Dk particulares y ningún otro usuario puede disponer de ellos sin conocer la clave k. Son los llamados criptosistemas de clave privada o simétricos.
Lectura recomendada W. Diffie; M. Hellman. “New Directions in Criptography”. IEEE Transactions on Information Theory (vol. IT-22).
En el año 1976 entra en juego un nuevo concepto de criptosistema, propues- to por W. Diffie y M. Hellman, llamados criptosistemas de clave pública o asimétricos , caracterizados por el hecho de que conocer el algoritmo Ek no revela ninguna información sobre Dk o viceversa. Es decir, una de las claves puede ser revelada públicamente sin peligro de que la otra pueda ser deducida.
En los materiales didácticos de este módulo el estudiante encontrará los con- tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer los sistemas criptográficos de clave simétrica más comunes (DES, IDEA, AES). 2. Conocer los sistemas criptográficos de clave asimétrica más comunes (RSA, ElGamal). 3. Conocer los principales algoritmos usados en las funciones hash (MD5, SHA). 4. Conocer los fundamentos y algún ejemplo de sistema criptográfico cuán- tico. 5. Conocer los fundamentos de la teoría de la codificación para la corrección de errores y los sistemas criptográficos postcuánticos basados en esta (McE- liece, Niederreiter).
Technology), certificó el DES en el año 1987 y otra vez en 1993, hasta que en 1997 ya no lo certificó. Durante estos años fue considerado estándar a nivel mundial y hoy todavía es utilizado en el intercambio de información entre los cajeros automáticos y los bancos respectivos. Aunque sea por motivos históri- cos nos parece interesante hacerle referencia.
El DES consiste en un algoritmo de cifrado-descifrado en bloques de 64 bits, mediante una clave k , también de 64 bits (de los cuales solo 56 bits son efec- tivos).
Enlace de interés Se puede encontrar un aplicativo de simulación del DES, de uso libre, en la dirección: www.criptored.upm.es.
Los 64 bits de entrada (mensaje original) se transforman a través de una per- mutación inicial PI , cuya salida se divide en dos sub-bloques L 0 y R 0 de 32 bits cada uno, los cuales están sujetos a un conjunto de 16 transformaciones, de acuerdo con una cierta función f y 16 sub-claves ki ( i = 1,... ,16). Tras realizar las 16 transformaciones se reunifican los sub-bloques R 16 y L 16 y se le aplica la inversa de la permutación inicial: PI –1.
Si Ti es el resultado de la i -ésima iteración, entonces Ti está formada por dos partes la Li , que denota los 32 bits más a la izquierda de Ti , y Ri , que denota los 32 bits más a la derecha de Ti ; o sea, Ti es la concatenación de Li con Ri. El cálculo se hace de este modo:
Li = Ri –1, Ri = L –1 ⊕ f ( Ri –1, ki )
donde ⊕ es la operación or-exclusiva y ki es una sub-clave de 48 bits obtenida a partir de la clave original k.
La función f transforma los 32 bits del bloque Ri –1, mediante la sub-clave ki en los 32 bits del bloque Ri. Para hacer esto, primero se expanden los 32 bits de Ri –1 en un bloque de 48 bits, utilizando una tabla de expansión E para calcular la or-exclusiva de E ( Ri –1) y ki , el resultado de la cual se divide en ocho bloques Bi de 6 bits de entrada y cuatro de salida. Estos bits de salida son concatenados por dar un nuevo bloque de 32 bits. Finalmente, la salida de la función f es el resultado de aplicar una cierta permutación P al bloque de 32 bits anterior. Es decir:
f ( Ri –1, ki ) = P ( S 1 ( B 1 ), S 2 ( B 2 )... S 8 ( B 8 ))
Cada una de las 16 iteraciones del algoritmo DES utiliza una clave diferente de 48 bits, ki , calculada a partir de la clave k de 64 bits, la cual posee 8 bits de control en las posiciones 8,16,24,32,40,48,56,63, mediante una permutación P 1 de 56 bits. El resultado P 1 ( k ) se divide en dos partes de 28 bits cada uno, a los que se aplica un desplazamiento a la izquierda diferente para cada sub- clave ki.
La siguiente figura detalla los pasos del algoritmo de cifrado DES:
Nota El hecho de que no sean intercambiados R 16 y L 16 antes de aplicarles la permutación PI –1^ obedece a que el algoritmo que describimos también se utilizará para el descifrado.
m = texto original de 64 bits
Permutación inicial PI
L 0
L 1
L 2
L 14
L 15
L 16
R 0
R 1
R 2
R 14
R 15
Inversa de PI
c = texto cifrado
R 16
k 1
k 2
k 15
k 16
f ( R 0 , k 1 )
f ( R 1 , R 2 )
f ( R 14 , k 15 )
f ( R 15 , k 16 )
Para aumentar la fortaleza del DES ante posibles criptoanálisis se propuso la reiteración de los procesos de cifrado/descifrado operando, sucesivamente, so- bre el mismo bloque con varias claves independientes. Este es el caso del doble o triple cifrado.
1 ) Doble cifrado. Dadas las claves independientes k 1 y k 2 , los algoritmos de cifrado y descifrado vienen dados por:
c = Ek 2 ( Ek 1 ( m ))
m = Dk 1 ( Dk 2 ( c ))
mi = sub-bloque texto original kij = subclave j-ésima del paso i ci = sub-bloque texto cifrado
m 1 m 2 m 3 m 4
k 11 k 12 k 13 k 14
k 15
k 16
k 91 k 92 k 93 k 94
7 pasos más
c 1 c 2 c^3 c 4
Sumador módulo 2^16 Multiplicador módulo 2^16 + 1 XOR= sumador bit a bit, módulo 2
1.3. Criptosistema AES
Enlace de interés Se puede encontrar un aplicativo de simulación del AES, de uso libre, denominado AES Inspector en la dirección: www.formaestudio.como /rijndaelinspector.
Durante el periodo que el DES estuvo en vigor (1977-2001) se propusieron decenas de cifrados alternativos, muchos de ellos de dominio público. La NSA (National Security Agency) también dio a conocer en 1994 un nuevo cifrado para ser usado en telefonía y comercio electrónico: Skipjack.
El Skipjack es un algoritmo de cifrado en bloques de 64 bits, fue declarado secreto, y los chips que se han implementado impiden acceder a su código fuente. Quizás proceda así la agencia NSA porque no desea que uno de sus criptosistemas circule abiertamente por todo el mundo, o para poder escuchar conversaciones telefónicas cifradas, o ambas cosas.
En enero de 1997, el NIST (National Institute of Standards and Technology), viendo que la seguridad del DES estaba ya comprometida (por motivos es- trictamente computacionales, porque el DES nunca ha sido roto), convocó a concurso público la adjudicación del nuevo estándar de cifrado. Se denomi- naría AES, acrónimo de Advanced Encryption Standard. En la convocatoria se especificaba una serie de requisitos mínimos: un cifrado en bloque de 128 bits; con claves de 128, 192 y 256 bits; la posibilidad de ser implementado tanto en hardware como en software y estar disponible gratuitamente. Pero lo más destacado de la convocatoria era que el concurso estaba abierto a todo el mundo y que el proceso de selección iba a ser totalmente transparente.
Con esta idea se inició una etapa larga de selección que culminó, el año 2000, en la elección del criptosistema Rijndael de los investigadores belgas Vincent Rijmen y Joan Daemen.
Desde este momento, DES ya tiene sustituto: AES. Naturalmente, la decisión del NIST de adoptar el nuevo criptosistema solo obliga a la administración federal americana, y en lo concerniente a la información no clasificada; pero con toda seguridad, AES va a ser el cifrado más usado en los próximos años. La recomendación del cifrado por parte del NIST es todo un certificado de garantía para empresas y organizaciones. Prueba de ello es que la misma NSA ha aprobado el uso de AES para cifrar información clasificada: la secreta con claves de 128 bits y la de alto secreto con claves de 192 y 256 bits.
Criptoanálisis
El disponer de un estándar de cifrado de uso generalizado tiene un gran inconveniente: que todo el mundo quiere romperlo. Al exigir claves con una longitud mínima de 128 bits, el NIST dotaba a su cifrado de una seguridad más que suficiente contra un ataque de fuerza bruta; el único método que venció al anterior estándar, el DES. Descubrir una clave de 128 bits comprobando una a una todas las posibles es una tarea prácticamente eterna para cualquier ordenador de hoy en día. Incluso para todos ellos trabajando juntos. Y 256 bits son garantía de sobra contra todos los ordenadores electrónicos que se construyan en las próximas décadas. Será necesario algo más que fuerza bruta para derrotar al AES. Durante el concurso, el vencedor Rijndael (igual que el resto de los finalistas) probó ser inmune a todos los métodos de criptoanálisis conocidos hasta aquel momento.
El proceso de cifrado de cada bloque de 128 bits de texto original consta de tres transformaciones, o capas distintas donde se tratan los bits, que cons- tan de:
Las operaciones implicadas en AES se expresan en términos algebraicos em- pleando cierta aritmética de bytes. En esta aritmética, la suma y el producto de bytes son justamente la suma y el producto en el cuerpo finito F 28 , cons- truido a partir del polinomio primitivo: p ( X ) = X^8 + X^4 + X^3 + X + 1.
1.4. Modos de operación de los criptosistemas de clave privada
Por aumentar la seguridad del algoritmo de cifrado y el de descifrado se utili- zan de diferentes modos:
En el año 1976 entra en juego el nuevo concepto de criptosistema propuesto por Diffie y Hellman, con dos claves, una de las cuales puede ser revelada públicamente sin peligro de que se pueda deducir la otra.
Separabilidad escritura/lectura Este tipo de criptosistemas son muy indicados para la protección de ficheros públicos, puesto que el hecho de poder escribir información sobre el fichero no implica poderla leer y viceversa, porque las claves de escritura y lectura son independientes, pese a que están relacionadas.
En un criptosistema con claves públicas cada usuario tiene un algoritmo de cifrado Ek , registrado en un directorio público, y un algoritmo de descifrado Dk que solo conoce el usuario. Mientras Dk se define en función de la clave privada, Ek se define mediante un algoritmo o función que no permita, desde el punto de vista computacional, la revelación de Dk. Estos tipos de algoritmos o funciones reciben el nombre de unidireccionales.
En este caso, dos algoritmos diferentes proporcionan el secreto y la autentici- dad. Por ejemplo, si el usuario A quiere transmitir el mensaje m al usuario B , ambos conectados al mismo directorio público, solo debe buscar el algoritmo de cifrado EkB de B en el directorio público y transmitir el mensaje cifrado c = EkB ( m ). Cuando el usuario B recibe c tiene que aplicar DkB , que solo él conoce, y encuentra el mensaje original DkB ( c ) = m , (ya que DkB ( c ) = DkB ( EkB ( m )) = m ).
Con la utilización de la criptografía de clave pública queda asegurado el se- creto, pero no queda protegida la autenticidad, puesto que todos los usuarios pueden conocer EkB. (^) Firma digital
En general, se envía la firma por una parte y el mensaje, cifrado o no, por otra parte; según la necesidad de privacidad del mensaje. Así, si A quiere enviar un mensaje firmado a B , enviará m , o EkB ( m ) y la firma correspondiente: s = DkA ( h ( m )). Entonces, B recupera m con su clave privada que compara con el resultado de aplicar el cifrado con la clave pública de A a s. Si ambos resultados coinciden se acepta la autenticación y de lo contrario se rechaza. Incluso, como veremos más adelante, lo que se enviará es el mensaje m , cifrado o no, y la firma de un resumen del mensaje: h ( m ) (función de hash ). En tal caso la firma será: s = DkA h ( m ) (ver el algoritmo de firma DSA).
Para conseguir la autenticidad tendremos que exigir a las transformaciones Ek y Dk , de cada usuario, que verifiquen que Ek sea la transformación inversa de Dk ; es decir, que para todo mensaje m y para todo usuario con clave k , tengamos: Ek ( Dk ( m )) = m ,
En este caso el usuario A podrá firmar sus mensajes mediante su transforma- ción secreta DkA. En efecto, si A quiere enviar el mensaje m a B , autenticando su procedencia, podrá firmar digitalmente este mensaje haciendo s = DkA ( m ), donde s será la firma y DkA la transformación de descifrado del usuario A ; que solo él conoce y, por lo tanto, solo él podrá hacer esta operación.
Ahora, una vez firmado el mensaje, A enviará el mensaje cifrado c= EkB ( s ). Cuando B reciba c ; puede encontrar s , puesto que s = DkB ( c ), que será inin- teligible para él. Ya que ha sido prevenido por A que le enviaba un mensaje, para descifrar el contenido de s , solo debe buscar en el directorio público el algoritmo EkA de A. Y en efecto, EkA ( s ) = m era el mensaje que pretendía trans- mitirle A.
2.1. Funciones unidireccionales
La idea fundamental de Diffie y Hellman para la definición de criptosistema con clave pública se basa en la existencia de las funciones unidireccionales ( One way functions ).
Definición 2.1 (Función unidireccional).
Una función f sobre un dominio U se llama unidireccional si ∀ x ∈ U , f ( x ) es fácilmente calculable, mientras que para casi todo y ∈ f ( U ), no es computacionalmente factible encontrar x ∈ U , tal que f ( x ) = y.
Observar que la definición no es muy precisa: los términos fácilmente calcula- ble , para casi todo y computacionalmente factible son muy imprecisos, aunque se pueden definir matemáticamente para que tengan un sentido perfectamente preciso.
Definición 2.2 (Función unidireccional con trampilla).
Una familia de funciones invertibles fk con dominio Uk , con índice k, se llama función unidireccional con trampilla si, dado k , se pueden en- contrar algoritmos Ek y Dk que calculen fácilmente fk ( x ) y f (^) k –1 ( y ) ∀ x ∈ Uk y ∀ y ∈ f ( Uk ); y, sin embargo, para casi todo k y ∀ y ∈ f ( Uk ), no es compu- tacionalmente eficiente encontrar f (^) k –1 ( y ), con el único conocimiento de Ek.
Una de las primeras candidatas a función unidireccional fue la del logaritmo discreto, propuesta por los mismos Diffie y Hellman. En efecto, dados un nú- mero primo grande, p , y α un elemento primitivo del cuerpo F p , la función exponencial discreta: f ( x ) = αx^ (mod p ), donde 1 < x < p es computacional- mente eficiente calcularla.
Algoritmo de multiplicar y elevar
Para valores de x grandes, podemos usar el método binario de exponenciación (D. E. Knuth (1981). The Art of Computer Programming. vol. 2 Semi-Numerical Algorithms. Addisson Wesley). Por ejemplo (véase el algoritmo 3.2 del módulo “Cuerpos finitos” de esta asignatura), para calcular α^25 se puede realizar de esta forma: α^25 = α 16+8+1^ = ((( α^2 )^2 )^2 )^2 · (( α^2 )^2 )^2 · α.
En cambio, la inversa de la exponencial discreta; el logaritmo discreto x = logα ( y ) no es computacionalmente eficiente calcularlo si p –1 tiene un factor primo grande.
2.2. Criptosistema RSA
A partir del concepto de función unidireccional, Diffie y Hellman definen la estructura de un criptosistema de clave pública. Sin embargo, no proporcio- nan ninguna implementación concreta de tal estructura, excepto para el caso del protocolo de distribución de claves privadas que veremos más adelante.
1 ) Encontrar el valor n = p · q , donde p y q son dos números primos grandes (en los inicios del RSA ya se sugerían de un centenar de dígitos cada uno). 2 ) Conociendo p y q , calcular: ϕ ( n ) = ( p – 1) · ( q – 1). 3 ) Tomar e relativamente primo con ϕ ( n ). 4 ) Calcular d = e –1^ (mod ϕ ( n )).
Veamos un ejemplo aunque los valores empleados no son los que se podrían usar en la realidad.
*** Por ejemplo, usando el algoritmo de Euclides extendido, según el algoritmo 1.4 del módulo “Cuerpos finitos”.**
Ejemplo 2.1. Supongamos p = 13 y q = 17. Entonces n = 13 · 17 = 221 y ϕ ( n ) = 12 · 16 =
2.2.2. Firma digital, basada en el RSA
Los algoritmos de cifrado y descifrado del algoritmo RSA son conmutativos; es decir: Dk ( Ek ( m ) = Ek ( Dk ( m )), y por lo tanto, el esquema RSA puede ser utilizado para ambos objetivos de privacidad y autenticidad. En base a esta conmutati- vidad se puede utilizar el RSA para construir firmas digitales.
En este caso, si suponemos dos usuarios A y B , con claves públicas ( eA , nA ) y ( eB , nB ) y claves privadas ( dA , nA ) y ( dB , nB ), respectivamente, podremos arbitrar un sistema de firma digital como se ha mencionado anteriormente.
Si el usuario A quiere enviar el mensaje m , firmado digitalmente, al usuario B , procederá de la forma siguiente:
Firma digital, basada en el RSA En general, dado que los valores de m serán muy grandes, se firmará un resumen de m y la firma será: s = D ( dA , nA )( h ( m )), donde h ( m ) es la función resumen ( hash ) de m. En este caso, en lugar de proceder cómo indica el segundo paso del cifrado, el mensaje m se enviará aparte, cifrado o no. La función resumen deberá ser conocida, también por el usuario B , para poder proceder a hacer la verificación del segundo paso del descifrado.
Por parte del usuario A :
1 ) Firmar m con su clave privada: s = D ( dA , nA )( m )
2 ) Cifrar la firma con la clave pública de B : c = E ( eB , nB )( s )
Por parte de B , una vez recibido el criptograma c :
1 ) Descifrar el criptograma c con su clave privada: D ( dB , nB )( c ) = s
2 ) Verificar, a partir de la firma s , si el criptograma c ha sido enviado realmente por A : E ( eA , nA )( s ) = m
Ejemplo 2.2. Usuario A: Sean p = 29 y q = 7 los valores escogidos por A. Entonces nA = 29 · 7 = 203 y ϕ ( nA ) = 28 · 6 = 168. Supongamos que A escoge: ( eA = 19, nA = 203) como clave pública, entonces ( dA = 115, nA = 203) será su clave privada. Usuario B: Sean p = 13 y q = 17 los valores escogido por B. Entonces nB = 13 · 17 = 221 y ϕ ( nB ) = 12 · 16 = 192. Supongamos que B escoge: ( eB = 11, nB = 221) como clave pública, entonces ( dB = 35, nB =
Nota El usuario B acepta EDI como el mensaje que le ha enviado A, sencillamente porque para él es inteligible; pero esto en muchos casos no sería suficiente. Tal y como veremos, en otros casos, la estrategia de firma será diferente.