Está en la página 1de 4

Prctica 1: Cifrado Simtrico

Enrique de la Hoz de la Hoz 28 de febrero de 2006

1.

Introduccin
En esta prctica introduciremos la utilizacin de libreras criptogrcas para

el desarrollo de aplicaciones que requieran comunicaciones seguras empleando el cifrado simtrico. Para permitir la comunicacin segura entre dos usuarios cualesquiera se introduce el concepto de centro de distribucin de claves como intermediario entre usuarios nales que permite el establecimiento seguro de claves de sesin dada una relacin preexistente de los usuarios nales con ese centro de distribucin. El objetivo ser implementar un pequeo protocolo que permita la generacin de claves de sesin para usuarios en un dominio con un centro de distribucin de claves y el establecimiento de comunicaciones seguras empleando dichas claves y algoritmos de cifrado simtrico. Se recomienda el empleo del lenguaje Java para la programacin de esta prctica.

2.

Descripcin
Como hemos comentado en la parte terica de la asignatura, uno de los

principales problemas de los sistemas de cifrado simtrico es el problema de distribucin de las claves. Si tenemos N usuarios que se quieren comunicar entre ellos, cada usuario debe disponer de N-1 claves simtricas compartidas con los N-1 restantes usuarios. Esto supone un problema tanto desde el punto de vista de la gestin de las claves como de su generacin y reparto entre cada pareja de usuarios. Una de las soluciones ms tpicas a este problema es la creacin de un centro de distribucin de claves o KDC (Key Distribution Center ) en terminologa anglosajona. En este esquema cada usuario nicamente dispone de una clave compartida con el KDC frente a las N-1 claves que aparecan en el esquema original. Cuando desea hablar con algn usuario, solicita al KDC que le enve una clave para la comunicacin con ese usuario. EL KDC le enva cifrado con la clave que comparte con l (que llamaremos K ) la peticin original junto con A la clave para la comunicacin con el usuario B (que llamaremos clave de sesin

K ) ms esa misma informacin cifrada con la clave del usuario B. AdicionalS mente a estas claves, el centro de distribucin de claves enviar a los usuarios el tiempo de validez de esta clave de sesin con objeto que una vez transcurrido dicho periodo se renueve la clave de sesin con objeto de que las comunicaciones sigan siendo seguras. El usuario A toma descifra el mensaje y reenva esta ltima informacin (K ms la identidad del usuario A) al usuario B. El usuario S B descifra el mensaje con lo que obtiene la clave de sesin K y la identidad S del usuario que quiere hablar con l. Finalmente, para evitar modicacin en la secuencia de los mensajes B enva a A cifrado con la clave de sesin un nmero aleatorio. A, a su vez, para conrmar que ha recibido el mensaje, le enva a B cifrado con la clave de sesin ese mismo nmero aleatorio modicado siguiendo alguna pauta preestablecida (sumar una unidad por ejemplo). Tras la recepcin de ese mensaje se puede comenzar a enviar la informacin.

3.

Objetivo
El objetivo de la prctica ser desarrollar un sistema que permita el estable-

cimiento de canales seguros de comunicacin empleando comunicaciones cifradas entre los posibles usuarios de un dominio.

3.1.

Funcionalidad del centro de distribucin de claves (KDC)

El centro de distribucin de claves deber implementar el protocolo de generacin de claves de sesin descrito en el punto 2 y una interfaz de administracin para poder dar de alta a los usuarios del dominio. En primer lugar, el KDC debe mantener un chero de usuarios con su correspondiente clave compartida en el KDC. Esta chero deber contener r un identicador de usuario, que puede ser por ejemplo la direccin IP junto con un nombre de usuario, y la clave asociada a dicho usuario y que permitir que se comunique de forma segura con el centro de distribucin de claves. Se valorar como puntuacin extra que se contemplen medidas de seguridad para este chero de claves compartidas. El centro de distribucin de claves deber poder atender a los clientes siguiendo el esquema que describimos en el punto 2. Recibir las peticiones de comunicacin de los usuarios (soy el usuario A y me deseo comunicar con el usuario B), vericar dichas peticiones (comprobando que la direccin IP se

corresponde con la que hay dada de alta en su chero de usuarios y que el usuario B tambin est dentro de su dominio) y generar la respuesta adecuada que incluye la clave de sesin para dicha comunicacin entre ambos usuarios junto con la informacin correspondiente al periodo de validez de dicha clave de sesin. Como hemos comentado anteriormente una vez transcurrido ese periodo de validez ser necesario renovar la clave asociada a dicha comunicacin. Las claves de sesin se generarn de manera dinmica por parte del KDC y han de ser distintas para cada comunicacin aunque involucre a los mismos participantes. El centro de distribucin de claves se comunicar con los usuarios empleando UDP y escuchar en el puerto 5001.

