• No se han encontrado resultados

Comparativa de seguridad de algoritmos de cifrado asimétrico

N/A
N/A
Protected

Academic year: 2023

Share "Comparativa de seguridad de algoritmos de cifrado asimétrico"

Copied!
70
0
0

Texto completo

(1)

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN

“COMPARATIVA DE SEGURIDAD DE ALGORITMOS DE CIFRADO ASIMETRICO”

TESINA

QUE PARA OBTENER EL GRADO DE:

ESPECIALIDAD EN SEGURIDAD INFORMÁTICA Y TECNOLOGÍAS DE LA INFORMACIÓN

PRESENTA

ROBERTO VILLEGAS GÓMEZ

ASESORES: M. EN C. MOISES SALINAS ROSALES M. EN C. GINA GALLEGOS GARCÍA

MEXICO, D.F. 2009

(2)
(3)
(4)

A MIS ASESORES:

El M. en C. Moisés Salinas Rosales y M. en C. Gina Gallegos García.

Gracias por brindarme su apoyo, tiempo, conocimientos y guiarme durante el desarrollo de este trabajo de tesina.

A MIS MAESTROS.

Por verter en mi su sabiduría y experiencia en todo momento.

Por la paciencia que siempre tuvieron al transmitirme

sus conocimientos.

(5)

ÍNDICE GENERAL.

Pág.

ACTA DE REVISIÓN DE TESINA……….………….…..……...……… II

CARTA DE CESIÓN DE DERECHOS……… III

AGRADECIMIENTOS……… IV

INDICE GENERAL……… V

INDICE DE TABLAS Y FIGURAS……….. VII

RESUMEN……….. VIII

ABSTRACT………..……..……….……….……..…….… IX

INTRODUCCIÓN….……….…………...….…….…………..…… X

CAPITULO I. MARCO DE REFERENCIA

1.1. Antecedentes……….………..….……… 1

1.2. Consideraciones para el diseño de una arquitectura de cifrado de la información………..3 3

1.2.1. Infraestructura de la Organización………. 4

1.2.2. Gestión de la seguridad de la información……… 4

1.2.3. Recursos Humanos en la Organización………. 6

CAPITULO II. INTRODUCCIÓN A LA CRIPTOGRAFÍA. 2.1. Conceptos básicos de criptografía. ………..……… 7

2.1.1. Confidencialidad y cifrado……… 7

2.1.2. Cifrado de bloque ………. 8

2.1.3. Cifrado de flujo ……….. 9

2.1.4. Cifrado simétrico ……….. 10

2.1.5. Cifrado asimétrico ……… 11

2.2. Fundamentos matemáticos de la criptografía asimétrica…...…..…. 12

2.2.1. Grupos………. 12

2.2.2. Anillos……….………. 13

2.2.3. Campos……….………. 14

2.2.4. Curvas elípticas………..………. 14

2.2.5. Problema de factorización en primos grandes ……….………. 20

2.2.6. Problema de logaritmo discreto……… 21

2.3 Subalgoritmos de uso para funcionamiento de algoritmos de cifrado asimétrico... 21

2.3.1. Algoritmo de Euclides……… 22

2.3.2. Algoritmo de Euclides extendido………. 22

2.3.3. Prueba de primalidad de Miller Rabin……….. 23

2.3.4. Algoritmo de exponenciación rápida……….. 24

CAPITULO III. ALGORITMOS DE CIFRADO ASIMÉTRICO RSA, ELGAMAL Y ECES. 3.1. Algoritmo RSA..………..……..…...………... 25

(6)

3.1.1. Descripción del algoritmo RSA….……….…....… 25

3.1.2. Simulación del algoritmo RSA…………..……… ……… 29

3.1.3. Implementaciones eficientes de RSA ….. ………. 31

3.2. Algoritmo ElGamal……….………..……..…...………... 34

3.2.1. Descripción del algoritmo ElGamal..……….…....… 34

3.2.2. Simulación del algoritmo ElGamal…..…….……… ……… 38

3.3. Algoritmo ECES……… 40

3.3.1. Descripción del algoritmo ECES….……….…....… 40

CAPITULO IV. COMPARACIÓN DE ALGORITMOS RSA, ELGAMAL Y ECES 4.1. Consideraciones prácticas……… 44

4.2. Seguridad de los algoritmos………. 46

4.3. Puesta en práctica y funcionamiento de los algoritmos……….. 50

4.4. Estándares e interoperabilidad……… 52

CONCLUSIONES Y RECOMENDACIONES Conclusiones……….………..………..………. 53

REFERENCIA BIBLIOGRÁFICA……….……… 55

ANEXO A ……… 56

ANEXO B ……… 58

(7)

ÍNDICE DE FIGURAS Y TABLAS.

Figura Pág.

Fig1. Curva elíptica……… 15

Fig2. Adición de puntos en una curva elíptica……….. 16

Fig3. Adición de puntos inversos P+(-P)………...… 17

Fig4. Suma de un punto consigo mismo P+P=2P……… 18

Fig5. Generación de llaves con el algoritmo RSA……… 26

Fig6. Cifrado con el algoritmo RSA……… 27

Fig7. Descifrado con el algoritmo RSA……….. 28

Fig8. Resultado de la simulación del algoritmo RSA………... 30

Fig9. Generación de llaves con el algoritmo ElGamal………. 35

Fig10. Cifrado con el algoritmo ElGamal………. 36

Fig11. Descifrado con el algoritmo ElGamal………... 37

Fig12. Resultado de la simulación del algoritmo ElGamal……… 38

Fig13. Generación de llaves con el algoritmo ECES... 41

Fig14. Cifrado con el algoritmo ECES... 42

Fig15. Descifrado con el algoritmo ECES... 43

Fig16. Requisitos de sistema para criptosistemas RSA y ECES…………. 46

Fig17. Acontecimientos en la evolución del RSA y sistemas criptográficos de curva elíptica……….. 48

Fig18. Uso de bits de almacenamiento de los esquemas RSA, ElGamal y ECES……….. 50

Fig19. Comparativa de funcionamiento de RSA, ElGamal y ECES……… 51

(8)

RESUMEN.

La información es un recurso importante para las organizaciones. La forma en que se maneja este recurso puede traducirse en éxito o el fracaso. Una de las características que debe tener el manejo de la información para beneficiar a la corporación es la seguridad.

Dentro de las preocupaciones de las diferentes organizaciones se encuentra la de que alguien no autorizado tenga acceso a información sensible. Para mitigar este riesgo se busca brindar confidencialidad a la información. Para tal fin es común cifrar la información de manera que de un mensaje se obtiene un respectivo criptograma que es ilegible para quien no conoce como descifrarlo.

Actualmente los sistemas de cifrado de la información han logrado evoluciones importantes, al grado de poder unir las fortalezas de diferentes técnicas de cifrado para ofrecer criptosistemas híbridos que conjugan la seguridad ofrecida por cifrado simétrico con las que ofrece el cifrado asimétrico.

Es entonces necesario conocer las necesidades particulares de la organización para poder ofrecer la solución optima utilizando las herramientas que existen acopladas a las necesidades que se pretenden cubrir.

(9)

ABSTRACT.

The information is an important resource for the organizations. The form in which east resource is handled can be translated in success or the failure. One of the characteristics that must have the handling of the information to benefit to the corporation is the security.

Within the preoccupations of the different organizations is the one that somebody nonauthorized has access to sensible information. In order to mitigate this risk one looks for to offer confidentiality to the information. For such aim it is common to base the information so that from a message a respective cryptogram is obtained that is illegible for who does not know like deciphering it.

