UNIVERSIDAD AUT~NOMA UNIDAD IZTAPALAPA148.206.53.84/tesiuami/UAM1975.pdf · Debe ser posible para...

57
UNIVERSIDAD AUT~NOMA METROPOLITANA UNIDAD : IZTAPALAPA DIVISI~N: CIENCIAS BÁSICAS E INGENIERÍA CARRERA : INGENIERÍA ELECTR~NICA MATERIA : PROYECTO TERMINAL TÍTULO : SERVICIOS DE CRIPTOGRAFÍA FECHA : 16 DE FEBRERO DEL 2000 ALUMNOS : RICARDO ARABEDO SOLIS 892302, 44 JOAQUÍN GARCÍA MORENO 91225644 -. ASESOR:

Transcript of UNIVERSIDAD AUT~NOMA UNIDAD IZTAPALAPA148.206.53.84/tesiuami/UAM1975.pdf · Debe ser posible para...

UNIVERSIDAD AUT~NOMA METROPOLITANA

UNIDAD : IZTAPALAPA

DIVISI~N: CIENCIAS BÁSICAS E INGENIERÍA

CARRERA : INGENIERÍA ELECTR~NICA

MATERIA : PROYECTO TERMINAL

TÍTULO : SERVICIOS DE CRIPTOGRAFÍA

FECHA : 16 DE FEBRERO DEL 2000

ALUMNOS : RICARDO ARABEDO SOLIS 892302, 44

JOAQUÍN GARCÍA MORENO 91225644

- .

ASESOR:

Servicios de Cnptografla

INTRODUCCIóN A LA CRIPTOGRAFÍA

Para entablar una comunicación son necesarios tres elementos básicos; un emisor, un mensaje y finalmente un

receptor. También puede ser posible que exista no sólo un receptor sino un número ilimitado de receptores a los

cuales se desea que llegue el mensaje. Otro posible caso es que el emisor tenga la intención de enviar su mensaje a

receptores específicos y no pueda evitar, debido al medio de comunicación que otros receptores reciban el mensaje.

En la actualidad los medios de comunicación electrónica han tomado un lugar muy importante en nuestra sociedad

y muchas de las actividades de hoy giran en tomo a ellos. Nadie negaría que la comunicación a través dt:

INTERNET juega un papel muy importante en la cultura, la economía, la tecnología, las relaciones humanas, etc.

Un problema inherente a la INTERNET es el hecho de que la información que tenemos puede ser obtenida por

cualquier otro usuario de la red si no tomamos las precauciones necesarias. Cuando enviamos información a través

del correo electrónico se corre el riesgo de que otros usuarios, los cuales son no deseados, puedan recibir esa

información. Como una solución a este tipo de problemas surge la Criptografía en la cual se da el intercambio de

información entre participantes evitando que otros puedan accesarla. Para evitar que otros puedan leer la

información lo que se hace es transformar la información de tal manera que sólo los participantes puedan

transformarla a su forma original y así recuperarla.

Los sistemas criptográficos están clasificados generalmente a lo largo de tres dimensiones independientes;

1.- El tipo de operaciones utilizadas para transformar el texto plano en texto cifrado. Todos los algoritmos de

encripción están basados en dos principios generales: la sustitución, en el cual cada elemento en el texto plano (bit,

letra, grupo de bits o letras) es mapeado en otro elemento, y la transposición, en la cual los elementos en el texto

plano son reordenados. El requerimiento fundamental es que ninguna información debe perderse, esto es, todas la:<

operaciones son reversibles. L a mayoría de los sistemas, referidos como producto de los sistemas, envuelven etapais

múltiples de sustitución y transposición.

2.- El número de llaves utilizadas. Si ambos emisor y receptor utilizan la misma llave, el sistema es referido como

encripción simétrica, de una llave, de llave secreta o convencional. Si el emisor y el receptor utilizan cada uno 1lave:s

diferentes, el sistema es referido como encripción asimétrica, de dos llaves o de llave pública.

3.- L a forma en la cual el texto plano es procesado. Un cifrador de bloque procesa un bloque de elementos de

entrada a la vez, produciendo un bloque de salida para cada bloque de entrada. Un cifrador orientado a bit procesa la

entrada de elementos de manera continua, produciendo una salida tal como esta se va llegando.

Dentro de la terminología que se usa dentro de la criptografía se tienen los siguientes conceptos: El Texto Plano

(Plaintext) debe entenderse como el mensaje en su forma original. Mientras que el Texto Cifrado (Ciphertext) debe

entenderse como el mensaje puesto en clave. También es posible definir dos procesos; uno de ellos nos lleva del

texto plano al texto cifrado y se conoce como Encripción o Codificación, el otro nos lleva del texto cifrado al texto

plano y se conoce como Decripción o Decodificacibn.

1

Servicios de Cr@tografia

Texto Cifrado Algoritmo de Texto Plano Decripción

b

Fig. 1.1 Encripción y Decripción.

Relacionados con la Criptografía que es el arte de mantener los mensajes seguros, y la cual es practicada por los

criptógrafos, tenemos a los Criptoanalistas, los cuales se enfocan en romper el texto cifrado, y finalmente tenemos a

la Criptología, la cual se encarga de ligar a la criptografía con el criptoanálisis.

En este trabajo el texto plano o mensaje lo denotaremos por M, el cual puede estar constituido por una cadena de

bits, un archivo de texto, un mapa de bits, una cadena de voz digitalizada, una imagen de video digital, etc. Desde el

punto de vista computacional M es simplemente datos en forma binaria. El texto cifrado lo denotaremos por C y este

también debe interpretarse como datos binarios, los cuales pueden ser del mismo tamaño que M, más grande o

también más pequeño (usando encripción más compresión). La hnción de encripción E opera entonces sobre M y

da como resultado C, matemáticamente

E ( M ) = C

entonces el proceso inverso, la función de decripción D opera sobre C y produce M

D (C) = M

podemos mencionar que si nuestro objetivo final es recuperar el mensaje original entonces se cumple que

D (E(M)) = M .

Cabe mencionar que un buen esquema de criptografía además de la confiabilidad debe ofrecer los siguientes

servicios encaminados a la seguridad:

Autenticación.- Debe ser posible para el receptor de un mensaje determinar su origen, un intruso no debe ser

capaz de disfrazarse como alguien más.

Integridad.- Debe ser posible para el receptor de un mensaje verificar que este no ha sido modificado durante SLI

transito, un intruso no debe ser capaz de sustituir o falsear un mensaje legitimo.

No Rechazo.- Este provee al receptor de un mensaje con la capacidad de probar a una tercera parte que el emisor

realmente fue quien envió el mensaje. Un emisor no debe ser capaz de negar falsamente más tarde que él no envió

un mensaje.

Privacidad- Este provee la habilidad para que el receptor deseado sea quien lea el mensaje, manteniendo a los

demás imposibilitados de hacerlo.

2

Servicios de Crptografia

Prueba de Sometimiento.- Esto permite al emisor verificar que el mensaje fue tomado por el sistema de entrega

del correo. Esto puede hacerse quizás al firmar el mensaje digerido del contenido de los mensajes.

Prueba de Entrega.- Es la verificación de que el receptor ha recibido el mensaje.

Confidencialidad del Flujo de Mensajes.- Esta es una extensión de la privacidad de tal forma que si A envía un

mensaje a B y C es un receptor no deseado, entonces C no sólo no es capaz de conocer el contexto del mensaje sino

que no puede incluso determinar cuando A envía un mensaje a B.

Anonimato.- Es la habilidad para enviar un mensaje tal que el receptor no pueda encontrar la identidad del

emisor.

Contención.- Es la habilidad de la red para mantener ciertos niveles de seguridad de la información de que esta

salga de ciertas regiones.

Intervención.- La habilidad de la red para que esta pueda grabar eventos que podrían tener alguna relevancia en

seguridad de tal forma que si A envía un mensaje a B en una fecha en particular. Esté sería bastante directo de

implementar. Aunque esto no esta especificado en los estándares.

Integridad en la Secuencia de los Mensajes.- La confianza de que una secuencia entera de mensajes llegó en el

orden transmitido, sin ninguna perdida.

ALGORITMOS Y LLAVES

Para poder llevar a cabo la encripción y la decripción de los mensajes es necesario recurrir a los algoritmos.

En un principio se utilizaban los Algoritmos Criptográficos Restringidos los cuales basaban su seguridad en

mantener oculto cual era su modo de operación. Esto acarrea distintos problemas. El primero de ellos se genera

cuando es utilizado por grupos numerosos los cuales cambian continuamente, pues cada vez que un integrante deja

el grupo es necesario cambiar el algoritmo. Cuando el algoritmo es descubierto entonces es necesario de nuevo

cambiar el algoritmo o algoritmos.

Los algoritmos restringidos no permiten un control de calidad o estandarización. Cada grupo de usuarios debe

tener su propio algoritmo único, lo cual rompe con la portabilidad del algoritmo al no ser compatible con el

hardware y el software exterior al grupo de trabajo dado. Cada grupo tiene que desarrollar su propio algoritmo e

implementarlo. Si nadie en el grupo es un buen encriptador tendrán duda sobre la eficiencia del mismo y sobre s u

grado de seguridad.

En la actualidad se siguen utilizando los algoritmos restringidos, pero sólo en aplicaciones en las que se requiera

una muy baja seguridad.

Como otra alternativa se recurrió a los Algoritmos Criptográficos Públicos, en los cuales se da a conocer cual es el

algoritmo utilizado pero como medio para conseguir la seguridad se implementa una Llave (key) denotada por K.

La filosot’ia de la llave es que esta puede tomar cualquier valor de un gran número de valores. El conjunto de todo:$

los posibles valores que puede tomar la llave se denomina Espacio de la Llave (Keyspace). Entonces las 0peracione:s

de encripción y decripción utilizan esta llave, así que las funciones pueden denotarse como

3

Servicios de Cr@tografiá

EK (M) = C

DK (C) = M

Con la propiedad de que

DK (EK(M)) = M

Texto Plano Algoritmo de Texto Cifrado Algoritmo de Texto Plano Encripción Decripción

-

Fig. 1.2 Encripción y decripción con una llave.

Existen algoritmos en los cuales la encripción se da con una llave mientras que la decripción se da con otra. Si la

llave de encripción es KI y es diferente de la llave de decripción K2, entonces matemáticamente

EK1 (M) = C

DK2 (C) = M

DK2 (EK1 (M)) = M

Entonces podemos concluir que la seguridad de estos algoritmos se basa en la llave (o llaves) y no en los detalles del

algoritmo. Como ya mencionamos el algoritmo puede hacerse público y de esta manera ser analizado. En este caso

no importa que todo el mundo conozca tu algoritmo, ya que, si no saben cuál es la llave nunca podrán decriptar tus

mensajes.

Finalmente podemos definir que un Criptosistema consiste de un algoritmo, todos los posibles mensajes a enviar,

todos los posibles mensajes cifrados y las llaves.

4

Servicios de Cslptogsafia

7 Llave Pública B ’S

Llave Privada

Usuario Testo Plano Algoritmo A

Texto Plano

Decripción

Fig. 1.3 Encripción y decripción con dos llaves diferentes.

TIPOS DE FUNCIONES CRIPTOGRÁFICAS

Existen tres tipos generales de funciones criptográficas: dos funciones basadas en llaves; Los Algoritmos de Llave

Secreta (o Simétricos) y Los Algoritmos de Llave Pública, mientras que el tercer tipo no utiliza llaves y se denomina

Función de Hash (o Digestores de Mensajes).

Los algoritmos de llave secreta o simétricos son aquellos en los cuales la llave de encripción puede calcularse de la

llave de decripción y viceversa. En la mayoría de los algoritmos simétricos las llaves de encripción y decripción son

la misma. En estos algoritmos se necesita que tanto el emisor como el receptor sepan o estén de acuerdo en cual es la

llave antes de que puedan establecer una comunicación segura. Entonces la seguridad del algoritmo simétrico

descansa sobre la llave.

Matemáticamente la encripción y decripción con un algoritmo simétrico se denota por

EK (M) = C

DK (C) = M

Los algoritmos simétricos se pueden dividir en dos categorías. Unos operan sobre el texto plano en un sólo bit a la

vez, estos son llamados Algoritmos Orientados a Bit (bit stream), otros operan en el testo plano sobre grupos de

bits, los grupos de bits se llaman bloques y los algoritmos se llaman Algoritmos de Bloque.

Un Algoritmo de Llave Pública esta disellado de tal manera que la llave usada para la encripción es diferente de l a

llave usada para la decripción. Entonces, l a llave de decripción no puede calcularse de la llave de encripción. Estos

algoritmos se llaman de “llave pública” debido a que la llave de encripción puede hacerse pública, entonces el

principio de la seguridad se basa en que cualquier persona puede encriptar un mensaje, pero sólo aquel al que va

5

Servicios de Criptografia

dirigido lo puede decriptar. Entonces la llave usada para encriptar la información se llama Llave Pública, mientras

que la llave usada para decriptar la información se llama Llave Privada ( o Secreta).

La encripción usando la llave publica la denotaremos como

Ee (M) = C

mientras que la decripción con la llave privada la denotaremos

Dd (C) = M

Nuevamente tenemos la propiedad de que

Dd (Ee(M)) = M

Los Algoritmos de Hash también se conocen como mensajes digeridos o transformaciones en un sólo sentido.

Una función de hash criptográfica es una transformación matemática que toma un mensaje de longitud arbitraria

(transformado en una cadena de bits) y calcula de él un número de longitud f i ja (corto).

Llamaremos al hash de un mensaje m, h(m). Si tiene las siguientes propiedades:

Para cualquier mensaje m, es relativamente fácil calcular h(m). Esto sólo significa que para ser prácticos éste no

puede tomar gran parte del tiempo de procesamiento para calcular el hash.

Dada h(m), no hay manera de encontrar un m que nos lleve a h(m) en una forma que sea substancialmente fácil ir a

través de todos los posibles valores de m y calcular h(m) para cada uno.

Aún pensando que es obvio que muchos diferentes valores de m serán transformados al mismo valor h(m) (debido a

que hay mucho más valores posibles de m). no es factible computacionalmente encontrar dos valores que nos lleven

al mismo resultado.

Un ejemplo del tipo de funciones que podrían trabajar es tomar el mensaje m, tratarlo como un número, sumar una

constante grande, cuadrarlo y tomar la mitad de los n dígitos como el hash. Puedes ver que mientras esto no es

