Este documento presenta un análisis de requerimientos y diseño del Sistema de Encriptación de Rabin (SER). Describe el contexto del sistema y realiza una introducción a conceptos básicos de criptografía como criptografía clásica y criptografía de clave pública. El objetivo es especificar los requisitos del sistema SER para facilitar su desarrollo.
0 calificaciones0% encontró este documento útil (0 votos)
327 vistas47 páginas
Este documento presenta un análisis de requerimientos y diseño del Sistema de Encriptación de Rabin (SER). Describe el contexto del sistema y realiza una introducción a conceptos básicos de criptografía como criptografía clásica y criptografía de clave pública. El objetivo es especificar los requisitos del sistema SER para facilitar su desarrollo.
Este documento presenta un análisis de requerimientos y diseño del Sistema de Encriptación de Rabin (SER). Describe el contexto del sistema y realiza una introducción a conceptos básicos de criptografía como criptografía clásica y criptografía de clave pública. El objetivo es especificar los requisitos del sistema SER para facilitar su desarrollo.
Este documento presenta un análisis de requerimientos y diseño del Sistema de Encriptación de Rabin (SER). Describe el contexto del sistema y realiza una introducción a conceptos básicos de criptografía como criptografía clásica y criptografía de clave pública. El objetivo es especificar los requisitos del sistema SER para facilitar su desarrollo.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_1
El criptosistema de Rabin - SER
Sistema de Encriptacin de Rabin (SER) Centro de Investigacin y de Estudios Avanzados IPN 5 de Agosto del 2002. Reporte del Proyecto (Especificacin y Diseo de Sistema)
Oscar Gonzalo Landa Rosales
Resumen
Se presenta una breve introduccin a los conceptos bsicos de criptografa y en particular al Criptosistema de Rabin; pretendiendo entrar en contexto con este sistema, el cual se analiza la complejidad de esta tema que abarca desde conceptos matemticos, hasta serios problemas de software y sistemas, pasando por problemas de diseo y anlisis de algoritmos, y donde todo esto debe interactuar como un todo para lograr una implementacin de un sistema de encriptamiento seguro. Finalmente, se pretende destacar la importancia, que tiene un buen anlisis y diseo de un Criptosistema, para las siguientes etapas de desarrollo del sistema.
1. Introduccin
En este documento se realizo un anlisis de requerimientos y de diseo, donde se persigui el descubrir los alcances y limites, refinamiento, modelizacin y especificacin del sistema SER. Comienza con una descripcin detallado del mbito del programa, con objeto de poder establecer un buen diseo del sistema. Se crearon los modelos del flujo de la informacin y del control, del comportamiento en operacional y del contenido de los datos. Se analizan las soluciones alternativas, con la asignacin de los distintos elementos del software. El objetivo de este Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_2
El criptosistema de Rabin - SER
documento es poder reducir el mayor numero de malas interpretaciones o falta de informacin que da por ende un mal diseo.
Por ultimo la especificacin de requisitos del sistema SER, facilitara al equipo de desarrollo la especificacin de la funcin y del rendimiento del software, la descripcin de la interfaz con otros elementos del sistema y el establecimiento de las restricciones de diseo que debe considerar el SER.
1 .1 Contexto del sistema.
Las amenazas que sufre la informacin durante su proceso, almacenamiento y transmisin son crecientes, multiformes y complejas, ms aun, desde la globalizacin de Internet. Dada la potencialidad de esta herramienta y de sus innumerables aplicaciones cada vez ms personas y empresas sienten la necesidad de conectarse a este magnfico mundo. Para contrarrestar estas amenazas se han desarrollado numerosas medidas de proteccin, que se implementan en el equipo fsico o lgico mediante los denominados mecanismos de seguridad. De stos, el mecanismo por excelencia es el cifrado de la informacin, de los cuales existen diversos mtodos que se encuentran clasificados en dos importantes ramas : criptografa clsica o de clave simtrica y criptografa moderna o de clave publica.
1.1.1 Criptografa clsica
Tambin conocida como criptografa de clave simtrica, este tipo de criptografa ha sido usada por aos, su nombre proviene del hecho que ambos, remitente y destinatario en una comunicacin comparten una sola clave que se debe guardar en secreto. Si se quiere comunicar secretamente con alguien, lo primero que se debe hacer es notificar al destinatario cual es la clave que se usar para encriptar el mensaje, este proceso es muy importante y difcil de realizar adecuadamente adems de l depende el xito de la comunicacin. La siguiente figura 1. muestra una comunicacin entre dos partes usando encriptacin con clave simtrica. [4] Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_3
El criptosistema de Rabin - SER
Figura 1. El uso de una sola clave implica que el mensaje se encripta con e ^ K y se desencripta con d = e^ (-1). No debemos basar la seguridad de nuestro sistema en suponer que nadie sabe cual es la transformacin aplicada. Siempre se debe asumir que todas las partes conocen el conjunto de transformaciones de encriptacin/desencriptacin (es decir, adversarios, emisor y receptor). Lo nico que se debe mantener en secreto es la clave d, y por supuesto e dado que d puede ser deducida de sta.
Hay dos clases de esquemas de encriptacin de claves simtricas las cuales son comnmente distinguibles : Cifrados de bloque y Cifrado corriente.
Cifrado por Bloque
El cifrado en bloques es un esquema de encriptacin el cual descansa sobre los mensajes de texto puro que sern transmitidos dentro de strings (llamados bloques) de largo fijo t sobre el alfabeto A , encriptando un bloque a la vez. La mejor tcnica de encriptacin con clave simtrica conocida es el cifrado en bloque. Dos importantes clases de cifrados en bloque son : cifrado por sustitucin y cifrado por transposicin, adems del cifrado por producto que es una combinacin de los dos anteriores.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_4
El criptosistema de Rabin - SER
Cifrado por Sustitucin El cifrado por sustitucin es cifrado de bloques con reemplazo de smbolos o grupos de smbolos por otros smbolos o grupos de smbolos.
Cifrado por sustitucin simple Sea A un alfabeto de q smbolos y M el conjunto de todos los strings de largo t sobre A. Sea K, el conjunto de todas las permutaciones en el conjunto A. Se define para cada smbolo e | K la transformacin de encripcin Ee como sigue :
Ee(m) = (e(m1) e(m2) ........ e(mt)) = (c1 c2 c3 ....... ct) = c donde m=(m1 m2 m3 ...... mt)
En otras palabras, para cada smbolo en t-tupla, reemplace ste por otro smbolo de A de acuerdo a algunas permutaciones fijas de e. Para encriptar c=(c1 c2 ... ct) calcule la permutacin inversa de d = e^ -1 y Dd(c) = (d(c1) d(c2) ... d(ct)) = (m1 m2 ... mt) = m
Ee es llamado cifrado de sustitucin simple o cifrado de sustitucin monoalfabtico. El nmero de cifrados distintos es q! y es independiente del tamao del bloque en el cifrado.
Cifrado Corriente
El cifrado corriente aplica transformaciones de encriptacin simples, segn la clave a ser usada, sobre bloques de largo 1. Lo que tiene de til es que la transformacin de encriptacin puede cambiar para cada smbolo del texto puro que se est encriptando.
Sea K el espacio de claves para el conjunto de transformaciones de encriptacin, la secuencia de smbolos e1e2e3...ei | K, son llamadas claves corrientes. Sea A un alfabeto de q smbolos y sea Ee la sustitucin de cifrado con bloques de largo 1 donde e | K. Sea m1m2m3...mi el string de texto puro y e1e2e3...ei, las claves corrientes de K. El cifrado corriente toma el string de texto puro y produce otro string de texto cifrado c1c2c3...ci. El cifrado corriente aplica transformaciones de encriptacin simples, segn la clave corriente a ser usada, se puede generar la clave corriente al azar, o por un algoritmo que genere la clave corriente a travs de una semilla
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_5
El criptosistema de Rabin - SER
1.1.2 Criptografa con Clave-Pblica
El concepto de encripcin con clave-pblica es simple y elegante, pero tiene grandes consecuencias.
Encripcin con Clave-Pblica Sea (Ee: e | K) un conjunto de transformacin de encripcin, y sea (Dd : d | K) el conjunto de la transformacin de decripcin correspondiente, donde K es el espacio de claves. Considere algn par de transformaciones de encripcin / decripcin asociadas (Ee, Dd) y suponga que cada par tiene la propiedad de que Ee es computacionalmente in factible de calcular, dado un texto cifrado al azar c | C, se quiere encontrar el mensaje m | M tal que Ee (m)= c. Esta propiedad implica que dado e es in factible determinar la correspondiente clave de decripcin d ( por supuesto e y d son simplemente medios para describir la funcin de encripcin y decripcin correspondiente) Ee es vista aqu como una funcin unidireccional con trampa con d la trampa de informacin necesaria para calcular la funcin inversa y as permitir la decripcin. Esto es distinto del cifrado con Clave- Simtrica donde e y d son esencialmente iguales.
Dentro de esta suposicin, considere la comunicacin entre dos partes Maria y Juan mostrado en la Figura 1 Juan escoge el par de claves (e, d). Juan enva la clave de encripcin e (llamada clave pblica) a Maria en algn canal, pero guarda la clave de decripcin d (llamada clave privada) segura y secretamente.
Maria puede subsiguientemente enviar un mensaje m a Juan aplicando la transformacin de encripcin determinada por la clave pblica de Juan para hacer c=Ee(m). Juan decripta el texto cifrado c aplicando la transformacin inversa Dd nicamente determinado por d.
Aqu la clave de encripcin es transmitida a Maria a travs de un canal no seguro. Este canal no seguro tal vez el mismo canal sobre el cual el texto cifrado es transmitido.
Puesto que la clave de encripcin e no necesita mantenerse en secreto sta puede hacerse pblica. Cualquiera entidad puede enviar subsiguientemente mensajes encriptados a Juan que slo Juan puede decriptar. La Figura 2 muestra esta idea, donde A1, A2, y A3 son entidades distintas. Note que si A1 destruye el mensaje m1 despus de encriptarlo con c1, entonces A1 no puede recobrar m1 por c1. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_6
El criptosistema de Rabin - SER
Una analoga fsica, considere una caja de metal con una tapa de seguridad que tiene una combinacin secreta. La combinacin es conocida slo por Bob. Si la cerradura se abre hacia la izquierda y esto se hace pblico entonces cualquier persona puede poner un mensaje dentro y cerrar la tapa. Pero slo Bob puede recuperar el mensaje. An la entidad que puso el mensaje dentro de la caja no puede recuperarlo. La encripcin con clave-pblica, es descrita aqu, se asume el conocimiento de la clave-pblica e y no se permite el clculo de la clave privada d. En otras palabras, Se asume la existencia de una funcin unidireccional.
Figura 2. Uso esquemtico de la encriptacin con clave-pblica.
Definicin : Considere un esquema de encripcin compuesto por un conjunto de transformaciones de encripcin y decripcin (Ee: e | K) y (Dd : d | K), respectivamente. El mtodo de encripcin se llama un esquema de encripcin con clave-pblica si por cada par asociado de encripcin/decripcin (e,d), una clave e (la clave pblica) se hace pblicamente disponible, mientras que la otra d (la clave-privada) se guarda confidencialmente. Para que el esquema sea seguro, debe ser in factible computacionalmente calcular d a partir de e.
Comentario: (Clave pblica vs Clave secreta) para evitar ambigedad, se llego a un acuerdo en comn de usar el trmino clave-privada en asociacin con el criptosistema con clave-pblica y clave- secreta en asociacin con el criptosistema con clave simtrica. Esto motivado por el siguiente pensamiento: Son necesarias dos o ms partes para compartir un secreto, pero una clave es en verdad privada cuando slo una parte la sabe. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_7
El criptosistema de Rabin - SER
Hay muchos esquemas conocidos que creen ser claves pblicas seguras para un mtodo de encripcin, pero no tienen ninguna evidencia matemtica para asegurar la independencia de ser slo suposiciones. Esto no es diferente en el caso de la clave-simtrica donde el nico sistema que ha probado ser seguro es el one-time-pad
1.2 La necesidad de autenticacin en sistemas con claves-pblicas.
Autenticacin e Identificacin
Recordemos que autenticacin es un trmino que es usado (y a menudo abusado) en un sentido muy extenso. Por lo mismo ste tiene un significado pequeo en cosas que llevan a la idea de que algn medio tiene que ser provisto de seguridad para las entidades, o dar seguridad de que la informacin no ha sido manipulada por partes no autorizadas. Autenticacin es el objetivo especfico de la seguridad que uno trata de alcanzar. Unos de los ejemplos para especificar los objetivos incluyen control de acceso, autenticacin de las entidades, autenticacin del mensaje, integridad de los datos, no tener rechazos, y autenticacin de la clave.
Autenticacin es uno de los objetivos ms importantes de la seguridad de la informacin. Hasta mediados de los 1970s generalmente se crey que secreto y autenticacin estaban intrnsecamente conectados. Hasta que el descubrimiento de las funciones hash y las firmas digitales, dieron cuenta que el secreto y autenticacin estaban separado en verdad y que la informacin era independiente de los objetivos de la seguridad. No parecera al principio importante separar los dos pero hay situaciones donde no es slo til sino esencial. Por ejemplo en la comunicacin entre dos partes Maria y Juan, Maria est en un pas y Juan en otro, ambos pases no permiten secretos en el canal de comunicacin; uno o ambos pases quieren tener la posibilidad de supervisar todo tipo de comunicacin. A Maria y Juan, de todas formas, les gustara estar seguros de la identidad el uno del otro, y de la integridad y origen de la informacin que ellos enviarn y recibirn.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_8
El criptosistema de Rabin - SER
El problema anterior ilustra varios aspectos independientes de la autenticacin. Si Maria y Juan desean asegurarse de la entidad de cada uno, hay dos posibilidades a considerar.
1.- Maria y Juan pueden comunicarse sin retraso de tiempo. Esto es, ambos son activos en la comunicacin de "tiempo real" 2.- Maria o Juan puede intercambiar mensajes con algn retraso. Esto es, pueden dirigir el mensaje a travs de varias redes, que lo almacenan, y luego lo reenvan un tiempo ms tarde.
En el primer ejemplo Maria y Juan querran verificar las identidades en tiempo real. Esto se puede lograr si por ejemplo Maria enva a Juan un mensaje-secreto o desafo, que slo Juan pueda responder correctamente. Juan podra ejecutar una accin similar para identificar Maria. Este tipo de autenticacin es comnmente llamado autenticacin de la entidad o simplemente identificacin. Con respecto a la posibilidad del segundo no es conveniente mandar un mensaje-secreto o desafo y esperar una respuesta correcta, ya que el camino de la comunicacin es slo en una direccin. Tcnicas diferentes son ahora necesarias para autenticar al originador del mensaje. Esta forma de autenticacin es llamada autenticacin del origen de los datos.
Autenticacin de los datos en el origen.
Definicin: (Autenticacin de los datos en el origen o autenticacin de mensajes) Existen tcnicas que proveen que una de las partes reciba un mensaje seguro (por evidencia corroborada) y la identidad de la parte que origin el mensaje. A menudo se proporciona un mensaje a B con informacin adicional para que B pueda determinar la identidad de la entidad que origin el mensaje. Esta forma de autenticacin tpica no provee ninguna garanta, pero es til en situaciones donde una de las partes no es activa en la comunicacin.
Ejemplo (Necesidad de la autenticacin del origen de los datos) Uno le enva un mensaje a B por el correo electrnico. El mensaje puede viajar por sistemas de redes de comunicacin y guardarse para enviarlo a B un tiempo ms tarde. A y B no tienen usualmente una comunicacin directa.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_9
El criptosistema de Rabin - SER
A B le gustara tener algn medio para verificar que el mensaje recibido y su contenido fueron originados verdaderamente por A. La autenticacin del origen de los datos implcitamente provee la integridad de los datos ya que, si el mensaje fue modificado durante la transmisin, A podra no recibir el mensaje con el largo original. Pareciera que una criptografa con clave-pblica es un sistema ideal, ya que no se requiere de un canal seguro para pasar la clave de encripcin. Esto implica que dos entidades podran comunicarse sobre en canal no seguro nunca teniendo claves de intercambio en el medio. Desgraciadamente, ste no es el caso. La Figura 1. 3 muestra cmo un adversario activo puede derrotar el sistema (decriptando el mensaje destinado a una segunda entidad) sin romper el sistema del encripcin. Este es un tipo de personificacin y es un ejemplo de fracaso protocolar. En este texto el adversario personifica a la entidad B y enva a la entidad A una clave-pblica la cual A asume (incorrectamente) que es la clave-pblica de B. El adversario intercepta el mensaje encriptado de A para B decriptndolo con su propia clave-privada d, reencriptando el mensaje bajo la clave-pblica de B e, y lo enva a B. Esto destaca la necesidad de autenticar las claves pblicas para lograr datos originales se debe autenticar la clave pblica. Se debe convencer que ella est encriptada bajo una legtima clave pblica de B. Afortunadamente las tcnicas de clave pblica tambin permiten una elegante solucin a este problema.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_10
El criptosistema de Rabin - SER
Hace algunos aos, este tipo de sistemas no pareca tener ninguna ventaja en el mundo criptogrfico, porque tradicionalmente la criptografa se usaba slo con propsitos militares y diplomticos, y en estos casos el grupo de usuarios es lo suficientemente pequeo cmo para compartir un sistema de claves. Sin embargo, en la actualidad, las aplicaciones de la criptografa han aumentado progresivamente, hasta alcanzar muchas otras reas donde los sistemas de comunicacin tienen un papel vital. Cada vez con mayor frecuencia se pueden encontrar grandes redes de usuarios en las que es necesario que dos cualesquiera sean capaces de mantener secretas sus comunicaciones entre s. En estos casos, el intercambio continuo de claves no es una solucin muy eficiente.
Por otro lado, hay que resaltar la ventaja que representa en los sistemas asimtricos la posibilidad de iniciar comunicaciones secretas sin haber tenido ningn contacto previo. A continuacin, nombramos algunos de los sistemas de clave pblica que han tenido ms trascendencia. Sistema RSA. Se basa en el hecho de que no existe una forma eficiente de factorizar nmeros que sean productos de dos grandes primos. Sistema de Rabin. Se basa tambin en la factorizacion. Sistema de ElGamal. Se basa en el problema del logaritmo discreto. Sistema de Merkle-Hellman. Esta basado en el problema de la mochila. Sistema de McEliece. Se basa en la teora de la codificacin algebraica, utilizando el hecho de que la decodificacin de un cdigo lineal general es un problema NP-completo. Sistemas basados en curvas elpticas. En 1985, la teora de las curvas elpticas encontr de la mano de Miller aplicacin en la criptografa. La razn fundamental que lo motiv fue que las curvas elpticas definidas sobre cuerpos finitos proporcionan grupos finitos abelianos, donde los clculos se efectan con la eficiencia que requiere un criptosistema, y donde el clculo de logaritmos es an ms difcil que en los cuerpos finitos. Adems, existe mayor facilidad para escoger una curva elptica que para encontrar un cuerpo finito, lo que da una ventaja ms frente a su predecesor, el sistema de ElGamal. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_11
El criptosistema de Rabin - SER
2. Descripcin del problema
Para poder conseguir un proyecto de software fructfero, analizamos y delimitamos correctamente el planteamiento del problema del Sistema de Encriptacin de Rabin (SER) siguiente:
Se diseara e implementara un Sistema de Encriptacin de Rabin, que consiste en Implementar el Algoritmo del criptosistema propuesto por M. O. Rabin. El proyecto se desarrollara en el leguaje de programacin JAVA. La cual nos permitir poder hacer encriptaciones y decriptacin de mensajes a travs de este sistema. Y si el tiempo lo permite, se implementara una interfaz de usuario del sistema la cual le facilitara interactuar al cliente con el programa.
3. Descripcin del mbito del SER.
3.1 Descripcin General del Algoritmo de Rabin. El sistema de llave asimtrica de Rabin se basa en el problema de calcular races cuadradas mdulo un nmero compuesto. Este problema se ha demostrado que es equivalente al de la factorizacin de dicho nmero.
En primer lugar escogemos dos nmeros primos, p y q, ambos congruentes con 3 mdulo 4 (los dos ltimos bits a 1). Estos primos son la clave privada. La clave pblica es su producto, n = pq.
Para codificar un mensaje m, simplemente se calcula c = m 2 (mod n)
La descodificacin del mensaje se hace calculando lo siguiente:
m1 = c (p+1)/4 (mod p) m2 = (p - c (p+1)/4 ) (mod p) m3 = c (p+1)/4 (mod q) m4 = (q -c (p+1)/4 ) (mod q) Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_12
El criptosistema de Rabin - SER
Luego se escogen a y b tales que a = q(q -1 (mod p)) y b = p(p -1 (mod q)). Los cuatro posibles mensajes originales son
Desgraciadamente, no existe ningn mecanismo para decidir cul de los cuatro es el autntico, por lo que el mensaje deber incluir algn tipo de informacin para que el receptor pueda distinguirlo de los otros.
3.2 Fundamentacin del Algoritmo de Rabin.
Ahora presentaremos el Criptosistema de Rabin, el cual es computacionalmente seguro contra todo ataque de texto plano elegido bajo el supuesto que es computacionalmente in factible factorizar nmeros de la forma n = p * q, donde p y q son primos.
Sea n el producto de dos primos distintos p y q, con p, q 3(mod A). Sea P = C = n y definamos
Para K =(n , p, q, B) definimos
y
La clave pblica es (n, B), y p y q se mantienen secretos.
La funcin de encripcin no es inyectiva, as que la decripcin es ambigua. En efecto si w es una raz cuadrada no trivial de 1, entonces para todo texto plano x hay tres valores distintos que producen el mismo texto cifrado , y son Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_13
En general, el receptor del mensaje no tiene forma de distinguir entre estos cuatro textos planos posibles a menos que el texto plano contenga suficiente redundancia como para eliminar tres de las cuatro posibilidades.
Para decriptar debemos resolver
o equivalentemente,
donde x1 = x + B/2.
Sea entonces C = y + B 2 . Observemos que C es un residuo cuadrtico si la encripcin se hizo correctamente. Las soluciones de la ecuacin (x1) 2 = C (mod n) se pueden obtener mediante el Teorema Chino del Resto a partir de las soluciones de las ecuaciones:
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_14
El criptosistema de Rabin - SER
Cada una de estas ecuaciones tiene dos races. Estas se pueden combinar para obtener las cuatro soluciones de la ecuacin original (por el TCR). Por el criterio de Euler sabemos que si se encript correctamente C es un residuo cuadrtico mdulo p y mdulo q. Pero esto no basta para poder resolver las ecuaciones. En realidad el elemento clave para esto es el hecho que p 3(mod 4) y q 4, pues en este caso tenemos un algoritmo determinista polinomial que nos permite calcular las races cuadradas de residuos cuadrticos mdulo p o q. Las races de la primera ecuacin vienen dadas por C (p+1)/4 (mod p). En efecto:
(C (p+1)/4 ) 2 C (p+1)/2 (mod p). C (p-1)/2 C (mod p). C (mod p).
esto debido a que C es residuo cuadrtico, luego por el criterio de Euler se tiene que: C (p-1)/2
1(mod p).
Anlogamente, las races de la segunda ecuacin son C (q+1)/4 (mod q). Teniendo las soluciones de ambas ecuaciones se obtienen directamente las cuatro races de C mdulo n usando el Teorema Chino del Resto.
Cabe hacer dos observaciones: 1. El adversario no sabe cul de las cuatro es la decripcin correcta, pero el receptor tampoco. Esto se resuelve acordando ciertas reglas de redundancia en el mensaje (i.e. el mensaje se transmite como dos copias concatenadas, el tercer bit se repite tres veces, etc.) para poder distinguir cul de las cuatro races corresponde al mensaje original. 2. Es interesante el hecho que para el caso en que un primo p es congruente a 1 modulo 4 no se conoce ningn algoritmo polinomial determinista para determinar las races cuadradas de residuos cuadrticos mdulo p, i.e. el hecho que p
3 (mod 4) y q
4 (mod 3) es vital para el algoritmo de decripcin (Sin embargo, se conoce un algoritmo probabilista de tiempo polinomial que cumple este propsito).
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_15
El criptosistema de Rabin - SER
3.3 Pasos del Algoritmo de Rabin.
Estos algoritmos son tomados de Handbook of Applied Cryptography [10].
Algorithm 1 Key generation for Rabin public-key encryption
SUMMARY: each entity creates a public key and a corresponding private key.
Each entity A should do the following: 1. Generate two large random (and distinct) primes p and q, each roughly the same size. 2. Compute n = pq. 3. As public key is n; As private key is (p; q).
Algorithm 2 Rabin public-key encryption
SUMMARY: B encrypts a message m for A, which A decrypts.
1. Encryption. B should do the following: (a) Obtain As authentic public key n. (b) Represent the message as an integer m in the range {0,1, , n 1}. (c) Compute c = m 2 mod n. (d) Send the ciphertext c to A.
2. Decryption. To recover plaintext m from c, A should do the following: (a) Use Algorithm 3 to find the four square roots m1,m2,m3, and m4 of c modulo n 2. (See next Note). (b) The message sent was either m1,m2,m3, or m4. A somehow decides which of these is m.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_16
El criptosistema de Rabin - SER
Algorithm 3 Finding square roots modulo n given its prime factors p and q
INPUT: An integer n, its prime factors p and q, and a Qn. OUTPUT: the four square roots of a modulo n. 1. Use Algorithm 4 to find the two square roots r and -r of a modulo p. 2. Use Algorithm 4 to find the two square roots s and -s of a modulo q. 3. Use the extended Euclidean algorithm to find integers c and d such that cp + dq = 1. 4. Set x (rdq + scp) mod n and y (rdq - scp) mod n. 5. Return(x mod n, y mod n).
Algorithm 4 Finding square roots modulo a prime p
INPUT: An odd prime p and a square a Qp. OUTPUT: the two square roots of a modulo p. 1. Choose random b Zp until b 2 - 4a is a quadratic non-residue modulo p, i.e., (b 2 -4a)/p = -1.. 2. Let f be the polynomial x 2 - bx + a in Zp[x]. 3. Compute r = x (p+1)/2 mod f 4. Return(r, -r).
Note (finding square roots of c modulo n = pq when p q 3 (mod 4)) If p and q are both chosen to be 3 (mod 4), then Algorithm 4 for computing the four square roots of c modulo n simplifies as follows: 1. Use the extended Euclidean algorithm to find integers a and b satisfying ap + bq = 1. Note that a and b can be computed once and for all during the key generation stage. 2. Compute r = c (p+1)/4 mod p. 3. Compute s = c (q+1)/4 mod q. 4. Compute x = (aps + bqr) mod n. 5. Compute y = (aps - bqr) mod n. 6. The four square roots of c modulo n are x, -x mod n, y, and -y mod n.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_17
El criptosistema de Rabin - SER
3.4 Comentarios del Criptosistema de Rabin.
Ahora probaremos que el criptosistema de Rabin es computacionalmente seguro. Suponemos entonces que si existe un algoritmo A que conociendo n y B y dada una entrada y C entrega un x P tal que eK(x) = y.
El siguiente algoritmo toma como entrada n y B y utiliza A como subrutina y factoriza el mdulo n con probabilidad de a lo menos .
Existen varios puntos a explicar en este algoritmo. Primero observemos que:
Luego en el paso 3, A retorna un valor x P tal que:
De esta manera obtenemos que: Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_18
El criptosistema de Rabin - SER
donde w es una raz cuadrada no trivial de 1 modulo n. Si x 1 (mod n) entonces como n|(x1 + r )(x1 - r) sigue que al calcular mcd((,x)1 + r, n) se obtiene p o q.
Para determinar la probabilidad de xito de quebrar el criptosistema de Rabin, definimos en Zn\{0} la relacin de equivalencia.
Se verifica fcilmente que ~ es relacin de equivalencia. Notar que la clase de equivalencia de un elemento r tiene cardinal 4 en efecto:
Pero todo elemento de [r] genera el mismo y C para el paso 2 y luego da lugar al mismo x1 en el paso 4. Luego con probabilidad de a lo menos en el paso 1 se eligi un trmino tal que x r(mod n), luego el Criptosistema de Rabin es computacionalmente seguro bajo ataques de texto plano elegido bajo el supuesto que no existe un algoritmo probabilstica eficiente que permita factorizar nmeros de la forma
n = p * q, p y q primos.
Cabe hacer notar que bajo ataques de texto cifrado conocido el Criptosistema de Rabin es inseguro, dado que el algoritmo A es reemplazado por el algoritmo de decripcin del Criptosistema de Rabin conocido por la persona que realiza el ataque.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_19
El criptosistema de Rabin - SER
4. Metodologa de desarrollo para el diseo del SER.
En los cifrados asimtricos o de clave pblica, tal y como ya se definieron anteriormente, la clave de descifrado no se puede calcular a partir de la de cifrado.
En 1975, dos ingenieros electrnicos de la Universidad de Standford, Whitfield Diffie y Martn Hellman[1], sugieren usar problemas computacionalmente irresolubles para el diseo de criptosistemas seguros. La idea consiste bsicamente en encontrar un sistema de cifrado computacionalmente fcil (o al menos no difcil), de tal manera que el descifrado sea por el contrario, computacionalmente irresoluble a menos que se conozca la clave. Para ello, hay que usar una transformacin criptogrfica Tk de fcil aplicacin, pero de tal manera que sea muy difcil hallar una transformacin inversa Tk ^(-1) sin la clave de descifrado. Dicha funcin Tk es, desde el punto de vista computacional, no inversible sin cierta informacin adicional (clave de descifrado) y se llama funcin de una va o funcin trampa.
En estos esquemas se utiliza una clave de cifrado (clave pblica) k que determina la funcin trampa Tk, y una clave de descifrado (clave secreta o privada) que permite el clculo de la inversa Tk ^(-1).
En consonancia con el espritu de la criptografa moderna, y tal como suceda en los sistemas simtricos, los algoritmos de cifrado y de descifrado son pblicos, por lo que la seguridad del sistema se basa nicamente en la clave de descifrado.
Segn Diffie y Hellman, todo algoritmo de clave pblica debe cumplir las siguientes propiedades de complejidad computacional: 1. Cualquier usuario puede calcular sus propias claves pblica y privada en tiempo polinomial. 2. El emisor puede cifrar su mensaje con la clave pblica del receptor en tiempo polinomial. 3. El receptor puede descifrar el criptograma con la clave privada en tiempo polinomial. 4. El criptoanalista que intente averiguar la clave privada mediante la pblica se encontrar con un problema intratable. 5. El criptoanalista que intente descifrar un criptograma teniendo la clave pblica se encontrar con un problema intratable. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_20
El criptosistema de Rabin - SER
En la prctica el diseador de algoritmos asimtricos se encuentra con cinco problemas numricos distintos. Los tres primeros, correspondientes a las condiciones 1, 2 y 3, deben pertenecer a la clase polinomial. Los otros dos, correspondientes a las condiciones 4 y 5, son problemas complejos, preferiblemente NP-completos, ya que aunque un problema pertenezca a esta clase siempre puede darse algn ejemplo concreto que se resuelva en tiempo polinomial.
Cmo construir un criptosistema de Clave Pblica En lneas generales, un esquema a seguir para la construccin de un criptosistema de clave pblica es el siguiente:
1) Escoger un problema P difcil, a se posible intratable. 2) Escoger un subproblema de P fcil, P fcil que se resuelva en tiempo polinomial, preferiblemente en tiempo lineal. 3) Transformar el problema P fcil de tal manera que el problema resultante, P difcil, no se parezca al inicial, pero si al problema original P. 4) Publicar el problema P difcil y la forma en que debe ser usado, constituyendo este proceso la clave (pblica) de cifrado. La informacin sobre cmo se puede recuperar el problema P fcil a partir del problema P difcil se mantiene en secreto y constituye la clave secreta de descifrado.
Los usuarios legtimos utilizan la clave secreta para llevar a cabo el descifrado, convirtiendo el problema P difcil en el problema P fcil mientras que el criptoanalista tiene que enfrentarse forzosamente a la resolucin del problema P difcil.
En la construccin de criptosistemas se pueden observar diferencias entre los algoritmos para sistemas simtricos y los algoritmos usados en clave pblica. En primer lugar existen mayores restricciones de diseo para un algoritmo asimtrico que para un simtrico, debido a que la clave pblica representa informacin adicional que potencialmente un enemigo puede usar para llevar a cabo el criptoanlisis. Normalmente el algoritmo de clave pblica basa su seguridad en la dificultad de resolver algn problema matemtico conocido, mientras que algunos algoritmos simtricos, se disean de tal manera que las ecuaciones matemticas que los describen son tan complejas que no son resolubles analticamente. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_21
El criptosistema de Rabin - SER
En segundo lugar, existen grandes diferencias en la generacin de claves. En los algoritmos simtricos en los que el conocimiento de la clave de cifrado es equivalente a la de descifrado, y viceversa, la clave se puede seleccionar de forma aleatoria.
Sin embargo, en los algoritmos asimtricos, como la relacin entre la clave de cifrado y la de descifrado no es pblica, se necesita un procedimiento para calcular la pblica a partir de la clave privada que sea computacionalmente eficiente y tal que el clculo inverso sea imposible de realizar.
Despus de lo sealado hasta ahora hay que mencionar tres problemas o inconvenientes que se suelen presentar en la Criptografa de Clave secreta :
1. Distribucin de claves Dos usuarios tienen que seleccionar una clave en secreto antes de empezar a comunicarse, lo que debern hacer bien personalmente (cosa que no siempre es posible ), bien por medio de un canal inseguro.
2. Manejo de claves. En una red de n usuarios cada pareja debe tener su clave secreta particular, lo que hace un total de n(n-1)/2 claves para esa red.
3. Sin firma digital. Una firma digital es lo anlogo a una firma digital o rbrica, pero en una red de comunicaciones. En los criptosistemas de clave secreta no hay posibilidad, en general , de firmar digitalmente los mensajes, con lo que el receptor del mismo no puede estar seguro de que quien dice que le envia el mensaje sea realmente quien lo ha hecho.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_22
El criptosistema de Rabin - SER
5. Diseo e Implementacin del Sistema de Encriptacin de Rabin.
Para el desarrollo del diseo e Implementacin se tomaron en consideracin dos cosa: 1. El lenguaje de programacin. 2. Y el protocolo de encriptacin y desencriptacin.
Estos dos punto se deben principalmente a que estos determinan la forma de organizar el concepto del modelo de programacin, y la forma de poder controlar el flujo de datos entre los diferentes mdulos.
El desarrollo de este punto dentro del reporte se describe de la siguiente reporte. Inicialmente se discutir el diseo del sistema; a partir de esto se discutir los puntos mas importantes que se deben tomar en cuenta sobre la implantacin con base al diseo. En seguida se describir la implementacin de cada uno de los mdulos. Y por ultimo se explica el diseo y funcionamiento de la interfase de usuario para el sistema SER.
Figura 5.1: Interrelacin de las clases del sistema SER. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_23
El criptosistema de Rabin - SER
Como se muestra en la figura 5.1 se muestra el concepto de la Programacin Orientada a Objetos, que esta basada en dividir el problema en entidades que realizan un o varias funciones para el Sistema.
En este caso el Sistema se divide en 6 clases principales, mas una clase que sirve como la clase que se encarga de ejecutar el Sistema.
La figura 5.1 muestra una clase llamada RabinFrame; que es, la que hace uso de todas las clases, esto se debe a que la clase contiene la interfaz del sistema y dentro de esa Interfaz hace llamadas (agregacin de los objetos) al resto de las 5 clases que se implementan. Hay tres clases importantes dentro del Sistema de Encriptacin de Rabin; y estas son las clases KeySet, DecryptMessage y EncryptMessage; Esta divisin es obvia por la simple razn de que el sistema realiza estas tres tareas.
Las ultimas dos clases hasta ahora no mencionadas son parte importante para que la clase DecryptMessage realice su tarea de desencriptar el mensaje. Entre estas dos clases, la mas importante para el sistema es la EEC, que realmente es la implantacin del Algoritmo extendido de Euclides y la pieza clave dentro de la implementacin.
Figura 5.2. Relacin que guardan las tres clases. La clase DescryptMessage agrega a ella a la clase Roots y a su vez la clase Roots a la clase EEC.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_24
El criptosistema de Rabin - SER
En la etapa de diseo del Sistema; se basa principalmente en las diferentes pruebas de programacin que se hacen antes de poder valorar y cuantificar el poder del lenguaje de programacin. En este caso se escogi Java.
5.2 Transicin del Diseo a Implementacin.
Uno de los problemas principales que se enfrenta con los lenguajes de programacin, es implementar la Aritmtica de precisin infinita. Por ejemplo en C o C++, esta implementacin se debe de realizar a fuerza, si se quiere realizar un criptosistema seguro. Pero primeramente, Que es Aritmtica de precisin infinita?
5.2.1 Aritmtica de precisin Infinita.
Sistemas de numeracin posicionales.
En los sistema de numeracin posicionales, el valor de una cifra depende del lugar que sta ocupe dentro del nmero. El ms conocido es el sistema decimal. En el nmero decimal 221 el dgito 2 figura dos veces, pero el de la derecha representa 2 decenas mientras que el de la izquierda representa dos centenas.
Generalizando, en un sistema de numeracin posicional de base b, la representacin de un nmero se define a partir de la regla:
( a 3 a 2 a 1 a 0 .a -1 a -2 a -3 ) b =
+ a 2 b 2 + a 1 b 1 + a 0 b 0 + a -1 b -1 + a -2 b -2 + a -3 b -3 + (1)
Por ejemplo, (423.1) 6 = 46 2 + 26 1 + 36 0 + 16 -1 . Cuando b es diez y los a i se eligen del conjunto de dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 se trata del sistema decimal; y en este caso el subndice b de la expresin (1) puede omitirse.
Las generalizaciones ms simples del sistema decimal se obtienen cuando b es un entero no negativo mayor a 1 y cuando los a i pertenecen al conjunto de enteros en el rango 0 a i < b. As, cuando b es 2 se obtiene el sistema de numeracin binario, cuando b es 8 el octal y cuando b es 16 el hexadecimal. Pero en general, se podra elegir cualquier b distinto de cero, y los a i de cualquier conjunto de nmeros, obteniendo sistemas muy interesantes (ver [1] para ms informacin).
Nmeros de precisin finita
Al hacer operaciones aritmticas, en muy raras ocasiones uno se preocupa por la cantidad de dgitos decimales que son necesarios para representar a un nmero. Se puede calcular que hay 10 78 electrones en el universo sin molestarse por el hecho de que se requieren 79 lugares decimales para escribir el nmero completo. Una persona que evala una funcin a mano buscando una solucin de 6 dgitos significativos, simplemente trabaja con resultados intermedios de 7, 8 o cuantos dgitos necesite. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_25
El criptosistema de Rabin - SER
Con las computadoras, las cosas son bastante diferentes. En la mayora de las computadoras, la cantidad de memoria disponible para guardar nmeros se fija en el momento de su diseo. Con un poco de esfuerzo, el programador puede llegar a representar nmeros 2 o 3 veces ms grandes que este tamao prefijado, pero al hacerlo no termina de cambiar la naturaleza del problema: la cantidad de dgitos disponibles para representar un nmero siempre ser fija. Llamaremos a estos nmeros: nmeros de precisin finita.
Para poder estudiar las propiedades de los nmeros de precisin finita, se examinar el conjunto de los nmeros enteros positivos que se pueden representar con tres dgitos decimales, sin punto decimal ni signo. Este conjunto tiene exactamente 1000 elementos: 000, 001, 002, 003, ., 999. Con estas restricciones es imposible representar algunos conjuntos de nmeros enteros, como ser:
1. Nmeros mayores a 999 2. Nmeros negativos 3. Fracciones 4. Nmeros irracionales 5. Nmeros complejos
El conjunto de los nmeros enteros tiene la propiedad de ser cerrado con respecto a la suma, resta y multiplicacin. Es decir, para todo par de enteros a y b, a + b, a - b y a x b son tambin enteros. Pero el conjunto de enteros no es cerrado con respecto a la divisin ya que existen enteros a y b para los cuales el resultado de a / b no es un nmero entero.
Desafortunadamente, el conjunto de los nmeros de precisin finita no es cerrado con respecto a las operaciones aritmticas bsicas, como se muestra a continuacin, usando nmeros de tres dgitos decimales como ejemplo:
600 + 600 = 1200 (muy grande) 003 - 005 = -2 (negativo) 050 x 050 = 2500 (muy grande) 007 / 002 = 3,5 (no es un entero)
Las exclusiones se pueden dividir en dos clases: las operaciones cuyo resultado es mayor al mximo nmero del conjunto (error de overflow) o menor al mnimo nmero del conjunto (error de underflow), y las operaciones cuyos resultados simplemente no pertenecen al conjunto. De las cuatro exclusiones del ejemplo, las primeras tres pertenecen a la primera categora y la ltima a la segunda.
Como las computadoras tienen memoria finita y por lo tanto, debern realizar operaciones sobre nmeros de precisin finita, los resultados de algunos operaciones sern, desde el punto de vista matemtico, totalmente errneos. Una calculadora que da la respuesta incorrecta aunque todos sus circuitos estn funcionando en perfectas condiciones puede resultar extraa al principio, pero el error que comete es una consecuencia lgica de su naturaleza finita. Algunas computadoras tienen hardware que detecta los errores de overflow.
El lgebra de los nmeros de precisin finita es bastante diferente al lgebra al que estamos acostumbrados. Por ejemplo, consideremos la ley asociativa:
a + (b - c) = (a + b) - c Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_26
El criptosistema de Rabin - SER
Evaluemos ambos lados de este igualdad con los siguientes valores: a = 700, b = 400, c = 300. Para calcular el trmino de la izquierda, primero evaluamos (b - c) que es 100, valor que sumamos a a, obteniendo 800. Para calcular el trmino de la derecha calculamos primero (a + b), que resulta en un error de overflow en aritmtica de nmeros de 3 dgitos decimales. El resultado depender de la mquina que se est usando, pero no se puede garantizar que sea 1100. Al restar 300 de un nmero que es distinto de 1100, jams obtendremos 800. La ley asociativa no se cumple, por lo tanto el orden de las operaciones es importante.
Como otro ejemplo, consideremos la ley distributiva:
a x (b - c) = a x b - a x c
Si evaluamos ambos lados de la igualdad con a = 5, b = 210 y c = 195, el trmino izquierdo es 5 x 15 dando 75. El trmino de la izquierda no es 75 porque a x b resulta en un error de overflow.
A juzgar por estos ejemplos, uno podra concluir que aunque las computadoras son mquinas de propsito general, su naturaleza finita las hace inadecuadas para llevar a cabo operaciones aritmticas. Esta conclusin, por supuesto, no es verdadera, pero sirve para mostrar lo importante que es saber cmo trabajan las computadoras y cules son sus limitaciones.
5.2.2 Que ofrece Java para la Aritmtica de precisin Infinita.
Package java.math Description
Provides classes for performing arbitrary-precision integer arithmetic (BigInteger) and arbitrary- precision decimal arithmetic (BigDecimal). BigInteger is analogous to Java's primitive integer types except that it provides arbitrary precision, hence operations on BigIntegers do not overflow or lose precision. In addition to standard arithmetic operations, BigInteger provides modular arithmetic, GCD calculation, primality testing, prime generation, bit manipulation, and a few other miscellaneous operations. BigDecimal provides arbitrary-precision signed decimal numbers suitable for currency calculations and the like. BigDecimal gives the user complete control over rounding behavior, allowing the user to choose from a comprehensive set of eight rounding modes
Class BigInteger. Immutable arbitrary-precision integers. All operations behave as if BigIntegers were represented in two's-complement notation (like Java's primitive integer types). BigInteger provides analogues to all of Java's primitive integer operators, and all relevant methods from java.lang.Math. Additionally, BigInteger provides operations for modular arithmetic, GCD calculation, primality testing, prime generation, bit manipulation, and a few other miscellaneous operations.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_27
El criptosistema de Rabin - SER
5.3 Implementacin del Sistema de Encriptacin de Rabin. El desarrollo de este punto radica principalmente en la explicacin de la clase y su implementacin de la misma. Solo se explican las cinco clases que forman la medula del sistema, con respecto a la interfase solo se detalla el funcionamiento para el usuario.
5.3.1| Implementacin de la clase KetSet
Esta clase es la encarga de generar las llaves publicas y privadas a partir del hecho que: n = p * q, donde p y q son nmeros primos muy grandes. Con esto, se definen como llave privada el par de primos grandes (p , q) y como llave publica el resultado del producto de los dos numeros primos ( n ).
Esta clase esta conformada por 3 variables que representan las llaves y los cinco mtodos que las generan y las muestran.
KetSet q, p, n KeySet( ); getPrime ( ); getP ( ); getQ ( ); getN ( );
Los mtodos mas importantes para ser explicados son los siguientes:
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_28
El criptosistema de Rabin - SER
public KeySet (int size) { Size = size; long time = System.currentTimeMillis(); p = getPrime(time); while((p.mod(four)).compareTo(three) != 0){ time += 8; p = getPrime(time); El constructor de la clase KeySet es realmente la encargada de generar las llaves n, p y q: aplicando n = p*q. } time = System.currentTimeMillis(); q = getPrime(time); while((q.mod(four)).compareTo(three) != 0) { time += 12; q = getPrime(time); } n = p.multiply(q); }
Para poder generar un numero primo aleatorio grande se utiliza el constructor de la clase BigInteger, como se muestra en la especificacin. Para mas informes ver la documentacin de java 1.4.0.01 [11].
BigInteger(int bitLength, int certainty, Random rnd) Constructs a randomly generated positive BigInteger that is probably prime, with the specified bitLength.
Este mtodo getPrime, hace uso del constructor BigInteger para generar el primo largo. Como argumento se obtiene un numero de tipo long, la cual se utiliza para generar un numero aleatorio que a su vez servia para obtener el numero primo largo.
private static BigInteger getPrime ( long n ) { Random num = new Random(n); BigInteger prime = new BigInteger(Size, 100, num); return prime; }
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_29
El criptosistema de Rabin - SER
5.3.2 Implementacin de la clase EncryptMessage.
En este caso, la clase esta formada por tres mtodos; pero realmente el mas importante de explicar es el encipher( ). EncryptMessage q, p, n plainText cipherText EncryptMessage( n , plainText) getCipherText() getPlainText() encipher()
/* Matodo que encripta el Mensaje de plainText.*/ public void encipher() {
StringTokenizer t = new StringTokenizer(plaintext, "\n"); while ( t.hasMoreTokens()) { // El mensaje se almacena linea a linea, en cipherText. String s = new String(); s = t.nextToken(); // Adiciona un bit extra al final de plaintext(Parte del Protocolo). byte[] temp = s.getBytes(); // Transforma una cadana a Bytes con el byte[] rabinbytes = new byte[temp.length + 1]; // objeto de obtener el tamao del numero // bytes de cada cadena. System.arraycopy(temp, 0, rabinbytes, 0, temp.length); // Protocolo de reconocimiento. System.arraycopy(rabinbytes, (rabinbytes.length - 2), rabinbytes, (rabinbytes.length - 1), 1); BigInteger m = new BigInteger(rabinbytes); // Transforma la linea de mensaje en un BigInteger. c = m.modPow(two, n); ciphertext += c.toString() ; ciphertext += "\n"; } System.out.println("cipher text Completo: " + ciphertext); }
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_30
El criptosistema de Rabin - SER
Este mtodo tiene realmente dos puntos de interesantes. Primero, se sigue al pie de la letra el algoritmo de encriptacin, pero la representacin del mensaje se realiza por medio de una secuencia de mensajes mas pequeos; Estos mensajes son una lnea del plainText, es decir que cada lnea de texto representa un submensaje, la cual se debe de encriptar. Segundo; Adems como sabemos que el algoritmo de desencriptacin se debe de obtener 4 races, se agrega a cada lnea el ultimo carcter dos veces con objeto de identificar la raz indicada o correcta.
5.3.3 Implementacin de la clase EEC.
Antes que nada debemos explicar un poquito que es el Algoritmo de Euclides.
Algoritmo de Euclides bsico y extendido
Algoritmo de Euclides Sirve para calcular el mximo comn divisor de dos nmeros a y b. Para enunciar este algoritmo nos serviremos de una proposicin y un teorema previos.
Proposicin Sean a b con b 0, por el algoritmo de la divisin tendremos que a = bq + r. Entonces se cumple: 1) Los divisores comunes de a y b tambin son divisores de r 2) Los divisores comunes de b y r tambin son divisores de a
Demostracin: (1) Sea c tal que c|a, c|b, entonces a = cq 1 , b = cq 2 . Luego cq 2 q + r = cq 1 r = c(q 1 q 2 q) c|r. (2) Supongamos ahora c tal que c|b, c|r. Por tanto b = cq 1 , r = cq 2 y tendremos a = cq 1 q + cq 2
a = c(q 1 q+q 2 ) c|a.
Teorema En una divisin el mximo comn divisor del dividendo y el divisor es igual al mximo comn divisor del divisor y el resto, es decir, si a = bq + r, con a, b, q, rZ, b 0, se cumple mcd(a,b) = mcd(b,r).
Demostracin:
Como vimos antes, dividendo y divisor tienen los mismos divisores que divisor y resto. Por tanto, ambos tendrn el mismo mximo comn divisor.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_31
El criptosistema de Rabin - SER
Algoritmo de Euclides
Como mcd(a,b) = mcd(|a|,|b|), podemos suponer sin perdida de generalidad que a b > 0. Dividimos a por b, a = bq 1 + r 1 , con 0 r 1 < b Si r 1 = 0, ya que a b, es obvio que b = mcd(a,b) y hemos terminado. Si r 1 0, dividimos b por r 1 , b = r 1 q 2 + r 2 , con 0 r 2 < b Si r 2 = 0, entonces mcd(b,r 1 ) = r 1 y por el teorema anterior mcd(b,r 1 ) = r 1 = mcd(a,b). Si r 2 0 continuamos dividiendo r 1 por r 2 , y as sucesivamente De este modo obtenemos un conjunto de nmeros r 1 > r 2 >...., de modo que llegaremos a un r n = 0. Entonces: r n1 = mcd(r n2 , r n1 ) =...= mcd(b,r 1 ) = mcd(a,b)
Nota.- El nmero de pasos necesarios es como mximo 5 veces el nmero de dgitos del nmero ms pequeo de entre los a, b por los que comenzamos a calcular el mximo comn denominador
Algoritmo extendido de Euclides
Sirve para hallar los trminos de la combinacin lineal que da origen al mximo comn divisor. Para ello se realiza el proceso inverso al seguido en el algoritmo de Euclides. Vamos a verlo con un ejemplo:
2.- Algoritmo extendido de Euclides: Realizamos el camino inverso al algoritmo de Euclides empezando por la expresin donde el mximo comn divisor es igual al resto.
Iremos sustituyendo valores con el objeto de llegar a los nmeros de los que se hallo el mximo comn denominador.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_32
El criptosistema de Rabin - SER
- Algoritmo de Euclides extendido: Si mcd (a,b) = c, entonces c se puede expresar como combinacin lineal de a y b, es decir, existen dos nmeros k1 y k2 tal que: c = k1*a + k2*b, con k1 y k2 nmeros enteros. Dicho algoritmo determina los valores de k1 y k2 . Se trata de ir despejando en el Algortimo de Euclides desde la ltima divisin obtenida hasta llegar a la primera. EEC A B D EEC(p_ in, q_in); Compute( ); getA( ); getB( ); getD( );
/* * @(#)proyectos.Encriptamiento de Rabin 4/07/2002 * @author Oscar G. Landa Rosales * @version 1.0, 4/07/2002 * @since JDK_1.4.0 */ import java.math.*;
/********************************************************* *Inmplementacion del algoritmo extendido de Euclides. *********************************************************/ class EEC{ private BigInteger p,q; // private BigInteger p,q; private BigInteger a,b,d; private BigInteger x1,x2,y1,y2,t1,t2;
public EEC(BigInteger pin, BigInteger qin){ p = pin; q = qin; } public void compute( ){ Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_33
El criptosistema de Rabin - SER
if (q.equals(BigInteger.valueOf(0))) { d = p; a = BigInteger.valueOf(1); b = BigInteger.valueOf(0); } else { x2 = BigInteger.valueOf(1); x1 = BigInteger.valueOf(0); y2 = BigInteger.valueOf(0); y1 = BigInteger.valueOf(1); while(q.compareTo(BigInteger.valueOf(0)) > 0){ t1 = p.divide(q); t2 = p.add((t1.multiply(q)).negate()); a = x2.add((t1.multiply(x1)).negate()); b = y2.add((t1.multiply(y1)).negate()); p = q; q = t2; x2 = x1; x1 = a; y2 = y1; y1 = b; }
d = p; a = x2; b = y2; } }
public BigInteger getD( ){ return d; }
public BigInteger getA( ){ return a; }
public BigInteger getB( ){ return b; } }
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_34
El criptosistema de Rabin - SER
5.3.4 Implementacin de la clase Roots.
Roots q, p, n plainText cipherText Roots( p_in, q_in, cipherText) computeRoots( )
/* * @(#)proyectos.Encriptamiento de Rabin 24/07/2002 * * "Codigos y Criptografia" * CENTRO DE INVESTIGACIN Y DE ESTUDIOS AVANZADOS DEL * INSTITUTO POLITECNICO NACIONAL. [CINVESTAV-IPN] * CINVESTAV - IPN * * Encuentra las cuatro races m1, m2, m3 y m4 de [c mod (n^2)]. * * @author Oscar G. Landa Rosales * @version 1.0, 24/07/2002 * @since JDK_1.4.0 * */
import java.math.*; import java.util.*;
public class Roots{
private final BigInteger one = BigInteger.valueOf(1); private final BigInteger four = BigInteger.valueOf(4); private BigInteger p; private BigInteger q; private BigInteger n; private BigInteger cipher; private BigInteger roots[] = new BigInteger[4];
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_35
El criptosistema de Rabin - SER
/* Como argumentos se ingresa p, q y ciphertext. */ public Roots(BigInteger pin, BigInteger qin, BigInteger c){ p = pin; q = qin; n = p.multiply(q); cipher = c; }
/* Optiene las raices r, s, x, y de */ public BigInteger[] computeRoots( ) { BigInteger a, b, r, s, x, y, exp; EEC eec;
exp = p.add(one).divide(four); r = cipher.modPow(exp, p);
exp = q.add(one).divide(four); s = cipher.modPow(exp, q);
if (p.compareTo(q) > 0){ eec = new EEC(p,q); } else { eec = new EEC(q,p); } eec.compute(); a = eec.getA(); b = eec.getB();
x = a.multiply(p).multiply(s).add(b.multiply(q).multiply(r)).mod(n); y = a.multiply(p).multiply(s).add(b.multiply(q).multiply(r).negate()).mod(n); roots[0] = x; roots[1] = y; roots[2] = x.negate().mod(n); roots[3] = y.negate().mod(n); Se sigue los pasos del algoritmo tradicional, para obtener las 4 races. Se calcula r = c (p+1)/4 mod p. Se calcula s = c (q+1)/4 mod q. Se calcula el Algoritmo Extendido de E. Se calcula x = (aps + bqr) mod n. Se calcula y = (aps - bqr) mod n. 6. Las cuatro raices del c mod n son: x, -x mod n, y, and -y mod n.
if(cipher.compareTo(roots[0].modPow(BigInteger.valueOf(2),n)) != 0) System.out.println("Raiz No Valida -> x <-"); if(cipher.compareTo(roots[1].modPow(BigInteger.valueOf(2),n)) != 0) System.out.println("Raiz No Valida -> y <-"); if(cipher.compareTo(roots[2].modPow(BigInteger.valueOf(2),n)) != 0) System.out.println("Raiz No Valida -> -x <-"); if(cipher.compareTo(roots[3].modPow(BigInteger.valueOf(2),n)) != 0) System.out.println("Raiz No Valida -> -y <-");
return roots; } }
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_36
El criptosistema de Rabin - SER
5.3.4 Implementacin de la clase DecryptMessage.
Como punto final de la desencriptacin del funcionamiento del sistema; la clase de DecryptMessage tiene la funcin de regresar el texto plano de uno encriptado. Esta clase contiene solo dos mtodos; pero el mtodo mas importante es el constructor DecryptMessage, que acepta las races provenientes de la clase Rotos.
Este mtodo solo valida si alguno de las cuatro races cumple con el protocolo de encriptacin que se dio para poder identificar la raz correcta. El mensaje que cumpla que se repite los dos ltimos caracteres de la lnea, esa raz es la correcta.
/* Metodo que desencripta el mensaje de una linea de cipherText.*/ public DecryptMessage(BigInteger[] roots){ // Verifica cual de las races cumple con el protocolo. for(int i = 0; i<4;i++){ byte[] mes = roots[i].toByteArray(); if( mes[mes.length - 2] == mes[mes.length - 1]){ plaintext = new String(mes,0,(mes.length - 1)); } } }
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_37
El criptosistema de Rabin - SER
5.4 Desarrollo de la Interfase del SER.
En este punto del documento; se describe el funcionamiento de la interfase del usuario, como esta organizado. Como parte de la descripcin de la interfase del sistema; este, esta dividido en dos partes importantes la parte de generacin de llaves y la parte de encriptacin / desencriptacin. El Orden de cmo debe de ejecutarse no importa; con esto se quiere decir que ya sea primero se generen las llaves o primero se llenes los cuadros de texto del plano o del encriptado. Pero deben de haberse hecho estos dos pasos para poder ejecutar los botones de encriptacin o desencriptacin si no, esto seria incorrecto.
rea que nuestra la llave Publica rea que nuestra la llave privada (p , q). rea que es posible editar con objeto de poner el texto plano para ser encriptado. Botones que realizan la labor de encriptar y desencriptar los textos que estn entre las cajas de encriptacin o de desencriptacin. rea que es posible editar con objeto de poner el texto encriptado para ser desencriptado. Botn que permite general la llave publica y privada a partir de nmeros primos aleatorios.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_38
El criptosistema de Rabin - SER
Aqu muestra un ejemplo de ejecucin del sistema. Una nota importante; cuando se vuelve a generar una llave, y ya se haba encript algn mensaje entonces la desencriptacin ser imposible. Si no se guardo esta llaves con la cual se encript entonces jamas se poderia desencriotar.
6. Descripcin del Sistema 6.1 Cdigo del fuente del Sistema.
El proyecto consta de 7 archivos fuente, cada uno ya explicado anteriormente, excepto el archivo Rabin.java, que es el encargado de ejecutar la clase RabinFrame, pues esta clase contiene el public static void main( String [ ] argns) y crea una instancia de RabinFrame. Estos archivos estn en el directorio src.
EEC.java
EncryptMessage.java KeySet.java
Rabin.java
RabinFrame.java
Roots.java
DecryptMessage.java
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_39
El criptosistema de Rabin - SER
6.2 Como poder ejecutar el SER.
Para poder ejecutar el Sistema de Encriptacin de Rabin se debe estar en el directorio binarios, es en donde se encuentran los archivos ya compilados y listos para ejecutar (Archivos de Bytecode). Los archivos que contiene el cdigo fuente del proyecto, se encuentran con extensin .java y los binarios con extensin *.class. Y para poder ejecutar el sistema, escriba en un shell dentro del directorio binarios. Java Rabin
Es importante mencionar que el sistema en donde se quiera ejecutar debe contener una versin de java SDK 2, ya sea 1.3.x o la ultima versin de java que es 1.4.0.01. El sistema correr sin ningn problema.
7. Conclusiones.
Los esquemas de encriptacin de clave simtrica y clave pblica tienen varias ventajas y desventajas, y algunos de stas son comunes a ambos.
Ventajas de la criptografa con clave pblica Se debe guardar slo la cave privada confidencial (la autenticidad de la claves pblicas debe, sin embargo, ser garantizada). La administracin de claves en una red requiere la presencia del funcionamiento de slo un TTP en oposicin al uso indispensable de varios TTP. Dependiendo del modo de uso, un par de clave privada/clave pblica quedara inalterado por perodos considerables de tiempo Muchos esquemas de clave pblica son mecanismos relativamente eficaces para las firmas digitales. La clave que describe la funcin de verificacin pblica es tpicamente ms pequea que la clave que corresponde a la clave simtrica. En una red grande, el nmero de claves necesarias sera considerablemente ms pequeo que en el contexto de clave simtrica.
Desventajas de la encriptacin con clave pblica. La tasa de manejo de datos para el ms popular mtodo de encriptacin con clave pblica son de varios rdenes de magnitud ms lentos que el mejor esquemas con clave simtrica. El tamao de las claves es tpicamente ms largo que para el cifrado con clave simtrica , y el tamao del esquema de firma de clave pblica es ms largo que el de las etiquetas proporcionado por la tcnica de autenticacin de los datos con clave simtrica. No hay un esquema de clave publica que provea seguridad total (lo mismo se puede decir del cifrado por bloque). Los esquemas de encripcin ms eficaces de clave pblica basaron su garanta en los problemas de un pequeos conjunto de nmeros-tericos. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_40
El criptosistema de Rabin - SER
La criptografa de clave pblica no tiene una extensiva historia como la criptografa de clave privada, ya que slo se descubri a mediados de los 70s.
Una propiedad deseable de cualquiera esquema de encripcin es que quebrarlo sea tan difcil como resolver computacionalmente el problema que desde siempre ha tenido una gran dificultad, como es la factorizacin de un nmero o el problema del algoritmo discreto. Se cree ampliamente que romper el esquema de encripcin RSA , es tan difcil como factorizar el modulo de n, aunque no se ha dado ninguna prueba de esta equivalencia. El esquema de encripcin de clave pblica de Rabin fue el primer ejemplo de un algoritmo con un probable seguro esquema de encripcin - el problema de un adversario pasivo que puede recobrar texto puro de algn texto cifrado es computacionalmente equivalente a factorizar. (Eficacia) el mtodo de encripcin de Rabin es sumamente rpido ya que slo involucra una simple raz cuadrada modular. En comparacin con el sistema RSA, con e = 3 toma una multiplicacin modular y una raz cuadrada modular. La desencriptacin de Rabin es ms lenta que la encripcin, pero es comparable en rapidez con la desencriptacin del RSA.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_41
El criptosistema de Rabin - SER
8. La Propuesta de Java Java, como lenguaje de programacin y como conjunto de herramientas para desarrollo de aplicaciones en red, propone su propio modelo de seguridad, con el objetivo primordial de evitar que un programa dae el sistema de cmputo del usuario, y de que lea informacin privada del sistema [9]. Conforme Java va evolucionando, el modelo de seguridad ha ido cambiando, e incorporando ms funcionalidades que logran otras metas de seguridad adems de las dos primordiales, algunas de stas ya incluidas en la versin 1.4. Por ejemplo, autenticacin de la identidad de los participantes; encriptacin de la informacin transmitida; auditacin de operaciones crticas para poderse analizar en caso de problemas; controles que eviten que un programa consuma demasiados recursos. Proveyendo de facilidades de empaquetamiento y firma de archivos, generacin y administracin de llaves y certicados, huellas digitales(message digests).
El modelo de seguridad utiliza como concepto central la caja de arena o sandbox, que define el espacio donde un programa puede operar. De manera anloga, la caja de arena o corral donde se deja a un nio jugando define una regin y recursos (nmero y tipo de juguetes) que son suficientes para que se entretenga, mientras que protege al resto de la casa de l. Las componentes bsicas del modelo de seguridad de Java permiten definir una caja de arena. Cada una de stas tiene una funcin especifica de seguridad, que se relacionan con las dems como un todo.
1. Lenguaje y Compilador: A este nivel, Java introduce, desde el diseo del lenguaje del compilador, la idea de ofrecer seguridad a partir de un lenguaje robusto y de restricciones a lo que se puede hacer a nivel de programacin y de garantizar que esas restricciones se verifiquen a tiempo de compilacin.
Java es un lenguaje fuertemente tipificado. La planificacin de memoria no se deja al compilador sino que se hace hasta el momento de ejecucin. La liberacin de objetos en memoria que han dejado de ser referenciados, la hace Java de forma automtica por medio de un recolector de basura. No se permite el uso de apuntadores.
El compilador de Java verifica que los programas no asignen ni manejen memoria simulando apuntadores ilegales. Es el intrprete quien decide dnde ligar campos y mtodos a memoria. Rechaza cdigo que no cumpla con las reglas del lenguaje Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_42
El criptosistema de Rabin - SER
relacionadas a su naturaleza fuertemente tipificada. Verifica que las operaciones sobre arreglos se ajusten a los lmites sobre el tamao de stos. Verifica que el acceso a clases, variables, interfaces y mtodos sea consistente con su declaracin, evitando de esta manera que se usen de modo no previsto. Verifica que todo acceso a objeto se haga a travs de su interfaz pblica, asegurando con ello que, por ejemplo: los mtodos de un objeto private permanezcan privados. El compilador evita que se lean variables no inicializadas y que se modifiquen constantes.
2. Verificador de Bytecodes: Antes de ejecutar cualquier contenido ejecutable importado por la red. Java verifica que ese cdigo (bytecodes) cumpla con las restricciones iniciales de seguridad impuestas por el modelo.
3. Cargador de Clases: Provee una clase que es requerida de accesar por la mquina virtual de Java. Para definir y cargar la clase, ejecuta varios pasos, como: si ya haba sido cargada, la entrega inmediatamente, consulta al administrador de seguridad para verificar que el programa tiene permiso de accesar la clase, se encarga de que clases bajadas de la red no sobre escriban a clases locales, el cdigo de bytes es enviado al verificador de bytecodes; carga otras clases referenciadas por la recin cargada. Se encarga de evitar conflictos de nombres de distintas clases. Java permite identificar el origen de una clase, si est firmada, y los permisos que la clase tiene otorgados.
4. Administrador de Seguridad: Controlador de Acceso. El administrador de seguridad es el encargado de determinar la mayora de los parmetros de la caja de arena. Cada vez que un programa desea hacer una operacin potencialmente peligrosa, le pide permiso al administrador de seguridad. Java ofrece un paquete de clases que configuran las restricciones de seguridad que el usuario quiere imponer a cada aplicacin en particular para accesar los recursos locales. Las aplicaciones Java, por omisin, no tienen ningn administrador de seguridad, cada aplicacin puede implementar una poltica de seguridad especifica, congurando al administrador de seguridad. Todo esto lo puede lograr el administrador, utilizando el controlador de acceso.
Es importante notar que el navegador o browser no es una parte de Java. Hay navegadores que ni siquiera estn escritos en Java. La seguridad de un navegador no esta garantizada por el Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_43
El criptosistema de Rabin - SER
hecho de que Java sea seguro, sino de su propio diseo de seguridad, de cmo interacta con el sistema operativo de la mquina donde se ejecuta, y de cmo usa el modelo de seguridad de Java, si es que esta escrito en Java.
Como ejemplo de las restricciones de seguridad implementadas sobre un visualizador listaremos algunas tpicas de Netscape para un applet que se carga de la red.
1. No puede crear un cargador de clases o un administrador de seguridad. 2. No puede crear clases en el espacio de nombres local. 3. No puede accesar paquetes locales fuera de los estndares. 4. No puede accesar archivos y directorios del sistema local. 5. Slo puede hacer conexiones de red al host de donde se carg. 6. No puede crear o instalar manejadores de protocolos o implementar sockets. 7. No puede leer, del sistema local, informacin sobre el usuario. 8. No puede modificar utileras del sistema local. 9. No puede terminar otros programas o el sistema mismo. 10. No puede accesar hilos de control (threads) fuera de su grupo.
Java ofrece la opcin de firma de applets y archivos, para garantizar que no se carguen applets o archivos sin ser verificados por un esquema de firma digital. Otro problema serio es que cuando se carga una aplicacin para ser ejecutada localmente, esta aplicacin est integrada por varios archivos, cada uno de los cuales se cargan uno a uno, con la consecuente espera.
Como solucin, Java ofrece empaquetar en un slo archivo, todos los archivos relacionados a una aplicacin, ahorrando as tiempo de espera. Adems este archivo integrado se puede firmar, lo que equivale a firmar todo el applet. La facilidad que otorga este beneficio integrado, se llama Java ARchive (JAR) y esta disponible a partir de JDK 1.1
Java implementa adicionalmente algoritmos criptogrficos de llave publica y de llave secreta, as como tambin algoritmos para certificar archivos y documentos como una facilidad para que el usuario configure su propio esquema de control y transferencia de archivos y documentos.
Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_44
El criptosistema de Rabin - SER
9. Vocabulario sobre criptografa
Privacidad: se refiere a tener control en el acceso de la informacin y solo permitirlo a personas autorizadas. Autenticidad: se refiere a estar seguros de la identidad de una entidad ya sea mensaje, persona, servidor etc. Integridad: se refiere a que la informacin no sea modificada. No-rechazo: se refiere a no poder negar la autora de un mensaje o de una transaccin. Criptografa: es el conjunto de tcnicas (entre algoritmos y mtodos matemticos) que resuelven los problemas de autenticidad, privacidad, integridad y no rechazo en la transmisin de la informacin. Texto original: es un documento antes de ser cifrado. Cifrar : es la accin que produce un texto cifrado (Ilegible) a partir de un texto original. Texto cifrado: es un documento que ha sido cifrado. Descifrar: es la accin inversa de cifrar, es decir, convierte un texto cifrado a otro legible (texto original). Firma digital: es un mtodo que usa criptografa asimtrica y permite autenticar una entidad (persona o servidor), tiene una funcin igual que la firma convencional. Consiste en dos procesos, uno de firma y otro de verificacin de la firma. Fsicamente es una cadena de caracteres que se adjunta al documento. Criptografa simtrica: es el conjunto de mtodos que permite establecer comunicacin cifrada, con la propiedad de que ambos lados de la comunicacin tienen la misma clave, y sta es secreta. Criptografa asimtrica: es el conjunto de mtodos que permite establecer comunicacin cifrada, donde una de las claves es pblica y la otra clave es privada (secreta). Cada usuario tiene un par de claves una pblica y otra privada. Clave privada: es la clave secreta que se usa en la criptografa asimtrica. Clave pblica: es la clave pblicamente conocida, que se usa en la criptografa asimtrica. Clave simtrica: es la clave secreta que tienen ambos lados de una comunicacin en la criptografa simtrica. Par de claves: se refiere al par de claves una privada y otra pblica usadas en la criptografa asimtrica. Longitud de la clave: es el nmero de bits (ceros y unos) que tienen las claves y es solo uno de los parmetros de los que depende la seguridad de un sistema criptogrfico. Actualmente se usan 128 para las claves simtricas, 1024 para el sistema asimtrico RSA, 163 para los sistemas asimtricos que usan curvas elpticas. Firma digital con apndice: mtodo de firma digital que requiere al mensaje como entrada en el proceso de verificacin. Firma digital con mensaje recuperable: mtodo de firma digital que no requiere al mensaje como entrada en el proceso de verificacin. El mensaje se recupera despus de que se ha verificado la firma. Certificado digital: fsicamente es un archivo de hasta 2K de tamao que contiene principalmente, los datos de una entidad una persona o un servidor, la clave pblica de esa entidad, y la firma de una autoridad certificadora que es reconocida con la capacidad de poder comprobar la identidad de la persona (o servidor) y vlida la clave pblica que es asociada a la entidad. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_45
El criptosistema de Rabin - SER
Familia criptogrfica: es el conjunto de sistemas criptogrficos que basan su seguridad en el mismo problema matemtico, actualmente las familias criptogrficas ms conocidas son las que basan su seguridad en el Problema de Factorizacin Entera (RSA, RW), los que la basan en el problema del logaritmo discreto (DH, DSA), y los que la basan en el problema del logaritmo discreto elptico (DHE, DSAE, MQV). Funcin hash: es una funcin de un solo sentido, resistente a colisiones que asocia una archivo o documento de longitud arbitraria a una cadena de longitud constante (se usa actualmente 160b de salida), las funciones hash ms conocidas son: MD5, SHA1, RIPMED 160. Cifrador de Bloque: es un sistema criptogrfico que cifra de bloques en bloque, usualmente cada bloque es de 128 bits. Algunos sistemas conocido son, TDES, RC5, AES. Cifrador de Flujo: es un sistema criptogrfico de cifra de bit en bit, los ms conocidos son, RC4, SEAL, WAKE. Generador de nmeros seudoaleatorios: es una funcin que tiene como entrada una cadena (conjunto de bits) llamada semilla y como salida otra cadena de bits que al aplicarle ciertas pruebas de aleatoriedad pasan con un porcentaje aceptable (alrededor de un 95%). Primitiva criptogrfica: es la funcin ms bsica que compone un sistema criptogrfico, existen la primitiva de cifrado, la primitiva de descifrado, la primitiva de firma, la primitiva de verificacin de firma etc. Esquema criptogrfico: es un conjunto de primitivas que componen una aplicacin criptogrfica ms completa, como el esquema de firma digital (compuesta de la primitiva de firma y la de verificacin), el esquema de cifrado (compuesta con la primitiva de cifrado y la de descifrado) etc. Protocolo (criptogrfico): es la parte ms visible de la aplicacin y esta compuesto de esquemas criptogrficos conjuntamente con otras operaciones que permiten proporcionar seguridad a una aplicacin mas especifica, por ejemplo el protocolo SSL, SET, SMIME, IPsec etc. Autoridad certificadora: es una entidad (compaa) que es reconocida para poder certificar la asociacin de una clave pblica a una persona o servidor. Comercio electrnico: es todo lo relacionado con realizar comercio principalmente por Internet. Comparticin de secretos: es un esquema criptogrfico que tiene como entrada un secreto (por ejemplo una clave criptogrfica) y como salida un numero n de partes del secreto y todas o algunas de stas n partes sirven para reconstruir el secreto. Criptografa Visual: es un esquema de comparticin de secretos donde el secreto es una imagen y las partes son tambin varias imgenes. La ventaja de este tipo de cripotgrafa es que no es necesaria una computadora para la reconstruccin del secreto. Dinero electrnico: es un nmero (de alrededor de 100 dgitos) al que se le asocia cierto valor y pude ser usado como cualquier otro tipo de dinero. Este nmero va acompaado de la firma del dueo o de un banco. Nmero primo: es un nmero entero que no tiene divisores diferentes a 1 y as mismo, ejemplo 2,3,5,7,11, Generador probabilstico de nmeros primos: es un proceso que tiene como entrada un nmero entero y como salida un probable nmero primo con gran grado de aceptacin. El mtodo ms aceptado para generar primos es el de Miller Rabin. Primo industrial: es un nmero primo generado probabilsticamente que tiene a lo ms 1/(2^100) de probabilidad de error (de no ser nmero primo). Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_46
El criptosistema de Rabin - SER
Problema de Factorizacin: es el problema inverso a la multiplicacin, es decir el problema de encontrar los factores conocido el producto. En criptografa los nmeros a factorizar son los productos de dos nmeros primos de la misma longitud, el producto tiene al menos 768 bits. Actualmente se han podido factorizar nmeros de hasta 512 bits (155 dgitos) producto de dos primos del mismo tamao (256 bits).
10. Referencias [1] Introduccin a la criptografia. Pino Caballero Gil. Editorial RA-MA. [2] Codificacin de la informacin. Carlos Munuera, Juan Tena. Universidad de Valladolid. [3] Cdigos secretos. Andrea Sgarro. Editorial Piramides. [4] Garfinkel Simson. Criptografa - procesamiento de datos- medidas de seguridad, 1995 . (U. de Chile). [5] http://www.Kriptopolis.com [6] http://www.eff.org/pub/Privacy/Crypto_misc/DESCracker/HTML/ 19990119_deschallenge3.html [7] http://www.pgp.com [8] http://www.gvsu.edu/mathstat/enigma/enigma.html [9] Java Technology Home Page: http://java.sun.com/security. [10] Handbook of Applied Cryptography, by A. Menezes, P. van Oorschot, and S. Vanstone, CRC Press, 1996. [11] Java TM 2 SDK, Standard Edition Documentation. Oscar Gonzalo Landa Rosales - Cdigos y Criptografa - Pgina_47