At the moment the systems of coding of the information have obtained important evolutions, to the degree of being able to unite the strengths of different techniques from encryption to offer criptosistemas hybrid that conjugate the security offered by symmetrical encryption with which it offers the asymmetric encryption. It is then necessary to know the needs particular the organization to be able to offer the optimum solution using the tools that exist connected to the needs that are tried to cover.

(10)

DEFINICIÓN DEL PROBLEMA.

En la actualidad la información brinda gran poder y responsabilidad a quien la posee.

Las organizaciones, cada vez más, se enfrentan a problemas relacionados con la seguridad de la información, los cuales pueden generarles pérdidas cuantiosas y en ocasiones su desaparición.

También debe considerarse que las organizaciones manejan información sensible, la cual requiere de un trato muy cuidadoso, pues si esta cae en posesión de alguien que no tenga autorización para conocerla, puede significar un alto riesgo para la citada organización.

Debido a esto, se hace necesario brindar confidencialidad a la información, de manera tal que se eviten fugas de información. Una manera de brindar confidencialidad a la información es mediante el uso de mecanismos de cifrado.

Es importante considerar que existen técnicas de cifrado simétrico y asimétrico, las cuales tienen características distintas desde su funcionamiento hasta sus capacidades, sin embargo, se puede percibir que la combinación de ambos dentro de un sistema de cifrado puede arrojar mejores resultados aprovechando las ventajas de cada uno.

Para lograr una combinación eficiente de las técnicas de cifrado ya mencionadas, en relación con el cifrado asimétrico, primero se requiere determinar qué algoritmo ofrece las características que brinden los mejores resultados para ofrecer una solución a la situación descrita. A partir de esta necesidad es que se realiza el presente trabajo.

(11)

JUSTIFICACIÓN.

El análisis de algoritmos de cifrado basados en criptografía asimétrica permitirá hacer una recomendación fundamentada para aprovechar las mejores características del algoritmo que sea seleccionado. Esta recomendación debe tomar en cuenta las necesidades de las organizaciones hoy en día y estar enfocada a cubrirlas. Así mismo se debe considerar su posible interacción con otras organizaciones afines, por lo que es conveniente sujetarse a estándares que permitan esa interacción para garantizar un tratamiento homogéneo de la información.

Por lo anterior se justifica plenamente que revisar los estándares nos brindara ventajas como:

 La seguridad de algo probado.

 Compatibilidad con futuros estándares.

 Establecer que algoritmo permita tener niveles de seguridad informática más altos.

(12)

OBJETIVOS.

Objetivo general.

Con base en la revisión bibliográfica de los tres algoritmos de cifrado de llave pública de la información RSA, ElGamal, y ECES, los cuales proveen el servicio de confidencialidad, estudiar y entender su funcionamiento para posteriormente obtener las ventajas y desventajas de cada uno, con la finalidad de recomendar los casos prácticos dentro de los cuales cada uno de dichos algoritmos pueden ser utilizados.

Esto, desde el punto de vista de las necesidades que presenta el diseño de una arquitectura de cifrado de la información.

Objetivos particulares.

1. Identificar la información referente a las necesidades del diseño de una arquitectura de cifrado de la información.

2. Describir los algoritmos RSA, ElGamal, y ECC.

3. Comprender las bases matemáticas que sustentan los algoritmos mencionados.

4. Comparar los algoritmos RSA, ElGamal y ECC.

5. Analizar los sub-algoritmos que soportan el funcionamiento de los algoritmos de de cifrado asimétrico objeto de estudio.

6. Simular los algoritmos RSA, ElGamal y ECC.

7. Formular ventajas y desventajas de los algoritmos mencionados en el punto anterior.

8. Evaluar el uso de los 3 algoritmos en el marco del diseño de una arquitectura de cifrado de la información.

(13)

CAPÍTULO I.

MARCO DE REFERENCIA.

1.1 ANTECEDENTES.

La confidencialidad de la información en las organizaciones es una necesidad innegable, pues manejan información de muchos tipos, tales como datos de personal, situaciones empresariales, información de funcionamiento propias y de otras organizaciones afines, ubicación de recursos energéticos estratégicos y dispositivos, cuya finalidad es resguardar la seguridad de la organización.

Dentro de las organizaciones, para el manejo de información sensible que tienen bajo su responsabilidad, se han utilizado diversos controles para minimizar riesgos que puedan desestabilizar a dichas organizaciones debido a vulnerabilidades asociadas a la seguridad informática. Una de las finalidades particulares que perciben estos controles es la confidencialidad en el intercambio de información.

Dentro de esa búsqueda de confidencialidad, se han utilizado diversos sistemas de cifrado, básicamente con las siguientes características:

 Sistemas de cifrado clásicos que utilizan técnicas criptográficas convencionales de difusión en el cifrado de la información y proporcionan el servicio de seguridad de confidencialidad. Normalmente este tipo de aplicaciones trabaja con texto.

 Sistemas de cifrado que basan su funcionamiento en técnicas criptográficas de confusión y difusión con algoritmos basados en criptografía simétrica que utiliza la misma llave para cifrar y descifrar. Este tipo de sistemas trabajan con diversos tipos de archivos desde texto hasta archivos de audio y video.

(14)

 Sistemas de cifrado con algoritmos de criptografía asimétrica que utiliza una llave para cifrar y otra distinta para descifrar y funcionan con base en técnicas criptográficas de confusión. Se recomienda que este tipo de sistemas trabaja sobre bloques pequeños de información, como pueden ser claves o pequeños enunciados, debido al costo computacional de sus operaciones.

 Sistemas de cifrado híbridos que conjugan la rapidez de la criptografía simétrica y la posibilidad de ofrecer una eficiente gestión de llaves y autenticación de datos y origen de la criptografía asimétrica. Este tipo de criptosistemas permiten tener mayores servicios de seguridad.

La evolución de los sistemas de cifrado obedecen a que actualmente el avance tecnológico les representa un constante desafío, debido a que cada vez existen procesadores con mayores capacidades que se complementan con arquitecturas de cómputo distribuido que permiten realizar búsquedas exhaustivas de las llaves. Sin embargo, en materia de criptografía existen organismos que han realizado labor extensa para contrarrestar este hecho. Entre otras cosas, han convocado a expertos a proponer nuevos algoritmos de cifrado y han sometido a pruebas exhaustivas a los diferentes algoritmos propuestos, de los cuales varios se han adoptado como estándares.

Dentro de estas organizaciones se puede mencionar la ISO (International Organization for Standardization), la cual está constituida por cuerpos de estandarización y se encarga de producir estándares industriales y comerciales a nivel mundial. [7]

Así mismo se pueden referenciar los FIPS (Federal Information Processing Standards) del NIST (National Institute of Standards and Technology) que son estándares públicos para el gobierno estadounidense. Cabe mencionar que fue el NIST el que definió a DES como el estándar de cifrado y también impulsó el esfuerzo internacional que arrojó al AES como nuevo estándar [11].

(15)

1.2 CONSIDERACIONES PARA EL DISEÑO DE UNA ARQUITECTURA DE CIFRADO DE LA INFORMACIÓN.

El estudio de los algoritmos de criptografía asimétrica incluidos en el presente trabajo va enfocado a tener una perspectiva más clara de su uso dentro de una aplicación de software para brindar confidencialidad al manejo de información dentro de una organización, por lo que es importante tomar en cuenta algunas consideraciones para el diseño de esta arquitectura de cifrado de la información.

De lo anterior se deriva que es necesario referir que el ciclo de vida básico del software consta de etapas secuenciales para su desarrollo, a saber, análisis, diseño, codificación, pruebas, y mantenimiento [13]