difícil de calcular, no es obvio como podrías encontrar un mensaje que produciría un hash en particular, o como uno

podría encontrar los dos mensajes con el mismo hash. Entonces la idea básica de una función de mensaje digerido es

que la entrada se maneja tal que difícilmente el proceso puede ser invertido.

6

Servicios de Crptografa

CRIPTOANÁLISIS

El objetivo principal de la criptografía es mantener en secreto ú oculto el texto plano (o la llave o ambos) de los

posibles adversarios. Es conveniente asumir que los adversarios tienen el acceso completo a los sistemas de

comunicación entre el emisor y receptor.

Con el uso del criptoanálisis es posible recuperar el mensaje o texto plano sin tener acceso a la llave.

Entonces un criptoanálisis exitoso puede recuperar el texto plano o la llave. Para lograr su objetivo el criptoanálisis

es capaz de encontrar las debilidades existentes en un criptosistema como base para obtener buenos resultados.

Un intento criptoanalítico se llama un ataque. Es necesario establecer que la seguridad del algoritmo debe residir

fundamentalmente en la llave. Kerckhoffs asume que el criptoanalista tiene detalles completos del algoritmo

criptográfico y de su implementación. En la práctica no siempre los criptoanalistas tienen tal información de manera

detallada. Cuando un algoritmo no puede romperse aún con el conocimiento de cómo trabaja, entonces es más dificil

de romper si no se tiene ningún dato de éste.

Desde el punto de vista del criptoanálisis hay cuatro tipos generales de atacar un algoritmo criptográfico. En cada

uno de ellos es necesario considerar que el criptoanalista tiene conocimiento completo del algoritmo de encripción

que esta siendo utilizado:

1.- Ataque con Sólo Texto Cifrado (Only-Ciphertext Attack). El criptoanalista tiene el texto cifrado de varios

mensajes, los cuales han sido encriptados con el mismo algoritmo de encripción. En este caso el objetivo del

criptoanalista es recuperar el texto plano de la mayor cantidad de mensajes como le sea posible, otra opción es

deducir la llave (o llaves) usada para encriptar los mensajes, como base para poder decriptar otros mensajes

encriptados con la misma llave.

Dado C 1 = EK(P l), C2 =EK(P2), . . . .,Ci = EK(Pi)

Deducir : Cualquiera de PI,P2,. .Pi; K;

O un algoritmo para inferir Pi+ I , de Ci+ 1 = EK(Pi+ 1)

2.- Ataque Conociendo Texto Plano (Know-Plaintext Attack). En este caso el criptoanalista ha logrado accesar no

sólo al texto cifrado de varios mensajes sino también al texto plano de esos mensajes. Entonces su trabajo es deducir

la llave (o llaves) utilizadas para encriptar los mensajes o un algoritmo para decriptar cualquiera de los nuevos

mensajes encriptados con la misma llave (o llaves).

Dado C 1 = EK(Pl), C2 =EK(P2), . . ..,Ci = EK(Pi)

Deducir : Cualquier K;

O un algoritmo para inferir Pi+ 1, de Ci+ 1 = EK(Pi+ 1)

7

Servicios de Crlptografia

3.- Ataque Tomando Texto Plano (Chosen-Paintext Attack). En este caso el criptoanalista ha accesado al texto

cifrado de varios mensajes y al texto plano asociado a varios de los mismos y además es capaz de obtener el texto

plano de los mensajes que estaban encriptados. Este tipo de ataque es muy poderoso debido a que el criptoanalista

puede tomar bloques específicos de texto plano para encriptados. En este caso el trabajo del criptoanalista es

deducir la llave (o llaves) utilizadas para encriptar los mensajes o un algoritmo para decriptar cualquiera de los

nuevos mensajes encriptados con la misma llave (o llaves).

Dado C 1 = EK(Pl), C2 =EK(P2), . . . .7 Ci = EK(Pi)

Donde el criptoanalista ha logrado tomar Pl,P2,. .Pi

Deducir : Cualquiera K; O un algoritmo para inferir Pi+ 1, de Ci+ 1 = EK(Pi+ 1)

4.- Ataque Adaptivo Tomando Texto Plano (Adaptive-Chosen-Plaintext Attack). Este es un caso especial del

anterior. El criptoanalista no sólo toma el texto plano que está encriptado, sino que é1 puede modificar su opción

basado en los resultados de encripción previos.

Existen al menos otros tres tipos de ataques criptoanalíticos.

5.- Ataque Tomando Texto Cifrado (Chosen-ciphertext Attack). El criptoanalista puede tomar diferentes textos

cifrados para decriptarlos y tener acceso al texto plano decriptado. Su trabajo es entonces deducir la llave.

Dado C1, P1 = DK(C l ) , C2, P2 = DK(C2), . . . . . . .Ci, Pi = DK(Ci)

Deducir K.

6.- Ataque Tomando la Llave (Chosen-Key Attack). Este implica que el criptoanalista tiene algún conocimiento

acerca de las relaciones entre las diferentes llaves.

7. - Criptoanálisis de Aprobación Automática por Hostigamiento (Rubber-hose Cristoanalisis). El criptoanalista

amenaza, chantajea o tortura a alguien hasta que obtiene la llave. El soborno es algunas veces referido como Ataque

por Compra de Llave. Estos son ataques muy poderosos y frecuentemente los mejores para romper un algoritmo.

CRIPTOGRAFÍA DE LLAVE SECRETA

En esté capítulo se describe de una manera muy general cual es el funcionamiento de un algoritmo de llave

secreta. Expondremos como funcionan los algoritmos DES e IDEA. En general estos algoritmos toman del mensaje

un bloque de longitud fija, toman una llave de longitud fija y generan un bloque de salida (de la misma longitud que

la entrada). Las longitudes pueden ser de 64 bits, 56 bits o 128 bits dependiendo del algoritmo y su aplicación.

8

Servicios de Crlptografia

La Encripción de Llave Secreta también es referida como Encripción de una Sola Llave, Encripción

Convencional o Encripción Simétrica, este f i e el Único tipo de encripción antes del desarrollo de la criptografía de

llave pública. Este sigue siendo el más ampliamente usado de los dos tipos de algoritmo de encripción

Un modelo general del proceso de encripción convencional es el siguiente: Tomemos un mensaje el cual se

encuentra de manera inteligible, referido como Texto Plano, y transformémoslos en una aparente tontería aleatoria,

referida como el Texto Cifrafo. El proceso de encripción consiste entonces de un algoritmo y una llave. En este

caso la llave es un valor completamente independiente del texto plano que controla el algoritmo. Entonces para cada

llave diferente y un mismo texto plano, el algoritmo producirá diferentes textos cifrados de salida.

I".; Criptoanalista

Encripción Decripción Destino

T Canal Seguro I

fuente

Figura 2 Modelo de un Criptosistema de Llave Privada

El siguiente paso una vez que se ha producido el texto cifrado, es transmitirlo. Una vez que es recibido el texto

cifrado, entonces se puede llevar a cabo el proceso inverso y transformarlo en el texto plano original utilizando un

algoritmo decodificador y la misma llave con la cual fue encriptado.

La seguridad del algoritmo de llave secreta descansa en varios factores. Primero el algoritmo debe ser

suficientemente poderoso tal que es impráctico decodificar un mensaje basándose en el texto cifrado solamente. Más

allá de que, la seguridad de la encripción convencional depende de la secretidad de la llave, y no en la secretidad del

algoritmo. Esto es, se asume que es impráctico decodificar un rnensa,je en la base de tener texto cifrado más el

9

Servicios de Criptografia

conocimiento del algoritmo de encripcióddecripción, Es decir lo que necesitamos mantener en secreto en la llave

no el algoritmo.

Esta característica de la encripción convencional es lo que la hace factible para un uso extendido. El hecho de que

el algoritmo no necesita mantenerse secreto significa que los fabricantes pueden y han desarrollado

implementaciones de chips a bajo costo de algoritmos para la encripción de datos. Esos chips son ampliamente

permitidos e incorporados en una gran cantidad de productos. Con el uso de la encripción convencional, el principal

problema de seguridad es mantener la llave en secreto.

Mirando a los elementos esenciales de la encripción convencional podemos identificar lo siguiente:

Hay alguna fuente para un mensaje, la cual produce un texto plano; X=:[Xl,X2,..,XM]. Los M elementos de X son

letras en algún alfabeto finito. Tradicionalmente, el alfabeto consiste de 26 letras mayúsculas. Hoy en día, el

alfabeto binario (0,l) es típicamente utilizado. Para la encripción, una llave de la forma K=[Kl,K2,..,Kj] es

generada. Si la llave es generada en la fuente del mensaje, entonces esta también debe ser provista al destinatario por

medio de un canal seguro. Alternativamente, una tercera parte podría generar la llave y enviarla de manera segura a

ambos fuente y destino.

Con el mensaje X y la llave de encripción K como entrada, el algoritmo de encripción forma el texto cifrado

Y=[Y 1 ,Y2,. .;yN]. Podemos escribir esto como

Y = EK(X)

Esta notación indica que Y es producida al usar el algoritmo de encripción E como una función del texto plano X,

por la función especifica determinada por la llave K.

El receptor deseado, en posesión de la llave, es capaz de invertir la transformación;

X = DK(Y)

Un oponente, observando Y pero sin tener acceso a K o X, debe intentar recobrar X o K o ambos. Se supone que

el oponente tiene el conocimiento de los algoritmos de encripción (E) y decripción (D): Si el oponente solo esta

interesado en este Único mensaje en particular, entonces é1 enfocará su esfuerzo en recuperar X al generar un texto

plano estimado X’. Frecuentemente, sin embargo, el oponente esta interesado en ser capaz de leer mensajes futuros

también, en cuyo caso un intento es hecho para recuperar K al generar un K’ estimado.

10

Servicios de Criptografia

ESTANDAR PARA ENCRIPCIÓN DE DATOS (DATA ENCRIPTION STANDAR, DES)

DESCRIPCI~N DE DES.

DES se puede clasificar como un algoritmo de encripción en bloque; el tamaño de los bloques es de 64 bits de

longitud. Si lo vemos como un caja negra la entrada lo constituye un bloque de 64 bits de texto plano, la iünción lo

constituye el algoritmo que procesa la información de entrada y finalmente la salida lo constituye un bloque de 64

bits que pertenecen al texto cifrado. DES es un algoritmo simétrico, es decir, se utiliza la misma llave tanto para la

encripción como para la decripción

44 . ' " " 4

52 Permutación Inicial I Pennutación seleccionada 1

'I

Iteración 1 K1 Pennutación seleccionada Cambio circular a la 2 izauierda

.I

Iteración 2 Pennutación seleccionada Cambio circular a la 2 izauierda

Cambio circular a la izauierda + 32 bits de intercambio

Figura 2.1 Descripción General del Algoritmo DES

11

Servicios de Crlptogsafia

L a llave tiene una longitud de 64 bits, pero de ellos 56 bits realmente constituyen la llave y 8 bits son para verificar

paridad y asegurar con ello que no se transmita una llave errónea. L a llave se divide en palabras de 8 bits en las

cuales el octavo bits es de paridad. L a llave puede ser cualquier número de 64 bits y puede cambiarse en cualquier

momento. Si tomamos un intervalo de pocos números entonces se considera que la llave es débil, pero esto es fácil

de evitar. En este algoritmo toda la seguridad descansa en la llave. El principio de encripción de este algoritmo se

basa en dos procesos: confusión y difusión. Entonces el bloque fundamental para la implementación de DES es

una simple combinación de estas técnicas sobre el texto, basadas en la llave. Este proceso se conoce como una ronda.

DES tiene que ejecutar 16 rondas, en las cuales se aplican las mismas técnicas sobre el bloque de texto plano 16

veces. Ver figura 2.1.

Lo que hace el algoritmo es ejecutar operaciones de aritmética y lógica estándar sobre números de 64 bits a lo más.

L a naturaleza repetitiva del algoritmo lo hace ideal para utilizarse en chip de propósito especial.

BOSQUEJO DEL ALGORITMO

DES opera sobre un bloque de 64 bits del texto plano. El primer paso consiste en efectuar una permutación inicial,

luego el bloque se parte en dos: una mitad izquierda y una mitad derecha. Las mitades entonces tienen una longitud

de 32 bits. El siguiente paso es que se ejecuten las 16 rondas. Entonces hay 16 rondas de operaciones idénticas,

llamadas Función F, en la cual los datos se combinan con la llave. Al finalizar las rondas se unen de nuevo las

mitades izquierda y derecha para fonnar el bloque de 64 bits. El último paso es efectuar una permutación final la

cual es el inverso de la permutación inicial.

En cada ronda (fig. 2.2) los bits de la llave se cambian y entonces 48 bits se seleccionan de los 56 bits con que

cuenta la llave. L a mitad derecha del dato se expande a 48 bits a través de una permutación de expansión,

combinada con 48 bits de una llave expandida y conmutada vía una XOR, enviándola a través de 8 cajas-S

produciendo 32 nuevos bits y permutándolos otra vez. Esas cuatro operaciones hacen la Función F. L a salida de la

Función F entonces se combina con la mitad izquierda vía una XOR. El resultado de esas operaciones se convierte

en la nueva mitad derecha; la antigua mitad derecha se convierte en la nueva mitad izquierda. Esta operación se

repite 16 veces, haciendo las 16 rondas de DES.

Si Bi es el resultado de la i-ésima iteración, Li y R i son las mitades izquierda y derecha de Bi, Ki es el bit 48 de la

llave para la ronda i, y F es la función que hace todas las sustituciones y permutaciones y pasándola a través de la

XOR con la llave, entonces una ronda se ve como

Li = R i-1

