INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN ALGORITMO PARA UN SISTEMA CRIPTOGRÁFICO BASADO EN MATRICES SOBRE CURVAS ELÍPTICAS T E S I S QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN INGENIERÍA DE TELECOMUNICACIONES PRESENTA: ING. JOSÉ ANTONIO LÓPEZ TOLEDO DIRECTOR DE TESIS: DR. HÉCTOR OVIEDO GALDEANO México D.F. Enero 2011
151
Embed
ALGORITMO PARA UN SISTEMA CRIPTOGRÁFICO BASADO … · Para autentificar a los dos usuarios que intercambiaran mensajes se utiliza el algoritmo de Diffie Hellman, estos mensajes emplean
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA
MECÁNICA Y ELÉCTRICA
SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN
ALGORITMO PARA UN SISTEMA
CRIPTOGRÁFICO BASADO EN MATRICES
SOBRE CURVAS ELÍPTICAS
T E S I S
QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN
INGENIERÍA DE TELECOMUNICACIONES
PRESENTA:
ING. JOSÉ ANTONIO LÓPEZ TOLEDO
DIRECTOR DE TESIS:
DR. HÉCTOR OVIEDO GALDEANO
México D.F. Enero 2011
IPN ESIME-ZACATENCO
i
ÍNDICE
RELACIÓN DE TABLAS Y FIGURAS…………………………………………………...iv
RESUMEN ............................................................................................................................. v
ABSTRACT ........................................................................................................................... v
PLANTEAMIENTO DEL PROBLEMA ............................................................................. vi
OBJETIVO ........................................................................................................................... vii
JUSTIFICACIÓN ................................................................................................................. vii
INTRODUCCIÓN ............................................................................................................... viii
PRÓLOGO ............................................................................................................................. x
INGENIERÍA EN TELECOMUNICACIONES XII CONGRESO NACIONAL DE INGENIERÍA
ARTÍCULOS ACEPTADOS POR REFEREO ELECTROMECÁNICA Y DE SISTEMAS
MÉXICO D.F. NOVIEMBRE 2010 890
III. CURVA ELÍPTICA
Una curva elíptica se puede definir como:
2 3 2y x ax b (2)
En donde (2) es llamada ecuación de Weierstrass.
Para que las curvas elípticas presenten una mayor
seguridad tiene que cumplir con la condición discriminante:
3 24 27 0a b (3)
Fig. 1 Curva Elíptica
Para graficar la Fig. 1 se utilizo (2) y (3), los valores
que se asignaron en (2) fueron:
1; 1a b
Donde (2) se evaluó los valores y resulto
2 3 21 sobre y x x (4)
La Fig. 1 corresponde a la evaluación de (4) en donde la
condición (3) si se cumple en (4) por lo tanto en la Fig. 1 no
tiene raíces múltiple, existe un punto especial O, llamado
punto al infinito, es decir, es un punto imaginario situado
por encima del eje x a una distancia infinita por lo que no
tiene un valor en concreto, con el punto especial más la
operación suma, es lo que se denomina grupo de curva
elíptica E(R)[4][5].
Las curvas elípticas en un cuerpo de Galois Gf( n), es un
grupo finito generado por n, siendo n un número primo
impar [3], los pares de puntos que se obtendrán estarán
definidos sobre este campo, cumpliendo con la restricción
0,1, ..., 1p
p donde p es un número primo impar[5],
por lo tanto la curva elíptica definida en p
como:
2 3m od( )y x ax b p (5)
En donde para formar las parejas de puntos
( , ) | ,p
x y x y de la curva Elíptica ( )p
E se utilizará (5)
siempre y cuando se cumpla la condición.
3 24 27 0(m od )a b p (6)
Al conjunto de los pares de puntos de ( )p
E se agrega
el punto al infinito.
Para generar los pares de puntos de la curva ( )p
E
hay dos formas:
Sin conocer ningún punto de la curva
Conociendo un par de puntos de la curva
En la ecuación (5) se asignan valores a las variables y se
comprueba que el valor del discriminante sea diferente de
cero, por ejemplo
1, 1 23a b y p
Al sustituir los valores en (5) se obtiene
2 31 m od(23)y x x (7)
Al sustituir los valores de (7) en la condición (6) esta
se cumple por lo tanto (7) tendrá un grado de seguridad.
Una vez que se tiene la ecuación de Weierstrass (7)
definida en un campo cuyos valores en nuestro caso serán
menores a 23, lo que prosigue es calcular las parejas de
puntos que pertenezcan a ( )p
E
Primero se hará el cálculo de los pares de puntos en la
curva sin conocer ningún punto de ella y después se hará a
partir de un punto.
Sea
2 31 m o d (2 3)z y x x (8)
64
INGENIERÍA EN TELECOMUNICACIONES XII CONGRESO NACIONAL DE INGENIERÍA
ARTÍCULOS ACEPTADOS POR REFEREO ELECTROMECÁNICA Y DE SISTEMAS
MÉXICO D.F. NOVIEMBRE 2010 891
IV. LA LEY DE RECIPROCIDAD CUADRÁTICA
Esta ley relaciona la solubilidad de congruencias de
segundo grado mediante el teorema:
Teorema.- Sea p un primo impar. Un entero h, coprimo
o primo relativo con p, es un residuo cuadrático módulo p, si
existe una x tal que 2x h mod (p), En caso contrario h es
un no-residuo cuadrático modulo p.
Dados un primo impar p y un entero cualquiera h, el
símbolo de Legendre está definido como:
1 si a es un residuo cuadrático m od(p)
1 si a no es un residuo cuadrático m od(p )
0 si h es m ultip lo de p
h
p (9)
El criterio de Euler está dado por
1
2 m od( )
ph
h pp
(10)
Tabla 1.Construccion de valores de la ECC utilizando la ley
de la Reciprocidad cuadrática.
Para realizar el cálculo de los puntos se utiliza la tabla. 1
en donde se explicará cómo es que se obtuvieron esos datos
que aparecen en ella.
El procedimiento es el siguiente:
En la columna 1 se escriben los valores de x
con x p dado que se está trabajando con
aritmética modulo 23.
Se evalúa (8) con los valores de x, el resultado se
asigna a la variable z.
Se obtienen los residuos cuadráticos y no
cuadráticos, para ello se utiliza el criterio de Euler
y el símbolo de Legendre en donde la variable h
será sustituida por la variable z.
Para formar las parejas de punto los residuos no
cuadráticos no se utilizan solamente los cuadráticos.
Se puede observar en la tabla 1 en la columna de
residuos que hay trece valores de unos (+) y por lo tanto, el
conjunto de pares de puntos de la curva elíptica será el doble
de unos esto es 26 debido a que (7) es una ecuación
cuadrática. Se agrega la pareja con residuo cuadrático con
valor cero y el punto al infinito O.
Para poder formar la pareja de puntos de la curva
( , ) | ,p
x y x y , en la tabla 2 se puede observar que solo se
tiene los residuos cuadráticos, por lo tanto ya se conoce los
valores de que tomara p
x , ahora solamente nos falta
conocer los valores de p
y , donde para encontrar y se
utiliza la ley de la reciprocidad cuadrática con la siguiente
modificación:
2
m od( )p y h p (11)
En la ecuación (11) lo valores que tomará p
y los
resultados de evaluar (11) se muestran en la tabla 3, para
sintetizar estos resultados solamente se colocaron en la
tabla los que se utilizará para encontrar los valores de la
ordenada y así ya poder formar la pareja de puntos de la
curva elíptica.
x z Residuos x z Residuos
0 1 1 12 16 1
1 3 1 13 3 1
2 11 -1 14 22 -1
3 8 1 15 10 -1
4 0 0 16 19 -1
5 16 1 17 9 1
6 16 1 18 9 1
7 6 1 19 2 1
8 15 -1 20 17 -1
9 3 1 21 14 -1
10 22 -1 22 22 -1
11 9 1
65
INGENIERÍA EN TELECOMUNICACIONES XII CONGRESO NACIONAL DE INGENIERÍA
ARTÍCULOS ACEPTADOS POR REFEREO ELECTROMECÁNICA Y DE SISTEMAS
MÉXICO D.F. NOVIEMBRE 2010 892
Tabla 2. Residuos Cuadráticos
La interpretación de la Tabla 3 para conseguir los
valores respectivos de las ordenadas es el siguiente:
Donde se considera h de la tabla 3 y x, z de la tabla 2
p=23
for i = 1 to length (x)
if ( ) ( )h i z i then
puntos (x(i),mod(y(i),p)) and
puntos (x(i),mod(y(p-y(i))
end
end
Con este algoritmo se explica cómo se formaron los
puntos que pertenecen a la curva elíptica.
Tabla 3. Valores de y para el par de puntos de ECC
y h y h
0 0 10 8
1 1 11 6
2 4 15 18
3 9 16 3
5 2 17 13
6 13 19 16
8 18 22 1
9 12
Tabla 4. Pares de puntos de (8)
En la tabla 4. Se encuentran las parejas de puntos que
pertenecen ECC (8) los cuales se obtuvieron como se
mencionó anteriormente, en (8) se puede ver que los
resultados obtenidos tendrán dos valores debido a que la
función es cuadrática, esto se refleja en la tabla 4. Donde un
punto P tiene un punto –P que son simétricos a la curva
elíptica, no habrá simetría cuando aparezca en los residuos
cuadráticos el valor cero.
. En la segunda columna de la tabla 4 nos indica el
orden, los cuales a partir de un punto se genera un máximo
número de puntos, por ejemplo el punto 23
(1, 7 ) es
capaz de generar a partir de este, 27 puntos más el punto al
infinito
V. OPERACIONES DE LAS ECC.
Para poder realizar operaciones de adición entre los
puntos de la curva elíptica debemos de considerar las
siguientes condiciones.
1.- Identidad
para toda ( )P P P P E
2.- Negativos
Si ( , ) ( ), entonces ( , ) ( , )
E l punto ( , ) es denotado por
P x y E x y x y
x y P
x z Residuos Cuadráticos x z Residuos Cuadráticos
0 1 1 17 9 1
1 3 1 18 9 1
3 8 1 19 2 1
4 0 0
5 16 1
6 16 1
7 6 1
9 3 1
11 9 1
12 16 1
13 3 1
66
INGENIERÍA EN TELECOMUNICACIONES XII CONGRESO NACIONAL DE INGENIERÍA
ARTÍCULOS ACEPTADOS POR REFEREO ELECTROMECÁNICA Y DE SISTEMAS
MÉXICO D.F. NOVIEMBRE 2010 893
3.- Adición de puntos
1 1 2 2
3 3
C onsiderando ( , ) ( ) ( , ) ( )
donde P Q . C uando P +Q =( , )
P x y E y Q x y E
x y
2
2 1 2 1
3 1 2 3 1 3 1
2 1 2 1
( )y y y y
x x x y y x x yx x x x
4.- Suma de puntos consigo mismo
22 2
1 1
3 1 3 1 3 1
1 1
3 32 ( )
2 2
x a x ax x y y x x y
y y
Para generar una serie de puntos dado un punto
conocido, lo que se hace es utilizar la condición de la suma
de puntos consigo mismo y después la condición de la
adición de puntos, una de las herramientas utilizadas aquí es
el algoritmo de Euclides extendido. Dado el punto
23(1, 7 ) de (8) ver resultados en la Tabla 5
Tabla 5. Generar puntos dado un punto de ECC
Para que se tenga una mayor seguridad en los sistemas
criptográficos, se puede realizar las siguientes
consideraciones:
Aumentar el tamaño de la curva elíptica, pero se
requiere de un esfuerzo computacional elevado para calcular
el número de puntos de la curva. La otra opción es transmitir
varios puntos de la misma curva en forma independiente, el
esfuerzo computacional es diferente, ya que se aprovecha la
información obtenida de los puntos ya calculados para
reducir la complejidad del siguiente.
VI. DESCRIPCIÓN DEL SISTEMA
Considerando una curva elíptica p= #E(Fq), sea n un
entero positivo
Donde es el conjunto de todas las matrices de
tamaño n x n con elementos en Fp y es el conjunto de n-
tuplas de puntos.
Fp: Campo finito que contiene elementos q=p donde p es un
valor primo
Fq: Campo finito que contiene q elementos. Para la ANSI
X9.62, nos dice que (q = p, p > 3) o de una potencia de 2 (q
= 2m).donde m es un entero positivo.
Se trabaja con las siguientes consideraciones para construir
el sistema
(12)
En la ecuación (12) los valores P0, P1, …,Pn-1 son
conocidos.
Se realiza un ejemplo de la construcción de este sistema.
22
61
50
a
a
a
La construcción de A es la siguiente:
( ) ( ) ( )n n
M at F xE F E Fn p q q
( )M at Fn p
S i A = [a ] para 0 i,j n -1 y,
0 0
1 1=
1 1
i j
P Q
P QA
P Qn n
1
,0
nQ a P
i i j jj
1 5 8
10 9 6 m od 23
3 2 4
E n fo rm a aleato ria escogem os elem en tos q ue in teg raran
a A , estos serán elem etos de la llave p rivada
M
67
INGENIERÍA EN TELECOMUNICACIONES XII CONGRESO NACIONAL DE INGENIERÍA
ARTÍCULOS ACEPTADOS POR REFEREO ELECTROMECÁNICA Y DE SISTEMAS
MÉXICO D.F. NOVIEMBRE 2010 894
2 ( ) (13 )
2 1 0
(14 )
A a M a M a I
A
su stitu yen d o en (1 3 )
7 5 6 6 7 0 1 5 8 1 0 0
2 1 1 8 1 4 3 1 5 8 6 1 0 9 6 5 0 1 0
3 5 4 1 5 2 3 2 4 0 0 1
La matriz M es de 3 x 3 por lo tanto
En la tabla 5. Se observa que a partir del punto 23
(1, 7 )
generamos un conjunto de puntos, para hacer de una
manera amigable el ejemplo se tomaron los primeros tres
valores k de la tabla 5
(4 , 0 )11
(3,10 )21
(11, 20 )31
Ahora bien, partiendo de (15) para encontrar los valores de
las llaves privadas de (13) se construirá un sistema de
ecuaciones lineales para encontrar los valores a2, a1, a0 ya
que estos el destinatario no los conoce, teniendo esto ya
podremos intercambiar la llave para poder descifrar los
datos que se envíen, los cuales deben de estar codificados en
ECC.
VII. CONCLUSIONES
La criptografía a tomado gran importancia, al utilizar
matrices lineales, se puede transmitir varios puntos, ahora
bien para aumentar la complejidad del sistema criptográfico
se pretende utilizar el NIST (Instituto Nacional de
Estándares y Tecnología) aplicado sobre campos primos
donde los valores de a, b, p ya se encuentran definidos, en
donde por ser números grandes se tendrá mayor seguridad,
en comparación con sistemas criptográficos que utilizan la
aritmética módulo.
REFERENCIAS
[1] John Talbot “Complexity and Cryptography An Introduction”
Cambridge University
[2] Alfred J. Menezes “Handbook of Applied Cryptography” [3] Darrel Hankerson, Alfred Menezes, Scott Vanstone “Guide to Elliptic
Curve Cryptography” Springer [4] Daniel R. L. Brown “ Elliptic Curve Cryptography”, May 21, 2009 [5] Daniel R. L. Brown “Recommended Elliptic Curve Domain
Parameters”, January 27, 2010
{ , 2 , 3 }
(1, 7 )
P P P
P
lo s valo res de (14 )
0 1 4 (1, 7 )
20 0 7 (7 , 11)
19 2 18 (18, 20 )
S e resuelve la m atriz an terio r
0 * (1, 7 ) 1 * (7 , 11) 4 * (18, 20 )
20 * (1, 7 ) 0 * (7 , 11) 7 * (18, 20 )
19 * (1, 7 ) 2 * (7 , 11) 18 * (18, 20 )
Se sustituye en
A plicando p rop iedades de la sum a de pun tos
E C C , e l resu ltado es e l s igu ien te :
0 (7 , 11) (5 , 19 )
(13, 16 ) 0 (11, 20 )
(9 , 7 ) (17 , 20 ) (7 , 12 )
resu ltad o fin al d e la m atriz es :E l
15
La ecuación (14) con los valo res sustitu idos resu lta
0 1 4 (1, 7 ) ( 4 , 0 )
20 0 7 (7 ,11) (3,10 )
19 2 18 (18, 20 ) (11, 20 )
68
[Añ
A
l
e
j
a
n
d
r
o
[
NOVIEMBRE 2010 Número 6, Volumen 2, Año 2
RISCE Revista Internacional de Sistemas Computacionales y Electrónicos
69
72
Curiosidades sobre la Criptografía en hechos que dejaron marca en el mundo.
Héctor Oviedo Galdeano, José Antonio López Toledo
[email protected][email protected] Instituto Politécnico Nacional. Unidad Profesional Adolfo López Mateos. Av. Instituto Politécnico Nacional
s/n. Edificio 1, 2do. Piso. 57296000 Ext. 54782
RESUMEN. En el presente artículo de divulgación se hace una semblanza de cómo la criptografía ha ido evolucionando a través del tiempo para ofrecer cada vez una mayor seguridad. Grandes personajes que intervinieron en la revolución mexicana cifraban sus mensajes empleando cada uno de ellos su propio código, entre estos están Porfirio Díaz y Carranza, anterior a ellos, en el siglo XIX, por ejemplo, José Mariano Michelena también recurría a esta técnica. Un caso interesante fue la aparición de la máquina Enigma, que durante la segunda guerra mundial fue usada por los alemanes para cifrar sus mensajes. También se recurrió al cifrado oral, como en el caso de los indios navajos utilizados por el ejército americano en la guerra del pacífico. PALABRAS CLAVES. Criptografía, criptografía clásica, telegrama Zimmerman, Máquina Enigma INTRODUCCIÓN Muchos de nosotros recordamos como nos emocionamos con la película “Juegos de guerra” que se estrenó en 1983. Vimos al jovencito David Lightman interpretado por el actor Matthew Broderick entrar sin saberlo a la red de computadoras del NORD (North American Aerospace Defense Command) y cree que la máquina a la que se ha conectado lo invita a un juego llamado “Guerra termonuclear global” lo que acepta gustoso sin pensar que estaba iniciando realmente una guerra termonuclear contra la URSS de alcances inimaginables. Afortunadamente como sucede en las películas se tuvo un final feliz[1]. Parece increíble, pero el 26 de septiembre de ese mismo año estuvo a punto de iniciarse en la vida real y no en película, una guerra nuclear que pudo haber terminado con los seres humanos en el planeta. Por un error del sistema satelital ruso que detecta los ataques de misiles nucleares americanos se envió la señal de alarma indicando que cinco misiles nucleares americanos se dirigían a territorio soviético. El teniente coronel Stanislav Petrov estaba al frente del búnker Serpujov-15 desde donde se coordinaba la defensa aeroespacial rusa. Por esos días se vivía mucha tensión debido a que una semana antes los cazas soviéticos habían derribado un avión de pasajeros coreano con 269 personas a bordo encontrándose entre ellos varios pasajeros norteamericanos. Para fortuna nuestra, el coronel Petrov utilizó su sentido común y pensó que un ataque nuclear no se inicia con solo cinco misiles y prefirió esperar y ver lo pasaba. ¿Qué hubiera sucedido si reacciona como fue entrenado y dispara a su vez los misiles? Sus jefes se enojaron con él porque no procedió de acuerdo a las órdenes bajándolo de puesto y ocultaron el incidente. Este hombre salvó la vida de millones de seres humanos sino es que de toda la humanidad [2]. Lo anterior nos hace pensar en lo vulnerable que pueden resultar los sistemas tecnológicos por avanzados que sean. Uno de estos sistemas son los de telecomunicaciones que presentan vulnerabilidad en cuanto a la seguridad. Son muchos los casos notificados de ataques a las redes cibernéticas por los llamados hackers. Un ejemplo es el del joven de secundaria entre los 15 y 16 años de edad que logró ingresar en las computadoras del Pentágono en Washington. Al cuestionar al joven los agentes de FBI se dieron cuenta que tenía un cómplice, un compañero de clase del colegio secundario Cloverdale High School, quien lo ayudaba a planear sus incursiones cibernéticas[3]. Otro caso es el de Gary McKinnon hacker Británico acusado por los E.U. de haber perpetrado “el mayor ataque informático militar de todos los tiempos” quien se introdujo ilegalmente a 100 redes y más de 300 computadores de la Nasa, el Ejército, la Marina, el Departamento de Defensa y la Fuerza Aérea estadounidense, dañando la red informática de defensa que estuvo fuera de servicio por casi una semana, puso en jaque los sistemas militares, robando cientos de contraseñas, elimino 1,300 cuentas de usuario. Si es procesado puede alcanzar hasta 70 años de cárcel [4].
A principios de febrero del 2010 John Chipman, director del Instituto Internacional de Estudios Estratégicos (IISS por sus siglas en inglés) informó que “con el uso de computadoras, una potencia extranjera puede inutilizar la infraestructura de un país, atacar la integridad de los datos militares internos de otra nación, intentar confundir sus transacciones financieras o lograr cualquiera de sus otros posibles objetivos”, esto es, un ataque cibernético coordinado y masivo, y no el clásico lanzamiento de misiles, puede marcar el comienzo de las guerras en el futuro[5]. Como se ve, la seguridad informática y de telecomunicaciones es una gran preocupación a nivel mundial. Existe una lucha diaria entre los responsables de la seguridad de los sistemas y los que tratan de violarla. CRIPTOGRAFÍA CLÁSICA.
Una herramienta utilizada por los expertos en seguridad es la criptografía que es el arte o ciencia de enviar mensajes de manera escondida, de tal manera que sólo un destinatario autorizado, es decir, que cuente con la clave puede conocer el contenido del mensaje, por lo cual puede permitir el intercambio de información entre ellos [6]. Se tienen indicios de mensajes cifrados en jeroglíficos egipcios que datan de más de 4500 años. Los griegos en el siglo V A.C. durante la guerra entre Atenas y Esparta utilizaban el escítalo que consta de un rodillo de longitud y grosor determinado en donde el cifrado se basaba en la alteración del mensaje original introduciendo símbolos innecesarios que desaparecían al enrollar el mensaje en un rodillo. Si se interceptaba el mensaje era muy difícil descifrarlo si no se conocían el grosor y la longitud del rodillo [7], en la (fig. 1) se observa un claro mensaje que es SECRETOS si se rota se podrá identificar el siguiente mensaje y así sucesivamente.
Fig. 1 Escítalo
El académico griego Polybius (203-120 A.C.) usó una tabla para cifrar sus mensajes la cual consiste de cinco filas y cinco columnas. En cada cuadro formado por una fila y una columna se coloca una letra del alfabeto. El mensaje cifrado se envía por medio de las parejas formadas por el número de fila y el número de columna.
71
74
Se sabe de un libro de criptografía militar que desgraciadamente se ha extraviado que se cree utilizaba Julio Cesar. También se dice que usaba un corrimiento de tres lugares del alfabeto para cifrar los mensajes, por ejemplo a la A le correspondía la letra D, a la B le correspondía la letra E y así sucesivamente. Esto se conoce como sustitución simple. CRIPTOGRÁFIA CLÁSICA EMPLEADA POR PERSONAJES NOTABLES EN MÉXICO. Respecto a la criptografía en el nuevo mundo y en particular en México, se sabe que en el año 1500, el gobernador Francisco de Bobadilla remitió a los Reyes Católicos diversas cartas cifradas enviadas por Cristóbal Colón a su hijo Diego, en las que le recomendaba como debía ser su conducta en caso de que el comisionado del rey le encarcelase. Se conoce una carta cifrada que Hernán Cortés envió desde Cuernavaca el 25 de junio de 1532 y que en la actualidad se conserva en el Museo Nacional de Arqueología, Historia y Etnografía de México. En la elaboración de este criptograma, considerado como uno de los más antiguos del Nuevo Mundo, Cortés utiliza sustituciones homofónicas1 monoalfabéticas2, mediante las cuales cada letra era representada por dos o tres símbolos, tanto literales como numéricos. El mismo método aplicó en la carta que escribe desde el Puerto de Santiago el 20 de junio de 1532, y cuyo original obra en los autos seguidos en 1546 por el licenciado Francisco Núñez contra el marqués del Valle, por pago de devengados. En general los virreyes, los miembros de las órdenes religiosas y los particulares usaron durante la Colonia la criptografía por sustitución simple para sus comunicaciones ya sea entre poblaciones del nuevo mundo o con la península. Por ejemplo, se conoce, entre otras la carta que el virrey de Nueva España Luis de Velasco envía desde Cholula el 18 de octubre de 1550 al rey Carlos V la cual contiene caracteres cifrados en diversos fragmentos de la misma. Era tan común el uso de la criptografía entre particulares que hubo intentos de prohibirla por temor a que los inconformes se comunicaran entre ellos e intentaran levantarse sin que la autoridad se percatase por no entender sus mensajes. Ya en 1818 el virrey Ruiz de Apodaca envió cartas a la península encriptadas. Durante la guerra de independencia era conocido que los criollos en diversas ciudades y que estaban dentro de la conspiración usaban la criptografía para sus comunicaciones, desgraciadamente no se han encontrado documentos de Hidalgo o Morelos que estén cifrados pero no es difícil pensar que usaban la criptografía para intercambiar mensajes [8]. Años después, ya en el México independiente, don José Mariano Michelena representando al gobierno mexicano ante la corona inglesa, viajó a Londres en 1824 como agente confidencial para la firma de tratados comerciales. Los informes que presentó al Secretario del Despacho de Relaciones Interiores y Exteriores don Lucas Alamán fueron en forma cifrada, utilizando el llamado método de sustitución poli alfabético, el cual se detalla más adelante. Como un ejemplo, se tiene la carta del 6 de noviembre de 1824 (fig. 2) donde Michelena le reporta los resultados sobre las estrategias seguidas frente a los representantes diplomáticos de Argentina, Colombia y Chile. Un fragmento de la carta contiene el siguiente mensaje cifrado[9]:
72
75
Mm h x e h r h c f u g f s g f r q f u x s r t b i m t b o n m g q r d l z u o d d i c d zd i g j u l d p x l m x t n z x l i m s h i m o f g j q x s q l c e r o y i i u b x h x f q x s e r q f u x s e x q g z x u b x p x l t e m f y j b f z d t d m l g e m i m r o z q d t j b l l m q n s n o m m o l l e s c v h x f i i m i i x l j v i h i y q p a l j a z m j e e y q y h i j v l h y q l g i l l a i m v a y q e z m f q v m o y a a y u v d m i l g e t j l l q r d r a v r p i g h s n x f u x l u y h v f
El texto del fragmento anterior descifrado es el siguiente. “He comunicamo (sic) a los ministros de colombia Y chile y al que dyrige los asuntos de buenos Ayres mis pasos dados con este ministe rio todos los han aprobado y estan de acurdo (sic) Estamos igualmente conveni dos en que si ynglaterra sigue en su sistema De entretenernos urgire hasta obtener una decision positiva” Como se mencionó, el tipo de criptosistema que utilizó Michelena es de sustitución polialfabética3, atribuido a Blaise de Vigenère el cual es un agregado de cifras monoalfabéticas4 del modelo de sustitución inventado por Julio César. En la tabla 1 se muestra la sustitución polialfabética[9] . Supongamos que deseamos enviar por ejemplo, la palabra “SECRETOS” la cual tiene una longitud de 8 letras. Escogemos una palabra clave para que nos indique el orden de selección de los alfabetos de la tabla, esta puede ser de cualquier longitud, en nuestro ejemplos hemos elegido la palabra “HOGAR”.
Fig 2. Carta del 6 de noviembre de 1824[9]
73
76
Tabla 1.- Criptografía diplomática mexicana [9]
Como se aprecia en la tabla 2 el mensaje cifrado resultante es “ZSIRVACY” el cual es ininteligible. Observe que la clave en nuestro ejemplo tiene una longitud de 5 letras, por lo que se tiene que repetir las veces que sean necesarias para cubrir la longitud de cada renglón de texto del mensaje.
Tabla2.- Ejemplo de un mensaje cifrado de Vigenère.
74
77
Se sabe que durante la guerra de Reforma y el imperio de Maximiliano, tanto liberales como conservadores mantenían correspondencia cifrada, pero desgraciadamente no encontramos un ejemplo para mostrar. En el siglo XX, Porfirio Díaz utilizó los métodos de sustitución para comunicarse con gobernadores y jefes militares importantes. Su secretario particular, Don Rafael Chousal, fue el encargado de seleccionar los métodos criptográficos que se deberían usar. El método de sustitución simple, consiste en que cada uno de los caracteres de un alfabeto se sustituye por una cadena de símbolos numéricos, para descifrarlo, cada entero es sustituido por la letra correspondiente, este tipo de sistema criptográfico al ser el más simple tiene gran vulnerabilidad ya que con mucha facilidad se puede deducir cual es la regla de sustitución, como un ejemplo de sustitución directa o simple se tiene la tabla mostrada abajo y es la que usó don Porfirio.[10],[11] Se desea transmitir el texto “HOLA A TODOS”. De acuerdo a la tabla, el mensaje encriptado resulta: 4 18 20 11 11 22 18 12 18 26 . Para hacerlo menos vulnerable, se le puede asignar a cada símbolo varios números como se muestra en la siguiente tabla:
A 11 21 31 N 75 85 95 B 79 89 99 Ñ 70 80 90 C 10 20 30 O 16 26 36 CH 71 81 91 P 49 59 69 D 48 58 68 Q 46 56 66 E 19 29 39 R 43 53 63 F 41 51 61 RR 15 25 35 G 18 28 38 S 72 82 92 H 17 27 37 T 74 84 94 I 13 23 33 U 12 22 32 J 47 57 67 V 77 87 97 K 44 54 64 W 45 55 65 L 14 24 34 X 42 52 62 LL 40 50 60 Y 76 86 96 M 78 88 98 Z 73 83 93
Para el mismo ejemplo, ahora el texto cifrado resulta 27 36 14 22 11 94 16 68 16 92 Al iniciarse la Primera Guerra Mundial, el káiser Guillermo II había prometido una victoria rápida sobre Inglaterra, como no lo estaba logrando recurrió a la llamada “guerra marítima sin restricciones” que consistía en que cualquier barco de guerra o mercantil, enemigo o neutral, encontrados alrededor de las costas de Inglaterra seria hundido. Uno de esos barcos fue el trasatlántico de lujo inglés Lusitania que fue hundido por submarinos alemanes el 26 abril de 1915, lo que provocó que el 6 de abril de 1917 EEUU le declarara la guerra a Alemania. En un intento de evitar que los norteamericanos entraran a la guerra, los alemanes le ofrecieron al presidente mexicano Venustiano Carranza ayudarlo a reconquistar los territorios arrebatados a México durante la guerra de 1848 si México le declaraba la guerra a EEUU. EL TELEGRAMA ZIMMERMAN
El 16 de Enero de 1917, Arthur Zimmerman, Secretario de Relaciones Exteriores Alemán, telegrafió al embajador de su país en los Estados Unidos, Johann von Bernstorff, el ofrecimiento a Carranza descrito anteriormente mediante un mensaje cifrado utilizando (fig. 3) el código conocido como “0075”. El embajador en EEUU lo retransmite a su colega en la Ciudad de México Heinrich Von Eckhardt pero con un código diferente, el “13040”, los criptógrafos descifraron primeramente fragmentos del telegrama que usó el código 0075, pero cuando se retransmitió con el código “13040” lo pudieron descifrar completamente. Se conocía como “cuarto 40” a la sección encargada de descifrar los mensajes. Este grupo de criptógrafos había tenido mucha suerte cuando un pescador ruso atrapó en sus redes un pesado libro que contenía el código secreto criptográfico que les permitía descifrar los mensajes. Este libro procedía del barco de guerra alemán
A B C CH D E F G H I J K L LL M 11 9 10 23 12 19 1 27 4 28 7 16 20 6 17 N Ñ O P Q R RR S T U V W X Y Z 3 30 18 24 15 13 21 26 22 14 8 5 29 25 2
75
78
Magdeburg hundido frente a las costas de Finlandia. El libro contiene listas en donde se relacionan una cifra a un texto[12],[13],[14]
El mensaje desencriptado dice lo siguiente: [14]
Nos proponemos comenzar el primero de febrero la guerra submarina, sin restricción. No obstante, nos esforzaremos para mantener la neutralidad de los Estados Unidos de América. En caso de no tener éxito, proponemos a México una alianza sobre las siguientes bases: hacer juntos la guerra, declarar juntos la paz; aportaremos abundante ayuda financiera; y el entendimiento por nuestra parte de que México ha de reconquistar el territorio perdido en Nuevo México, Texas y Arizona. Los detalles del acuerdo quedan a su discreción [de Von Eckardt]. Queda usted encargado de informar al presidente [de México] de todo lo antedicho, de la forma más secreta posible, tan pronto como el estallido de la guerra con los Estados Unidos de América sea un hecho seguro. Debe además sugerirle que tome la iniciativa de invitar a Japón a adherirse de forma inmediata a este plan, ofreciéndose al mismo tiempo como mediador entre Japón y nosotros. Haga notar al Presidente que el uso despiadado de nuestros submarinos ya hace
previsible que Inglaterra se vea obligada a pedir la paz en los próximos meses.
Fig 3.Telegrama Zimmerman cifrado [14]
Durante la segunda Guerra Mundial los alemanes y las Potencias del Eje utilizaron la máquina Enigma para encriptar sus mensajes (fig. 4), esta era un dispositivo electromecánico cuyo creador fue el alemán Arthur Scherbius quien fundó la empresa Chiffriermaschinen Aktien Gesellschaft en Berlín poniendo a la venta la primera versión comercial, la Enigma-A en 1923, siendo su finalidad facilitar la comunicación de documentos entre comerciantes y hombres de negocios de forma secreta. Hubo tres versiones comerciales y la más importante fue Enigma-D en 1926. [15], [16]
76
79
Fig 5. Maquina enigma [15]
Fig 4. Soldados utilizando la Maquina Enigma [16]
TRANSMISIÓN DE MENSAJES CON LA MÁQUINA ENIGMA.
La máquina Enigma consiste de las teclas que son interruptores eléctricos, un engranaje mecánico y un panel de luces con las letras del alfabeto (Fig. 5). El funcionamiento de esta máquina es similar al de una máquina de escribir mecánica. En el interior de la máquina se podían introducir varios rotores ya que existen ranuras para esto; los rotores cambiaban una letra por otra (fig. 5). Los contactos de salida de un rotor se conectaban a los contactos de entrada del rotor siguiente. Uno de los últimos mensajes codificado por la máquina Enigma fue enviado por un submarino, el cual se logró descifrar hasta el mes de Febrero de 2006 y fue gracias a la ayuda del “Proyecto-M4”. El mensaje decía así [16]: nczwvusx pnyminhz xmqxsfwx wlkjahsh nmcocca kuqpmkcsm hkseinjus blkiosxck ubhmllxcs jusrrdvko hulxwccbg vliyxeoahx rhkkfvd rewezlxo bafgyujqukg rtvukameu rbveksuh hvoyhabcj wmaklfkl myfvnrizrv vrtkofdanj molbgffl eoprgtflvr howopbekv wmuqfmpw parmfhagkxiibg Una vez desencriptado: Señal de radio 1132/19. Contenido: Forzados a sumergirnos durante ataque, cargas de profundidad. Última localización enemiga: 8:30h, cuadrícula AJ 9863, 220 grados, 8 millas náuticas. [Estoy] siguiendo [al enemigo]. [El barómetro] cae 14 milibares. NNO 4, visibilidad 10
Por otro lado, los norteamericanos utilizaron un método de cifrado oral durante la guerra en el pacífico contra los japoneses. Dado que solamente 30 personas en el mundo además de los navajos hablaban su lengua, la que no tiene escritura siendo todos ellos norteamericanos, la marina enlistó a 200 navajos para que sirvieran de encriptadores y desencriptadores de mensajes orales. La idea fue de Philip Johnston que hablaba con fluidez esta lengua dado que era hijo de un misionero que predicaba entre los navajos. [17].
77
80
Después de estos sucesos, la criptografía ya no se consideraba un arte que solo resultaba útil a los políticos y militares, y se empezó a considerar una ciencia. En 1949, C.E. Shannon, padre de la teoría de la información utilizó la criptografía para establecer la base teórica de esta ciencia que estudia la escritura oculta, la criptografía hizo suyo el problema de la transmisión de claves y buscó soluciones para poder transmitir textos cifrados sin tener necesidad de intercambiar claves legibles, existen claves privadas y públicas que ayudan a enfrentar este tipo de problema. Un sistema de clave privada o simétrica es aquel que utiliza la misma clave para el cifrado y el descifrado del mensaje, esto quiere decir que la clave la deben de tener tanto el emisor como el receptor.
Los cifrados asimétricos o de clave pública, consiste en que cada usuario posea un par de claves, una pública y una privada. Si quiero enviar un mensaje por ejemplo a la persona A, el procedimiento sería el siguiente, se encripta el mensaje según la clave de la persona A, que es pública, en el sentido de que cualquiera puede conocerla, pero sólo la persona A, con su clave privada, la puede descifrar. Entre otras, una de las ventajas de este método es que la clave secreta de la persona A, la privada, nunca circula por los medios de comunicación y, por tanto, no es necesario renovarla constantemente.
La criptografía es la disciplina matemática, las matemáticas proporciona la justificación teórica de la fortaleza de un algoritmo o protocolo particular, está disciplina ha ido crecido con los años para enfrentar una mejor fortaleza para la seguridad de la información, aunque no siempre nos permita demostrar la seguridad que presenta los algoritmos, lo que si nos puede proporcionar es un medio para investigar sistemáticamente su seguridad [15],[6].
1Las palabras que se pronuncian igual, pero se escriben de forma diferente se llaman homófonas. 2En la sustitución monoalfabética, también conocida como sustitución simple, se sustituye cada uno de los caracteres del texto original por otro, de acuerdo con una tabla pre-establecida, para obtenerse el texto cifrado. Como consecuencia, la frecuencia de ocurrencia de las letras (números o símbolos) del mensaje cifrado es la misma que la frecuencia de ocurrencia de las letras de la lengua usada en el mensaje original. 3Sustitución polialfabética es cuando se utilizan múltiples alfabetos. 4cifras monoalfabéticas es donde cada letra del texto en claro es sustituida por otra letra en el texto cifrado.
Galende Díaz Juan Carlos “Sistemas criptográficos empleados en Hispanoamérica” [8]http://revistas.ucm.es/ghi/11328312/articulos/RCHA0000110057A.PDF Narváez Roberto “La Criptografía Diplomática Mexicana en la Primera Mitad del siglo XIX” [9]http://www.ucm.es/info/documen/articulos/art_sexta/004.pdf José de Jesús Ángel Ángel y Guillermo Morales-Luna “Breve descripción de la Criptografía en la Revolución Mexicana” [10]http://www.revista.unam.mx/vol.9/num3/art18/art18.pdf
78
81
José de Jesús Angel Angel y Guillermo Morales-Luna “Algunos Sistemas Criptográficos durante la Presidencia de Porfirio Díaz” [11]http://computacion.cs.cinvestav.mx/~jjangel/histo/PD.pdf Bernardo Fernández Bef “El telegrama Zimmermann” [12]http://www.bicentenario.gob.mx/bdb/bdbpdf/NBNM/R/22.pdf Juan Ramón Jiménez de León “Telegrama Zimmermann” [13]http://yumka.com/docs/zimmermann.pdf [14] http://es.wikipedia.org/wiki/Telegrama_Zimmermann [15]http://www.ciencias.iesbezmiliana.org/revista/index.php?option=com_content&task=view&id=37&Itemid=26&limit=1&limitstart=1 [16]http://wanlinksniper.blogspot.com/2009/06/alan-matison-turing.html [17] http://es.wikipedia.org/wiki/Navajo
79
IPN ESIME-ZACATENCO
80
BIBLIOGRAFÍA
[1] “Sube 20.6% número de usuarios de Internet en México: Inegi y Cofetel”. Periódico la
Jornada 2010/12/08.
[2] “Cibernautas bloquean consorcios que intentan ahogar a Wikileaks”. Periódico la
Jornada 2010/12/09.
[3] Darrel Hankerson, Alfred Menezes, Scott Vanstone. “Guide to Elliptic Curve
Cryptography”. Springer-Verlag, New York, 2004.
[4] John Talbot, Dominic Welsh “Complexity and Cryptography An Introduction”.
Cambridge University Press, 2006.
[5] Héctor Oviedo Galdeano. “Los cuaterniones y algunas aplicaciones en ingeniería”.
Encuentro Nacional Actualidad de las Matemáticas Aplicadas AMA 2010. Instituto
Tecnológico de Querétaro, Octubre 2010.
[6] Fred Piper, Sean Murphy. “Cryptography: A Very Short Introduction”. Oxford
University Press, 2002.
[7] William Stallings “Cryptography and Network Security Principles and Practices”.
Cuarta edición, Prentice Hall, 2006.
[8] Héctor Oviedo Galdeano, José Antonio López Toledo. “Curiosidades sobre la
Criptografía en hechos que dejaron marca en el mundo”. RISCE Revista Internacional de
Sistemas Computacionales y Electrónicos. Noviembre 2010, Número 6, Volumen 2, Año 2,
pp. 72-81.
[9] A. Menezes, P. van Oorschot, S. Vanstone. “Handbook of Applied Cryptography”.
CRC Press, 1996.
[10] José Francisco Vicent Francés “Propuesta y análisis de criptosistemas de clave pública
basados en matrices triangulares superiores por bloques” Universidad de Alicante, 2007.
[11] Daniel R. L. Brown. “Elliptic Curve Cryptography”. Certicom Corp, 2009.
[13] Daniel R. L. Brown. “Recommended Elliptic Curve Domain Parameters”. Certicom
Corp, 2010.
[14] Francisco Antonio Ferrández Agulló. Sistemas criptográficos de curva elíptica basados
en matrices”. Universidad de Alicante, 2005.
IPN ESIME-ZACATENCO
81
[15] Alexander W. Dent Chris J. Mitchell. “User’s Guide to Cryptography and Standards”.
Artech House, 2005.
[16] Padma Bh, D. Chandravathi y P. Prapoorna Roja. “Encoding And Decoding of a
Message in the Implementation of Elliptic Curve Cryptography using Koblitz’s Method”.
(IJCSE) International Journal on Computer Science and Engineering, Vol. 02, No. 05,
2010.
[17] M. Brown, D. Hankerson, J. López y A. Menezes “Software Implementation of the
NIST Elliptic Curves Over Prime Fields”. Springer-Verlag London UK, 2001.
[18] Todd K. Moon, “Error Correction Coding Mathematical Methods and Algorithms”,
Wiley-Interscience, 2005.
IPN ESIME-ZACATENCO
82
APÉNDICE A. Algoritmo de Menezes-Vastone
IPN ESIME-ZACATENCO
83
APÉNDICE B. Obtención de la Matriz Privada A
Para generar la llave privada se hace uso del teorema de Cayley-Hamilton. Para esto se
utiliza la matriz del sistema , la cual si se trabaja con curvas elípticas de
característica dos, es decir, de una forma binaria, puede construirse con polinomios
irreducibles. En nuestro caso se trabaja con números primos. Se utiliza la ecuación (1.9)
para la construcción de la matriz A:
2 1
0 1 2 1
2 1
0 1 2 1
0
. (*)
n n
n
n n
n
r I r M r M r M M
r I r M r M r M M
2 3 1
0 1 2 1
0
Multiplicando la ecuación anterior por
. (**)
Despejando en (**) y sustituyéndolo en (*)
n n
n
n
M
r M r M r M r M M
M
r M
2 3 2 1 1
1 2 1 0 1 2 1
1 2 1
1 2 1
( ) . (***)
Agrupando los términos en (***)
.
n n
n n
n n
o n
r M r M r r I r M r M r M M
M a I a M a M a M
2 1
1 2 1
La matriz privada es:
. n
o nA a I a M a M a M
IPN ESIME-ZACATENCO
84
APÉNDICE C. Criptoanálisis del sistema construido
11 12 13 11 12 13
2
21 22 23 21 22 23
31 32 33 31 32 33
2
2 1 0
11 12 13 11 12 13
2 21 22 23 1 21 22 23
31 32 33 31 32 33
y
si =a
m m m
M m m m M
m m m
A M a M a I
m m m
A a a m m m
m m m
0
2 11 2 12 2 13 1 11 1 12 1 13 0
2 21 2 22 2 23 1 21 1 22 1 23 0
2 31 2 32 2 33 1 31 1 32 1 33 0
2 11
1 0 0
0 1 0 mod
0 0 1
0 0
0 0
0 0
a p
a a a a m a m a m a
A a a a a m a m a m a
a a a a m a m a m a
a
A
1 11 0 2 12 1 12 2 13 1 13
2 21 1 21 2 22 1 22 0 2 23 1 23
2 31 1 31 2 32 1 32 2 33 1 33 0
0
1
2 11 1 11
.
Se desarrollará la siguiente ecuación:
donde
n
a m a a a m a a m
a a m a a m a a a m
a a m a a m a a m a
P
A P
P
a a m
0 2 12 1 12 2 13 1 13 0
2 21 1 21 2 22 1 22 0 2 23 1 23 1
2 31 1 31 2 32 1 32 2 33 1 33 0 2
a a a m a a m P
a a m a a m a a a m P
a a m a a m a a m a P
IPN ESIME-ZACATENCO
85
0
1
2
2 11 1 11 0 0 2 12 1 12 1 2 13 1 13 2
2 21 1 21 0 2 22 1 22 0 1 2 23 1 23 2
2 3
.
Para que se pueda reducir la matriz se utiliza la regla de suma de puntos en ECC
( ) ( ) ( )
( ) ( ) ( )
(
a a m a P a a m P a a m P
a a m P a a m a P a a m P
a
0
1
1 1 31 0 2 32 1 32 1 2 33 1 33 0 2 2
.
) ( ) ( )
Para realizar el proceso inverso, es decir, encontrar las claves privadas a partir de la ecuación anterior
se tiene el sistema de
a m P a a m P a a m a P
0 1 0 2
2 11 1 11 0 2 12 1 12 2 13 1 13 0 0
2 21 1 21 2 22 1 22 0 2 23 1 23 0 1
2 31 1 31 2 32 1 32 2 33 1 33 0 0 2
ecuación A = donde y .
.
Se determin
P P P P
a a m a a a m a a m P
a a m a a m a a a m P
a a m a a m a a m a P
0 0 0 1 0 2
2 11 1 11 0 2 12 1 12 2 13 1 13 0 0
2 21 1 21 2 22 1 22 0 2 23 1
an los escalares , y tales que , y .
El sistema de ecuaciones será:
[( ) ( ) + ( ) ]
[( ) + ( ) (
P P P
a a m a a a m a a m P P
a a m a a m a a a m
23 0 0
2 31 1 31 2 32 1 32 2 33 1 33 0 0 0
2 11 1 11 0 2 12 1 12 2 13 1 13
2 21 1 21 2 22 1
) ]
[( ) + ( ) + ( ) ] .
Asociaciando terminos de la ecuación anterior
[( ) ( ) + ( ) ]
[( ) + (
P P
a a m a a m a a m a P P
a a m a a a m a a m
a a m a a
22 0 2 23 1 23
2 31 1 31 2 32 1 32 2 33 1 33 0
2 11 12 13 1 11 12 13
) + ( ) ]
[( ) + ( ) + ( ) ]
el sistema de ecuaciones a resolver para encontrar los coeficientes de es:
( ) (
i
m a a a m
a a m a a m a a m a
a
a a m m m
0
2 21 22 23 1 21 22 23 0
2 31 32 33 1 31 32 33 0
)
( ) ( )
( ) ( ) .
a
a a m m m a
a a m m m a
IPN ESIME-ZACATENCO
86
2 1 0
11 12 13 11 12 13
21 22 23 21 22 23
31 32 33 31 32 33
11 12 13 11 12 13
21 22 23
Resolviendo el sistema de ecuaciones para encontrar , , .
( ) ( ) 1
( ) ( )
( ) ( )
( ) ( ) 1
(
a a a
m m m
m m m
D m m m
m m m
21 22 23) ( )m m m
11 12 13 21 22 23 21 22 23 31 32 33
31 32 33 11 12 13
21 22 23 11 12 13 11 12 13 31 32 33
31 32 33 21 22 2
( )*( )* ( )*( )*1
( )*( )*
[( )*( )* ( )*( )*
( )(
D m m m m m m
m m m
m m m m m m
m m m
3 )*1].
11 12 13
21 22 23
21 22 23 31 32 33 11 12 132 31 32 33
11 12 13 11 12 13 31 32 33
21 22 23
( ) 1
( )
( )*( )* ( )*( )*1 ( )*( )*( )
( ) 1 [( )*( )* ( )*( )*
( )
m m m
m m m
m m m m m m m m ma n m m m
m m m m m m m m m
m m m
21 22 23( )*( )*1].m m m
11 12 13
21 22 23
11 12 13 21 22 23 21 22 23 31 32 331 31 32 33
11 12 1331 32 33 11 12 13
21 22 2321 2
( ) 1
( )( )*( )* ( )*( )*1( )
( ) 1 ( )*( )*
( ) [(
m m m m m ma n
m m m
2 23 11 12 13 31 32 33)*( )* ( )*( )* ( )*( )*1].
11 12 13 11 12 13
21 22 23 21 22 23
0 31 32 33 31 32 33
11 12 13 11 12 13
21 22 23 21 22 23
11 12 13 21 22 230
( ) ( )
( ) ( )
( ) ( )
( ) ( )
( ) ( )
( )*( )* (
m m m
m m m
a n m m m
m m m
m m m
m m ma n
21 22 23 31 32 33
31 32 33 11 12 13
21 22 23 11 12 13 11 12 13 31 32 33
31 32 33 21 22 23
)*( )*
( )*( )*
[( )*( )* ( )*( )*
( )*( )* ].
m m m
m m m
m m m m m m
m m m
IPN ESIME-ZACATENCO
87
22
11
00 .
a na
D
a na
D
a na
D
IPN ESIME-ZACATENCO
88
APÉNDICE D. Ejemplo de un criptoanálisis para el sistema propuesto.
Se comprueba que esta matriz tiene inversa, la cual es
Para crear la llave privada se utiliza (3.5). Los coeficientes que se propusieron en forma
arbitraria para a0, a1, a2 son 5, 6 y 2 respectivamente, la única condición es que pertenezcan
a . La llave privada 2
2 1 0= A a M a M a I
.
IPN ESIME-ZACATENCO
89
Se construye los puntos del vector
0
1donde
n
P
A P
P
entonces
.
Si P0 es utilizado como generador de los puntos entonces 0 1 0 2 y P P P P por lo tanto
4 y 25 . El vector es:
por lo tanto
A
0 4(0,1) 100(0,1) 104(0,1)
20(0,1) 0 175(0,1) 195(0,1) mod(23),
19(0,1) 8(0,1) 450(0,1) 477(0,1)
23
12(0,1)
11(0,1)
17(0,1)
de donde, la llave pública resulta
.
IPN ESIME-ZACATENCO
90
Criptoanálisis para encontrar los coeficientes de ai
Se conoce el vector , y la matriz M ya que son públicos.
11 12 13 11 12 13
2
21 22 23 21 22 23
31 32 33 31 32 33
y
m m m
M m m m M
m m m
y
Se dan por conocido los valores de la ecuación (2.8) debido a que el objetivo de la tesis no
es realizar un criptoanálisis, estos valores se deben de conocer puesto que son necesarios
para saber el valor k de los puntos de los vectores y , para así poder solucionar el
sistema de ecuaciones obtenido en la ecuación (3.6):
2 11 12 13 1 11 12 13 0
2 21 22 23 1 21 22 23 0
2 31 32 33 1 31 32 33 0
( ) ( )
( ) ( )
( ) ( ) .
a a m m m a
a a m m m a
a a m m m a
El valor k de los puntos del vector es 4 y =25 puesto que 0 1 0 2 y P P P P .
El valor k de los puntos del vector es 12, 11 y 17 esto debido a que
0 0 0 1 0 2, y P P P .
IPN ESIME-ZACATENCO
91
Debido a que se trabaja todo sobre un campo siempre tiene que pertenecer a este por lo que
es necesario aplicar módulo al sistema de ecuación anterior, el módulo utilizado en el
ejemplo es 23.
Nota: Si se utiliza el algoritmo de Euclides
Extendido para resolver las divisiones anteriores.
IPN ESIME-ZACATENCO
92
Si se construye una llave privada 3 2
3 2 1 0= A a M a M a M a I con la misma M y donde
los coeficientes que se propusieron en forma arbitraria para a0, a1, a2, a3 son 5, 6, 2 y 9
respectivamente. La llave privada A es:
Se construye los puntos del vector
0
1donde
n
P
A P
P
entonces
.
IPN ESIME-ZACATENCO
93
Si P0 es utilizado como generador de los puntos entonces 0 1 0 2 y P P P P por lo tanto
4 y 25 . El vector es:
por lo tanto
A
18(0,1) 0 275(0,1) 293(0,1)
2(0,1) 0 450(0,1) 452(0,1) mod(23),
0 60(0,1) 0 60(0,1)
23
17(0,1)
15(0,1)
14(0,1)
de donde, la llave pública resulta
.
Criptoanálisis para encontrar los coeficientes de ai
Se conoce el vector , y la matriz M ya que son públicos.
11 12 13 11 12 13 11 12 13
2 3
21 22 23 21 22 23 21 22 23
31 32 33 31 32 33 31 32 33
, y
m m m
M m m m M M
m m m
,
y
IPN ESIME-ZACATENCO
94
Se dan por conocido los valores de la ecuación (2.8) debido a que el objetivo de la tesis no
es realizar un criptoanálisis, estos valores se deben de conocer puesto que son necesarios
para saber el valor k de los puntos de los vectores y . El valor k de los puntos del vector
es 4 y = 25 puesto que 0 1 0 2 y P P P P . El valor k de los puntos del vector
es 12, 11 y 17 esto debido a que 0 0 0 1 0 2, y P P P . El sistema a
resolver es:
3 11 12 13 2 11 12 13 1 11 12 13 0
3 21 22 23 2 21 22 23 1 21 22 23 0
3 31 32 33 2 31 32 33 1 31 32 33 0
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) .
a a a m m m a
a a a m m m a
a a a m m m a
Sustituyendo la ecuación con los valores obtenidos
Debido a que se trabaja todo sobre un campo siempre tiene que pertenecer a este por lo que
es necesario aplicar módulo al sistema de ecuación anterior, el módulo utilizado en el
ejemplo es 23.
IPN ESIME-ZACATENCO
95
El sistema a resolver es de tres ecuaciones con 4 incógnitas por lo que no se podrá
encontrar los coeficientes de ai, con esto se indica que el sistema criptográfico construido
necesita exactamente tres coeficientes de
IPN ESIME-ZACATENCO
96
APÉNDICE E. Recomendaciones de la NIST sobre campos primos
IPN ESIME-ZACATENCO
97
APÉNDICE F. Curva elíptica con a=1, b=1 y p=23
IPN ESIME-ZACATENCO
98
APÉNDICE G. Código ASCII
El código ASCII se utiliza porque cada carácter tiene dos nibbles (cuatro dígitos binarios
bits o medio octeto) lo que facilita su manipulación y empaquetamiento cuando se
transmiten varios bytes. Aunque todos los caracteres del código ASCII se representen con 7
bits, se utilizan los 8 bits, simplemente el MSB (most significant bit, el bit más
significativo) es siempre 0, por lo que el número de caracteres es 128 (28). Si se utilizara el
último bit (MSB) del byte de los códigos ASCII podrían ampliar el número de caracteres a
256 (28) con lo que podrían incluir otros símbolos, lo que se conoce como el código ASCII
Extendido.
Código ASCII.
IPN ESIME-ZACATENCO
99
IPN ESIME-ZACATENCO
100
APÉNDICE H. Algunos puntos de la curva elíptica donde a=7, b=29 y p=65521
IPN ESIME-ZACATENCO
101
IPN ESIME-ZACATENCO
102
IPN ESIME-ZACATENCO
103
BB
APÉNDICE I. Diagrama del sistema criptográfico propuesto
Se tienen dos usuarios y un medio de comunicación como se observa en la siguiente figura:
Los valores públicos son:
Llave privada A Llave privada B
Para lograr un intercambio de llaves entre dos usuarios debe de cumplirse que . Una
vez cumplido la condición se cifra los mensajes con el cifrado de ElGamal, se muestra por
bloques éste proceso.
AA
B
A 2 AB
1 BA
1 2
la Matriz M y el vector
IPN ESIME-ZACATENCO
104
Mensaje claro
de Alicia
Mensaje cifrado
Se efectúa la operación
A
Bob
, por lo
que
Desencriptar
Mensaje claro
IPN ESIME-ZACATENCO
105
APÉNDICE J. Diagramas de flujos del sistema criptográfico
Algoritmo para calcular los puntos de la curva elíptica sin conocer ninguno y conociendo
uno.
IPN ESIME-ZACATENCO
106
IPN ESIME-ZACATENCO
107
Diagrama de flujo para la construcción del sistema.
IPN ESIME-ZACATENCO
108
IPN ESIME-ZACATENCO
109
FUNCIÓN gpuntos
IPN ESIME-ZACATENCO
110
IPN ESIME-ZACATENCO
111
FUNCIÓN gpuntosist1a
IPN ESIME-ZACATENCO
112
IPN ESIME-ZACATENCO
113
FUNCIÓN ECCsolop1aa
IPN ESIME-ZACATENCO
114
IPN ESIME-ZACATENCO
115
FUNCIÓN sumsist1
IPN ESIME-ZACATENCO
116
IPN ESIME-ZACATENCO
117
FUNCIONES intercambioDH y AxPIdaPhi
IPN ESIME-ZACATENCO
118
FUNCIÓN cifraElGamal1
IPN ESIME-ZACATENCO
119
IPN ESIME-ZACATENCO
120
IPN ESIME-ZACATENCO
121
APÉNDICE K. Programa del sistema criptográfico.
Eccorden.m
clear all; clc; fprintf('curva elíptica\n'); fprintf('y^2=x^3+ax+b\n'); a=input('ingrese el valor de a= '); b=input('ingrese el valor de b= '); dd(1,1)=a; dd(2,1)=b; d=(4*(a^3))+(27*(b^2)); if d~=0 modu=input('ingrese el mod= '); p=modu; s=0; q=(p-1)/2; for i=1:modu z=s^3+(a*s)+b; x(1,i)=s; %secuencia de números x(2,i)=mod(z,p); %z solución de la curva elíptica s=s+1; r=x(2,i)^q; z1=mod(r,p);%calculando los residuos cuadráticos y no cuadráticos if z1>1 z1=-1; x(3,i)=z1; end x(3,i)=z1; end c=1; for i=1:modu if x(3,i)~=-1 rc(1,c)=x(2,i); % residuos cuadráticos con repetición ux(1,c)=x(1,i); %ubicación de residuos cuadráticos en x c=c+1; end end lon=length(rc); for i=1:modu h0=(i-p)^2; z1(1,i)=mod(h0,p); % h if i==modu z1(2,i)=0; else z1(2,i)=i; %y end end k=0; fprintf('los puntos son:\n\n'); fprintf('puntos\torden\n'); for i=1:lon for j=1:modu if (rc(1,i)==z1(1,j)) k=k+1; h(1,k)=rc(1,i); %valor de z
IPN ESIME-ZACATENCO
122
h(2,k)=z1(2,j); %y salida h(3,k)=ux(1,i); %valor de x salida [vpuntos]=gpuntos(h(3,k),h(2,k),p,a,lon); fprintf('(%d,%d)\t%d\n',h(3,k),h(2,k),vpuntos); plot(h(3,k),h(2,k),'--
rs','MarkerEdgeColor','k','MarkerSize',3) hold on end end end grid minor fprintf('\nEl número de puntos encontrados fueron: %d\n\n',k+1); x1=input('ingrese el valor del punto G en x= '); y1=input('ingrese el valor del punto G en y= '); %puntos a partir del generado lon=p; [vpuntos]=gpuntosist1(x1,y1,p,a,lon); if vpuntos~=1 fprintf('\nNúmero de puntos generados a partir del dado son:
%d\n',vpuntos); else fprintf('\nA partir de este punto no se genreran ningún otro
¿Escoja otro punto para utilizarlo como generador?'); break end end fprintf('\nEl discriminante es cero')
IPN ESIME-ZACATENCO
123
Sistema.m
clear all clc [h,k1,p,a]=ECCsolop1aa; %matriz pública M=input('ingrese los valores de la matriz M pública '); M=[1 5 8;10 9 6;3 2 4]; MM=det(M); format rational in=inv(M); if MM~=0 t=size(in,1);%tamaño de la matriz fprintf('La matriz M es la siguiente: \n'); disp(M); x1=h(3,1); y1=h(2,1);
%puntos a partir del generado fprintf('puntos\torden\n'); lon=p; [hh,vpuntos]=gpuntosist1a(x1,y1,p,a,lon); %grafica gxy=length(hh); for i=1:gxy plot(hh(1,i),hh(2,i),'--rs','MarkerEdgeColor','k','MarkerSize',3) hold on end grid minor %if vpuntos~=1 fprintf('\nNúmero de puntos generados a partir del dado son:
%d\n',vpuntos); i=1; am=[]; valor_a=[2 1 0]; for h=1:2 fprintf('Ingrese los coeficientes de "a" para formar la
clave privada de la persona %d.\nEl número de coeficientes de "a" son:
%d\n',h,t);
for i=1:t
fprintf('El valor del coeficiente a %d ',valor_a(i)); ax=input('es = '); am(i)=ax;
end
end [A]=intercambioDH(M,am,p,t); if h==1 A1=A; fprintf(' A de la persona 1 es: \n'); disp(A1); else B=A;
IPN ESIME-ZACATENCO
124
fprintf(' A de la persona 2 es: \n'); disp(B); end end pmatriz=[]; almkey=[]; pmatriz(1,1)=x1; pmatriz(2,1)=y1; almkey(1,1)=1; j=2; for i=1:t-1 key=input('ingrese el valor de k = '); [pfinal]=sumsist1(x1,y1,p,key,a); almkey(j,1)=key; pmatriz(:,j)=pfinal(1,:); j=j+1; end fprintf('Los valores de (PI) son: \n'); disp(pmatriz); %intercambio entre dos personas for i=1:2 BXPI=mod(A1*almkey,p); if i==1 AXPI=BXPI; AA=A1; end A1=B; end A=AA; pmat=AxPIdaPhi(x1,y1,p,AXPI,a,t); fprintf('Los valores de (PHI)para la persona 1 son: \n'); disp(pmat); pmat=AxPIdaPhi(x1,y1,p,BXPI,a,t); fprintf('Los valores de (PHI)para la persona 2 son: \n'); disp(pmat);
GamA=mod(A*BXPI,p); [pmatA]=AxPIdaPhi(x1,y1,p,GamA,a,t); GamB=mod(B*AXPI,p); [pmatB]=AxPIdaPhi(x1,y1,p,GamB,a,t); fprintf('Los valores de (GAMMA) para la persona 1 son: \n'); disp(pmatA); fprintf('Los puntos de ECC(GAMMA) para la persona 2 son: \n'); disp(pmatB); opcion='s'; while opcion~=('n') % cifrado eLGamal cifraElGamal1(hh,pmatA,pmatB,t,p) opcion=input('¿desea ingresar otro texto (s/n) ','s'); end end
IPN ESIME-ZACATENCO
125
gpuntos.m
function [vpuntos]=gpuntos(x1,y1,p,a,lon) w(1,1)=x1; w(2,1)=y1; %calculando labda de=(2*y1); if de~=0 [G,C,D]=gcd(de,p); inmul=mod(C,p); li=(3*(x1)^2+a); lp=mod(li,p); l=inmul*lp; l=mod(l,p); x3i=(l^2)-(2*x1); x3=mod(x3i,p); cc(1,1)=x3; y3i=-y1+(l*(x1-x3)); y3=mod(y3i,p); cc(2,1)=y3; l1=lon*2; almac=[]; for i=1:l1-2 lm=(y3-y1); lmnum=mod(lm,p); ln=(x3-x1); [G,C,D]=gcd(ln,p); den=mod(C,p); lg=lmnum*den; lg=mod(lg,p); xr=(lg^2)-x1-x3; pnew(1,i)=mod(xr,p); %x yr=-y1+lg*(x1-pnew(1,i)); pnew(2,i)=mod(yr,p); %y x3=pnew(1,i);%x y3=pnew(2,i); %y if x1==x3 break; end end almac=horzcat(w,cc); almac=horzcat(almac,pnew); [f,c]=size(almac); vpuntos=c+1; else vpuntos=1; end end
IPN ESIME-ZACATENCO
126
gpuntosist1.m
function [almac,vpuntos]=gpuntosist1a(x1,y1,p,a,lon) w(1,1)=x1; w(2,1)=y1; %calculando labda de=(2*y1); if de~=0 [x3,y3,cc]=propsum(p,de,a,x1,y1); %suma de puntos el mismo l1=lon*2; almac=[]; for i=1:l1-2 lm=(y3-y1); lmnum=mod(lm,p); ln=(x3-x1); [G,C,D]=gcd(ln,p); den=mod(C,p); lg=lmnum*den; lg=mod(lg,p); xr=(lg^2)-x1-x3; pnew(1,i)=mod(xr,p); %x yr=-y1+lg*(x1-pnew(1,i)); pnew(2,i)=mod(yr,p); %y x3=pnew(1,i);%x y3=pnew(2,i); %y if x1==x3 break; end end almac=horzcat(w,cc); almac=horzcat(almac,pnew); [f,c]=size(almac); for i=1:c fprintf('%d\t(%d,%d)\n',i,almac(1,i),almac(2,i)); end vpuntos=c+1; else i=1; fprintf('\nlos puntos son:\n'); fprintf('%d\t(%d,%d)\n',i,x1,y1); vpuntos=1; end end
IPN ESIME-ZACATENCO
127
prosum.m
function [x3,y3,cc]=propsum(p,de,a,x1,y1) [G,C,D]=gcd(de,p); inmul=mod(C,p); li=(3*(x1)^2+a); lp=mod(li,p); l=inmul*lp; l=mod(l,p); x3i=(l^2)-(2*x1); x3=mod(x3i,p); cc(1,1)=x3; y3i=-y1+(l*(x1-x3)); y3=mod(y3i,p); cc(2,1)=y3; end
intercambioDH.m function [A]=intercambioDH(M,am,p,t) for i=1:t MG=am(i)*(mod(M^(t-i),p)); MG=mod(MG,p); v(i,:)=reshape(MG',1,[]); %se almacena en vector s=sum(v); A=mod(s,p); end A=vec2mat(A,t); %se convierte a matriz end
sumsist1.m function [pfinal]=sumsist1(x1,y1,p,key,a) if key~=1 w(1,1)=x1; w(2,1)=y1; %calculando labda de=(2*y1); if de~=0
[x3,y3,cc]=propsum(p,de,a,x1,y1); %suma de puntos el mismo if key~=2 almac=[]; for i=1:key-2; lm=(y3-y1); lmnum=mod(lm,p); ln=(x3-x1); [G,C,D]=gcd(ln,p); den=mod(C,p); lg=lmnum*den; lg=mod(lg,p); xr=(lg^2)-x1-x3; pnew(1,i)=mod(xr,p); yr=-y1+lg*(x1-pnew(1,i));
IPN ESIME-ZACATENCO
128
pnew(2,i)=mod(yr,p); x3=pnew(1,i);%x y3=pnew(2,i); %y end almac=horzcat(w,cc); almac=horzcat(almac,pnew); [f,c]=size(almac); for i=1:c pfinal(1,1)=almac(1,i); %x final pfinal(1,2)=almac(2,i); %y final end end end end if (key==2) pfinal(1,1)=x3; pfinal(1,2)=y3; end if (key==1) pfinal(1,1)=x1; pfinal(1,2)=y1; end end
AxPIdaPhi.m
function [pmat]=AxPIdaPhi(x1,y1,p,AXPI,a,t) pmat=[]; pmat1(1,1)=x1; pmat1(1,2)=y1;
for j=1:t if AXPI(j,1)~=0 key=AXPI(j,1); [pfinal]=sumsist1(x1,y1,p,key,a); pmat(:,j)=pfinal(1,:); else pmat(:,j)=pmat1(1,:); end
end end
IPN ESIME-ZACATENCO
129
Sum2p.m
Function [x3,y3]=sum2p(x1,y1,x3,y3,p) lm=(y3-y1); lmnum=mod(lm,p); ln=(x3-x1); [G,C,D]=gcd(ln,p); den=mod(C,p); lg=lmnum*den; lg=mod(lg,p); xr=(lg^2)-x1-x3; pnew(1,1)=mod(xr,p); yr=-y1+lg*(x1-pnew(1,1)); pnew(2,1)=mod(yr,p); x3=pnew(1,1);%x y3=pnew(2,1); %y end
convtex.m
function [m_new]=convtex(xfinal,labc) c=1; i=1; b=xfinal; while(c~=0) c=fix(b/labc); textf(i)=mod(b,labc); b=c; i=i+1; end tfinal=fliplr(textf); m_new=char(tfinal+31); end
CifraElGamal1.m
function cifraElGamal1(hh,pmatA,pmatB,t,p)
c=fopen('entrada.txt', 'r+'); texto=fread(c,'*char')'; fprintf('El texto es:\n'); disp(texto); fclose(c); alfabeto=char(32:126); labc=length(alfabeto)+1; lt=length(texto); blo=input('En cuantos bloques se dividirá el texto = '); r1=mod(lt,blo); if r1~=0 comp=abs(blo-r1); for i=1:comp esp(i)=32;
IPN ESIME-ZACATENCO
130
end texto1=char(esp); texto=[texto1 texto]; end [m,x]=size(texto); [a,b]=size(alfabeto); resul=[]; for i=1:x for j=1:b r= strcmpi(alfabeto(1,j),texto(1,i)); if r==1 resul(1,i)=j; m(1,i)=j; %desplazardor end end end [mat,dif] = vec2mat(m,blo); [fi col]=size(mat'); cc=1; fprintf('\nEl mensaje encriptado por medio de puntos:\n'); for i=1:col m=mat(i,:)'; m=m'; lontext=size(m,2);
xw=0; for i=1:lontext s1=m(1,i)*(labc^(blo-i)); xw=xw+s1; end
k=5; for i=1:k au=k-1; pxw=(xw*k)+i; busc=find(hh(1,:)==pxw); [s1,s2]=size(busc);
if s2==2; break; end end k2=busc(1,1); fprintf('(%d,%d)\n',hh(1,k2),hh(2,k2)); pc(cc)=k2; %puntos de la curva con el mesaje cifrado cc=cc+1; end
%%%%%%%%%%%%%%%% %la persona 1 sumar punto encripatado + gammaA
fprintf('\nLos puntos OMEGA que viajan en el medio son:\n'); lpe=length(pc); %cociente=lpe/t; o3=mod(lpe,t); omegax=[];
IPN ESIME-ZACATENCO
131
omegay=[]; ic=1; for i=1:t:lpe-o3 for j=1:t
xa =pmatA(1,j); ya= pmatA(2,j); xb= hh(1,pc(ic)); yb= hh(2,pc(ic)); [x3,y3]=sum2p(xa,ya,xb,yb,p); omegax(ic)=x3; omegay(ic)=y3; fprintf('(%d,%d)\n',x3,y3); ic=ic+1; end end
if o3~=0 for j=1:o3 xa =pmatA(1,j); ya= pmatA(2,j); xb= hh(1,pc(ic)); yb= hh(2,pc(ic)); [x3,y3]=sum2p(xa,ya,xb,yb,p); omegax(ic)=x3; omegay(ic)=y3; fprintf('(%d,%d)\n',x3,y3); ic=ic+1; end end %la persona 2 realiza la operación OMEGA -GammaB omx=length(omegax); o33=mod(omx,t); fprintf('\nLos puntos recibidos son:\n'); ic=0; cociente=lpe/t; for i=1:cociente for j=1:t ic=ic+1; xa =omegax(ic); ya= omegay(ic); xb= pmatB(1,j); yb= abs(pmatB(2,j)-p); [x3,y3]=sum2p(xa,ya,xb,yb,p); fprintf('(%d,%d)\n',x3,y3);
x_original=(x3)/k; xfinal(ic)=fix(x_original);
end end %residuo if o33~=0 for j=1:o33 ic=ic+1; xa =omegax(ic);
x_original=(x3-1)/k; xfinal(ic)=fix(x_original); end end
%%%%%se recupera mensaje original fprintf('\nEl mensaje numerico desencriptado es:\n'); disp(xfinal+31); %se convierte el valor numerico a texto fprintf('\nEl mensaje desencriptado es:\n'); [m_new1]=convtex(xfinal(1),labc); conver=length(xfinal); for i=2:conver [m_new]=convtex(xfinal(i),labc); m_new1=[m_new1 m_new]; end disp(m_new1); sal=fopen('salida.txt', 'w'); fwrite(sal,m_new1, '*char'); fclose(sal); clear all;
end
IPN ESIME-ZACATENCO
133
APÉNDICE L. Detección y corrección de errores
Las partes que conforman un sistema de comunicación digital son codificación de la fuente,
codificación canal y modulación digital en el lado del transmisor, así como los procesos
inversos para el lado del receptor. La detección y corrección de errores en una transmisión
corresponden a la codificación del canal. Puesto que la tesis no se centra en la corrección y
detección de errores de la información que se transmite solamente de modo general se
explica la detección y corrección de errores, para lo cual se utiliza el código hamming (7, 4)
que es un código lineal capaz de detectar y corregir un bit.
El diagrama a bloques de un código hamming (7, 4) es el siguiente:
En el diagrama se observa que el mensaje ingresado son bloques de longitud de cuatro bits
porque se utiliza el código hamming (7, 4) y la salida de éste es de longitud siete bits, estos
mensaje
IPN ESIME-ZACATENCO
134
son obtenidos multiplicando el mensaje con una matriz generadora (G). La diferencia entre
las longitudes de la salida y la entrada es la parte de redundancia, esta sirve para una que se
tenga mayores posibilidades de tener una decodificación adecuada de la secuencia de bits.
Uno de los parámetros importantes que miden el desempeño de un sistema de
comunicación digital es la BER (bit error rate) para un cierto valor de la relación de
energía de bit entre la densidad espectral de ruido (Eb/N0). Para proporcionar éste
parámetro se recurre a los códigos de detección y corrección de errores.
Cuando se transmite una señal siempre va hacer afectada por el ruido n, esta afectación se ve
reflejada en la señal recibida.
La probabilidad condicional de y para los dos casos son los siguientes:
Se necesita un modulador en los códigos hamming, se empleo el más sencillo que es BPSK
(Phase-Shift Keying) solo emplea 2 símbolos, con 1 bit de información cada uno. Es
también la que presenta mayor inmunidad al ruido, puesto que la diferencia entre símbolos
es máxima (180º). La señal de constelación para un BPSK es la siguiente:
La distribución de probabilidad en un BPSK tiene una forma gaussiana alrededor de cada
uno de los valores de símbolo, es presentada a continuación.
0
IPN ESIME-ZACATENCO
135
Supongamos que la señal recibida y, son igualmente probables por lo que de la figura
anterior el umbral de cero forma el límite para tomar una decisión óptima y esto nos
indicará si el símbolo pertenece a o a , lo anterior se puede explicar de la siguiente
manera:
si la señal recibida es mayor que 0, el receptor asume fue transmitida.
si la señal recibida es menor o igual a 0, el receptor asume fue transmitida
es decir,
Para la etapa de la demodulación de BPSK el símbolo recibido estará en base a la ubicación
de la constelación. En el bloque del detector indicará la posición donde ocurrió el error y
utilizando un detector hamming se podrá corregir éste. Para poder utilizar un decodificador
hamming se utiliza una matriz H que es una matriz de comprobación de paridad y así se
obtiene los mensajes que se enviaron en el medio de una forma corregida. Si se repite estos
pasos se obtendrá múltiples errores para distintos valores Eb/N0.
IPN ESIME-ZACATENCO
136
Programación para detectar y corregir un error.
close all clear all clc
n=7; k=4; m1=n-k;
%datos del vector OMEGA de la pág. 56
imbn=[38748 36140 40373 37191 21277 25708 37940 32534 25360 32298,... 13903 57386 40587 5699 53345 13247 49884 54018 500074 36841]; t1=dec2bin(imbn)-48; [ff,cc]=size(t1); fprintf('Los puntos enviados son:\n'); for i=1:cc fprintf('(%d,%d)\n',imbn(i),imbn(i+1)); end a=reshape(t1',1,ff*cc); [mensaje,r]=vec2mat(a,k); code = encode(mensaje,n,k,'hamming/ftm'); [fc,co]=size(code); codef=reshape(code',1,fc*co); N =fc*co; s = 2*codef-1; % modulación BPSK 0 -> -1; 1 -> 0 nr = 1/sqrt(2)*[randn(size(codef)) + j*randn(size(codef))]; % AWGN, 0dB
variance Eb_N0_dB = [0:1:12]; % Valores Eb/N0 Ec_N0_dB = Eb_N0_dB-10*log10(n/k); [h,g]= hammgen(m1); % matrix de paridad y generadora. for yy = 1:length(Eb_N0_dB) % agregando ruido y = s + 10^(-Ec_N0_dB(yy)/20)*nr; %ruido
cipHard = real(y)>0; %toma de decisión
%decodificación hamming%%%%%%%%%%%%%% [fx1,cx1]=size(cipHard); [recd,r]=vec2mat(cipHard,n); trt = syndtable(h); % tabla de decodificación. syndrome = mod(recd*h',2); % buscando síndrome syndrome_de = bi2de(syndrome,'left-msb'); % convertir de decimal. corrvect = trt(1+syndrome_de,:); % vector corregido correctedcode = rem(corrvect+recd,2);%palabra corregida % suma de errores s1=sum(code'); s2=sum(correctedcode'); s1a=sum(s1); s2a=sum(s2); nErr(yy) = abs(s2a-s1a); end fprintf('\nNo.total de Bits enviados: %d\n',N); fprintf('Eb_N0_dB\t\tNo. de Errores\n'); for w=1:length(Eb_N0_dB) fprintf('\t%d\t\t\t\t%d\n',Eb_N0_dB(w),nErr(w)); end
IPN ESIME-ZACATENCO
137
Rmsg=decode(correctedcode,n,k,'hamming/ftm'); [fa,ca]=size(Rmsg); bb=reshape(Rmsg',1,fa*ca); [correctedcodefi,r]=vec2mat(bb,cc); rxse=bi2de(correctedcodefi,'left-msb'); fprintf('\nLos puntos recibidos son:\n'); for i=1:cc fprintf('(%d,%d)\n',rxse(i),rxse(i+1)); end