Como se puede observar se deben considerar para el diseño, los datos obtenidos durante el análisis realizado previamente. Es decir, para diseñar una arquitectura de cifrado de la información se deben considerar varios aspectos dentro de la organización para acotar sus necesidades específicas de acuerdo a sus características para poder ofrecer una propuesta de solución que se pueda plasmar en el diseño.

Del análisis se obtienen datos acerca de:

a) El problema a resolver.

En este caso el problema a resolver es la carencia de niveles adecuados de confidencialidad en el manejo de información.

b) Características de la organización.

Dentro de las cuales es importante conocer su infraestructura, los procesos en el manejo de la información, la gestión de la seguridad de la información, y los recursos humanos con que cuenta la organización.

(16)

1.2.1. Infraestructura de la Organización.

La infraestructura de una organización refiere a las instalaciones y tecnología que permiten que una organización funcione. Se puede mencionar en estas características el espacio, las edificaciones, los servicios y la tecnología.

a. Instalaciones.

En relación a las instalaciones es importante conocer algunos aspectos que permitan tomar decisiones en el diseño de la solución. Es importante evaluar las características de la instalación identificar la estrategia que permita explotar las oportunidades y minimizar las limitaciones. Analizar la situación actual de los servicios internos para determinar si es factible cubrir las necesidades de seguridad informática con los elementos que tiene la organización o es necesario hacer alguna adecuación.

b. Tecnología

Los recursos tecnológicos de una organización abarcan todo el equipo, la maquinaria y los sistemas que son esenciales para que la organización funcione en forma adecuada. El diseño de una nueva arquitectura de cifrado de la información debe basarse en las características, debilidades y capacidades de la organización ya que existen diversas soluciones que funcionan en diferentes ambientes.

1.2.2. Gestión de la seguridad de la información.

La información es un recurso valioso, como otros activos importantes de la organización. Tiene un valor y en consecuencia, debe ser protegido de forma adecuada. La seguridad de la información protege este activo de una amplia gama de amenazas buscando asegurar la continuidad, minimizar daños y maximizar la posibilidad de explotar las oportunidades de la organización.

(17)

Es esencial establecer requerimientos de seguridad y podemos mencionar tres aspectos principales.

a. El primero es derivado de la evaluación de riesgos para la organización. A través de la evaluación de riesgos se identifican las amenazas a los activos, las vulnerabilidades y posibilidad de ocurrencia es evaluada y el impacto potencial es estimado.

b. El segundo refiere a los requerimientos legales, de estatuto, y regulatorios que deben ser satisfechos.

c. El tercer aspecto es el conjunto particular de principios, objetivos y requerimientos para procesamiento de información que una organización ha desarrollado para soportar sus operaciones.

De lo anterior se deriva que para una organización es importante considerar una serie de controles para brindar seguridad a la información.

Controles considerados esenciales desde el punto de vista legal para una organización.

a. Protección de datos y privacidad de información del personal.

b. Resguardo de registros de la organización.

c. Derechos de propiedad intelectual.

Controles considerados como mejores prácticas para seguridad de la información.

a. Políticas de seguridad de la información.

b. Asignación de responsabilidades en relación a la seguridad de la información.

c. Capacitación en materia de seguridad de la información.

d. Reporte de incidentes de seguridad.

e. Gestión de la continuidad de la organización.[6]

(18)

En base al anterior texto tomado del estándar ISO/IEC 17799, podemos valorar cuales de estos controles están presentes dentro de la organización y el grado de madurez que estos tienen. También se puede determinar cuáles de ellos no se llevan a cabo y la razón que impide su materialización para evaluar la posibilidad de implementar dichos controles.

1.2.3. Recursos humanos en la Organización.

Considerar el recurso humano de la organización es de gran importancia, pues será el usuario quien determine en gran medida el éxito o fracaso del diseño. El personal es muy diverso de acuerdo al giro de las organizaciones y dentro de estas, varía por el área en que labora. Algunos solo manejan la información sin conciencia de que lo hacen, algunos otros tienen vastos conocimientos de informática. Dentro de ese universo de usuarios se deben establecer roles bien definidos acorde a sus perfiles para aprovechar las capacidades de cada uno y minimizar sus carencias en beneficio de la seguridad de la información.

Una vez que se ha recabado la información y de haberla sometido a un análisis para determinar el punto donde se encuentra la organización y sabiendo el punto al que se desea llegar es necesario diseñar una propuesta de solución que se ajuste a las necesidades y capacidades de la organización.

(19)

CAPÍTULO II.

INTRODUCCIÓN A LA CRIPTOGRAFÍA.

2.1. CONCEPTOS BÁSICOS DE CRIPTOGRAFÍA.

La búsqueda de las organizaciones en torno a mecanismos que proporcionen seguridad a la información que manejan, tiene en la criptografía una gama extensa de posibilidades en relación con los servicios de seguridad de la información como lo son la confidencialidad, integridad de datos, no repudio y autenticación de entidad y de origen de datos.

Un algoritmo de cifrado comprende una secuencia de pasos destinados a cifrar un mensaje. Los algoritmos de cifrado han surgido como soluciones criptográficas para ofrecer los servicios citados en el párrafo anterior.

Definición de Criptografía.

Criptografía es el estudio de técnicas matemáticas relacionadas a aspectos de seguridad de la información tales como confidencialidad, integridad de datos, autenticación de entidad y autenticación de origen de datos. [10]

2.1.1. Confidencialidad y cifrado.

La confidencialidad es un servicio de seguridad que aplicado a la información evita que sea accesible a personas no autorizadas, las cuales pueden hacer mal uso

(20)

de ella. Para lograr tener confidencialidad en el manejo de la información se hace uso entre otros mecanismos, del cifrado de la información.

El cifrado consiste en transformar un mensaje por medio de operaciones matemáticas de manera que resulte un producto llamado criptograma el cual es ininteligible a entes ajenos al criptosistema. El descifrado es la transformación de un criptograma al mensaje original. [10]

2.1.2. Cifrado de bloque.

El cifrado de bloque es un esquema en el cual se divide el mensaje en bloques de una determinada longitud y cifra un bloque por vez. Existen dos clases importantes de cifrado de bloque que son: cifrado de sustitución y cifrado de transposición.

a. Cifrado de sustitución.

El cifrado de sustitución se lleva a cabo reemplazando símbolos o grupos de símbolos por otros símbolos o grupos de símbolos. [16]

Es decir que teniendo un mensaje m representado en símbolos s pertenecientes a un alfabeto A, se cifran para obtener el criptograma c=Ek(m) sustituyéndolos por sus correspondientes símbolos s’ pertenecientes al alfabeto A’ basando la transformación de cifrado en una llave k que representa una función de correspondencia.

c= Ek(m)

Donde:

m=[s1,s2,s3…,s3] c=[s’1,s’2,s’3…,s’n] k = s Є A  s’ Є A’

(21)

Existe el cifrado de sustitución monoalfabética y polialfabética. Dentro de los cuales, en el cifrado de sustitución monoalfabética a cada símbolo del alfabeto en que se encuentra el mensaje corresponde un símbolo del alfabeto del criptosistema, que puede ser el mismo del que utiliza el mensaje en claro. El cifrado de sustitución polialfabética a cada símbolo del alfabeto en que se encuentra el mensaje corresponde más de un símbolo en el alfabeto del criptosistema.

b. Cifrado de transposición.

Otra clase de cifrado de bloque es el de transposición, el cual permuta las posiciones de los símbolos dentro del bloque. En el cifrado de transposición se preserva el número de símbolos de un dado tipo dentro de un bloque. [16]