R i = L i-1 (F(R i-1, Ki)

12

Servicios de Crlptografia

48 bits K (48 bits) 1

I n I

I

L 48 bits

Figura 2.2 Calculo de (R,K)

La Permutación Inicial.

L a permutación inicial ocurre antes de que se efectúe la primera ronda; este transpone el bloque de entrada como se

describe en la tabla 2.1 Esta tabla se lee de izquierda a derecha y de arriba hacia abajo. Por ejemplo la permutación

inicial mueve el bit 58 del texto plano al bit de posición 1, el bit 50 al bit de posición 2, el bit de posición 42 al bit

de posición 3 y así se continúa.

TABLA 2.1 PERMUTACION INICIAL

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 I 59 51 43 35 27 19 I I 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

13

Servicios de Crlptografla

La Transformación de la llave.

Inicialmente la llave DES de 64 bits se reduce a una llave de 56 bits, al ignorar cada octavo bit. Esto se describe en

la tabla 2.2. Estos bits pueden usarse para checar la paridad y asegurar que la llave esta libre de errores. Después de

que la llave de 56 bits se extrae, una llave diferente de 48 bits se genera para cada una de las 16 rondas. Estas sub-

llaves, Ki, se determinan de la siguiente manera.

Primero, la llave de 56 bits se divide en dos mitades de 28 bits, entonces las mitades se rotan circularmente a la

izquierda, ya sea, por uno o dos bits, dependiendo de la ronda. Estos cambios se dan en la tabla 2.3.

TABLA 2.2 PERMUTACION DE LAS LLAVES

S7 49 41 33 2.5 17 9 I S8 S0 ,42 34 26 18 10 2 S9 51 43 35 27 19 I I 3 60 52 44 36 63 S5 47 39 31 23 i5 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4

Después de ser cambiados, 48 de los 56 bits de salidas se seleccionan. Debido a que esta operación permuta el

orden de los bits así como también selecciona un semi-bloque de bits, esta se llama permutación de compresión.

Esta operación provee un semi-bloque de 48 bits. La tabla 2.4 define la permutación de compresión. Por ejemplo,

el bit en la posición 33 de la llave cambiada se mueve a la posición 35 de la salida y el bit en la posición 18 de la

llave cambiada se ignora.

Debido al cambio, un semi-bloque de los bits de la llave se usa en cada sub-llave.

TABLA 2.3 NúMERO DE BITS DE LA LLAVE

CAMBIADOS POR RONDA

Ronda 1 2 3 4 5 6 7 8 9 10 I I 1.2 13 14 I S 16 Ntilnero I 1 2 2 2 2 2 2 I 2 2 2 2 2 2 1

TABLA 2.4. PERMUTACION DE COMPRESI~N

14 17 I I 24 I 5 3 28 15 6 21 10 23 I 9 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 S3 46 42 50 36 29 32

14

Servicios de Crptografia

L a Permutación de Expansión.

Esta operación expande la mitad derecha de la palabra de 32 bits hasta 48 bits. Debido a que esta operación

cambia el orden de los bits así como también repite ciertos bits, se conoce como permutación de expansión. Esta

operación tiene dos propósitos; hacer que la mitad derecha tenga el mismo tamaño que la llave para que se realice la

operación XOR y así proveer un resultado más largo que pueda comprimirse durante la operación de sustitución.

Sin embargo, para ninguno de ellos su propósito es criptográfico. Al permitir que un bit efectúe dos sustituciones, la

dependencia de los bits de salida sobre los bits de entrada se propaga más rápido. Esto se conoce como efecto de

avalancha. DES esta diseñado para alcanzar la condición en la que cada bit del texto cifrado depende de cada bit del

texto plano y de cada bit de la llave. Tan rápido como sea posible.

La fig. 2.3 define la permutación de expansión. Esta es llamada algunas veces la caja E. Por cada bloque de

entrada de 4 bits, el primero y cuarto bits representan dos bits del bloque de salida, mientras que el segundo y tercer

bits representan un bit del bloque de salida. La tabla 2.5 indica la relación entre las posiciones de salida y las

posiciones de entrada. Por ejemplo el bit en la posición 3 del bloque de entrada se mueve a la posición 4 del bloque

de salida, y el bit de la posición 2 1 del bloque de entrada se mueve a las posiciones 30 y 32 del bloque de salida.

Aunque el bloque de salida es más largo que el bloque de entrada, cada bloque de entrada genera un ímico bloque

de salida.

TABLA 2.5. PERMUTACION DE EXPANSIóN

3 2 1 2 3 4 5 4 5 6 7 8 9 8 9 I O 1 1 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 2 1 28 29 28 29 39 3 1 32 1

La Caja- S de Sustitución.

Una vez que la llave comprimida y el bloque expandido han pasado por las XOR, los 48 bits resultantes se

mueven a una operación de sustitución. Las sustituciones se llevan a cabo por ocho cajas de sustitución o cajas S.

Cada caja S tiene una entrada de 6 bits y una salida de 4 bits, hay 8 diferentes cajas. El bloque de 48 bits es dividido

en 8 sub-bloques de 6 bits cada uno. Cada bloque es procesado de manera individual por cada una de las cajas de

manera individual. Entonces el primer bloque es procesado sólo por la caja 1, el segundo bloque es procesado sólo

por la caja 2, y así sucesivamente. Ver la fig. 2.4.

Cada caja S se puede ver como una tabla compuesta por 4 renglones y 16 columnas. Cada entrada a la caja

representa un número de 4 bits. Los 6 bits de entrada a la caja S los cuales serán el renglón y columna que se verá a

la salida. En la tabla 2.6 se muestra todas las ocho cajas S.

15

Setvicios de Cr1ptografia

4 bits de entrada

Decodificador 4 a 16

P

1

ó n

I I

I I I I 4 bits de salida

Figura 2.4 Caja S

Los bits de entrada especifican una entrada en la caja S de una manera particular: Considere una entrada a la caja S

de 6 bits, etiquetadas b l , b2, b3, b4, b5 y b6. Los bits b l y b6 se combinan para formar un número de 2 bits, de O a

3, el cual corresponde a un renglón en la tabla, los bits intermedios b2 a b5, se combinan para formar un número de

4 bits, de O a 15 los cuales corresponden a una columna en la tabla.

Por ejemplo, suponga que la entrada a la sexta caja S es 11001 1. El primero y último bits se combinan para

formar 1 1, el cual corresponde al renglón 3 de la sexta caja S. Los 4 bits intermedios se combinan para formar 1 O0 1 ,

el cual corresponde a la columna 9 de la misma caja S. La entrada bajo el renglón 3, columna 9 de la caja S número

6 es 14. El valor 11 10 es sustituido por 110010.

La caja S de sustitución es el paso crítico en DES. Debido a que en el algoritmo esta operación es no lineal y en

consecuencia no es tan fácil de analizar, en comparación con las operaciones lineales. Entonces podemos reafirmar

que las cajas S dan seguridad a DES.

L a Caja P de Permutación.

Los 32 bits de salida de la caja S de sustitución son permutados de acuerdo a la caja P. Este mapea cada bit a la

entrada a una posición a la salida; en el cual ningún bit se usa doble vez y también ningún bit es ignorado. Esta es

16

Servicios de Criptografia

llamada una permutación convencional o simplemente permutación. La tabla 2.7 muestra a que posición se mueve

cada bit. Por ejemplo, el bit 2 I se mueve al bit 4, mientras que el bit 4 se mueve al bit 3 l. Finalmente el resultado de

la caja P de permutación va a una XOR con la mitad izquierda del bloque de 64 bits inicial.

TABLA 12.6 CAJAS S

Caja-S 1 Caja-S 2

1 4 4 1 3 I 2 1 5 1 1 8 3 1 0 6 1 2 S 9 0 7 15 I 8 1 4 6 1 1 3 4 9 7 2 1 3 1 2 0 S 1 0 0 1 5 7 4 1 4 2 13 1 1 0 6 1 2 1 1 9 5 3 8 3 1 3 4 7 I S 2 8 1 4 1 2 O 1 I O 6 9 1 1 S 4 1 1 4 8 1 3 6 2 1 1 1 5 12 9 7 3 1 0 S O O 1 4 7 1 1 I O 4 13 1 S 8 1 2 6 9 3 2 1 5

15 12 8 2 4 9 I 7 S 1 1 3 14 I O O 6 13 13 8 10 I 3 1 5 4 2 I I 6 7 12 O 5 14 9

Caja-S 3 Caja-S 4

I O O 9 14 6 3 I S 5 1 13 12 7 I I 4 2 8 7 13 14 3 O 6 9 1 0 I 2 8 S I l l 2 4 I S 13 7 O 9 3 4 6 I O 2 8 S 14 1211 15 I 13 8 1 1 5 16 I S O 3 4 7 2 12 1 I O 14 9 13 6 4 9 8 15 3 0 1 1 I 2 12 5 1 0 14 7 I O 6 9 O 1 2 1 1 7 1 3 1 5 1 3 14 5 2 8 4

1 1 0 13 O 6 9 8 7 4 15 14 3 1 1 5 2 1 2 3 1 5 O 6 1 0 1 1 3 8 9 4 5 I I I 2 7 2 1 4

Caja-S 5 Caja-S 6

2 1 2 4 1 7 1 0 1 1 6 8 S 3 15 1 3 0 1 4 9 12 I 1 0 1 5 9 2 6 8 O 13 3 4 1 4 7 S 1 1 1 4 1 1 2 1 2 4 7 13 1 S 0 1 5 I O 3 9 8 6 I O I S 4 2 7 12 9 5 6 I 1 3 14 O 1 1 3 8 4 2 1 1 1 I O 1 3 7 8 1 5 9 1 2 5 6 3 O 1 4 9 1 4 15 S 2 8 12 3 7 O 4 I O 1 1 3 1 1 6

I I 8 12 7 I 1 4 2 1 3 6 15 O 9 I O 4 5 3 4 3 2 1 2 9 5 1 5 1 O l l 14 1 7 6 0 8 1 3

Caja-S 7 Caja-S 8

4 1 1 2 1 4 IS O 8 1 3 3 12 9 7 S 1 0 6 5 13 2 8 4 6 1 5 1 1 I I O 9 3 14 S O12 7 13 O I I 7 4 9 1 1 0 1 4 3 5 12 2 1 5 8 6 1 1 5 13 8 I O 3 7 4 12 5 6 I I O 1 4 9 2

I 4 1 1 1 3 12 3 7 1 4 1 0 1 5 6 8 O S 9 2 7 1 1 4 1 9 12 14 2 O 6 1 0 13 15 3 S 8 6 1 1 13 8 1 4 IO 7 9 S O I S 14 2 3 1 2 . 2 I 14 7 4 I O 8 1 3 I S 12 9 O 3 S 6 I I

Tabla 2.7 CAJA- P DE PERMUTACION

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 I O 2 8 24 14 32 27 3 9 19 13 30 6 22 1 1 4 25

La Permutación Final.

La permutación final es la función inversa de la pennutación inicial y esta se describe en la tabla 2.8. Debe

notarse que las mitades izquierda y derecha no son cambiadas despuks de la ultima ronda de DES; en lugar de eso el

bloque concatenado R16L16 se usa como entrada a la permutación final.

17

Servicios de Cr@tograf/b

Tabla 2.8 PERMUTACION FINAL

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 52 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 50 20 60 28 35 3 43 1 1 51 19 59 27 34 2 42 I 0 48 18 58 26 33 I 41 9 49 17 75 25

Decripción de DES.

(Decodificación de DES)

Para el proceso de decripción se utiliza el mismo algoritmo con que se encriptó el mensaje. La única diferencia es

que las llaves deben usarse en el orden inverso. Esto es, si las llaves de encripción para cada ronda son K1, K2, K3,

. . . . , K16 entonces las llaves para la decripción son K16, . . . . , K3, K2, K1. El algoritmo que genera la llave para

cada ronda es circular también. El cambio de la llave es un cambio a la derecha y el número de posiciones

cambiadas es O, 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1, 2 , 2 , 2 , 2 , 2 , 2 , 1.

Para verificar que realmente se utiliza el mismo algoritmo, invirtiendo el orden de uso de las llaves, y llegar del

texto cifrado al texto plano se hace el análisis de la figura x en la cual el diagrama del lado izquierdo representa el

proceso de encripción y el diagrama del lado derecho representa el proceso de decripción. En el diagrama se puede

ver que, en cada etapa, el valor intermedio del proceso de decripción es igual al correspondiente valor del proceso

de encripción con las dos mitades del valor intercambiadas. Puesto de otra forma, dejemos que la salida de la

i-ésima etapa de encripción sea Li/jRi (Li concatenada con Ri). Entonces la correspondiente entrada a la i-ésima

etapa de decripción es RillLi.

Para verificar lo anterior vayamos a través de los diagramas. Después de la ultima iteración del proceso de

encripción, las dos mitades son intercambiadas, así que la entrada a la etapa IP-1 es R1611L16. La salida de la etapa

es el texto cifrado. Ahora, toma el texto cifrado y úsalo como entrada al algoritmo DES. El primer paso es llevar el

texto cifrado a través de la etapa IP, produciendo la cantidad de 64 bits LdO// Rdo. Pero hemos visto que IP es el

inverso de IP- l. Por lo tanto

LdOll RdO = IP(texto cifrado)

texto cifrado = IP-l(R1611L16)

LdO// RdO= IP(IP-l(R1611L16)) = R1611L16

De esta forma, la entrada a la primera etapa del proceso de decripción es igual a los 32 bits intercambiados de la 160

etapa del proceso de encripción.

Ahora vamos a mostrar que la salida de la primera etapa de del proceso de decripción es igual a los 32 bits

intercambiados de la 160 etapa de encripción. Primero, considerar el proceso de encripción. Vemos que:

18

Servicios de Criptografia

L16 = R15

R16 = L15 + f(R15,K16)

En el lado de la decripción:

Ldl = RdO = L16 = R15

R d l = L dO + f(R dO,K16)

= R16 + f(R15,K16)

= (L15 + f(R15,K16)) + f(R15,K16)

Recordando que la XOR tiene las siguientes propiedades:

[ A + B ] + C = A + [ B + C ]

D + D = O

E + O = E

De esta forma, tenemos Ldl = R15 y R d l = L15 Por lo tanto, la salida de la primera etapa del proceso de

decripción es L15 = R15 la cual es los 32 bits intercambiados de la salida de la 160 etapa de encripción . Esta

correspondencia toma todos los caminos a través de las 16 iteraciones. Podemos fundir este proceso en términos

generales. Para la i-esima iteración del algoritmo de encripción:

Li = Ri- 1

Ri = L i- 1+ f(R i- 1, Ki)

Reordenando términos:

Ri- 1 = Li

L i- I= Ri+ f(Ri- 1 ,Ki) = Ri + f(Li,Ki)

De esta forma, hemos descrito las entradas a la i-esima iteración como una función de las salidas, y esas ecuaciones

confirman las asignaciones mostradas en el lado derecho de la figura x.

Finalmente, vemos que la salida dela ultima etapa del proceso de decripción es ROIJLO. Un intercambio de 32 bits

es ejecutado así que la entrada a la etapa IP- les LOIIRO. Pero

IP- 1 (LOIIRO) = IP- 1 (IP(texto plano)) = texto plano

19

Servicios de Cr&ograf/h

Así el texto plano original es recuperado, demostrando la validez del proceso de decripción DES.

El Uso de una Llave de 56 Bits

Con una longitud de llave de 56 bits, hay 256 posibles llaves lo cual es aproximadamente igual a 7.2 x 1016

llaves. De este modo, por un lado, un ataque de fuerza bruta aparece como impráctico. Suponiendo que en promedio

la mitad del espacio de la llave ha sido recorrida, una simple maquina ejecutando encripción DES por microsegundo

tomaría más de 1000 años romper en romper el código.

Sin embargo, la suposición de una encripción por microsegundo es bastante conservativa. Remontándonos a 1997,

Diffie y Hellman postularon que existía la tecnología para construir un nlaquina paralela con 1 millón de dispositivos

de encripción, cada uno de los cuales podría ejecutar una encripción por microsegundo. Ellos estimaron que el costo

podría ser de alrededor de $ 2 0 millones de dólares en 1997.

Los análisis recientes más rigurosos del problema hechos por Wiener y basados en un ataque con texto plano

conocido. Esto es, se asume que el atacante tiene al menos un par (texto plano, texto cifrado). Wiener tiene cuidado

de proveer los detalles de su diseño.

Wiener reporta en el diseño de un chip que usa técnicas de paralelismo para alcanzar una taza de investigación de

llave de 50 millones de llaves por segundo. Usando costos de 1993, el diseñó un modulo que cuesta $ 100 O0 y

contiene 5 760 chips investigadores de llave. Con su diseño se obtuvieron los siguientes resultados

Costo de la Máquina Tiempo Esperado de Obtención

$ 100 O00 35 horas

$ I O00 O00 3.5 horas

$ 1 0 O00 O00 21 minutos

Además, hay más de un ataque para alcanzar la llave que simplifican el correr a través de todas las posibles llaves. A

menos que texto plano conocido sea provisto, el analista puede ser capaz de reconocer texto plano como texto plano.

Si el mensaje es solo texto plano en Inglés entonces el resultado sale inmediatamente, aunque la tarea de reconocer

Inglés tendría que ser automatizada. Si el mensaje de texto ha sido comprimido antes de la encripción, entonces el

reconocimiento es más dificil. Y si el mensaje es un tipo de dato más general, tal como un archivo numérico, y esté

ha sido comprimido, el problema se vuelve incluso más dificil de automatizar. De este modo, para complementar el

ata que de fuerza bruta, algún grado de conocimiento acerca del texto plano esperado en necesario, y algún medio

automático distinguidor de texto plano de uno confuso es también necesario.

El diseiio Wiener representa la culminación de años de preocupación acerca de la seguridad de DES y puede en

retrospectiva haber tenido un punto de viraje.

20

Servicios de Crptogrrafia

Modos de DES.

Existen cuatro modos de operación: ECB, CBC, OFB y CFB. Los estándares de operación ANSI especifican ECB

y CBC para la encripción, y CBC y n-bit CFB para la autenticación. En el mundo del software comercial el modo

ECB es el más frecuente, aunque es el más vulnerable a los ataques. CBC se usa ocasionalmente, a pesar de que

provee más seguridad.

Modo ECB (ELECTRONIC CODEBOOK)

El modo ECB es la manera más obvia de usar un codificador de texto. Un bloque de texto plano se encripta en un

bloque de texto cifrado. Puesto que el mismo bloque de texto plano siempre se encripta al mismo bloque de texto

cifrado, es teóricamente posible crear un código de texto plano y correspondiente texto cifrado. Sin embargo, si el

tamaíío del bloque es de 64 bits, el registro de códigos tendrá 264 entradas (es mucho, tanto para calcular como para

almacenar). Y recordando que cada llave tiene un registro de códigos.

Este es el modo más fácil para trabajar. Cada bloque de texto plano es encriptado independientemente. No tienes

que encriptar un archivo de manera lineal, sino que, puedes encriptar primero los 10 bloques a la mitad del archivo,

luego los bloques al final del archivo y finalmente los bloques al inicio del archivo. Esto es importante para

encriptar archivos que se accesan aleatoriamente, como una base de datos. Si una base de datos es encriptada en

modo ECB, entonces un registro puede ser agregado, eliminado, encriptado o decriptado independientemente de

cualquier otro registro, asumiendo que cada registro consiste de un número discreto de bloques de encripción. Y el

procesamiento es paralelizable, si tienes múltiples procesadores de encripción, ellos pueden encriptar o decriptar

diferentes bloques sin considerar a cada uno de los otros.

El problema con el modo ECB es que si un criptoanalista tiene el texto plano y el texto cifrado para varios

mensajes, el puede comenzar a recopilar un registro de códigos sin el conocimiento de la llave. Y finalmente ser

capaz de obtener la llave.

Modo CBC (CIPHER BLOCK CHAINING).

Encadena y agrega un mecanismo de retroalimentación a un algoritmo codificador de bloque. El resultado de la

encripción de bloques previos son retroalimentados a la encripción del bloque en turno. En otras palabras, cada

bloque es utilizado para modificar la encripción del siguiente bloque. Cada bloque de texto cifrado es dependiente

no sólo del bloque de texto plano que lo generará sino más bien de todos los bloques previos de texto plano.

En el modo CBC, el texto plano es llevado a una XOR junto con el bloque de texto cifrado previo antes de ser

encriptado. Después de que un bloque de texto plano es encriptado el texto cifrado resultante es también almacenado

en un registro de retroalimentación. Antes de que el siguiente bloque de texto plano sea encriptado, este es llevado a

una XOR con el registro de retroalimentación para volverse la siguiente entrada a la rutina de encripción. El texto

21

Servicios de Criptograf/b

cifrado resultante es otra vez almacenado en el registro de retroalimentación, para ser llevado a la XOR con el

siguiente bloque de texto plano y así hasta que finalice el mensaje. La encripción de cada bloque depende de todos

los bloques previos.

La decripción es sólo directa. Un bloque de texto cifrado es decriptado normalmente y también salvado en el

registro de retroalimentación. Después el siguiente bloque es decriptado, este es llevado a una XOR con los

resultados del registro de retroalimentación. Luego el siguiente bloque de texto cifrado es almacenado en el registro

de retroalimentación y así sucesivamente, hasta el final del mensaje.

Matemáticamente esto se ve como:

Ci = Ek (Pi ( Ci-1 )

Pi = Ci-1 ( Dk ( C i )

Modo OFB (OUTPUT-FEEDBACK).

El modo OFB es un método de correr un cifrador de bloque como un cifrador orientado a bit síncrono. Este es

similar al modo CFB, excepto que n bits del bloque previo de salida se mueven a ocho posiciones más a la derecha

de la cola. L a decripción es el reverso de este proceso. Este es llamado n-bit OFB. En ambos lados la encripción y

la decripción, el algoritmo de bloque es utilizado en su modo de encripción. Llamado algunas veces

retroalimentación interna, debido a que el mecanismo de retroalimentación es independiente de ambos. las filas de

bits de texto plano o texto cifrado.

Si n es el tamaño de bloque del algoritmo, entonces los n-bits OFB se ven como

Ci = Pi ( Sii Si = Ek(S(i-1))

Pi = Ci ( Sii Si = Ek(S(i-1))

Si es el estado, el cual es independiente de cualquiera de los dos el texto plano o el texto cifrado.

Una agradable característica del modo OFB es que la mayoría del trabajo puede ocurrir fuera de línea, antes de que

el mensaje en texto plano incluso exista. Cuando el mensaje finalmente llega, este puede ser llevado a una XOR

con la salida del algoritmo para producir el texto cifrado.

Modo CFB (CIPHER-FEEDBACK).

En el modo CBC, la encripción no puede comenzar hasta que el bloque completo de datos sea recibido. Esto es un

problema en algunas aplicaciones de red. En un ambiente seguro de red una telminal debe ser capaz de transmitir

cada carácter al host como este es introducido. Cuando el dato ha sido procesado en bloques del tamaño de un byte,

el modo CBC completamente no l o hará.

22

Servicios de Crlptografia

En el modo CFB, los datos pueden ser procesados en unidades más pequeñas que el tamaño del bloque. Puedes

encriptar datos un bit a la vez usando i bit CFB, aunque utilizando una encripción completa de un bloque cifrado

aparece como una gran cantidad de trabajo, un cifrado orientado a bit parece una mejor idea. También se puede usar

CFB de 64 bits o cualquier CFB de n bits donde n es menor o igual que el tamaño de bloque.

Un algoritmo de bloque en modo CFB opera sobre una cola de un tamaño igual al tamaño del bloque de entrada.

Inicialmente la cola se rellena con un IV, como en el modo CBC. L a cola es encriptada y los ocho bits más a la

izquierda del resultado son llevados a una XOR con el primer carácter de 8 bits del texto plano para volverse el

primer carácter de 8 bits del texto cifrado. Este carácter puede ahora transmitirse. Los mismos ocho bits se mueven

también más a la derecha ocho bits de posición en la cola, y todos los demás bits se mueven ocho a la izquierda.

Los ocho bits más a la izquierda son descartados. Luego el siguiente carácter del texto plano es encriptado de l a

misma manera; La decripción es el inverso de este proceso. Sobre ambos lados la encripción y la decripción; el

algoritmo de bloque es utilizado en su modo de encripción.

Si el tamafio del bloque del algoritmo es n, entonces CFB de n bits se mira como

Ci = Pi ( Ek( Ci-1 )

Pi = Ci ( Ek( Ci-1 )

Como el modo CBC, el modo CFB enlaza los caracteres del texto plano juntos tal que el texto cifrado depende de

todo el texto plano precedente.

ALGORITMO DE ENCRIPCIÓN DE DATOS INTERNACIONAL

(INTERNATIONAL DATA ENCRIPTION ALGORITHM, IDEA)

UNA OJEADA A IDEA

Al igual que DES, IDEA en un cifrador de bloque; este opera sobre bloques de 64 bits. La llave tiene una

longitud de 128 bits. Y el mismo algoritnlo se usa tanto para la encripci6n como para la decripción

También utiliza la confusión y difusión como sus principales técnicas de encripción. La filosofía de diseño detrás

del algoritmo es uno de "una mezcla de operaciones de diferentes grupos algebraicos". Tres grupos algebraicos se

mezclan, y todos ellos son fácilmente implementados en software y hardware:

- XOR

- Adición módulo 2 . ... - Multiplicación módulo 2 16 + 1. (Esta operación puede verse como las cajas-S de IDEA).

Todas las operaciones lo hacen sobre sub-bloques de 16 bits. Debemos mencionar que en este algoritmo no hay

permutaciones, únicamente las operaciones mencionadas.

23

Servicios de Crlptografia

Descripción de IDEA.

Este algoritmo maneja bloques de 64 bits, pero a diferencia de DES, este divide el bloque en 4 sub-bloques de 1 6

bits: los bloques se denotan X1, X2, X3 y X4. Estos cuatro sub-bloques convierten la entrada en la primera ronda

del algoritmo. El número total de rondas es de ocho. En cada ronda los cuatro sub-bloques se pasan a través de

XOR , luego se suman y multiplican con algún otro y con seis sub-llaves de 16 bits. Entre las rondas, el segundo y

tercer sub-bloque son intercambiados. Al final los cuatro sub-bloques se combinan con cuatro sub-llaves en una

transformación de salida.

Para cada ronda la secuencia de eventos es la siguiente:

Se multiplica X1 y la primer sub-llave.

Se suma X2 y la segunda sub-llave.

Se suma X3 y la tercer sub-llave.

Se multiplica X4 y la cuarta sub-llave.

Se pasa a través de una XOR el resultado de los pasos (1) y ( 3 ) .

Se pasa a través de una XOR el resultado de los pasos (2) y (4).

Se multiplica el resultado del paso (5) con la quinta sub-llave.

Se suman los resultados de los pasos (6) y (7).

Se multiplican el resultado del paso ( X ) con la sexta sub-llave.

Se suman los resultados de los pasos (7) y (9).

Se pasan a través de una XOR los resultados de los pasos (1) y (9).

Se pasan a través de una XOR los resultados de los pasos (3) y (9).

Se pasan a través de una XOR los resultados de los pasos (2) y (1 O).

Se pasan a través de una XOR los resultados de los pasos (4) y (10).

L a salida de la ronda son los cuatro sub-bloques que son los resultados de los pasos (1 l) , (12), (13) y (14)

Intercambia los bloques internos (excepto para la última ronda) y esa es la entrada a la siguiente ronda.

Después de la octava ronda, hay una transfornlación de salida final:

Multiplica X1 y la primera sub-llave.

Suma X2 y la segunda sub-llave.

Suma X3 y la tercera sub-llave.

Multiplica X4 y la cuarta sub-llave.

Finalmente los cuatro sub-bloques son reagregados para producir el texto cifrado.

24

Servicios de Criptografia

Crear las llaves es también fácil. El algoritmo usa 52 de ellas (seis por cada una de las ocho rondas y cuatro más

para la transformación de salida). Primero la llave de 128 bits es dividida en ocho subllaves de 16 bits. Esas son las

primeras ocho subllaves para el algoritmo (las seis para la primera ronda y las primeras dos para la segunda).

Entonces la llave se rota 25 bits a la izquierda y otra vez se divide en ocho subllaves.

Las primeras cuatro subllaves se usan en la segunda ronda, las últimas cuatro subllaves se usan en la tercera ronda.

La llave se rota otros 25 bits a la izquierda para las siguientes ocho subllaves y así hasta finalizar el algoritmo.

La decripción es exactamente lo mismo, excepto que las subllaves son invertidas y ligeramente diferentes. Las

llaves de decripción son, ya sea, el inverso multiplicativo o el inverso aditivo de las subllaves de encripción. El

cálculo de ellas toma algo de tiempo hacerlas, pero sólo se tiene que hacer para cada subllave de decripción.

HASH Y MENSAJES DIGERIDOS

Introducción

Una función Hash H(M) unidireccional opera en mensajes de longitud arbitraria M, y regresa una longitud fija del

mensaje : 11 = H(M).

Muchas hnciones pueden procesar una entrada de longitud variable y la regresan con longitud fija. pero las

funciones Hash tienen como característica adicional que es unidireccional.

Especificada M, es fácil para computar h.

Especificada h, es dificil de computar M, tal como H(M) = h.

Especificada M, es dificil encontrar otro mensaje M’ tal como H(M) = H(M’).

Sin embargo; en algunas aplicaciones la unidireccionalidad es insuficiente, es necesario un requerimiento

adicional, llamado resistencia a la colisión.

Longitud de las funciones Hash unidireccionales

El Instituto Nacional de Estándares y Tecnología (NIST), en el Estándar de Seguridad Hash (SHS), usa 160 bits para

el valor Hash. El siguiente método ha sido propuesto para generar un Hash largo:

Generar el valor Hash del mensaje, usando la hnción Hash unidireccional.

Calcular el valor Hash para el mensaje.

Generar el valor Hash de la concatenación del mensaje y el valor Hash.

Crear un Hash largo, consistiendo del valor Hash generado en el paso (1 ) concatenado con el valor Hash generado en

el paso (3).

25

Servicios de Cr1ptografia

Repetir los pasos (1) al ( 5 ) , hasta terminar.

Función Hash Unidireccional

No es fácil diseíiar una función que acepte una entrada de longitud arbitraria, ni mucho menos hacerlo un una

dirección. En la realidad, las funciones Hash unidireccionales son construidas a partir de la idea de la función de

compresión. Esta función unidireccional tiene a la salida valores Hash de longitud n, especificada a la entrada alguna

m de longitud larga. Las entradas a la función de compresión es un bloque de mensaje y a la salida bloques previos

de texto, como se muestra en la sig. f-igura hi = f(Mi , hi - 1).

Snefru

Snefm, es una función Hash unidireccional diseíiada por Ralph Merkle. Primeramente el mensaje es seccionado en

bloques de 512-m de longitud (m es la longitud del valor Hash). Si la salida es un valor Hash de 128 bits, entonces

el bloque restante será de 384 bits de largo.

Los primeros m bits H’s de salida son el Hash del bloque, el resto es descartado. El siguiente bloque es

aíiadido al Hash del bloque previo y se procede a calcular su valor Hash nuevamente. (El bloque inicial es aiiadido a

una cadena de ceros). Después los primeros m bits del último bloque (si el mensaje aparece en un número largo de

bloques, se usan ceros para rellenar el último bloque) son anexados a una representación binaria de la longitud del

mensaje.

La función H esta basada en E, con una función reversible del bloque cifrado. Esta opera en bloques de 5 12

bits. H, son los Últimos m bits de la salida de E función XOR con los primeros m bits de la entrada de E. La

seguridad de Snefm reside en la función E, con datos aleatorios en distintos pasos. Cada paso se compone de 64

partes aleatorias. En cada parte un byte del dato es usado en la entrada de la caja S, a la palabra de salida de la caja S

se le aplica la función XOR con las dos próximas palabras del mensaje.

26

Servicios de Cuptogafia

MD2

MD2, es otra función Hash unidireccional diseñada por Ron Rivest. La seguridad de MD2 depende de las

permutaciones aleatorias sobre los bytes. Esta permutación es fija y depende de los dígitos de (SO, S I , S2, . . . ,

S255) la permutación, para formar un Hash del mensaje M se lleva a cabo lo siguiente:

Rellenar el mensaje con y bytes de valor y dando como resultado mensajes múltiplos de 16 bytes de longitud.

Aiiadir al byte 16 del mensaje el chequeo de suma.

Inicializar un bloque de 48 bytes: XO, XI, X2, . . . X47. Establecer los primeros 16 bytes de X a O, los segundos 16

bytes de X con los primeros 16 bytes del mensaje, y los últimos 16 bytes de X serán los primeros 16 bytes de X

función XOR con los segundos 16 bytes de X.

La función de compresión es:

t = O

for j = O a 17

f o r k = O a 47

t = Xk XOR St

X k = t

t = ( t + j ) módulo 256

Establecer los segundos 16 bytes de X como los segundos 16 bytes del mensaje, y los terceros 16 bytes de X serán

los primeros 16 bytes de X función XOR segundos 16 bytes de X. Ejecutar el paso (4). Repetir los pasos (5) y (4)

con todos los mensajes de 16 bits.

Los primeros I6 bytes de X son la salida.

MD4

MD4, es una función Hash unidireccional diseiiada por Ron Rivest. El algoritmo produce un Hash de 128 bits o

mensaje clasificado, del mensaje de entrada.

Los propósitos del algoritmo de Rivest son:

Es computacionalmente infactible encontrar para dos mensajes diferentes, a los que se les aplique la función Hash,

un mismo valor. Es más eficiente a los ataques.

La seguridad de MD4 no está basada en la suposición.

MD4 es satisfactorio en implementaciones de software de alta velocidad. Esta basado en simples manipulaciones de

bit en operaciones de 32 bits.

MD4 esta optimizado para microprocesadores Intel.

27

Servicios de Cr@tografia

MD5 (Digestor de Mensajes )

Es una versión mejorada de MD4, aunque es más complejo que MD4, su diseño es similar y también produce un

Hash de 128 bits. MD5 procesa el texto de entrada en bloques de 5 12 bits, divididos en 16 subbloques de 32 bits. La

salida del algoritmo es un conjunto de 4 bloques de 32 bits, los cuales se concatenan para formar un valor Hash de

128 bits.

Descripción de MD5.

Anexar bits de relleno.

El mensaje se rellena hasta que su longitud sea congruente con 448 módulo 5 12 (longitud = 448 módulo 512). Esto

es, la longitud del mensaje a rellenar es 64 bits menor que un entero múltiplo de 512 bits. Los bits de relleno se

agregan siempre aún cuando el mensaje sea de la longitud deseada. Por ejemplo si el mensaje tiene una longitud de

448 bits a este se le agregan 512 bits hasta llegar a una longitud de 960 bits. Entonces, el número de bits de relleno

esta en el intervalo de 1 a 5 12.

El relleno consiste de agregar un bit 1 seguido de la cantidad necesaria de bits 0.

Anexar la longitud.

Una representación de 64 bits con-espondiente a la longitud en bits del mensaje original (antes del relleno) es

anexado al resultado del paso I . Si la longitud original es mayor que 2'j4, entonces solamente los 64 bits de más bajo

orden son utilizados. Por lo tanto, el campo contiene la longitud del mensaje original modulo 264.

El resultado de los primeros dos pasos lleva un mensaje el cual tiene una longitud que es múltiplo entero de 5 12

bits. De igual forma el resultado es un múltiplo de 16 palabras de 32 bits. Dejemos que M(O,l,.,N-I) denote las

palabras de un mensaje resultante con N un entero múltiplo de 16. Entonces N = L x 16.

Inicializar un Buffer MD.

Un buffer de 128 bits es utilizado para tomar los resultados inicial y final de la función Hash. El buffer puede ser

representado como 4 registros de 32 bits. Estos son inicializados a los siguientes valores hexadecimales,

A = OX01234567

B = OX89abcdef

C = OXfedcba98

28

Servicios de Criptografia

D = OX765432 1 O

Procesar el Mensaje en Bloques de 512 Bits (16 palabras).

En este caso el modulo principal del algoritmo consiste de 4 “rondas” de procesamiento; este módulo esta

etiquetado como HMD5 en la figura. Las cuatro rondas tienen una estructura similar, pero cada una es una función

lógica primitiva diferente, referidas como F, G, H é I. En la figura las cuatro rondas están etiquetadas como fF, f(;, f,,

y f, . Para indicar que cada una de las rondas tiene la misma estructura funcional general, f, pero dependiendo de una

función primitiva diferente (F, G, U, I).

Nota que cada ronda toma como entrada el bloque de S12 bits que se esta procesando (Yq) y el calor del buffer

ABCD de 128 bits y luego actualiza el contenido del buffer. Cada ronda toma también un cuarto de una tabla

T[1,2,..,64] de 64 elementos construida de la función seno. El i-ésimo elemento de T, denotado por T[i], tiene el

valor igual a la parte entera de 2” x abs(sen(i)) donde i esta en radianes. Ya que, abs(sen(i)) es un número entre O y

1, cada elemento de T es un entero que puede representado por 32 bits.

De manera general para los bloques Yt, el algoritmo toma Yq y un valor digerido intermedio MDq como entrada.

MDq se coloca en un buffer ABCD. La salida de la cuarta ronda se agrega a MDq para producir MDq+. La adición

es hecha de manera independiente para cada una de las cuatro palabras en el buffer con cada una de las

correspondientes palabras en MDq, usando adición módulo 232.

Salida.

Después de que todos los L bloques de 521bits se han procesado, la salida de la L-ésima etapa es el mensaje

digerido de 128 bits.

Rondas de MD5.

Cada ronda consiste de una secuencia de 16 pasos operando sobre el buffer ABCD. Cada paso es de la forma:

a t b + CLS,a + g(b,c,d)+ X(k] + T[i])

donde

a,b,c,d = las cuatro palabras del buffer en un orden específico que varia a través de los pasos.

g = una de las funciones primitivas F,G,H.I.

CLS, = Corrimiento circular a la izquierda del argumento de 32 bits por S bits:

X[k] = M[q x 16 +k] = k-ésima palabra de 32 bits en el q-ésimo bloque de 52 bits del mensaje.

29

Servicios de Cr@tograrj:a

T[i] = La i-ésima palabra de 32 bits en la matriz T:

+ = adición modulo 232.

Una de las cuatro funciones lógicas primitivas es para una de las 4 rondas del algoritmo. Cada función primitiva

toma tres palabras de 32 bits como entrada y produce una palabra de salida de 32 bits. Cada función ejecuta un

conjunto de operaciones lógicas sobre los bits; esto es, el n-ésimo bit de la salida es una función del n-ésimo bit de

las tres entradas. Las funciones se pueden resumir como sigue:

Ronda Función primitiva

Los operadores lógicos están representados por

g(b,c,d)

(boc) v (b’od)

(bod) v (cod’)

b O c 8 d

c 8 (bod’)

O = XOR

= AND

v = OR “ - NOT

La función F es una función condicional: si b entonces c otro d. Similarmente La función G puede establecerse

de manera similar: si d entonces b otro c. La función H produce un bit de paridad

El arreglo de palabras de 32 bits X[O,1.,15] toma el valor del bloque de entrada de 5 12 bits a ser procesado. Nota

que cada ronda esta compuesta por 16 pasos para un total de 64 pasos. Cada palabra de entrada de 32 bits es utilizada

cuatro veces, una vez por ronda y cada una de las palabras de 32 bits, elementos de T, es utilizada exactamente una

vez. También nota que para cada paso, sólo uno de los cuatro bytes del buffer ABCD es actualizado. Por lo tanto,

cada byte del buffer se actualiza 16 veces durante la ronda y luego una vez más al final para dar un total de 17

actualizaciones para producir la salida final de este bloque.

Seguridad del Algoritmo Hash (SHA)

El instituto nacional de estándares y tecnología (NIST), junto con NSA, diseñaron el algoritmo de seguridad Hash

(SHA) para usar con el estándar de firnla digital. (El estándar es el estkndar de seguridad Hash (SHS); SHA es el

algoritmo usado en el estándar).

30

Servicios de Cr1ptografia

Un estándar de procesamiento de información federal (FIPS) es propuesto para un estándar de seguridad

Hash (SHS). Esta propuesta especifica un algoritmo de seguridad Hash (SHA) para usarse con el estándar propuesto

para firma digital. Adicionalmente, para aplicaciones que no requieren una firma digital, el algoritmo de seguridad

Hash será usado siempre que el algoritmo de seguridad Hash sea requerido para aplicaciones federales.

Cuando un mensaje de longitud <264 bits de entrada, el‘ SHA produce una salida de 160 bits llamado un

mensaje clasificado. El mensaje clasificado es la entrada al DSA, el cual computa l a firma del mensaje. Es suficiente

el firmado del mensaje clasificado, del que el mensaje improvisa la eficiencia del proceso. Aunque el mensaje

clasificado es usualmente más pequeño que el mensaje. El mismo mensaje clasificado puede ser obtenido para

verificar el firmado cuando la versión recibida del mensaje es usada como entrada de SHA. El SHA es llamado

seguro, aunque es infactible para disecarlo computacionalmente para recuperar un mensaje correspondiente cuando

se tiene el mensaje clasificado o para buscar dos mensajes diferentes que genera el mismo mensaje clasificado.

Descripción de SHA

Primero el mensaje es rellenado para hacerlo múltiplo de 5 12 bits. El rellenado es exactamente igual que el MD5:

primero aparece un 1, y muchos ceros si es necesario para formar 64 bits, y finalmente los 64 bits representan la

longitud del mensaje antes de rellenarlo. Cinco variables de 32 bits son necesarias para el algoritmo que produce un

Hash de 160 bits:

A = OX67452301

B = OXefcdab89

C = OX10325476

E = OXc3d2e 1 f0

ALGORITMOS DE LLAVE PUBLICA

Introducción

El concepto de criptografía de llave pública h e inventado por Whitfield Dif‘tie y Martin Hellman, e

independientemente por Ralph Merkle. Su contribución a la criptografía fue la noción de que las llaves están en

pares, encriptar y decriptar y eso pudo ser factible para generar una llave a partir de l a otra. Diffie y Hellman

presentaron primero este concepto en la Conferencia Nacional de Computadoras en 1976, pocos meses después se

publicó “Nuevas Direcciones en Criptograh” . L a primera contribución de Ralph Merkle aparece hasta 1978.

Desde 1976, numerosos algoritmos de criptografia de llave pública han sido propuestos. Muchos de estos son

inseguros, sin embargo, de estos considerados seguros, muchos son imprácticos. Además, uno u otro de ellos tienen

una llave extensa, o el texto cifrado es más extenso que el texto sencillo.

31

Servicios de Cr@tografLa

Sólo algunos algoritmos son seguros y prácticos. De estos algoritmos de llave pública, unos son adecuados para

distribución de llave, otros son adecuados para encripción, no obstante, otros sólo son usados para firmado digital.

Sólo tres algoritmos trabajan adecuadamente para encripción y firmado digital: RSA, El Gama1 y Rabin. Sin

embargo también son lentos para soportar encripción de un volumen de datos.

Desde el punto de vista de la criptografía el desarrollo de la criptografía de llave pública es quizás la revolución más

grande existente en la historia de la criptografía. Previo al desarrollo de la criptografia de llave publica, los métodos

más utilizados eran la sustitución y la permutación. Estos métodos eran generalmente a mano lo cual explica su uso

durante bastante tiempo. Con la llegada de el procesamiento por computadora se pudo llegar al desarrollo de nuevos

algoritmos hasta llegar a la criptografia de llave pública.

L a criptografía de llave pública da una salida radical de aquellas que han venido después. Los algoritmos de llave

pública están basados en funciones matemáticas más que en sustituciones y permutaciones. Pero más importante, la

criptografia de llave pública es asimétrica, envolviendo el uso de dos llaves separadas, en contraste a la encripción

convencional, la cual utiliza sólo una llave. El uso de dos llaves tiene profundas consecuencias en las áreas de

confidencialidad, distribución de llaves y autenticación.

El concepto de criptografía de llave pública envuelto por un intento de atacar dos de los más difíciles problemas

asociados con la encripción convencional el primero de ellos es la distribución de las llaves.

L a distribución de llaves bajo l a encripción convencional requiere ya sea (a) que los dos usuarios a comunicarse

compartan ya una llave, la cual de alguna manera ha sido distribuida, o (b) el uso de un centro distribuidor de llaves.

Esto Último rompe con el requerimiento de poder mantener la llave conlpletamente en secreto sobre el propio canal

de comunicación.

El segundo problema es el uso de las firmas digitales. Se plantea el problema de que todo tipo de mensajes

electrónicos y documentos necesitan incluir el equivalente de las firmas incluidas en los documentos en papel. Se

necesita un método para que todas las partes estén satisfechas, a l poder asegurar que un documento ha sido enviado

por determinada persona. Esto es un requerimiento más amplio que el de la autenticación.

Diffie y Hellman alcanzaron un rompimiento maravilloso en 1976 al alcanzar un método que solucionaba ambos

problemas y que era radicalmente diferente de todas las aproximaciones previas a la criptografía.

CRIPTOSZSTEMA DE LLAVE PúBLICA.

En este tipo de encripción es posible desarrollar un algoritmo criptográfico que cuente con una llave para la

encripción y una llave diferente, pero relacionada, para la decripción. Además, estos algoritmos tienen las siguientes

características importantes:

Es conlputacionalmente infactible determinar la llave de decripción dado solo el conocimiento del algoritmo de

encripción y la llave de encripción .

32

Servicios de Cripfografia

En adición, algunos algoritmos también exhiben las siguientes características:

Algunas de las dos llaves relacionas pueden usarse para la encripción, mientras que la otra es utilizada para la

decripción.

En la figura 3.1 se ilustra el proceso de encripción de llave pública. Los pasos básicos son los siguientes:

1 .-Cada sistema final en una red genera un par de llaves pasa usarse en la encripción y decripción de

mensajes que el recibirá.

2.-Cada sistema publica su llave de encripción al colocarla en un registro público o archivo. Esta es la llave

pública. La llave complementaria se mantiene secreta.

3.-Si A desea enviar un mensaje a B, este encripta el mensaje usando la llave pública de B.

4.-Cuando B recibe el mensaje, este lo decripta usando la llave privada (secreta) de B. Ningún otro receptor

puede decriptar el mensaje porque únicamente B conoce la llave privada de B.

VI: Criptoanalista L b

I ~

Mensaje hente I Encriptar x b Y + Decriptar

X Destino

A A

KU, KRb

Par de llaves Fuente

Figura 3.1 Criptosistema de Llave Pública: privacidad.

Con este método, todos los participantes tienen acceso a las llaves públicas, y las llaves privadas son generadas

localmente por cada participante y por lo tanto se necesita que nunca sean distribuidas. Tanto como un sistema

controla su llave privada, su comunicación entrante es segura. En cualquier instante, un sistema puede cambiar sus

llave secreta y publicar la llave pública acompaíiante sustituyendo la llave pública anterior.

Analizando los elementos esenciales del esquema de encripción de llave pública, usando la figura 3.1. Existe

alguna fuente para el mensaje, la cual produce un menaje en texto plano, X=[Xl,X2,..,XM]. Los M elementos de X

son letras en algún alfabeto finito. Se desea que el destino del mensaje sea B. B genera un par de llaves relacionadas:

33

Servicios de CrIptograKa

una llave pública KUb, y una llave privada KRb, En donde KRb es secreta, conocida sólo por B, donde KUb esta

permitida públicamente, y por lo tanto accesible para A.

Con el mensaje X y la llave de encripción KUb como entrada, A forma el texto cifrado Y=[Y 1 ,Y2,....,YN]:

Y = E KUb(X)

El receptor deseado, en posesión de la llave privada complementaria, es capaz de invertir la transformación:

X = D KRb(Y)

Un oponente, observando Y teniendo acceso a KUb, pero no teniendo a KRb, debe intentar recuperar el X y10

KRb. Se asume que el oponente tiene conocimiento de los algoritmos de encripción (E) y decripción (D). Si el

oponente está interesado sólo en esté mensaje en particular, entonces el enfocará su esfuerzo en recuperar X al

generar un texto plano estimado X’. Frecuentemente, sin embargo, el oponente está interesado en ser capaz de leer

mensajes futuros también, en cuyo caso se hace un intento de recuperar KRb al generar un KR’b estimado.

Mencionamos al principio que alguna de las dos llaves relacionadas puede usarse para la encripción. Esto habilita a

que un esquema de criptografía un poco mejor sea implementado. La figura 3.2 muestra el uso de la encripción de

llave pública para proveer la autenticación:

Y = E KUa(X)

X = D KRa(Y)

En este caso, A prepara un mensaje para B y lo encripta usando la llave privada de A antes de transmitirlo. B

puede decriptar el mensaje usando la llave pública de A. Debido a que el mensaje fue encriptado con la llave privada

de A, solamente A podría encriptar el mensaje. Por lo tanto, el menaje encriptado en total sirve como una firma

digital. En adición, es imposible alterar el mensaje sin accesar a la llave privada de A, así el mensaje es autenticado

en términos de la hente y de la integridad de los datos.

En la figura 3.2, el mensaje entero es encriptado, el cual aunque valida a ambos autor y contenido, requiere una gran

cantidad de almacenamiento. Cada documento debe ser mantenido en texto plano para usarse en propósitos

prácticos. También una copia de texto cifrado debe mantenerse de tal forma que el contenido original pueda ser

verificado en caso de una disputa. Una manera más efectiva de alcanzar el mismo resultado es encriptar un pequeño

bloque de bits que es una función del documente. Tal bloque, llamado autenticador, debe tener la propiedad de que

sea infactible cambiar el documento sin cambiar el autenticador. Si el autenticador es encriptado con la llave privada

del emisor, esté sirve como una firnla que verifica origen, contenido y secuencia.

34

Servicios de Criptografia

Criptoanalista 1 I?Ra

Mensaje fuente b Decriptar ___* Destino X

Par de llaves

Figura 3.2 Criptosistema de Llave Pública: Autenticación

Es importante enfatizar que el proceso de encripción descrito no provee confidencialidad. Esto es, el mensaje que se

esta enviando esta protegido contra el intento de cualquier tipo de alteración pero no esta protegido de que pueda ser

leído por algún espía. Esto es obvio en el caso de una firma basada en la porción de un mensaje, ya que el resto del

mensaje es transmitido sin encriptar. Incluso en el caso de la encripción completa no hay protección o

confidencialidad porque cualquier observador puede decriptar el mensaje al usar la llave pública del emisor.

Es posible, sin embargo, proveer a ambas la autenticación y confidencialidad por un doble uso del esquema de

llave pública:

En este caso hemos comenzado como antes por encriptar un mensaje, usando la llave privada del emisor. Esto

provee la firma digital. En seguida encriptamos otra vez, usando la llave pública del receptor. El texto cifrado final

puede solamente ser decriptado por el receptor deseado, quien solamente tiene la llave privada par. Entonces la

confidencialidad es provista. La desventaja de esté método es que el algoritmo de llave publica, el cual es complejo,

debe aplicado cuatro veces en vez de dos en cada comunicación.

Los requerimientos que debe cumplir un algoritmo de llave pública son los siguientes:

1. Es computacionalmente fácil para una parte B generar un par de llaves.

35

Servicios de Crlptografia

2. Es computacionalmente fácil para un emisor A, conocer la llave pública y el mensaje a ser encriptado, M, para

generar el texto cifrado correspondiente:

3. Es computacionalmente fácil para el receptor B decriptar el texto cifrado resultante usando la llave privada para

recuperar el mensaje original:

4.- Es computacionalmente infactible para un oponente, conociendo la llave pública, K,,, determinar la

llave privada, ICR,.

5.- Es computacionalmente infactible para un oponente, conociendo la llave pública, KUb, y un texto

cifrado, C, recuperar el mensaje original, M.

6.- Las hnciones de encripción y decripción pueden aplicarse en ambos ordenes:

M = EKUb[DKRb(M)I

SEGURIDAD DE LOS ALGORITMOS DE LLAVE PUBLICA

Los algoritmos de llave pública están diseñados para resistir ataques al texto plano seleccionado. La seguridad esta

basada en la dificultad de deducir la llave secreta a partir de la llave pública y la dificultad de deducir el texto plano

del texto cifrado. Sin embargo, la mayoría de los algoritmos de llave pública son particularmente susceptibles a los

ataques del texto cifrado.

En sistemas donde la operación de firmado digital es l a inversa de la operación de encripción, este ataque es

imposible de prevenir a menos que diferentes llaves sean usadas para encripción y firmado. Es importante mirar el

sistema como un todo y no como partes individuales. Los buenos algoritmos de llave pública son diseñados para que

varias partes puedan decriptar mensajes arbitrarios generados por otras partes, el protocolo de la prueba de identidad

es un ejemplo.

C R E A C I ~ N DE LA LLAVE PÚBLICA A PARTIR DE LA LLAVE PRIVADA

Para obtener una secuencia normal empacada, tornar una secuencia empacada superincrementada, por ejemplo 12, 3,

6, 13, 27, 52) multiplicar todos los valores por un número 11, módulo m. El módulo puede ser un número mayor que

36

Servicios de Crptografj;7

la suma de todos los números en l a secuencia; por ejemplo, 105. El multiplicador no tiene factor común con el

módulo: por ejemplo, 3 1. La secuencia n o m d

2*31 módulo 105 = 62

3*3 1 módulo 105 = 93

6*3 1 módulo 105 = 8 1

13*31 módulo 105 = 88

27*31 módulo 105 = 102

52*31 módulo I05 = 37

L a secuencia empacada superincrementada es la llave privada y la secuencia normal empacada es la llave

pública.

Encripción

Para encriptar un mensaje binario, primero separar bloques iguales de items en la secuencia. Entonces un uno indica

que el item está presente y un cero que está ausente, y computar el peso de cada bloque, por ejemplo para el mensaje

=011000 110101 101110

O 1 1000 corresponde a 93 + 8 1 = 174

110101 corresponde a 62 + 93 + 88 + 37 = 280

101 110 corresponde a 62 + 81 + 8 8 + 102 = 333

el texto cifrado será 174,280,333.

Decripci6n

Para decriptar el mensaje, primero determinar n’ de n(n-1) = 1 (módulo m), multiplicar cada valor del texto cifrado

por n- 1 módulo m, y particionar.

En el ejemplo, el mensaje incrementado es (2, 3, 6, 13, 27, 5 2 ) m es igual a 105 y n es igual a 31. El mensaje del

texto cifrado es 174,280,333. En este caso 11- 1 es igual a 61, así los bloques del texto cifrado multiplicados por 61

módulo 105 se obtiene

174*61 módulo 105 = 9 = 3 + 6 que corresponde a O 1 1 O00

280*61 módulo 105 = 70 = 2 + 3 + 13 + 52 que corresponde a 1 1 O 10 1

333*61 módulo 105 = 48 = 2 + 6 + 13 + 27 que corresponde a 1 O 1 1 1 0

37

Servicios de Criptografia

el texto sencillo recuperado es O1 1000 11010 1 1 O 11 10.

RSA

De todos los algoritmos de llave pública propuestos, RSA es con mucho el más fácil de comprender e implementar

(Martin Gardbes publicó la primera descripción del algoritmo “Juegos Matemáticos” en una columna en American

Scientific). También es el más popular. Nombrado por sus tres inventores - Ron Rivest, Adi Shamir, y Len Adleman.

El esquema RSA es un cifrador de bloque en el cual el texto plano y el texto cifrado son enteros entre O y 11- 1 para

algún n. Debido a que este es el método más ampliamente aceptado para la criptografía de llave pública lo

describiremos a continuación.

DESCRIPCI~N DE RSA.

El esquema hace uso de una expresión con funciones exponenciales. El texto plano se encripta en bloques, en

donde cada bloque tiene un valor binario menor que algún número n. Los procesos de encripción y decripción son de

la siguiente forma, para algún bloque de texto plano M y un bloque de texto cifrado C:

C = M‘ módulo n

M = C‘ módulo n = (M‘)’ módulo n = MCd módulo n

Ambos el receptor y el emisor deben conocer el valor de n. El emisor conoce el valor de c, y sólo el receptor

conoce el valor de d. Entonces, esto es un algoritmo de encripción de llave pública con una llave pública de KU =

{e,n) y una llave privada de KR = {d,n). Para que este algoritmo sea satisfactorio para la encripción de llave

pública, se deben conocer los siguientes requerimientos:

1, 2, Es posible encontrar valores n, c y d tales que MCd = M módulo n para toda M< n‘?

2. Es relativamente fácil calcular Mc y Cd para todo valor Men ‘?

3. ¿ Es infactible deternlinar d dada e y n ‘?

MCd = M módulo 11

38

Servicios de Chbtogratia

El corolario al teorema de Euler paga el gasto: Dados dos números primos, p y q, y dados dos números enteros n y

m, tales que n=pq y O<m<n y un entero arbitrario k, se toma l a siguiente relación:

mkF(n) * I = mk(p-l)(q-l l+l = - m módulo n

donde F(n) es la hnción de Euler, la cual es el número de enteros positivos menores que n y relativamente primos a

m. Se tiene que para dos números primos, p y q, F(pq)= (p-l)(q-1). Por lo tanto podemos alcanzar la relación

deseada si :

ed = kF(n) + 1

Esto es equivalente a decir:

ed = 1 módulo F(n)

e 3 d.' módulo F(n)

Esto es, e y d son inversos multiplicativos módulo F(n). Note que, de acuerdo con las reglas de la aritmética

modular, esto es verdad sólo si d e son primos relativos a F(n). De manera equivalente, gdc(F(n),d) = l .

Ahora se establecerá el esquema RSA. Los componentes son los siguientes:

p,q dos números primos (privada, tomada)

n = Pq (pública, calculada)

d, con gcd(F(n),d) = 1; l<d< F(n) (privada, calculada)

e = d" módulo F(nj (pública, tomada)

La llave privada consiste de (d,n) y la llave pública consiste de (e,n). Suponga que el usuario A ha publicado su

llave pública y el usuario B desea enviar el mensaje M a A. Entonces B calcula C = Mc (módulo n) y transmite C.

Un usuario A receptor de este texto cifrado lo decripta al calcular M = Cd (módulo n).

Hemos tomado e y d de tal manera que

e = d" módulo F(n)

Por lo tanto

ed = 1 módulo F(n)

39

Servicios de Cri@ografLa

Por lo tanto de es de la forma kF(n) + . Pero por el corolario del teorema de Euler dados dos números primos, p y

q, y enteros n=pq y M, con O<M<n:

C = M' módulo n

M = Cd módulo n = (M')* módulo 11 = M' módulo n E M módulo n

Para generar las dos llaves, seleccionar dos primos largos aleatorios, p y q. Para máxima seguridad,

seleccionar p y q de igual longitud. Calcular el producto:

n = pq.

Seleccionar aleatoriamente la llave de encripción, e, y el módulo (p-l)(q-I) que son relativamente primos.

Finalmente usar el algoritmo Euclidian0 para computar la llave de decripción, d, como:

ed = l(módulo((p-l)(q-I)))

en otras palabras

d = e-1 módulo((p-l)(q-1))

notar que d y n son también primos relativamente, los números e y n son la llave pública; el número d es la llave

privada.

ENCRIPCIÓN Y DECRIPCIÓN CON RSA.

Tanto la encripción como la decripción tienen que efectuar el cálculo de elevar a una potencia entera un número

entero. Si la exponenciación se efectúa sobre los enteros y luego estos se reducen modulo n, los valores intermedios

deben estar garantizados. Apoyándonos en la aritmética modular podemos utilizar la siguiente propiedad

[ (a módulo n) x (b módulo n)] módulo n = (a x b) módulo n

40

Servicios de Cr@tografá

De está manera podemos reducir los resultados intermedios modulo n. Esto hace el cálculo práctico. Otra

consideración será la eficiencia de la exponenciación, ya que, estamos tratando con exponentes demasiado grandes.

Par ver como l a eficiencia se puede incrementar consideremos que se quiere calcular X".

Una aproximación directa requerirá de 15 multiplicaciones:

Sin embargo podemos alcanzar el mismo resultado final con únicamente 4 multiplicaciones si tomamos de manera

repetida el cuadrado de cada resultado parcial, formando sucesivamente X2, X4, X*, X".

De manera más general, suponga que queremos obtener el valor am con a y m números enteros positivos. Si

expresamos m como un número binario b,b,., . .b,) entonces tenemos

Por lo tanto,

a"' módulo n = [n,+ o a '' ] módulo n = [n,, ,, a módulo n]

GENERACIóN DE LAS LLAVES

Antes de la aplicación del criptosistema de llave pública, cada uno de los participantes debe generar un par de

llaves. Esto debe hacerse de acuerdo a los siguientes puntos:

Determinar dos números primos p y q.

Seleccionar alguno de los dos, ya sea d o e, y calcular el otro.

Para seleccionar p y q se debe considerar un conjunto suficientemente grande, con el objetivo de evitar que estos

puedan ser encontrado utilizando métodos exhaustivos de búsqueda. Para esto el método más utilizado y eficiente

es tonlar al azar un número impar que cumpla con el orden deseado de magnitud y entonces verificar si esté es un

número primo.

El algoritmo más utilizado para verificar si un número es primo es el de Miller- Rabin, el procedimiento para

probar que un número es primo es computar algunos cálculos que envuelven n y un entero a tomado de manera

aleatoria. Si n "falla" la prueba entonces n no es primo. Si n "pasa"' la prueba entonces n puede ser o no un

41

Servicios de Cuiptografa

número primo. Si n pasa muchas de tales pruebas con diferentes a seleccionados aleatoriamente, entonces podemos

concluir que n es un número primo.

El procedimiento lo podemos resumir de la siguiente manera

l . Tomar un número entero impar al azar (usando un generador aleatorro).

2. Tomar un entero a< n al azar.

3. Aplicarle la prueba para verificar si se trata de un número primo (puede ser el algoritmo de Miller-Rabin). Si n

falla la prueba, rechazar el valor n e ir al paso l .

4. Si n pasa la prueba un gran número de veces, aceptar n; en otro caso ir al paso 2.

El proceso de encontrar un número primo puede llevar tiempo, pero es un proceso que no se efectúa muy a

menudo, esto sólo es necesario cuando se requiere la generación de un par de llaves nuevas.

Una vez que se han determinado los primos p y q para completar el proceso de generación de las llaves lo que hace

falta es seleccionar un valor d y después calcular e o viceversa. Asumiendo lo anterior entonces debemos

seleccionar un d tal que gcd($(n),d) = 1 y entonces calcular e = d” mod $(n).

Existe un algoritmo que calcula el máximo común divisor de dos enteros y si gdc es igual a 1, entonces determina el

inverso de uno de los enteros modulo el otro. El algoritmo es llamado el algoritmo extendido de Euclides. Entonces

el procedimiento consiste en generar una serie de números aleatorios, probar cada uno contra $(n) hasta que un

número primo relativo a $(n) sea encontrado.

Seguridad de RSA

La seguridad de RSA descansa totalmente en el problema de factorizar números largos. Se necesita también el factor

n para calcular m a partir de c y e. Es difícil suponer los valores de (p-l)(q-I). Aún después de recuperar ciertos bits

de información a partir de RSA-encriptado del texto cifrado, es difícil de decriptar el mensaje entero.

Aunque se ha tratado de factorizar el módulo por varios métodos, estos han sido demasiado lentos y otros han

fallado, tal es el caso del algoritmo de primalidad probabilística.

POHLIG-HELLMAN

El esquema de encripción Pohlig-Hellman es similar a RSA. No es un algoritmo simétrico, aunque se usan diferentes

llaves para encriptar y decriptar, no es un esquema de llave pública, aunque las llaves son fácilmente derivables una

a partir de la otra; pero las llaves se mantienen en secreto.

Como RSA

42

Servicios de Criptografia

c = pe módulo 11

p = cd módulo n

donde

ed = l(módu1o algún número complicado)

A diferencia de RSA, n no está definida en términos de dos primos largos. Si se tiene e y n, se puede calcular d.

Con el conocimiento de e o d, se puede forzar a calcular

e = logp c módulo 11

que como se ve es un problema dificil.

ELGAMAL

El esquema ElGamal puede ser usado para firmado digital y encripción, obtiene la seguridad de la dificultad de

calcular logaritmos discretos de un campo finito.

Para generar un par de llave, primero se selecciona un número primo., p, y dos números aleatorios, g y x, ambos g

y x son menores que p. Calcular:

y = gx módulo p

L a llave pública es y, g, y p. Ambas g y p pueden compartirse en un grupo de usos. L a llave privada es x.

FIRMADO ELGAMAL

Para firmar un mensaje, M, primero seleccionar un número aleatorio. k, donde k es un número primo relativo a p- 1.

Computar:

a = gk módulo p

y usar el algoritmo Euclidiano y resolver para b en la siguiente ecuación:

M = (xa + kb)módulo(p- 1)

43

Servicios de Cr@tografia

el firmado es el par a y b. El valor aleatorio, k, es el secreto. Para verificar un firmado, confirmar con

ya ab módulo p = g M módulo p

cada firmado o encripción ElGamal requiere un nuevo valor de k. y este valor será seleccionado aleatoriamente.

Un ejemplo:

p = I 1, g = 2. Seleccionar la llave privada x = 8 y calcular:

y = gx módulo p = 28 módulo 11 = 3

Para autenticar M = 5, primero seleccionar un número aleatorio k = 9, confirmar gcd(9,lO) = l . Computar:

a = gk módulo p = 29 módulo 1 1 = 6

usar el algoritmo de extensión Euclidiana y resolver para b:

M = (ax + kb) módulo (p-1)

5 = (8*6 + 9*b) módulo 10

la solución es b = 3, y el firmado es el par a=6 y b=3 y verificar el firmado:

ya ab módulo p = gM módulo p

36 63 módulo 11 = 25 módulo 11.

ENCRIPCI~N ELGAMAL

Para encriptar en mensaje M, primero seleccionar aleatoriamente k, en donde k es un primo relativo a p-l.

Computar:

a = gk módulo p

b = yk M módulo p

44

Servicios de Criptografjb

el par, a y b, es el texto cifrado. Notar que el texto cifrado es el doble de tamaño del texto plano. Para decriptar a y b,

computar:

M = blax módulo p

así como ax = gkx (módulo p) y blax = yk Mlax = gxk Migxk = M (módulo p).

Este es realmente el cambio de llave de Diffie-Hellman, excepto que y es parte de la llave, y la encripción es

multiplicada por yk.

ALGORITMO DE FIRMADO DIGITAL (DSA)

En agosto de 199 1, el Instituto Nacional de Estándares y Tecnología (NIST) - Por sus siglas en Inglés - propuso el

algoritmo de firmado digital (DSA) para su uso en Firma Digital Estándar (DSS). Acordado en el registro federal.

Un Estándar de Procesamiento de Información Federal (FIPS) ha sido propuesto para un estándar de firmado

digital. Este estándar propuesto especifica un algoritmo de firmado digital de llave pública apropiado para

aplicaciones federales.

Antes de entrar en confusiones, revisaremos la nomenclatura: DSA es el algoritmo, DSS es el estándar. El estándar

emplea el algoritmo. El algoritmo es parte del estándar.

DESCRIPCI~N DE DSA

DSA es una variante de los algoritmos de firnlado Shnerr y El Gamal, el algoritmo usa los siguientes parámetros:

p = un número primo de L bits de largo, donde L está en el rango de 512 a 1023 y es múltiplo de 64. (En el Estándar

original, el tamaño de p era fijo de 5 12 bits. Lo cual h e fuente de muchas críticas y fue cambiado por NIST.)

q = un primo de 160 bits factor de p - 1

g = h(p- 1)Iq módulo p. donde h es un número menor que p- 1

y h (p-I) /q módulo p es mayor que I

x = un número menor que q

y = gx módulo p

El algoritmo también hace uso de la función Hash unidireccional: H(m). Los primeros tres parámetros, p, q, y g

son públicos y pueden ser comunes a otras tareas. La llave privada es x; la llave pública es y.

Para firnlar un mensaje, m:

45

Servicios de Cslptogsafia

Generar un número aleatorio, k menor que q

Generar

r = (gk módulo p) módulo q

S = (k-1 (H (m) + x r)) módulo q

Los parámetros r y S son el fismado.

Verificar el firmado, computando

w = S-1 módulo q

U1 = (H (m) * w) módulo q

U2 = (r w) módulo q

V = ((gU1 * y U2) módulo p) módulo q

si V = r entonces el firmado es verdadero.

GENERACIóN DE PRIMOS DSA

NIST recomienda un método específico para la generación de dos primos, p y q, donde q divide p- l . El primo p

tiene L bits de largo, entre 512 y 1024 bits de largo y es un múltiplo de: 64 bits. El primo q es de 160 bits de largo.

Hacer L - I= 160n +b, donde L es la longitud de p, n y b son dos números, y b es menor que 160.

Seleccionar una secuencia arbitraria de al menos 160 bits y llamarla S. Hacer g la longitud de S en bits.

Computar U= SHA (S) -INCRUSTAR Unknown-SHA ((S+l) módulo 2g), donde SHA es el algoritmo de

seguridad HAS.

Con la condición q establecer los bits más significantes, el bit menos significante de U a 1.

Checar que q es primo.

Si q no es primo, regresar al paso (1)

Hacer C = O y N = 2.

Para K = 0,1, ... n; hacer VK = SHA ((S+N+K) módulo 2g)

Hacer w un entero

W=VO + 2160 V1 + ... +2160(n-l) Vn-1 +2160n (Vn módulo 2b)

y hacer. X = W t2L-1

Hacer p = X - ((X módulo 2q) -1)

Si p< 2L- I , entonces ir al paso (13)

Checar que p es primo

46

Servicios de QYptografia

Si es primo ir al paso (15)

Hacer C= C+ 1 y N=N+n+ 1

Si C=4096, entonces ir al paso (1) otro caso ir al paso (7)

Salvar el valor de S y el valor de C usado para generar p y q,

L a variable S es llamada la “Semilla” , C es llamado el “Contador” y N el “Desplazamiento” .

SEGURIDAD DE DSA

DSS ha estado sujeto a intensas evaluaciones con NSA; esta garantizado por el director de Información de

Sistemas de Seguridad para el uso de firmado de datos no clasificados, procesados en ciertos sistemas inteligentes y

de igual manera para firmado de datos clasificados en sistemas selectos. Basado sobre la técnica y requerimientos de

seguridad de el gobierno de los E.U., para firmado digital, se dice que DSS es la mejor selección. De hecho, DSS es

usado en un proyecto piloto de los sistemas de defensa de mensaje, para afirmar la autenticidad de mensajes

electrónicos vitales de comando y control de información. L a demostración inicial incluye la participación del alto

mando, servicios militares, y esta hecho en cooperación de las agencias de defensa y NIST.

47

Servicios de Cr1ptografia

AUTENTICACIóN Y FIRMA DIGITAL

Funciones de Autenticación.

Cualquier mecanismo de autenticación o de firmado digital puede ser visto fbndamentalmente como un elemento

de dos niveles. En el nivel más bajo debe existir algún tipo de función que produzca un autenticador: un valor a

usarse para autenticar un mensaje. Esta función de más bajo nivel es entonces como primitiva en un protocolo de

más alto nivel que habilita a un receptor el poder verificar la autenticidad de un mensaje.

Existen diferentes tipos de funciones que pueden utilizarse para proveer la autenticación. Así mismo estas

funciones pueden agruparse dentro de tres clases principales:

Encripción del Mensaje: En esta clase de funciones el mensaje encriptado por completo sirve como su

autenticador.

Verificación de Suma Criptográfica: Una función pública del mensaje y de la llave secreta el cual produce un

valor de longitud fija que sirve como autenticador.

Función Hash: Una función pública que mapea un mensaje de cualquier longitud en un valor hash de longitud

fija, el cual sirve como autenticador.

Encripción del Mensaje

La encripción del mensaje puede por si misma proveer una medida de autenticación. Aunque los esquemas para

ambos tipos de encripción, de llave secreta o pública, pueden diferir.

Encripción de Llave Secreta.

Si consideramos el uso directo de la encripción de llave secreta . Entonces un mensaje que es transmitido por una

fuente A hacia un destino B es encriptado usando la llave secreta K compartida por A y B. Si no existe otra parte que

conozca la llave secreta, entonces se puede proveer la confidencialidad: nadie más pude recuperar el texto plano del

mensaje.

Al recibir B el mensaje y decriptarlo este puede confiar en que A lo envió, ya que, es el Único que puede generar el

texto cifrado que puede ser decriptado utilizando la llave secreta K. Además, si el mensaje M es recuperado B sabe

que ninguno de los bits ha sido alterado, porque un oponente que no conoce la llave K no sabría como alterar los bits

en el texto cifrado para producir los cambios deseados en el texto plano.

Así, podríamos decir que la encripción convencional puede proveer autenticación lo mismo que confidencialidad.

Sin embargo, necesitamos considerar exactamente lo que está sucediendo en B. Dada una fiulción de decripción y

48

Servicios de Crt@ograf/b

una llave secreta K, el receptor puede aceptar cualquier entrada X y producir la salida Y=DK(X). Si X es el texto

cifrado para un mensaje legitimo M producido por la correspondiente función de encripción, luego Y es algún

mensaje en texto plano. De otro modo, Y será una secuencia de bits sin significado. Debería haber un mecanismo

automático de determinar en B si Y es texto plano legitimo y que por lo tanto debe venir de A.

Suponga que un mensaje puede ser cualquier patrón de bits. En este caso, no hay una manera de determinar

automáticamente, en el receptor, si un mensaje entrante es el texto cifrado de un mensaje legitimo o no. Si M puede

ser cualquier patrón de bits, entonces a pesar del valor de X, Y=DK(X) es algún patrón de bits y por lo tanto debe ser

aceptado como texto plano auténtico.

Entonces, en general, necesitamos que sólo un pequeño subconjunto de todos los posibles patrones de bits sea

considerado como texto plano.

Podría ser dificil determinar automáticamente sí un texto cifrado se decripta a texto plano inteligente. Si el texto

plano es un archivo objeto en forma binaria o alguna señal digitalizada, la determinación de la forma apropiada y por

lo tanto autenticar el texto plano puede ser dificil. Entonces un oponente podría alcanzar un cierto nivel de simple

confusión al enviar mensajes con contenido aleatorio que pretendan venir de un usuario legitimo.

Una solución a esté problema es forzar al texto plano para que tenga una estructura que sea fácilmente reconocible

pero que no pueda ser copiada sin el recurso de la función de encripción. Se podría anexar un código detector de

error o una secuencia de verificación de trama, a cada mensaje antes de la encripción. De esta manera si A envía un

mensaje M a B primero tiene que aplicarle la función que genera el código de verificación de error y después

anexarlo a M para encriptarlo. Cuando B recibe el mensaje en texto cifrado lo decripta, luego le aplica la hnción

para la verificación de error. Si la prueba es positiva se acepta el mensaje en caso contrario el mensaje no es

legítimo.

Además del método anterior existen muchos otros que nos pueden ayudar a dotar a un sistema con las herramientas

necesarias para proveer autenticación y confidencialidad.

ENCRIPCI~N CON LLAVE P ~ B L I C A .

El uso directo de la encripción de llave pública puede proveer confidencialidad pero no autenticación. En esté

caso el usuario A usa la llave pública KUb de B para encriptar M. Debido a que solamente B tiene la

correspondiente llave privada KRb, solamente B puede decriptar el mensaje. Este esquema no puede proveer

ninguna autenticación debido a que un oponente podría usar la llave pública de B para encriptar el mensaje,

fingiendo ser A.

Si deseamos proveer la autenticación, A debe encriptar el mensaje con su llave privada, y b usara la llave pública

de A para decriptar el mensaje. Esto provee algún grado de autenticación ya que el mensaje debe haber venido de A

porque A es el Único participante que posee KRa y por lo tanto la única parte que puede ser capaz de encriptar el

49

Servicios de Cuptografa

mensaje para producir el texto cifrado que puede ser decriptado con KUa. También debe haber alguna estructura

que sea capaz de decir si el mensaje se trata de texto plano bien formado o de bits generados de manera aleatoria.

También es posible generar lo que se conoce como una firma digital. Solamente A podría haber construido el texto

cifrado porque sólo A posee KRa. Nadie incluso B podría haber construido el texto cifrado. Por lo tanto, si B esta en

posesión del texto cifrado, B tiene el medio para probar que el mensaje debe haber venido de A. En efecto, A ha

“finnado” el mensaje al usar su llave privada para encriptar.

Debe notarse que este esquema no provee confidencialidad. Cualquiera en posesión de l a llave pública de A puede

decriptar el texto cifrado.

Para proveer ambas confidencialidad y autenticación, A puede encriptar primero M usando su llave privada, lo

cual provee la finna digital, y entonces usando la llave pública de B provee la confidencialidad. L a desventaja de

esta implementación es que el algoritmo de llave pública debe ser utilizado cuatro veces en lugar de dos en cada

comunicación.

n Criptoanalista R

Mensaje fuente b Encriptar x Y X Destino

I Par de llaves

Fuente

Figura 4.1 Criptosistema de Llave Pública: Autenticación

VERIFICACI~N DE SUMA CRIPTOGRÁFICA.

Una técnica alternativa de autenticación envuelve el uso de una llave secreta para generar un pequeño bloque de

datos de tamaño fijo el cual es conocido como verificación de suma criptográfica, o código de autenticación de

mensaje (MAC), este es anexado al mensaje. Esta técnica asume la (comunicación entre dos partes A y B que

comparten una llave secreta común EL. Cuando A envía u11 mensaje a B calcula el verificador de suma criptográfica

50

Servicios de Crlptografia

como una iünción del mensaje y la llave: C,(M). El mensaje verificador de suma es anexado al mensaje M y son

transmitidos al receptor.

El receptor realiza el mismo calculo al mensaje, usando la misma llave secreta para generar un nuevo verificador de

suma criptográfico. El verificador de suma recibido es comparado con el verificador de suma calculado (Fig. 4.2).

Si asumimos que sólo el receptor y el emisor conocen la identidad de la llave secreta, y el verificador de suma

recibido concuerda con el verificador de suma calculado. entonces:

1. El receptor esta seguro de que el mensaje no esta alterado. Si un atacante altera el mensaje pero no altera el

verificador de suma, entonces el receptor puede calcular el verificador de suma y diferenciarlo del verificador de

suma recibido. Se asume que el atacante no conoce la llave secreta, el atacante no puede alterar el verificador de

suma que le corresponde a la parte alterada del mensaje.

2. El receptor esta seguro de que el mensaje proviene del supuesto emisor. Debido a que nadie más conoce la llave

secreta, nadie más puede preparar un mensaje con el verificador de suma apropiado.

3. Si el mensaje incluye una secuencia de números, entonces el receptor puede estar seguro de la secuencia

apropiada, aunque un atacante no puede alterar exitosamente la secuencia de números.

Fuente Destino

mparador

M: mensaje K: llave C: verificador de suma

Fig. 4.2

FIRMAS DIGITALES

La autenticación de los mensajes protege a las dos partes que intercambian mensajes de alguna tercera parte. Si

embargo, esto no protege a las dos partes una contra la otra.

En situaciones en donde no hay una confianza completa entre emisor y receptor, es necesario algo más que la

autenticación. La solución más atractiva para este problema es la firma digital. La firma digital es análoga a la firma

manuscrita. Las propiedades de la firma digital deben ser:

Debe ser capaz de verificar el autor, la fecha y la hora de la firma.

Debe ser capaz de autenticar el contenido, al tiempo de la firma.

51

Servicios de Crptografia

La firma debe ser verificable por terceras partes, para resolver disputas.

Entonces la función de firma digital incluye la función de autenticación.

Sobre la base de estas propiedades, podemos formular los siguientes requerimientos para una firma digital:

La firma debe ser un patrón de bits que dependa del mensaje que esta siendo firmado.

L a firma debe usar alguna información única al emisor, para prevenir negación y falsificación.

Debe ser relativamente fácil producir la firma digital.

Debe ser relativamente fácil reconocer y verificar la firma digital.

Debe ser computacionalmente infactible falsificar una firma digital, ya sea al construir un nuevo mensaje para

una firma digital existente o por construir una firma digital fraudulenta para un mensaje dado.

Debe ser práctico retener una copia de la f-irma digital para almacenarse.

Una gran variedad de esquemas han sido propuestos para la función de firma digital. Se clasifican en dos categorías:

directa y arbitrada.

FIRMA DIGITAL DIRECTA

L a firma digital directa envuelve únicamente a las partes en comunicación (fiente y destino). Se asume que el

receptor conoce la llave pública del emisor. Una firma digital podría ser formada al encriptar el mensaje completo

con la llave privada del emisor o al encriptar un código hash del mensaje con la llave privada del emisor.

La confidencialidad puede ser provista al fomentar el encriptar e1 mensaje entero más la firma con la llave pública

del receptor o una llave pública compartida; es importante realizar primero la función de firmado y después una

hnción de confidencialidad. En caso de disputa, alguna tercera parte debe ver el mensaje y su fimia. Si la firma está

calculada sobre un mensaje encriptado, entonces la tercera parte también necesita accesar a la llave de decripción en

principio para leer el mensaje original. Sin embargo, si la firma es la operación más interior, entonces el receptor

puede almacenar el mensaje de texto plano y su firma para uso posterior en la solución de una disputa.

Todos los esquemas descritos así, comparten una debilidad común. La validez del esquema depende de la seguridad

de la llave privada del emisor. Si un emisor más tarde se rehusa a enviar un mensaje particular, el enviador puede

afinnar que la llave privada fue perdida o robada y que alguien mas olvido su firma. Control administrativos

relativos a la seguridad de las llaves privadas pueden emplearse para frustrar o al menos debilitar este truco pero la

amenaza aún persiste, al menos para un grado. Un ejemplo es requerir que cada mensaje firmado incluya un acuse de

tiempo (fecha y hora) y requerir un reporte indicador de las llaves comprometidas a una autoridad central.

Otro truco es que alguna llave privada podria realmente ser robada a X al tiempo T. El oponente puede entonces

enviar un mensaje con la firma de X y sellar con una fecha antes o igual a T.

52

Servicios de Cr1ptografia

FIRMA DIGITAL ARBITRADA

Los problemas asociados con la firma digital directa pueden ser dirigidos al usar un arbitro.

Como con los esquemas de finna directa hay una gran variedad de esquemas de firma arbitrada. En términos

generales todos operan como sigue. Cada mensaje firmado por un emisor X a un receptor Y va primero a un arbitro

A, el cual expone al mensaje y su firma a una gran cantidad de pruebas para verificar su origen y su contenido. El

mensaje es entonces fechado y enviado con una indicación de que este ha sido verificado a satisfacción del arbitro.

L a presencia de A resuelve el problema enfrentado por los esquemas de firma directa: de que X pueda negar el

mensaje.

El arbitro juega un papel crucial y delicado en este modelo de esquema, todas las partes deben tener mucha

confianza de que el mecanismo de mensaje está trabajando apropiadamente.

53

Servicios de Crlptografia

Bibliografía

A guide to OSI, ISON, LAN and MAN Standards, Network Standarb, Addison Wesley sixth printing, January

1996.

BENNETT Geoff, Designing TCPiIP Intenletworks, Van Nostrand Reinhold, 1995.

MINOLI Daniel, Internet & Intranet Engineering, McGraw Hill, 1997.

SCHNEIDER Bruce, Applied Cryptography Protocols, Algorithms and source code in C., John Wiley & Sons, Inc.

Second Edition 1996.

STALLINGS William, Network and Internet Work Security Principles and Practice, By Pretience - Hall, Inc., 1995.

54

Servicios de Crlptografib

Indice

Introducción a la Criptografia

Algoritmos y llaves

Tipos de funciones Criptográficas

Criptoanálisis

Criptografía de Llave Secreta

Estandar para Encripción de Datos (Data Encription Estandar, DES)

Bosquejo de algoritmo

La Permutación Inicial

La Transformación de la llave

La permutación de Expansión

La caja-S de Sustitución

La caja P de Permutación

La permutación final

Descripción de DES

Modos de DES

Modo ECB(ELECTRON1C CODE BOOK)

Modo CBC (CIPHER BLOCK CHAINING)

Modo OFB (OUTPUT-FEEDBACK)

Modo CFB (CIPHER-FEED BACK)

Algoritmo de encripción de datos internacional

Una ojeada a IDEA

Descripción de IDEA

HASH y mensajes digeridos

Longitud de las funciones HASH unidireccionales

Función HASH unidireccional

SNEFRU

MD2

MD4

MD5

Anexar bits de relleno

Anexar la longitud

lnicializar un Buffer MD

Procesar el Mensaje en bloques de 5 12 bits (16 palabras)

Salida

1

3

5

7

8

11

12

13

14

15

15

16

17

18

21

21

21

22

22

23

23

24

25

25

26

26

27

27

28

28

28

28

29

29

55

Semicios de Criptografia

Rondas de MD5

Seguridad del Algoritmo HASH (SHA)

Descripción de SHA

Algoritmos de llave pública

Criptosistema de llave pública

Seguridad de los algoritmos de llave pública

Creación de la llave pública a partir de la llave privada

Encripción

Decripción

RSA

Descripción de RSA

Encripción y Descripción con RSA

Generación de las llaves

Seguridad de RSA

POHLIG-HELLMAN

ELGAMAL

Firmado ELGAMAL

Encripción ELGAMAL

Algoritmo de firmado digital (DSA)

Decripción de DSA

Generación de primos DSA

Seguridad de DSA

Autenticación y firma digital

Encripción de llave secreta

Encripción con llave pública

Verificación de suma Criptográfica

Firmas digitales

Firma Digital Directa

Finna Digital Arbitrada

Bibliografia

29

30

31

31

32

36

36

37

37

38

38

40

41

42

42

43

43

44

45

45

46

47

48

48

49

50

51

52

53

54

56