Está en la página 1de 47

El criptosistema de Rabin - SER

Sistema de Encriptacin de Rabin


Reporte Final. Agosto de 2002




Oscar Gonzalo Landa Rosales
Departamento de Ingeniera Elctrica
Seccin de Computacin.

Centro de Investigacin y de Estudios Avanzados
del Instituto Politcnico Nacional.

e-mail: olanda@computacion.cs.cinvestav.mx










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

ma = (am1 + bm3) (mod n)
mb = (am1 + bm4) (mod n)
mc = (am2 + bm3) (mod n)
md = (am2 + bm4) (mod n)

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



El criptosistema de Rabin - SER

x,
-x B,
w(x + B/2) B/2,
-w (x + B/2) B/2.

Por ejemplo:

Ek(w(x + B/2) B/2) = (w(x + B/2) B/2)*(w(x + B/2) B/2)
= w
2
(x + B/2)
2
B
2
/4
= x(x-B)(mod n)
= x(x-B)(mod n)







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.

5.1 Diseo del Sistema de SER.

RabinFrame
EEC Roots
EncryptMessage DecryptMessage SetKey

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:

Ejemplo: Calcular mcd(3120,270) y los nmeros x, y tales que mcd(3120,270) = 3120x + 270y.
1.- Algoritmo de Euclides:
3120 = 11270 + 150
270 = 1150 + 120
150 = 1120 + 30
120 = 430 + 0
30 = mcd(120,30) = mcd(150,120) = mcd(270,150) = mcd(3120,270)
30 = mcd(3120,270)

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.

1501120 = 30
1501(2701150) = 30 150270+150 = 30 2150270 = 30
2(312011270)270 = 30 2312022270270 = 30 2312023270270 = 30
As pues, mcd(3120, 270) = 30 = 23120+(23)270. Luego, x = 2, y = 23.





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.

DecryptMessage
plainText
DecryptMessage(BigInteger[] roots)
getPlainText()




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

También podría gustarte