En este caso se tiene un mensaje m, representado en símbolos s con una ubicación inicial p0, se cifran para obtener el criptograma c=Ek(m) cambiando su posición inicial p0por la correspondientes posición pk basando la transformación de cifrado en una llave k que representa una función de correspondencia de posiciones.

En este tipo de cifrado, los símbolos que representan al criptograma serán los mismos que representaban al mensaje.

c= Ek(m)

Donde:

m=[s1p0,s2p0,s3p0…,snp0] c=[ s1pk,s2pk,s3pk…,snpk] k = sp0Є m  spkЄ m

2.1.3. Cifrado de flujo.

El cifrado de flujo aplica transformaciones de cifrado de acuerdo a la llave de flujo que se está usando. La llave puede ser generada aleatoriamente o por un algoritmo

(22)

que la genera a partir de una semilla. Los cifradores de flujo cifran caracteres individuales digito binarios de un mensaje uno a la vez, usando una transformación de cifrado que varía con el tiempo. En contraste con el cifrado de bloque. Son más apropiados para aplicaciones de telecomunicaciones donde la capacidad de memoria es limitada. La llave se utiliza solo una vez ya que se genera de manera aleatoria y es de un tamaño igual o mayor que el mensaje mismo. [16]

El cifrado de flujo es una tupla (P,C,K,L,F,E,D) donde las siguientes condiciones se satisfacen:

1. P es un conjunto finito de posibles mensajes.

2. C es un conjunto finito de posibles criptogramas.

3. K es el espacio de llaves.

4. L es un conjunto finito llamado alfabeto de llaves de flujo.

5. F=(fi,f2,…) Es el generador de llaves de flujo. Para i >= 1.

fi: K x Pi-1L

6. Para cada z Є L, hay una regla de cifrado ez Є E y una correspondiente regla de descifrado dz Є D. ez: : PC y CP son funciones tales que dz (ez(x))=x para cada mensaje x Є P [14]

2.1.4. Cifrado simétrico.

El cifrado simétrico tiene su principal característica en el uso de la llave. En este tipo de esquemas la llave utilizada para cifrar un mensaje es la misma que se utiliza para descifrar el criptograma.

Una problemática de los esquemas de cifrado simétrico se presenta en el manejo y distribución de las llaves. Para que exista confidencialidad entre un grupo de interlocutores que usen este tipo de cifrado, es necesario generar una llave por cada posible combinación de parejas que deseen intercambiar mensajes cifrados.

(23)

El cifrado simétrico es una tupla (P,C,K,E,D) donde las siguientes condiciones se satisfacen:

1. P es un conjunto finito de posibles mensajes.

2. C es un conjunto finito de posibles criptogramas.

3. K es el espacio de llaves.

4. Para cada k Є K, hay una regla de cifrado ekЄ E y una correspondiente regla de descifrado dkЄ D, donde PC y CP son funciones tales que dk(ek(x))=x para cada mensaje x Є P

2.1.5. Cifrado asimétrico.

El esquema de cifrado asimétrico, utiliza una llave para cifrar un mensaje y otra llave diferente para descifrar el criptograma.

El esquema de cifrado asimétrico permite afrontar el problema de la distribución de llaves. Cada interlocutor en este tipo de esquema tendrá un par de llaves. Una de las llaves será de conocimiento público y la otra será privada. Esto permite que los demás interlocutores dentro de este esquema puedan enviarle mensajes cifrados con la llave pública de receptor y el receptor pueda descifrar el criptograma con su llave privada. Los algoritmos objeto de estudio en este trabajo son basados en criptografía asimétrica.

El cifrado asimétrico es una tupla (P,C,K,E,D) donde las siguientes condiciones se satisfacen:

1. P es un conjunto finito de posibles mensajes.

2. C es un conjunto finito de posibles criptogramas.

3. K es el espacio de pares de llaves (k1y k2).

4. Para cada par de llaves k1 y k2 Є K, hay una regla de cifrado ek1 Є E y una correspondiente regla de descifrado dk2 Є D, donde PC y CP son funciones tales que dk2(ek1(x))=x para cada mensaje x Є P

(24)

2.2. FUNDAMENTOS MATEMÁTICOS DE LA CRIPTOGRAFÍA ASIMÉTRICA.

Los algoritmos objeto de estudio en el presente trabajo están basados en criptografía asimétrica. Por lo que es necesario entender los fundamentos matemáticos que los soportan y de esta manera conocer acerca de sus fortalezas y debilidades.

La criptografía asimétrica basa su fortaleza en diversos problemas matemáticos que se vuelven intratables cuando sus parámetros cumplen características específicas. En el caso particular de algunos algoritmos la dificultad se presenta al tratar de resolver el problema matemático cuando el tamaño de las incógnitas que se pretenden hallar y los datos que conocemos requieren un poder de cálculo que hoy en día no se tiene para obtener una solución eficiente a ese caso particular de dicho problema

.

2.2.1. Grupos

Un grupo <G, *> consiste en un conjunto G, son una operación binaria * sobre G que satisface los siguientes tres axiomas:

i. La operación de grupo es asociativa. Esto es que a * (b * c) = (a * b) * c para todo a,b y c Є G.

ii. Hay un elemento 1 Є G, llamado elemento identidad, tal que 1 * a=a * 1 para todo a Є G.

iii. Para cada a Є G existe un elemento a-1 Є G, llamado inverso de a, tal que a *a-1= a-1 * a = 1.

Un grupo es abeliano o conmutativo si además:

iv. Se cumple que a * b = b * a para todo a, b Є G.

(25)

v. La anterior notación es para un grupo multiplicativo. Si la operación del grupo es la adición, entonces el grupo es llamado grupo aditivo, el elemento identidad es el 0 y el inverso es –a.

Un grupo G es finito si |G| es finito. El número de elementos en un grupo finito es llamado orden.

Un grupo G es cíclico si hay un elemento α Є G tal que para cada b Є G hay un entero i con b= αi. Entonces α es llamado generador de G.

Dado un grupo G y un elemento a Є G. El orden de a es definido como el menor entero positivo t tal que at = 1, en caso de que exista t. Si t no existe entonces el orden de a es infinito. [2]

.

2.2.2. Anillos

Un anillo (R,+,*) consiste en un conjunto R con dos operaciones binarias denotadas + (adicion) y * (multiplicación) sobre R, y satisfacen los siguientes axiomas.

i. (R,+) es un grupo abeliano con identidad denotada 0.

ii. La operación * es asociativa. Esto es, a*(b*c)=(a*b)*c para todo a, b, c Є R.

iii. Hay una identidad multiplicativa denotada por 1, con 1≠ 0, tal que 1*a=a*1=a para todo a Є R.

iv. La operación * es distributiva sobre +. Es decir que a*(b+c)=a*b+a*c para todo a, b, c Є R.

v. El anillo es conmutativo si a*b=b*a para todo a, b Є R. [2]

(26)

2.2.3. Campos

Un campo es un anillo conmutativo en el cual todos su elementos diferentes de cero tienen inverso multiplicativo.

Un campo finito se representa por la notación GF(pm) donde GF son las siglas de Galöis Field o campo de Galöis, también se utiliza en matemáticas la notación para representar un campo. Donde p es un número primo y m es un valor mayor o igual que 1.

Un campo finito por consecuencia de su origen hereda todas las propiedades de un anillo y además presenta las siguientes propiedades:

a) Todo elemento a que pertenezca a GF(pm), excepto el cero tiene inverso multiplicativo.

b) Se dice que el valor de p es la característica del campo.

c) Para cuando el valor de m es 1, los elementos del campo son los enteros menores a p.

