Beruflich Dokumente
Kultur Dokumente
DE MORELIA
PROYECTO:
IMPLEMENTACIN DE PROTOCOLO DE AUTENTICACIN EN RED
BASADO EN CRIPTOGRAFA DE CLAVE PBLICA
EMPRESA:
INSTITUTO TECNOLGICO DE MORELIA
RESIDENTES:
GUADALUPE YERALDIN MORALES HERNNDEZ
MARIO EDUARDO SNCHEZ GUTIERREZ
10121103
10121115
CARRERA:
INGENIERA EN TECNOLOGAS DE LA INFORMACIN Y
COMUNICACIN
ASESOR INTERNO:
ASESOR EXTERNO:
MORELIA, MICHOACN
05 DE DICIEMBRE DE 2014
INDICE
Carta de aceptacin.............................................................................3
Carta de terminacin...........................................................................5
Introduccin.........................................................................................7
Justificacin...........................................................................................8
Objetivos................................................................................................9
Caracterizacin del rea donde se particip.........................................9
Problemas a resolver...........................................................................10
Alcances y limitaciones........................................................................11
Fundamento terico.............................................................................15
Procedimiento y descripcin de las actividades realizadas.................32
Resultados, planos, graficas, prototipos y programas.........................45
Conclusiones y recomendaciones...................................................59
Referencias..........................................................................................59
Hoja de aprobacin de los asesores...............................................61
CARTA DE ACEPTACIN
2
CARTA DE TERMINACIN
INTRODUCCIN
A medida que la tecnologa gradualmente se hace ms indispensable en la vida
diaria y la productividad de las personas, notamos que la informacin transmitida
por stos medios se ha vuelto un blanco frecuente de ataques, robos y espionajes.
6
JUSTIFICACIN
En la actualidad el aumento en el inters de los atacantes por obtener informacin
financiera, confidencial o propiedad intelectual de las organizaciones ha dado
como resultado que los atacantes mejoren las herramientas y estrategias para
7
conseguir dicho objetivo. Por lo tanto es fundamental desarrollar una forma que
garantice la mxima seguridad en los canales de comunicacin.
Durante los ltimos 30 aos, la criptografa de curvas elpticas se ha vuelto un pilar
de la comunicacin segura a travs de medios electrnicos. La criptografa de
llave pblica se usa para distribuir las llaves a usar en diversos algoritmos
criptogrficos (como DES). Tambin se usa en las firmas digitales para verificar el
origen y la integridad de los datos transmitidos.
En las ltimas dcadas se han desarrollado nuevas tcnicas que ofrecen mayor
seguridad y mejor rendimiento. Las tcnicas construidas sobre la aritmtica de
curvas elpticas han demostrado proveer mayor seguridad en el mismo nmero de
bits en las llaves y un menor consumo de recursos de procesamiento (National
Security Agency, 2009).
Por otro lado, la creciente capacidad de procesamiento a la que todos tenemos
acceso, resulta primordial migrar los algoritmos y tcnicas de criptografa a las que
confiaremos nuestra informacin.
Debido a esto, es importante que se desarrolle un sistema criptogrfico basado en
un nuevo protocolo de comunicacin que garantice alta seguridad a los usuarios .
OBJETIVOS
Objetivo General
Desarrollo de un sistema cliente/servidor que implemente la criptografa basada en curvas
elpticas para la recepcin y envi de mensajes de manera segura a travs de la Web.
Objetivos Especficos
de seguridad
informtica.
En la parte terica hace uso de la aritmtica de curvas elpticas, que pertenece al
rea de matemticas aplicadas.
PROBLEMAS A RESOLVER
Para lograr una alta seguridad del sistema, se vislumbraron las problemticas que
deberan ser resueltas a travs del protocolo de comunicacin, y las cuales son las
siguientes:
Hacer uso de una base de datos para almacenar informacin del uso del
sistema, esta cuestin genera un problemtica en el aspecto que los datos
almacenados deben estar resguardados de manera segura, ya que son
datos confidenciales de los usuarios, por lo tanto se deben aplicar
algoritmos de cifrado para almacenar los datos registrados de cada usuario.
Adems se debe aplicar un buen diseo que nos garantice la atomicidad,
consistencia, aislamiento y durabilidad de la base de datos.
ALCANCES Y LIMITACIONES
El proyecto en el cual se est trabajando tiene como alcance la implementacin
del protocolo de autenticacin en red basado en criptografa de clave pblica en
un sistema cliente servidor para el envo y recepcin de mensajes.
Pero para conocer a detalle el alcance y limitaciones se desarrollaron estudios
tanto de factibilidad como de viabilidad.
Estudio de Viabilidad
El estudio de viabilidad aplicado al proyecto Implementacin de protocolo de
autenticacin en red basado en criptografa de clave pblica permite determinar la
conveniencia de desarrollar un nuevo sistema cliente - servidor. Se deben
considerar todos los aspectos que influyen, de tal manera que el nuevo sistema
cumpla con las expectativas del cliente, qu logre alcanzar realmente una alta
seguridad en las comunicaciones. Algunos de los factores considerados en este
estudio son:
11
Estudio de Factibilidad
Se llev a cabo un anlisis de factibilidad que demostr que el sistema a
desarrollar era factible de construirse e implementarse, puesto que ya fue
elaborado dentro del de la fase de planeacin de ciclo de vida de desarrollo de
proyecto en la fase de planeacin por el lder del mismo.
El anlisis se orient a resolver 3 preguntas clsicas en todo anlisis de
factibilidad:
1 El sistema basado en un protocolo de alta seguridad contribuye con
los objetivos generales del cliente?
La respuesta a esta pregunta fue positiva, ya que el objetivo del
cliente es poder entablar comunicaciones seguras resguardando as
la informacin que viaje a travs de los canales de comunicacin
13
FUNDAMENTO TERICO
Las curvas elpticas son utilizadas para implementar criptosistemas basados en el
logaritmo discreto, con la ventaja de utilizar claves ms pequeas que repercute
directamente en la utilizacin de menos memoria y hardware ms pequeo.
14
b)
Ilustracin 1. Curvas elpticas
Las curvas elpticas tienen ciertas caractersticas que las hacen especiales en el
mundo de la criptografa. Una de estas caractersticas consiste en la posibilidad de
poder generar un punto en una curva partiendo de dos puntos dados (o incluso de
uno).
Usando como puntos de partida P y Q, dos puntos conocidos, se traza una lnea
entre P y Q. Si la lnea corta la curva en un tercer punto, se refleja a travs del eje,
dando lugar a un nuevo punto R. Esta operacin se representa como R=P+Q. En
caso de que la lnea que pasa por P y Q no corte a la curva en ningn otro punto,
se dice que corta la curva en un punto O en el infinito y se representa esta
operacin como P+Q=O.
15
16
Curvas Elpticas
La teora de curvas elpticas sobre cuerpos finitos encuentra aplicaciones en
diversas disciplinas, como por ejemplo la teora de nmeros o la criptografa.
En un principio se puede pensar en una curva elptica como el conjunto de
soluciones de una ecuacin de la forma:
2
y =x +ax +b
Ecuacin 1. Forma de la curva elptica
x=log a b
lo
a( bc )=( ab )c .
Existen una amplia variedad de tipos de grupos. Los que interesan dentro de las
curvas elpticas son los que se denominan grupos cclicos. Un grupo cclico se
18
{b , b2 , b3 , , bn1 } . Es
g=b
para
cualquier nmero g del grupo. En realidad, existen muchos nmeros enteros k que
cumplan esta propiedad. Una de las propiedades nos indica que cualesquiera dos
enteros k y k capaces de representar el elemento g son congruentes mdulo n (o
dicho de otra forma: nos dan el mismo resto al dividirlos por n).
Una de las diferencias dentro de las curvas elpticas es que en lugar de movernos
por todo el campo de los nmeros reales, nos restringiremos al grupo cclico G. De
aqu que se emplee el logaritmo discreto de G en base b, ya que es la operacin
inversa a la potenciacin
g=b k =log b g
(seguinfo, 2007).
Entonces a travs de las curvas elpticas se puede crear el grupo G. Segn sea el
grupo, as de complicado ser el problema y, por tanto, as de seguro ser el
esquema a efectos de montar sistemas de cifrado. Dada la Ecuacin 1, para cada
pareja de valores (a, b), la curva elptica da un conjunto de puntos (x, y) que
forman un grupo.
Es importante aclarar que los puntos x y y son nmeros reales y forman un campo
finito, pero juntos son como una coordenada en un plano. Es por esta razn que
en las curvas elpticas se habla de grupos multiplicativos de campos finitos.
19
Ecuacin de Weierstrass
Es uno de los aspectos de la teora de curvas elpticas, y se caracteriza por estar
definida en la recta y tomar valores reales. Lo que la hace particular es que es
continua en todo punto y no es derivable o diferenciable en ninguno. Adems
resulta que el grafo de la funcin de Weierstrass es una curva no rectificable de
dimensin fractal superior a 1.
Sea
un campo,
su cerradura algebraica y
2
P ( F )
F * su grupo multiplicativo.
es el conjunto de puntos en el
Incluyendo a
.
O=[ 0, 1,0 ] , donde a1 , a2 , , a6 F
x=
X
Z
y=
Y
Z
: y 2+ a1 xy + a3 y =x 3+ a2 x 2 +a 4 x +a 6
La cual es denominada Forma Normal de Weierstrass (FNW).
Orden de la curva. Sea E una curva elptica sobre un campo finito GF(q).
Se establece que el nmero de puntos sobre una curva elptica (incluyendo
el punto al infinito) es:
21
Q=kP , obtener k y P
puntos, y su
(Garca, 2003).
2 (Garca, 2003).
Este hecho es muy importante, pues la dificultad de resolver ECDLP frente a DLP
permite que los criptosistemas que se basan en el primero usen claves mucho
ms cortas. De manera que los sistemas que usan ECDLP requieren mucha
menos memoria y capacidad de proceso.
Una clave RSA de 4096 bits ofrece la misma seguridad que una clave de un
criptosistema de Curva Elptica de 313 bits (Homeless, 2008).
grande r.
El divisor primo grande r no debe dividir q v1 para v = 1, 2, 3, . . . , 10.
Esta condicin asegura que el algoritmo de reduccin MOV no es factible.
Existen varios mtodos para llevar a cabo la eleccin de las curvas elpticas:
El Teorema de Hasse y la Conjetura de Weil. Proporciona una tcnica para
elegir curvas sobre
F2
Fp
, se podra
F p , podemos
Fp
de
cuerpo extendido, a partir del nmero de puntos de la curva sobre el cuerpo base.
F2
F2
F2
consigamos encontrar ninguna curva adecuada usando este mtodo (Rotger, Rif
Coma, & Tena Ayuso).
Mtodo Global. Esta manera de elegir la curva est basada en tomar una curva
sobre los racionales y reducirla mdulo un primo para tener la curva sobre un
cuerpo finito y comprobar si resiste los ataques anteriores.
Fp
con
Np
Np
puntos de orden finito de la curva original sobre los racionales. As, conociendo el
nmero de puntos de orden finito sobre el cuerpo inicial tendremos una cota
inferior para el nmero de puntos de la curva sobre
Fp
Tena Ayuso).
el cuerpo
F2
Fq , suponemos que
y la curva
Fq
de
4 A 3+ 27 B 2 0 . Calculamos entonces el
Fq
repetir hasta encontrar una curva que pueda resistir los ataques anteriores
(Rotger, Rif Coma, & Tena Ayuso).
Este mtodo es especialmente usado en el caso de trabajar con curvas elpticas
sobre
F2
Waterhouse y Schoof.
Generacin de llaves
26
Claves pblicas largas. Cada usuario elige sus propios parmetros de curva
elptica, es decir los elementos a y b (los cuales definen a la curva elptica)
y el punto P de orden primo n. Para hacer la clave pblica ms corta, el
parmetro a se restringe a a = 0 si el campo subyacente es GF(2m) y a = 1
si el campo subyacente es GF(p). Los parmetros b, P = (xP , yP ), deben
ser parte de la clave pblica del usuario (Garca, 2003).
No.
1
Descripcin
Elegir un nmero entero aleatorio d tal que
1 d <n
2
3
4
Calcular el punto
Q=( x Q , y Q )
Q:=dP
Fp
P E
nU
Fp
y hace pblico
A
nAP B
B
A nBP
28
Enva PA a BOB
Recibe PA de ALICE.
Elige un entero grande b
Calcula P B=b P
Enva PB a ALICE
Calcula b P A=abP
Recibe PB de BOB
Calcula aPB=abP
Al finalizar el algoritmo, tanto Alice como Bob disponen de abP. Pero un usuario
que
permiten calcular abP a menos que resuelva el ECDLP. Alice y Bob solo tendrn
que extraer una clave a partir de abP y usarla para enviar datos cifrados. Para tal
propsito podrn usar cualquier algoritmo simtrico como DES, AES, etc.
Ejemplo de la implementacin de este algoritmo se puede ver a continuacin:
Zp .
primo grande.
Suponiendo que la curva elptica es
E : y 2=x 3+ 5 x +7
sobre
Z 113 . El nmero
de puntos racionales de esta curva es 127 que es un nmero primo y, por lo tanto,
los puntos de la curva elptica constituyen un grupo isomorfo a
Z 127 . Tomando
29
E.
Al finalizar el algoritmo, tanto A como B disponen del mismo punto que tomarn
como clave de sesin: K = (5,48).
Fp ,
N= E (q) . Sea
P E
el mensaje que
nU
tal
A
nAP B
A nB(nAP)B
A
nBP B
30
nU
P =E ), N E( p).
A calcula
Cifra
Enva a B (C , kP) .
PU =n U P .
cifrado al usuario B:
k Z/p ,
Pm como C=EB(Pm)=Pm+ k PB ,
Criptosistema RSA
En este esquema se representan los puntos de una curva elptica de la forma
y 2=x 3 +b
sobre
Zn
como
( p , q)
tales que
p=q=2(mod 3) y ,
31
(e ,n) , donde
n=pq
( p , q , (n), d ) .
en dos partes
m=( m1 , m 2)
donde
m1 , m2 Z n .
Especficamente, calcula
Cifra el punto
m En (b) .
b=m2m1 (mod n) .
calculando
c=E (m)=em
sobre
En (b)
c=(c 1 , c 2 ) a B.
c=(c 1 , c 2 )
b=c 2c 1 (mod n)
y construye la curva
y 2=x 3 +b .
m=D(c)=dc
sobre
En (0, b)
Los pasos a seguir para generar claves, firmar y verificar la firma, se muestran a
continuacin.
1. Alice genera un par de claves:
Alice elige una curva E con orden |E| = fr, de manera que r sea un primo
grande.
R=x mod r
w = s mod r
u1 = h(M) w mod r
u2 = Rw mod r
v = x mod r
33
34
Sprint Backlog. Lista de las tareas necesarias para llevar a cabo las
historias del sprint.
el
equipo
presenta
las
historias
conseguidas
mediante
una
35
Scrum master: Persona que lidera al equipo guindolo para que cumpla
las reglas y procesos de la metodologa. Gestiona la reduccin de
impedimentos del proyecto y trabaja con el Product Owner para maximizar
el ROI.
36
Eclipse IDE
Refactorizacin.
37
GIT
Git es un software de control de versiones que fue diseado pensando en la
eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones
cuando estas tienen un gran nmero de archivos de cdigo fuente.
Entre las caractersticas ms relevantes de GIT se encuentran:
38
Los comandos ms utilizados durante el desarrollo del proyecto para actualizar las
versiones en el repositorio son:
DESCRIPCIN
COMANDO
Crear duplicado de un proyecto #git clone username@host:
git existente
ruta/al/repositorio/proyecto.git
#git add nombre_archivo
Comienza a trackear el archivo
Congela una versin del proyecto #git commit m Comentario
en el repositorio local
Sube la rama master al servidor #git push origin master
remoto
Muestra el estado de los ficheros #git status
del directorio del trabajo
Descarga los cambios realizados #git fetch origin master
en el repositorio remoto.
Impacta en la rama en la que te #git merge origin master
encuentras parado, los cambios
realizados en la rama.
Unifica los comandos fetch y #git pull origin master
merge en un nico comando.
Borra el fichero del directorio de #git rm r nombre_fichero
trabajo
Mover o renombrar un fichero
#git mv nombre_fichero
VNC
Es un programa de basado en una estructura cliente-servidor el cual permite tomar
el control del ordenador servidor remotamente a travs de un ordenador cliente.
VNC no impone restricciones en el sistema operativo del ordenador servidor con
39
Doxygen
Doxygen es un generador de documentacin para C++, C, Java, Objective-C,
Python, IDL (versiones Corba y Microsoft), VHDL y en cierta medida para PHP, C#
y D. Dado que es fcilmente adaptable, funciona en la mayora de sistemas Unix
as como en Windows y Mac OS X.
Doxygen tiene la capacidad de recorrer todos los archivos fuente (esto se
especifica en la configuracin) y busca en todos ellos la documentacin las
funciones. La documentacin que se genera esta en HTML y en latex.
40
Comando
\e
\a
\arg
Sintxis
\e <palabra>
\a <palabra>
\
Descripcin
Escribe en cursiva
Usa una fuente especial
\b
\c
\code
arg{descripcin}
\b <palabra>
\c <palabra>
\code
..
..
\endcode
\n
\f$
\f[
\endcode
\n
\f$ formula \f$
\f[formula\f]
Nueva lnea
Escribe una frmula en la lnea
Escribe una frmula, en una nueva
@param
@param x
lnea y centrada
Determina los parmetros de entrada
@return
@return
en alguna funcin.
Define el valor de retorno de un
@note
descripcin
@note
mtodo
Agrega notas a la documentacin
\author
\file
\date
descripcin
\author nombre
\file archivo
\date fecha
41
cdigo
Tabla 3. Palabras claves usadas en Doxygen
42
43
Crear un socket que haga una llamada al sistema con el mtodo socket().
45
47
48
En elDiagrama 4, se describe lo que har en servidor una vez que un cliente envi
una solicitud de conexin a travs de la direccin IP y el nmero de puerto, ya que
la conexin sea aceptada se establece un hilo que esta contantemente recibiendo
o enviando mensaje, una vez que ya se pierda o se termine la conexin, se
elimina al cliente y por lo tanto se matan los hilos que se hayan generado en el
proceso.
49
50
Diagrama 5. Procesos realizados por el servidor al iniciar una conexin con el cliente
51
52
53
Una vez diseados los procesos que se deban abarcar, se pas a la codificacin
del cliente y del servidor, algunas partes del cdigo son presentados a
continuacin:
CDIGO DEL SOFTWARE SERVIDOR
/*
** SoftwareServer.cpp
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>
#define PORT "3490"
#define BACKLOG 10
void sigchld_handler(int s)
{
while(waitpid(-1, NULL, WNOHANG) > 0);
}
54
"getaddrinfo:
%s\n",
gai_strerror(rv));
return 1;
55
}
for(p = servinfo; p != NULL; p = p->ai_next) {
if ((sockfd = socket(p->ai_family, p->ai_socktype,
p->ai_protocol)) == -1) {
perror("server: socket");
continue;
}
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR,
&yes,
sizeof(int)) == -1) {
perror("setsockopt");
exit(1);
}
if (bind(sockfd, p->ai_addr, p->ai_addrlen) == -1) {
close(sockfd);
perror("server: bind");
continue;
}
break;
}
if (p == NULL)
56
sigchld_handler;
//
reap
all
dead
processes
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART;
if (sigaction(SIGCHLD, &sa, NULL) == -1) {
perror("sigaction");
exit(1);
}
printf("server: waiting for connections...\n");
while(1) {
accept(sockfd,
(struct
sockaddr
*)&their_addr, &sin_size);
if (new_fd == -1) {
perror("accept");
continue;
}
inet_ntop(their_addr.ss_family,
get_in_addr((struct sockaddr *)&their_addr),
s, sizeof s);
printf("server: got connection from %s\n", s);
if (!fork()) { // this is the child process
57
}
return 0;
}
((rv
getaddrinfo(argv[1],
PORT,
&hints,
&servinfo)) != 0) {
59
fprintf(stderr,
"getaddrinfo:
%s\n",
gai_strerror(rv));
return 1;
}
61
CONCLUSIONES Y RECOMENDACIONES
Se considera que el objetivo se cumpli porque el mdulo desarrollado es capaz
de establecer un canal seguro haciendo uso de criptografa de curvas elpticas,
cumpliendo su propsito eficiente y efectivamente.
Se considera altamente recomendable el uso de una metodologa de desarrollo
estandarizada/probada
como
SCRUM
alguna
otra
ya
que
demostr
62
REFERENCIAS
Colangelo, A. (10 de Junio de 2014). Microsoft adding Elliptic Curve Cryptography
support to Azure Web Sites. Obtenido de Microsoft adding Elliptic Curve
Cryptography
support
to
Azure
Web
Sites:
http://cloudacademy.com/blog/microsoft-adding-elliptic-curve-cryptographysupport-to-azure-web-sites/
Garca, J. M. (2003). Criptografa de curvas elpticas. Mxico.
Goya, D. (Febrero de 2009). Criptografa de Curva Elptica. Una introduccin
bsica. Obtenido de Criptografa de Curva Elptica. Una introduccin bsica:
http://www.ime.usp.br/~dhgoya/ecc
Homeless. (Mayo de 2008). Criptografa de Curva Eliptica. Obtenido de
Criptografa
de
Curva
Eliptica:
http://filosofiahacker.blogspot.mx/2008/05/criptografa-de-curva-eliptica.html
National Security Agency. (19 de Enero de 2009). The Case for Elliptic Curve
Cryptography. Obtenido de The Case for Elliptic Curve Cryptography:
https://www.nsa.gov/business/programs/elliptic_curve.shtml
Rotger, L. H., Rif Coma, J., & Tena Ayuso, J. (s.f.). Criptografa con Curvas
Elpticas.
seguinfo. (Octubre de 2 de 2007). Qu es la criptografa de curva elptica?
Obtenido de Qu es la criptografa de curva elptica?:
https://seguinfo.wordpress.com/2007/10/02/%C2%BFque-es-la-criptografiade-curva-eliptica/
Simonite, T. (19 de Agosto de 2013). Encryption Patents Could Be Blackberry's
Biggest Asset. Obtenido de Encryption Patents Could Be Blackberry's
Biggest Asset: http://www.technologyreview.com/view/518476/encryptionpatents-could-be-blackberrys-biggest-asset/
63
_____________________________________________
GUADALUPE YERALDIN MORALES HERNNDEZ
Residente
64
65