3.2.

Funcionalidad de los clientes

El cliente deber permitir establecer comunicaciones seguras con cualquiera de los usuarios dentro del dominio. Una vez arrancado permitir que cualquier cliente del dominio cree un canal seguro con l siguiendo el protocolo descrito en el apartado 2. El cliente escuchar estas posibles comunicaciones provenientes de otros clientes en el puerto que se le indique mediante la opcin -p num_puerto. Cada usuario debe de tener dada de alta una clave maestra compartida con el KDC para asegurar las comunicaciones con el mismo. Esta clave habr que darla de alta dentro del chero de claves compartidas del KDC y tendr que ser conocida por el usuario. Al invocar el programa pasaremos la clave maestra empleada como un parmetro. Simultneamente a la espera de conexiones, el cliente mostrar una interfaz que permitir introducir rdenes para realizar distintas operaciones sobre el canal cifrado. Las rdenes que se deben implementar son las siguientes: connect direccin_IP puerto. Hace que comience el proceso de establecimiento de un canal seguro con el extremo identicado por los parmetros direccin IP y puerto. El cliente mostrar por pantalla el resultado de el proceso de establecimiento de conexin y el error correspondiente en su caso. Un mismo cliente podr conectarse a distintos usuarios del dominio de manera simultnea. show. Muestra las conexiones activas indicando el tipo de cifrado que utilicen, el nmero de bytes transferidos y el tiempo que llevan activas. renew num_con. Renueva la clave de la conexin indicada por num_con. Este nmero podr obtenerse ejecutando previamente la orden show. test num_con. Esta orden testea la velocidad que se alcanza (en KBytes/s) en la transferencia de informacin a travs de la conexin cifrada especicada por num_con. Esta orden se emplear para determinar la velocidad real de nuestra conexin cifrada y para determinar la sobrecarga que aade a la conexin normal. El testeo se realizar mediante la transferencia de un chero de tamao signicativo (varios megas al menos).

close num_con. Cierra la conexin identicada por num_con. send num_con mensaje . Para enviar un mensaje mensaje cualquiera por la conexin identicada por num_con. Se comprobar la sobrecarga que el canal seguro introduce con respecto a la comunicacin entre ambos clientes sin emplear ningn tipo de cifrado. Tendr que determinarse tambin la sobrecarga que introduce el procedimiento inicial de obtencin de claves as como el refresco de las mismas. Las comunicaciones con el centro de distribucin de claves se llevarn a cabo empleando el protocolo UDP. Tambin usarn TCP los canales seguros que establezcamos con otros clientes.. Se dispone de total libertad para la utilizacin de uno u otro algoritmo de cifrado o modo de utilizacin. El algoritmo de generacin de las claves de sesin por el KDC no tiene por qu ser complejo si bien debe garantizar que genere claves distintas para cada comunicacin (distintos usuarios o distintos momentos). Se supone que no hay prdida de mensajes.

4.

Evaluacin
Como ya se ha comentado anteriormente, el sistema debe admitir al menos

3 usuarios que se deben poder comunicar entre s. Todas las claves utilizadas en las distintas comunicaciones debern ser distintas. Ser necesario para considerar superada dicha prctica demostrar el funcionamiento de la misma conforme a las especicaciones expuestas as como entregar el cdigo de la misma. La puntuacin asignada a esta prctica es de 0,5 puntos.

5.

Plazo de Entrega
Se dedicarn tres sesiones de laboratorio a la realizacin de la prctica. Se

establece como semana de entrega, la semana que comienza el lunes 20 de Marzo. Aquellos alumnos que no puedan acudir al laboratorio debern concertar una cita con el profesor para la entrega de la misma. La entrega con retraso conllevar una penalizacin del 25 % de la nota de la prctica por cada semana.

6.

Referencias
Introduccin a la criptografa empleando Java (web de la asignatura) Prctica introduccin a la criptografa en Java (web de la asignatura) Li Gong, Gary Ellison and Mary Dageforde. Inside Java 2 Platform Security, Second Edition: Architecture, API Design and Implementation. Ed. Addison-Wesley. 2003 Java(TM) Cryptography Extension (JCE). http://java.sun.com/products/jce/javase.html

También podría gustarte