Para cuando el valor de m es mayor a 1, se dice que se construye un campo finito sobre una extensión del un campo base GF(p), donde dicha extensión se forma como una combinación ortogonal de valores en el campo base de orden m y los elementos se tornan polinomios de orden m-1 con coeficientes en GF(p). [2]

2.2.4. Curvas Elípticas

Una curva elíptica E se define como un lugar geométrico descrito por el conjunto de puntos que cumplen con una ecuación de la forma E: y2 = x3 + ax + b. En la siguiente figura se muestra una curva elíptica definida sobre los números reales.[15]

(27)

Fig1. Curva elíptica. [15].

La forma que la curva elíptica adopta esta en función de los valores que los coeficientes a y b adopten en la ecuación que la define. La curva es la unión de todos los puntos (x,y) con valores de x dentro del intervalo de los números reales, además de que también los valores de los coeficientes a y b también se encuentran en dicho intervalo. [2]

Grupo Aditivo de puntos sobre una Curva Elíptica

Las curvas elípticas se definen sobre grupos aditivos, es decir, su función básica es la suma de puntos, donde todos son puntos en la trayectoria de la curva y que por tanto cumplen con la ecuación que la define.

(28)

Como en todos los casos de grupos aditivos, existe un elemento identidad que en este caso se denomina punto al infinito O . Los elementos del grupo aditivo que se forma sobre una curva elíptica son puntos, por ejemplo P=(xP,yP) y cada uno tiene su inverso aditivo denotado como -P.

La suma de dos puntos P y Q consiste en el siguiente procedimiento:

1) Sean P y Q dos puntos pertenecientes a la curva E,

2) la suma P + Q dará como resultado un punto R, cuyas coordenadas corresponden al reflejo en el eje X del punto de la intersección de un segmento secante PQ y la propia curva como puede observarse en la figura Fig 2

Fig 2 Adición de puntos en una curva elíptica. [2]

(29)

Suma de un punto P con su inverso –P.

Este caso corresponde a trazar una recta secante entre los puntos, que son uno espejo del otro sobre eje X, lo que resulta en una línea paralela al eje Y y que no se intercepta con la curva E en ningún otro punto diferente a P y -P. Formalmente se dice que dicha recta si se encontrará con la curva E, pero que esto será en el infinito, por lo que el resultado de P+(-P)=O, lo cual se muestra en la figura Fig 3. [2]

Fig 3. Adición de puntos inversos P+(-P).[2]

(30)

Suma de un punto consigo mismo.

Debido a que no es posible obtener una recta secante que cruce la curva en P y P. Por ello se procede a buscar un punto en los límites del punto P, tal que cruce la curva E en forma de una recta tangente. Luego, el valor del punto 2P será aquel que corresponda al reflejo sobre el eje X del punto donde se intercepten la curva E y dicha recta tangente, como se ilustra en la figura Fig 4. [2]

Fig 4. Suma de un punto P +P = 2P. [2]

(31)

Multiplicación de un escalar por un punto.

Consiste en la suma sucesiva de un punto P, es decir, [n]P = P+P+P+…P (n veces), donde n es un escalar. Esta operación se puede hacer por medio de sumas de puntos y doblados de puntos.

Para el uso de curvas elípticas dentro de aplicaciones discretas, como la criptografía, se hace uso de campos finitos para sobre ellos definir las curvas, los coeficientes de sus ecuaciones y los valores de los puntos que las definen. [2]

Curvas sobre campos finitos

Una propiedad esencial de la criptografía, es que los grupos tienen un número finito de puntos. Las aplicaciones criptográficas requieren aritmética precisa y rápida, la cual se obtiene utilizando grupos en curvas elípticas sobre campos finitos de Fp y F2m.

Los campos Fp utilizan números entre 0 y p - 1, y los cálculos finales toman el residuo de la división entre p. Por otro lado, una curva elíptica en dicho campo, se forma eligiendo dos variables denotadas por a y b dentro del campo finito Fp. Esta curva incluye todos los puntos (x,y), los cuales satisfacen la ecuación de la curva elíptica modulo p. Dónde x e y son números en Fp. [2]

Suma de dos puntos distintos P y Q en curvas sobre campos finitos.

Considerando el negativo de un punto P=(xp,yp) es el punto -P=(xp,-yp).

Si P y Q son distintos puntos tales que P no es –Q entonces la suma de P+Q=R se obtiene de la siguiente manera:

s=(yP-yQ)/ (xP-xQ) mod p.

(32)

xR=s2-xP-xQ mod p.

yR= -yP+s(xP - xR) mod p.

Doblado del punto P

Para doblar un punto, se hace el siguiente procedimiento:

Si yPno es 0, Entonces 2P=R Dónde:

s=(3xP2+a)/( 2yP) mod p xR=s2-2xP mod p.

yR= -yP+s(xP - xR) mod p.

Como se puede ver, a es uno de los parámetros elegidos con la curva elíptica y s es la pendiente entre P y Q [2]

2.2.5. Problema de factorización en primos grandes.

Es fácil saber si un número es primo, pero es extremadamente difícil obtener la factorización en números primos de un entero compuesto grande, debido no a la dificultad de los algoritmos existentes, sino al consumo de recursos físicos (memoria, necesidades hardware y tiempo de ejecución) de tales algoritmos.

El problema de factorización de enteros es el siguiente: Dado un entero positivo n, encuentra sus factores primos; que son: n= p1e1 p2e2 …pnendonde pi son distintos primos y cada ei>= 1.[10]

(33)

2.2.6. Problema de logaritmo discreto.

El problema de logaritmo discreto se plantea como encontrar el número de veces que hay que multiplicar un número conocido para obtener como resultado, otro también conocido dentro de un grupo multiplicativo finito y se puede enunciar de la siguiente forma:

Dado un primo p, un generador α de Z*p, y un elemento β Є Z*p encontrar el entero x, 0<=x<=p-2, tal que αx ≡ β (mod p). [10]

Un problema estrechamente relacionado con el problema de logaritmo discreto es el de Diffie Hellman, el cual se puede enunciar de la siguiente manera:

Dado un primo p, un generador α de Z*p, y elementos αa mod p y αb mod p encontrar αabmod p. [10]

En el caso de criptografía con curva elíptica el problema es encontrar cuantas veces hay que sumar un punto racional para obtener otro conocido. Este problema es conocido como problema de logaritmo discreto para curvas elípticas (ECDLP, elliptic curve discrete logarithm problem). [10]

Dada una curva elíptica E, definida sobre un campo finito Fq, un punto P Є (Fq) de orden n, y un punto Q Є (P), encontrar el entero l Є [0,n-1] tal que Q=lP. El entero l es llamado logaritmo discreto de Q base P, denotado por l=logpQ. [3]

2.3. SUBALGORITMOS DE USO PARA FUNCIONAMIENTO DE ALGORITMOS DE CIFRADO ASIMETRICO.

Un algoritmo es una serie bien definida, ordenada y finita de operaciones que permite alcanzar la solución a un problema, dado un estado inicial y una entrada, a

(34)

través de pasos sucesivos y bien definidos se llega a un estado final. Las operaciones dentro de los algoritmos de cifrado con criptografía asimétrica se llevan a cabo mediante algunos algoritmos ya probados. [10]

A continuación se describen las algoritmos que soportan el funcionamiento de los algoritmos de criptografía asimétrica.

2.3.1. Algoritmo de Euclides.

El algoritmo de Euclides permite obtener el máximo común divisor de dos números. Este algoritmo es de gran utilidad para verificar que dos números son primos relativos.

ENTRADA: Dos enteros no negativos a y b, donde a>=b.

SALIDA: El máximo común divisor de a y b.

1. Mientras b≠0, hacer lo siguiente.

Hacer r  a mod b, ab, br.

2. Regresar a. [10]

2.3.2. Algoritmo de Euclides extendido.

El algoritmo de Euclides extendido permite, además de encontrar un máximo común divisor de dos números enteros a y b, expresarlo como una combinación lineal, es decir, encontrar números enteros m y n tales que m.c.d.(a, b) = ma + nb.

Con lo cual se encuentra el valor inverso multiplicativo de b modulo a.

ENTRADA: Dos enteros no negativos a y b donde a>=b.

SALIDA: d= gcd(a,b) y los enteros x,y donde ax+by=d

(35)

1. Si b=0 entonces da, x1, y0, y regresa (d,x,y).

2. Hacer x21, x1=0, y20, y11.

3. Mientras b>0 hacer lo siguiente:

3.1. q [a/b], ra-qb, xx2-qx1, yy2-qy1

3.2. a b, br, x2x1 x1x, y2y1 y1y 4. Hacer d  a, xx2 , yy2, regresando (d,x,y) [10]

2.3.3. Prueba de primalidad de Millar Rabin.

El test de primalidad de Miller Rabin, permite aplicar iteraciones a un numero para determinar al finalizar las iteraciones si el numero es probable primo.

Descripción del algoritmo para realizar el test de primalidad de Miller Rabin.

ENTRADA: Un primo impar n>=3 y un parámetro de seguridad t>=1.

SALIDA: Respuesta “primo” o ”compuesto”.

1. Escribe n-1 = 2sr donde ‘r’ es impar.

2. Para ‘i’ desde 1 hasta ‘t’ hacer lo siguiente:

2.1. Elige un entero aleatorio ‘a’, 2<= a <= (n-2).

2.2. Calcula y= ar mod n.

2.3. Si y ≠ 1 && y ≠ (n-1) hacer lo siguiente:

J1

Mientras j<=s-1 && y≠ n-1 hacer lo siguiente:

Calcular y←y2mod n.

Si y=1 regresar “compuesto”

j  j+1

Si y≠n-1 regresar “compuesto”

3. Regresar “primo” [10]

(36)

En la práctica los números que se prueban con este algoritmo son muy grandes.

En el caso de los primos que se utilizan para RSA, los primos que entran al test deben ser de la mitad del tamaño de la llave que s e utiliza.

2.3.4. Algoritmo de exponenciación rápida.

En criptografía asimétrica se utiliza muy frecuentemente en la que la operación básica es una exponenciación AB mod n, en donde n es un primo o un producto de primos grandes.

Descripción del algoritmo.

ENTRADAS: aЄZn, y un entero 0<=k<n cuya representación es k=Σki=0ki2i. SALIDAS: akmod n.

1. Hacer b1. Si k=0 regresar (b).

2. Hacer Aa.

3. Si k0= 1 entonces hacer ba.

4. Para i desde 1 hasta t hacer lo siguiente.

4.1. Hacer AA2mod n.

4.2. Si ki=1 entonces hacer bAb mod n.

5. Regresar (b). [10]

Siendo que la criptografía es el estudio de técnicas matemáticas relacionado a aspectos de seguridad de la información tales como confidencialidad, integridad de datos, autenticación de entidad, y autenticación de origen de datos, es importante conocer los fundamentos matemáticos que soportan los diferentes algoritmos que son utilizados. Para este caso particular, se abordaron en este capítulo las bases de los algoritmos objeto de este trabajo.

(37)

CAPÍTULO III.

ALGORITMOS DE CIFRADO ASIMÉTRICO.

3.1. ALGORITMO RSA.

El algoritmo de llave pública RSA fue diseñado en 1977 por los profesores del MIT (Massachusetts Institute of Technology) Ronald R. Rivest, Adi Shamir y Leonard M.

Adleman quienes se basaron en el artículo de Diffie-Hellman sobre sistemas de llave pública. [10]

RSA se basa su seguridad en la dificultad de factorizar números muy grandes, ya que es extremadamente difícil obtener la factorización en números primos de un entero grande, lo cual, no se debe a la complejidad de los algoritmos existentes, sino es debido al consumo de recursos de poder de computo y tiempo de tales algoritmos.

3.1.1. Descripción del algoritmo RSA.

El algoritmo de cifrado RSA se divide en tres etapas, la primera comprende la generación de llaves, la segunda corresponde al cifrado y finalmente la tercera al descifrado, las cuales se describen a continuación.

a. Generación de llaves.

Cada entidad debe generar una llave pública RSA y su correspondiente llave privada.

(38)

1.- Generar dos números primos grandes, aleatorios y distintos p y q.

2.- Calcular n= pq y ф(n)= (p-1)(q-1).

3.- Elegir un numero entero aleatorio e, 1<e< ф(n), tal que, gcd(e, ф(n)=1).

4.- Usando el algoritmo de Euclides extendido para calcular el entero d, 1<d< ф(n), tal que ed mod ф(n) =1.

5.- la llave publica de A es (n,e) y su llave privada es d. [14]

En el diagrama de flujo que se presenta en la figura Fig 5 se describen los pasos de la generación de llaves con RSA.

Fig 5. Generación de llaves en RSA.

(39)

b. Cifrado.

Para cifrar mediante el algoritmo RSA un emisor B que desea mandarle un mensaje a un receptor A. B tendrá que usar la llave pública de e de A y el modulo n para cifrar el mensaje m, y calcular el criptograma c = me mod n como se describe en la figura Fig 6. [14]

Fig 6. Cifrado con RSA.

(40)

c. Descifrado.

Para descifrar el mensaje, el receptor A debe usar su clave privada d y el modulo n, para transformar el criptograma c en el mensaje original m calculando m = cd mod n como se describe en la figura Fig 7. [14]

Fig 7. Descifrado con RSA.

(41)

3.1.2. Simulación del algoritmo RSA.

En base a los diagramas de flujo que se muestran en las figuras Fig5, Fig6, Fig7, se programó el algoritmo en java, cuyo código fuente se describe en el ANEXO A, obteniendo los resultados que se muestran a continuación.

Resultados de la simulación.

Utilizando la plataforma de desarrollo de uso libre Eclipse como se muestra en la figura Fig4, probamos el código que se encuentra en el ANEXO A.

Las entradas para la simulación fueron las siguientes:

Llave pública: 65537.

Mensaje: 3711034

El programa realizó los siguientes pasos:

1. Generó los primos p y q de forma aleatoria.

2. Calculó el modulo n y el indicador de Euler ф(n).

3. Calculó la llave privada en base a la llave pública e y ф(n).

4. Cifró el mensaje m creando un criptograma c

5. Descifró el criptograma c recuperando el mensaje m.

(42)

6. Imprimió en pantalla los resultados.

Las salidas fueron las siguientes:

Llave privada d: 3357251728946370017 Modulo n: 8478448102689624053 Criptograma c: 3157382913819114461 Mensaje recuperado m: 3711034

Se pudo comprobar de forma didáctica el funcionamiento del algoritmo. Ya que se ingresaron datos apropiados para el ejercicio y se obtuvo el criptograma y se comprobó la recuperación del mensaje aplicando el descifrado al criptograma de acuerdo a los pasos que marca el algoritmo.

Fig8. Resultado de la simulación de RSA.

(43)

3.1.3. Implementaciones eficientes de RSA.

La criptografía asimétrica se caracteriza por requerir mayor poder de cómputo para realizar transformaciones de cifrado, por lo que es importar contar con formas que nos permitan hacer más eficiente la implementación de los algoritmos de cifrado basados en criptografía asimétrica

a. Teorema del resto chino.

Utilizar el teorema del resto chino en el algoritmo RSA permite optimizar el uso de procesador requerido para realizar cálculos en módulo n, donde n es un producto de dos primos p y q, Con ayuda del teorema del resto chino los cálculos pueden ser transportados del anillo Zn al anillo Zp x Zq. La suma de las longitudes de bit de p y q es la longitud de bit de n, haciendo p y q considerablemente menor que n, lo cual acelera los cálculos y por consecuencia disminuye el costo computacional.

El Teorema del resto chino menciona que si tenemos una serie de ecuaciones de congruencia.

x Ξ a1 (mod m1) x Ξ a2 (mod m2)

Sucesivamente hasta k.

x Ξ ak (mod mk)

Donde los mi (i=1...k) son primos entre sí dos a dos, entonces el sistema tiene una única solución modulo M = m1.m2...mk [10]

(44)

b. Uso en la práctica del RSA.

Hay varias maneras de acelerar el cifrado y descifrado de RSA en implementaciones en software y hardware. Incluyendo la exponenciación modular rápida y teorema chino del resto para un descifrado más rápido.

Incluso con estas mejoras, el cifrado/descifrado con RSA es substancialmente más lento que los algoritmos de cifrado simétrico de uso general. En la práctica, el cifrado del RSA es comúnmente usado para el transporte de las llaves del algoritmo de cifrado simétrico y para el cifrado de pequeños ítems de datos.

El sistema criptográfico del RSA se ha patentado en los E.E.U.U. y Canadá.

Varias organizaciones de estándares tales como el NIST, y la ISO han escrito, o están en proceso de escribir, estándares en dirección al uso de criptosistemas, firmas digitales, y establecimiento de llaves de RSA. [10]

c. Tamaño recomendado de los módulos.

Dado el progreso los algoritmos para descomponer enteros en factores, un módulo n de 512 bits proporciona seguridad solo marginal de ataques. En 1996, para la seguridad a largo plazo, se recomienda que 1024 bits o módulos más grandes deban ser utilizados [10]

Los primos p y q deben ser elegidos de modo que factorizar n = pq sea computacionalmente imposible. La restricción principal en p y q para evitar la curva elíptica que descompone en factores el algoritmo es que p y q deben ser de un tamaño de bits casi igual, y suficientemente grande. Por ejemplo, si se va a usar un módulo n de 1024 bits, cada uno de p y de q deben ser cerca de 512 bits en longitud.

(45)

Otra restricción en los primos p y q es que la diferencia p-q no debe ser tan chica.

Si p-q representa una diferencia chica entonces p casi igual a q y por lo tanto p casi igual a raíz cuadrada de n. Así, n podía ser descompuesto en factores eficientemente simplemente por una trivial división por todos los números enteros impares cerca de raíz cuadrada de n. Si p y q son elegidos aleatoriamente, entonces p-q tiene una abrumadora probabilidad de ser apropiadamente grande.

Además de estas restricciones, es recomendable que p y q sean primos fuertes.

Es decir que cumplan con las siguientes condiciones:

(a)Si p-1 tiene un factor primo grande, denotado por r;

(b)Si p+1 tiene un factor primo grande ; y (c)Si r-1 tiene un factor primo grande.

La razón de la condición (a) es el algoritmo de Pollard de factorización de p-1 en cual es eficiente solamente si n tiene un factor primo p tal que p-1 es par. La condición (b) se debe al algoritmo de factorización de p+1 el cual es eficiente solamente si n tiene un factor primo p tal que p+1 es par. Finalmente, la condición (c) se asegura de que los ataques de ciclo fallen. [10]

Si el primo p se elige aleatoriamente y es suficientemente grande, entonces de p−1 y p+1 puede esperarse que tengan factores primos grandes. En todo caso, mientras que primos fuertes protegen contra los algoritmos p-1 y p+1, ellos no protegen contra su generalización, el algoritmo de curva elíptica. Este último es acertado factorizando n, si un número aleatorio elegido del tamaño de p tiene solo factores pequeños. Además, se ha demostrado que las ocasiones de un ataque de ciclo que tiene éxito son insignificantes si p y q se eligen aleatoriamente.

Así, los primos fuertes ofrecen poca más protección que la ofrecida por primos aleatorios. Dado el estado actual del conocimiento en algoritmos de factorización, no existe una razón de peso para el uso de primos fuertes en la generación de llaves de

(46)

RSA. Por otra parte, no son menos seguros que los primos fuertes y requieren solamente un mínimo poder de computo adicional; así que hay poco coste adicional verdadero al usarlos.

d. Pequeños exponentes de cifrado.

El exponente de cifrado e = 3 es de uso general en la práctica; en este caso, es necesario que ni p−1 ni q−1 sea divisible por 3. Esto da lugar a una operación muy rápida de cifrado puesto que requiere solamente 1 multiplicación y 1 exponenciación cuadrática Otro exponente de cifrado usado en la práctica es e = (2 elevado a la 16) + 1 = 65537. Este número tiene solamente dos 1 en su representación binaria, y así que el cifrado usando el algoritmo de multiplicación y exponenciación cuadrática repetido requiere solamente 16 exponenciaciones cuadráticas modulares y 1 multiplicación modular. El exponente e = 216 + 1 tiene la ventaja sobre e = 3 en que resiste la clase de ataque a exponentes pequeños, puesto que es inverosímil el mismo mensaje sea enviado a (2 elevado a la 16)+1 recipientes.[10]

3.2. ALGORITMO ELGAMAL.

El esquema de cifrado de llave pública ElGamal Fue propuesto por Taher ElGamal en 1985, puede ser visto como un acuerdo de llave Diffie-Hellman. Su seguridad se basa en la intratabilidad del problema de logaritmo discreto y el problema de Diffie-Hellman. [10]

3.2.1. Descripción del algoritmo ElGamal.

El algoritmo de cifrado ElGamal se divide en tres etapas, la primera comprende la generación de llaves, la segunda corresponde al cifrado y finalmente la tercera al descifrado, las cuales se describen a continuación.

(47)

a. Generación de llaves.

Cada entidad debe generar una llave pública y su correspondiente llave privada, para lo cual, hace lo siguiente:

1. Genera un primo grande aleatorio p y un generador α del grupo multiplicativo Z*p de los enteros modulo p.

2. Elige un entero aleatorio a, 1<=a<=p-2, y calcula αamod p.

3. La llave pública resultante es (p, α, α a) y la llave privada es a. [10]

En el diagrama de flujo que se presenta en la figura Fig 9 se describen los pasos de la generación de llaves con ElGamal.

Fig9. Generación de llaves con ElGamal.

(48)

b. Cifrado.

Para cifrar mediante el algoritmo ElGamal, se debe:

1. Obtener la llave pública del destinatario. (p, α, α a)

2. Obtener la representación del mensaje como un entero ‘m’ en el rango [0,p-1].

3. Elegir un numero aleatorio k, 1<=k<=p-2 4. Calcular γ= α kmod p y δ= m * (α a)kmod p.

5. Enviar el criptograma c= (γ , δ) al destinatario.[10]

En el diagrama de flujo que se presenta en la figura Fig10 se describen los pasos correspondientes al proceso de cifrado con ElGamal.

Fig10. Cifrado con ElGamal.

(49)

c. Descifrado.

Para descifrar el mensaje, el receptor debe usar su clave privada para recuperar el mensaje m en base al criptograma (γ,δ) y el modulo p.

1. Usa su llave privada a y calcula γ p-1-a mod p = γ-a mod p.

2. Recupera el mensaje m calculando m= (γ–a)* δ mod p. [10]

En el diagrama de flujo que se presenta en la figura Fig11 se describen los pasos correspondientes al proceso de descifrado con ElGamal.

Fig11. Descifrado con ElGamal.

(50)

3.2.2. Simulación del algoritmo ElGamal.

Con base a los diagramas de flujo que se muestran en las figuras Fig9, Fig10, Fig11, se programó el algoritmo en java, cuyo código fuente se puede ver el en ANEXO B, obteniendo los resultados que se muestran a continuación.

Resultados de la simulación.

Utilizando la plataforma de desarrollo de uso libre Eclipse como se muestra en la figura Fig12, probamos el código que se encuentra en el ANEXO B.

Fig12. Resultado de la simulación de ElGamal.

(51)

Las entradas para la simulación fueron las siguientes:

Llave privada a: 3711034.

Mensaje m: 34567892 Generador de grupo α: 3

El programa realizó los siguientes pasos:

1. Generó el primo p de forma aleatoria.

2. Calculó αamod p.

3. Genera un numero aleatorio k, 1<=k<=p-2

4. Cifra el mensaje m, calculando γ= α kmod p y δ= m * (α a)kmod p.

5. Descifra el criptograma c(γ, δ) recuperando el mensaje m= (γ–a)* δ mod p.

Las salidas fueron las siguientes:

Llave pública: (p=12501472325632601743;

α=3;

αamodp= 11831103967985798421) k: = 17526420206107457061

c(γ, δ) : (3156145273670669360, 6340775583769499464) γamod p: 11334769807330480949

γ–a mod p: 11093836895661217390 m= (γ–a)* δ mod p: 34567892

Se pudo comprobar de forma didáctica el funcionamiento del algoritmo. Ya que se ingresaron datos apropiados para el ejercicio y se obtuvo el criptograma y se comprobó la recuperación del mensaje aplicando el descifrado al criptograma de acuerdo a los pasos que marca el algoritmo.

(52)

3.3. ALGORITMO ECES (Elliptic Curve Encryption Scheme).

Desde que se propuso el uso en criptografía de las curvas elípticas sobre campos finitos, se han diseñado varios criptosistemas basados en funciones unidireccionales sobre curvas elípticas. Actualmente algunas de las primitivas definidas, basadas en el problema del logaritmo discreto sobre el grupo de puntos de la curva. En este trabajo, a continuación se detalla el criptosistema ECES, el cual se basa en el Criptosistema El Gamal a diferencia de que su seguridad se basa en la intratabilidad que tiene el problema de logaritmo discreto en grupos aditivos. [3]

3.3.1. Descripción del algoritmo ECES.

El algoritmo de cifrado ECES se divide en tres etapas, la primera comprende la generación de llaves, la segunda corresponde al cifrado y finalmente la tercera al descifrado, las cuales se describen a continuación.

a. Generación de llaves.

Cada entidad debe generar una llave pública y su correspondiente llave privada, para lo cual, hace lo siguiente:

ENTRADA: parámetros públicos (p, E, P, n) SALIDA: Llave pública Q y llave privada d.

1. Elige d ЄR[1,n-1]

2. Calcula Q=dP.

3. Regresa (Q,d).

4. La llave pública es Q y la llave privada es d [3]

En el diagrama de flujo que se presenta en la figura Fig 9 se describen los pasos de la generación de llaves con el algoritmo ECES.

(53)

b. Cifrado.

ENTRADA: Llave pública de destinatario Q, Parámetros públicos (p, E, P, n) mensaje m.

SALIDA: Criptograma (C1, C2).

1. Obtiene la llave pública Q del destinatario.

2. Representa el mensaje m como un punto M en E(Fp).

3. Selecciona un entero k dentro del intervalo [1,n-1].

4. Calcula C1= kP.

Fig13. Generación de llaves con ECES.

(54)

5. Calcula C2= M + kQ.

6. Envía (C1, C2) al destinatario. [3]

En el diagrama de flujo que se presenta en la figura Fig14 se describen los pasos correspondientes al proceso de cifrado con el algoritmo ECES.

Fig14. Cifrado con algoritmo ECES.

(55)

c. Descifrado.

Para descifrar el texto cifrado que recibió de la entidad B, la entidad A hace lo siguiente:

1. Calcula M= C2- dC1

2. Obtiene m de M [3]

En el diagrama de flujo que se presenta en la figura Fig15 se describen los pasos correspondientes al proceso de descifrado con el algoritmo ECES.

Fig15. Descifrado con el algoritmo ECES.

(56)

CAPÍTULO IV.

COMPARACIÓN DE ALGORITMOS RSA, ELGAMAL Y ECES.

En este capítulo se una hará mención de las particularidades que permiten hacer una comparación de los algoritmos de cifrado basados en criptografía asimétrica RSA, ElGamal, y ECES con la finalidad de obtener las ventajas y desventajas que presenta cada algoritmo para su inclusión dentro de una arquitectura de cifrado.

La idea fundamental para criptografía asimétrica se basa sobre la dificultad de problemas matemáticos. De esta manera se puede entender por qué se han creado mecanismos para llave pública. Así es que si un requerimiento técnico adicional puede ser diseñado, entonces el problema matemático puede ser usado para construir un algoritmo de cifrado de llave púbica.

4.1.

CONSIDERACIONES PRÁCTICAS.

En relación a la criptografía de llave pública se han visto varias propuestas de problemas complejos candidatos a soportar un esquema de criptografía asimétrica, de los cuales en la actualidad la seguridad de los algoritmos de uso se basa en dos de ellos, el problema del logaritmo discreto sobre un campo finito y la factorización de enteros.

(57)

De los tres algoritmos que se han revisado, el algoritmo basado en curvas elípticas, es el de más reciente propuesta. Las bases matemáticas de las curvas elípticas han demostrado ser notablemente útiles para soportar un esquema de criptografía asimétrica.

En la determinación de cualquier sistema criptográfico una cantidad determinada de cómputo es requerida. A continuación se presenta una comparación acerca de algunos de los requisitos de disposición básicos para el uso de los algoritmos RSA, ElGamal, y ECES dentro de sistemas de cifrado.

Es necesario considerar que ECES es una variante de los sistemas criptográficos que basan su fortaleza en el problema de logaritmo discreto como ElGamal. Por consiguiente algunos parámetros son comunes. El establecimiento de los parámetros de sistema implica el seleccionar de un campo finito para el sistema criptográfico y de una representación para los elementos en el campo finito. Para el caso de ECES se elige una curva elíptica apropiada y un punto generador de la curva.

Al usar un campo binario para los sistemas criptográficos basados en logaritmo discreto hay oportunidades para mejoras substanciales de funcionamiento. Sin embargo el problema del logaritmo discreto sobre tales campos es algo más fácil de solucionar. Así las ventajas potenciales de usar un campo binario son consumidas por la necesidad de llaves más largas de lograr el mismo nivel de seguridad.[15]

Para el caso de ECES la selección los parámetros es compleja, tomando en cuenta que deba en cada caso elegirse los parámetros. Sin embargo, una vez que se hace, los parámetros resultantes de se pueden utilizar para usuarios múltiples dentro de un grupo y cada usuario tiene sus pares de llaves pública/privada. Estos pares de llaves son fáciles de generar y consisten en un número entero al azar, secreto k que actúe como la llave privada y el múltiplo del punto G generador en la curva que actúa como la llave pública kG para el usuario. La seguridad se basa en que es difícil calcular la llave privada k de la llave pública kG.

Referencias

Documento similar