• No se han encontrado resultados

Estudio de esquemas de compromiso (commitment schemes): clásicos, post-cuánticos, homomórficos, vectoriales y conmutables.

N/A
N/A
Protected

Academic year: 2023

Share "Estudio de esquemas de compromiso (commitment schemes): clásicos, post-cuánticos, homomórficos, vectoriales y conmutables."

Copied!
103
0
0

Texto completo

(1)

Estudio de esquemas de

compromiso (commitment schemes):

clásicos, post-cuánticos,

homomórficos, vectoriales y conmutables.

Idoia Fradua García-Soto

Protocolos criptográficos y aplicaciones de seguridad.

Commitment schemes

Nombre Tutor/a de TF

Ramsès Fernàndez València

Profesor/a responsable de la asignatura

Cristina Pérez Solà

Fecha Entrega

10/1/2023

(2)

Protocolos criptográficos y aplicaciones de seguridad

7/11/2022

© (Idoia Fradua García-Soto)

Reservados todos los derechos. Está prohibido la reproducción total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la impresión, la reprografía, el microfilme, el tratamiento informático o cualquier otro sistema, así como la distribución de ejemplares mediante alquiler y préstamo, sin la autorización escrita del autor o de los límites que autorice la Ley de Propiedad Intelectual.

(3)

i

FICHA DEL TRABAJO FINAL (ACTUALIZADO)

Título del trabajo:

Estudio de esquemas de compromiso:

clásicos, post-cuánticos, homomórficos, vectoriales y conmutables

Nombre del autor: Idoia Fradua García-Soto Nombre del consultor/a: Ramsès Fernàndez València

Nombre del PRA: Cristina Pérez Solà Fecha de entrega (mm/ala): 10/01/2023

Titulación o programa: Protocolos criptográficos y aplicaciones de seguridad

Área del Trabajo Final: Commitment schemes Idioma del trabajo: Castellano

Palabras clave Commitment, post-cuántico, homomórfico, vectorial, criptosistema

Abstract

The objective of this work is to make a survey on commitment schemes.

Commitment schemes are a cryptographic scheme that allows a sender to commit to a value that cannot be modified after that commitment. This value will then be sent to a receiver, who will only be able to discover it value at the moment the sender decides to reveal it.

The current survey starts by an analyse of the mathematical and security fundamentals of commitment schemes.

It then analyses the classic proposals of these schemes and its current applications, as these schemes are used to ensure the security in situations such as electronic voting, online auctions, blockchain schemes or cryptocurrency.

Next the survey analyses the post quantum commitment schemes, whose objective are to be secure against attacks using the computation power of quantum computers.

The survey then analyses homomorphic commitment schemes, that can be used, for instance, to ensure the security of confidential data when outsourcing it to third parties.

This paper ends analysing other commitment schemes such us switch commitments and vector commitments.

The main objective is to present a comprehensive, complete and up to date analyse of these cryptographic schemes with a focus on practical cases of use.

(4)

ii

Índice

1. Introducción ... 1

1.1. Contexto y justificación del Trabajo ... 1

1.2. Objetivos del Trabajo ... 1

1.3. Impacto en sostenibilidad, ético-social y de diversidad ... 2

1.4. Enfoque y método seguido ... 2

1.5. Planificación del Trabajo ... 3

1.6. Análisis previo del estado del arte. ... 5

1.7. Breve descripción de los otros capítulos de la memoria ... 6

2. Fundamentos. ... 7

2.1. Fundamentos matemáticos ... 7

2.1.1. Aritmética modular y teoría de grupos ... 7

2.1.2. Logaritmo discreto y otros conceptos asimilados ... 10

2.1.3. Criptografía de curvas elípticas ... 11

2.2. Criptografía clásica... 13

2.2.1. Conceptos criptográficos básicos ... 13

2.2.2. Breve historia de la criptografía. ... 14

2.2.3. Cifrado simétrico y asimétrico ... 15

2.2.4. Funciones hash y el modelo de oráculo aleatorio ... 18

2.2.5. Pruebas de conocimiento nulo ... 20

2.2.6. Seguridad de los protocolos criptográficos ... 22

2.3. Criptografía post-cuántica. ... 28

2.3.1. Introducción ... 28

2.3.2. Algoritmos diseñados para computadores cuánticos ... 29

2.3.3. Protocolos criptográficos post-cuánticos ... 31

2.3.4. Criptografía basada en retículos ... 35

3. Análisis del estado del arte de los esquemas de compromiso ... 46

3.1. Commitment schemes clásicos y sus aplicaciones. ... 46

3.1.1. Definiciones ... 46

3.1.2. Casos de uso de los commitment schemes ... 49

3.1.3. Algunos ejemplos básicos de commitment schemes ... 53

3.1.4. Commitment scheme de Pedersen ... 53

3.1.5. Commitment scheme de El Gamal ... 55

3.2. Commitment schemes post-cuánticos... 58

3.2.1. Commitment scheme post-cuántico basado en SIS (Small Integer Solution). ... 58

3.2.2. Commitment scheme post-cuántico basado en LWE ... 59

3.2.3. Commitment scheme post-cuántico basado en R-LWE ... 61

3.2.4. Commitment scheme post-cuántico basado en LPN ... 62

(5)

iii

3.3. Commitment schemes homomórficos. ... 63

3.3.1. Cifrado homomórfico ... 63

3.3.2. Commitment schemes homomórficos ... 64

3.4. Commitment schemes vectoriales ... 68

3.4.1. Características de los commitment schemes vectoriales ... 68

3.4.2. Aplicaciones de los vector commitments ... 69

3.4.3. Commitment vectorial basado en Diffie Hellman ... 70

3.4.4. Commitment vectorial basado en RSA ... 71

3.5. Commitments conmutables (switch commitments). ... 73

3.5.1. Necesidad de los switch commitments ... 73

3.5.2. Commitment conmutable basado en Pedersen y El Gamal. ... 74

3.5.3. Variante ... 77

4. Conclusiones y trabajos futuros ... 78

4.1. Conclusiones generales ... 78

4.2. Alcance de objetivos y respeto de la metodología y planificación ... 79

4.3. Impacto ético social y sostenibilidad ... 80

4.4. Líneas de trabajo futuro ... 81

5. Glosario ... 83

6. Bibliografía ... 85

7. Anexos ... 88

7.1. Teoría de la complejidad. Máquinas de Turing ... 88

7.2. Algoritmo de Babai para resolver el problema CVP ... 90

7.3. Criptosistemas basados en retículos... 91

7.3.1. Criptosistema GGH (Godreich, Goldwaser and Halevi). ... 91

7.3.2. Criptosistema NTRU (Number Theory Research Unit) ... 92

7.3.3. Interpretación del problema NTRU como problema basado en retículos ... 93

7.4. Criptóanálisis de criptosistemas basados en retículos ... 94

7.5. Criptografía post-cuántica. Trabajos en curso ... 97

(6)

iv

Lista de figuras

Figura 2-1. Ejemplos de curvas elípticas (Wikipedia) ... 11

Figura 2-2. Suma de puntos en curvas elípticas ... 12

Figura 2-3. Multiplicación escalar en curvas elípticas ... 12

Figura 2-4. Cifrado simétrico ... 15

Figura 2-5. Cifrado asimétrico ... 16

Figura 2-6. Sobre digital ... 17

Figura 2-7. MAC ... 19

Figura 2-8 prueba conocimiento nulo ... 20

Figura 2-9. Prueba de conocimiento nulo ... 21

Figura 2-10. Computador cuántico ... 28

Figura 2-11. Retículo con dos bases diferentes. ... 36

Figura 2-12. Retículo tridimensional ... 36

Figura 2-13. Dominio fundamental ... 38

Figura 2-14 SVP ... 40

Figura 2-15. CVP ... 40

Figura 2-16 Buena base ... 41

Figura 2-17. Mala base. ... 41

Figura 2-18 LWE ... 43

Figura 2-19, LWE gráficamente ... 43

Figura 3-1. Commitment scheme ... 47

Figura 3-2. Commitment scheme en voto electrónico. ... 51

Figura 3-3. Commitment scheme de Pedersen. ... 54

Figura 3-4. Cifrado homomórfico ... 63

Figura 3-5. Commitment vectorial ... 68

Figura 3-6. Commitment vectorial para delegación de almacenamiento ... 69

(7)

1

1. Introducción

1.1. Contexto y justificación del Trabajo

Los esquemas de compromiso son una primitiva criptográfica que permite a un sujeto comprometerse con un determinado valor, que no podrá modificar y que mantendrá oculto a los demás hasta que decida revelarlo.

Entre sus múltiples aplicaciones se encuentran las subastas electrónicas, el voto electrónico, las pruebas de conocimiento nulo, el intercambio de claves secretas, el blockchain y las criptomonedas.

Este trabajo persigue estudiar los esquemas de compromiso más allá de sus variantes clásicas, poniendo acento en los esquemas post-cuánticos y ampliando el perímetro del estudio a los esquemas de compromiso homomórficos, a los esquemas de compromiso vectoriales y a los esquemas conmutables.

1.2. Objetivos del Trabajo

El objetivo del trabajo es realizar un análisis global de los esquemas de compromiso buscando las aplicaciones concretas de cada uno de ellos y centrándose en las propiedades de propuestas avanzadas como los esquemas homomórficos, vectoriales y post-cuánticos, así como las propiedades de combinaciones de esquemas de compromisos, como constituyen los esquemas de compromiso conmutables.

Este análisis parte de un estudio de los fundamentos matemáticos de cada tipo de esquema de compromiso, que permite comprender las bases de su funcionamiento, para después analizar las distintas tipologías de esquema, buscando ejemplos de cada uno y casos de uso en la práctica.

El objetivo final es condensar en un único documento las principales propuestas existentes en cada uno de los ámbitos para presentar un estado del arte global de estas primitivas criptográficas. Otro de los objetivos, que se trata en la conclusión de este estudio, es presentar las propuestas de líneas de trabajo futuro.

(8)

2

1.3. Impacto en sostenibilidad, ético-social y de diversidad

Este estudio analiza el impacto positivo de los mismos en la privacidad y la confidencialidad de los usuarios de dichos esquemas de compromiso, así como en el secreto de los datos que manejan y de las transacciones que realizan. Este impacto es de tipo ético-social y, en lo que respecta a la privacidad, puede suponer también un impacto positivo en la diversidad.

Habida cuenta que los commitment schemes son utilizados en distintos contextos de la vida real, como en criptomonedas o en sistemas de blockchain o de voto electrónico, el uso de estos garantiza la seguridad de las transacciones, así como garantiza que las elecciones de sus usuarios son respetadas, y conservadas en secreto hasta que ellos mismos decidan revelarlas, garantizando de esta manera tiempo la privacidad de las comunicaciones.

1.4. Enfoque y método seguido

La metodología utilizada ha sido evolutiva, partiendo del estudio de los fundamentos básicos de seguridad y matemáticos en que se basan los commitment schemes, así como del análisis de las propuestas clásicas, para evolucionar hacia el estudio de propuestas más avanzadas e innovadoras. Se insiste en la búsqueda de aplicaciones y ejemplos prácticos de cada uno de los esquemas, para facilitar su comprensión.

De esta manera, el trabajo a realizar se ha dividido en varias fases que han ido enriqueciendo gradualmente la memoria. Siguiendo los principios de la metodología AGILE, con un proceso iterativo, las entregas han ampliado el alcance del estudio de forma gradual, y los capítulos de entregas precedentes, así como su estructura, han sido revisitados y enriquecidos en fases posteriores, al determinarse que los conocimientos adquiridos permiten completar conceptos o hallazgos de fases anteriores. Ninguna fase ha quedado “cerrada” hasta la entrega definitiva de la memoria. Esto ha permitido que el trabajo esté “vivo”, y que su contenido y objetivos evolucionen a medida que avanza la investigación de este TFM, para adaptarse a los avances realizados o a los cambios de enfoque.

Con respecto a la organización del documento, se ha comenzado explicando los fundamentos matemáticos y de seguridad. He comenzado por los fundamentos más básicos para evolucionar a los fundamentos de la criptografía post-cuántica, mucho más complejos. Esto permite comprender las bases matemáticas y de seguridad de cada uno de los esquemas de compromiso presentados en el estudio, y permite que el documento esté autocontenido, sin necesidad de buscar estos fundamentos y referencias en otros documentos. La bibliografía está presente siempre que se necesite profundizar en alguno de los conceptos para mejorar su comprensión.

Aquellos fundamentos, que, siendo importantes, no son imprescindibles para el estudio de los esquemas explicados a continuación, han sido ubicados en los anexos.

(9)

3

Una vez explicados los fundamentos, el documento pasa definir los esquemas de compromiso y a analizar las distintas propuestas, partiendo de los commitment schemes clásicos para pasar a analizar las propuestas post- cuánticas, homomórficas, vectoriales y conmutables. He hecho un enfoque especial en explicar los casos de uso en la práctica de cada una de las propuestas y en proponer ejemplos cada vez que esto ha sido posible.

El documento termina con un apartado dedicado a la conclusión y a los trabajos futuros en este ámbito.

Nota: la traducción al español de “commitment scheme” es “esquema de compromiso”. En adelante paso a utilizar el término en inglés ya que, si bien no se corresponde con el idioma del trabajo, es el término que se utiliza en la comunidad científica y de ciberseguridad. En algún punto del trabajo se puede leer de nuevo el término esquema de compromiso, que es intercambiable con el de commitment scheme.

1.5. Planificación del Trabajo

El plan de trabajo propuesto para el Trabajo fin de máster es el siguiente:

• Fase 1. Preparación del plan de Trabajo y realización del esquema básico del TFM. Esta fase termina con la entrega del plan de Trabajo del master, con la entrega del capítulo 1 de esta memoria.

• Fase 2. Estudio del estado del arte. Se estudiarán y completarán los capítulos dedicados a los conceptos básicos de los commitment schemes, los fundamentos matemáticos y las aplicaciones actuales de estos esquemas criptográficos. Se termina esta fase con la entrega de los capítulos 2.1, 2.2 y 3.1 de la memoria.

• Fase 3. Estudio de commitments post-cuánticos. Se estudiarán los fundamentos de la criptografía post-cuántica y los commitment schemes post-cuánticos. Se finaliza esta fase con la entrega de los capítulos 3.2 y 3.3 de la memoria.

• Fase 4. Estudio de otros commitments como los commitments homomórficos, vectoriales y conmutables y finalización de la memoria del TFM. Como hito final se presenta la memoria del TFM completa.

• Fase 5. Defensa del TFM. Esta fase consta de una entrega intermedia de la presentación, así como de la defensa del TFM.

Las fases indicadas arriba se muestran en el siguiente gráfico:

(10)

4

(11)

5

1.6. Análisis previo del estado del arte.

Un commitment scheme, concepto que se utilizó por primera vez en 1988, es una primitiva criptográfica que permite comprometerse con un valor elegido y mantenerlo oculto a otros (capacidad de ocultación), con la capacidad de revelarlo en el momento que desee.

Los commitment schemes impiden que el valor con el que el emisor se ha comprometido sea modificado, por esto se indica que tienen capacidad de compromiso (binding) y que dicho valor no sea revelado (hiding) hasta que el emisor no decida abrir el compromiso.

Los commitment schemes tienen varios campos de aplicación, como el lanzamiento de moneda, las pruebas de conocimiento nulo, la compartición de claves secretas, o determinados esquemas de firma electrónica. También tienen su utilidad en subastas electrónicas o en blockchain.

Un commitment scheme consta de dos fases:

• Fase de compromiso, en la que el valor es elegido y comprometido.

• Fase de revelación, en la que el valor se revela a un tercero, que puede verificar su autenticidad.

Adicionalmente existe una fase de setup o puesta en marcha, en la que se comparten las claves a utilizar en el esquema de compromiso.

Se dice que el compromiso (binding) es INCONDICIONAL cuando es imposible de romper incluso con potencia de cálculo ilimitada y que es COMPUTACIONAL cuando es muy difícil de romper incluso con potencia de cálculo ilimitada. Se dice que la ocultación (hiding) es INCONDICIONAL cuando es imposible de romper incluso con potencia de cálculo ilimitada y que es COMPUTACIONAL cuando es muy difícil de romper incluso con potencia cálculo ilimitada. Es imposible alcanzar una ocultación y un compromiso perfectos en un mismo commitment scheme.

Entre los commitment schemes clásicos se encuentran el commitment scheme de Pedersen, que consigue ocultación incondicional y compromiso computacional, o el de El Gamal que consigue ocultación computacional y compromiso incondicional.

Los switch commitments buscan combinar los commitments con compromiso perfecto y aquellos con ocultación perfecta para aprovechar de forma alternativa cada una de las “incondicionalidades”.

Por otra parte. los commitments homomórficos son aquellos que permiten realizar operaciones sobre los datos comprometidos sin necesidad de revelarlos o desencriptarlos, con la propiedad de que el resultado, una vez revelado, es idéntico al que se habría obtenido si la operación se hubiera efectuado sobre el dato desencriptado. Son útiles a la hora de externalizar información hacia entornos menos seguros, pero con mayor potencia de

(12)

6

cálculo, ya que permite realizar estos cálculos sin desencriptar la información y por tanto manteniendo la confidencialidad (o la ocultación) de dichos datos.

Además, con el objetivo de disponer de protocolos criptográficos resistentes a la potencia de cálculo de los computadores cuánticos, se han desarrollado propuestas de commitment schemes post-cuánticos. Por último, los commitments vectoriales permiten comprometerse con una secuencia ordenada de valores (vector) de manera que se puede posteriormente probar el valor en una determinada posición del vector.

1.7. Breve descripción de los otros capítulos de la memoria

La presente memoria está estructurada en 3 grandes capítulos:

Fundamentos. Definiciones y conceptos básicos:

• Fundamentos matemáticos. Se describen los conceptos matemáticos que rigen los esquemas de compromiso y que es necesario conocer para entender dichos esquemas. Se estudiará particularmente la teoría de retículos, utilizada en los commitments post-cuánticos.

• Criptografía clásica. Se describen los fundamentos básicos de seguridad a los que responde la criptografía clásica.

• Criptografía post-cuántica. Se describen los fundamentos de la criptografía cuántica y las propuestas resistentes a los computadores cuánticos, que constituyen lo que se denomina criptografía post- cuántica.

Análisis del estado del arte. Analiza el estado del arte de los commitment schemes, identificando y clasificando los esquemas de compromiso de la forma siguiente

• Commitment schemes clásicos y sus aplicaciones. Se explican las características de los commitment schemes, los casos de uso en la práctica, se presentan algunos ejemplos básicos de aplicación y se describen los commitment schemes de Pedersen y ElGamal, que son las propuestas más utilizadas.

• Commitment schemes post-cuánticos. Basándose en los fundamentos de criptografía post-cuántica y los problemas complejos asociados, explicados en el apartado de fundamentos, se presentan distintas propuestas de commitment post-cuánticos.

• Commitment schemes homomórficos. Se describe las características del cifrado homomórfico y su utilidad y se presentan varias propuestas de commitment scheme que cumplen estas propiedades.

• Commitment schemes vectoriales. Se explican las características de este tipo de commitment, los casos de aplicación y se presentan varias propuestas de commitment vectoriales.

• Commitment schemes conmutables. Se presenta la problemática a la que los commitment conmutables da solución, así como la propuesta principal de commitment conmutable y una variante de la misma.

La memoria finaliza con un capítulo dedicado a las conclusiones de los análisis presentados anteriormente, y con un glosario de términos y bibliografía.

(13)

7

2. Fundamentos.

2.1. Fundamentos matemáticos

Se presentan en este capítulo los conceptos básicos de matemáticas aplicados a la criptografía, especialmente aquellos que son de utilidad para el estudio de los esquemas de compromiso.

Los fundamentos matemáticos de la criptografía son muy extensos, por este motivo, este trabajo se limita a detallar los conceptos básicos que permitan comprender los esquemas criptográficos que se detallarán más adelante.

2.1.1. Aritmética modular y teoría de grupos

La aritmética modular es la parte de las matemáticas que permite representar los números como un conjunto finito de elementos, así como las operaciones que permiten operar con los elementos de este conjunto, asegurando que la operación de dos elementos del conjunto continuará proporcionando otro elemento del conjunto.

Dentro de la aritmética modular nos encontramos con una serie de definiciones.

• Para todo m ≥ 1 entero, se dice que los enteros a y b son congruentes módulo m si a-b es divisible por m. Se representa como a ≡ b (mod m), al número m se le denomina módulo.

• El conjunto de los enteros módulo m, para m ≥ 2, y lo denotaremos para ℤm, es el conjunto de todos los números enteros entre 0 y m – 1, es decir, ℤm = {0,1, · · ·, m – 1}.

• Denotaremos ℤm * al conjunto de los enteros módulo m que son coprimos con m. Es decir, el máximo común divisor con 9 es 1.

Ejemplos:

• El conjunto ℤ9 se identifica con el conjunto de los enteros menores que 9 esto es {0,1,2,3,4,5,6,7,8}

• El conjunto ℤ9 * se identifica con el conjunto de los enteros coprimos con 9 esto es {1,2,4,5,7,8}

• 11=2 mod 9, puesto que el resto de dividir 11 entre 9 es 2.

(14)

8

2.1.1.1. Teoría de grupos (ACTUALIZADO. CORREGIDO) Definiciones

• Un grupo es una estructura algebraica con una operación, en la que la operación definida cumple la propiedad asociativa y, además, el conjunto sobre el que está definida la operación contiene el elemento neutro y el elemento inverso de esta operación.

Ejemplo: El conjunto de números enteros con la suma es un grupo (ℤ,+)

• Un anillo es una estructura algebraica con dos operaciones en las que una de ellas presenta una estructura de grupo conmutativo; la otra operación cumple la propiedad asociativa y, además, ambas propiedades cumplen la propiedad distributiva de una respecto de la otra. Anillo con unidad es aquel que contiene el neutro con respecto al producto.

Ejemplos: El conjunto de números enteros con suma y producto: (ℤ,+,*). Se trata también de un anillo con unidad, ya que contiene el 1, que es el elemento neutro con respecto al producto.

• Se escribe ℤ /m ℤ = {0, 1, 2, . . ., m − 1} al anillo de los enteros módulo m.

Ejemplo: ℤ /9 ℤ = {0, 1, 2, . . ., 8} es el anillo de los enteros módulo 9.

• Un cuerpo es un anillo con unidad en el que cualquier elemento, salvo el elemento neutro de la suma, es invertible, esto es, para cada elemento a existe otro elemento b tal que a*b=b*a=1.

Ejemplos: (ℤ,+,*) no es un cuerpo puesto que los enteros no son invertibles respecto al producto, sin embargo (ℝ,+,*), si será un cuerpo.

• Para identificar los elementos invertibles de un cuerpo, se utiliza *.

Ejemplo: El conjunto ℤ9 * es el conjunto de los elementos invertibles del cuerpo, esto es {1,2,4,5,7,8}. Todos los elementos de este cuerpo tienen por tanto inverso mod 9.

1*1=1mod9 2*5=10=1mod9 4*7=28=1mod9 5*2=10=1mod9 7*4=28=1mod9 8*8=64=1mod9

(15)

9

Otros conceptos de teoría de números Orden:

• El número de elementos de un grupo con un número finito de elementos se denomina orden del grupo |G|.

Ejemplo: El orden del conjunto ℤ9 es 9 ya que contiene los elementos {0,1,2,3,4,5,6,7,8}.

• El orden de un elemento de un grupo G es el entero positivo más pequeño d tal que ad=1. El orden de un elemento en un grupo es un divisor del orden del grupo,

Ejemplo: El orden del elemento 2 en ℤ9 es 6 ya que 26=64=1mod9

• Un grupo se denomina cíclico si puede ser generado a partir de las potencias de un solo elemento del grupo, que se denomina generador (o primitiva) <g>. Todo grupo de orden primo es cíclico.

Ejemplo= 3 es un generador del grupo ℤ7 ya que 31=3

32=9=2mod 7 33=27=6 mod7 34=81=4 mod 7 35=254=5 mod 7 36=729=1mod7

Función ∅ de Euler

• La función ∅ de Euler de un número p en un grupo es el cardinal del conjunto de números coprimos con este número en dicho grupo.

Ejemplo: La función ∅ del número 10 es 4 puesto que en el conjunto ℤ10*

contiene los elementos {1,3,7,9}.

• Por tanto, para Zp, si p es un número primo, el cardinal será p-1, luego la función fi de Euler de ℤp=p-1=orden del grupo ℤp.

Ejemplo: La función ∅ del número 7 es 6

(16)

10

• De la afirmación anterior se deduce que, para un número n cualquiera, su función fi de Euler se puede calcular descomponiendo en factores primos y calculando el producto del ∅ de cada uno de estos factores primos.

Si n=p*q (para p, q primos), entonces ∅(𝐧) = ∅(𝐩) ∗ ∅(𝐪) = (𝐩 − 𝟏)(𝐪 − 𝟏) Ejemplo: La función ∅ del número 10 es 4.

10=5 * 2, por lo que ∅(𝟏𝟎) = ∅(𝟓) ∗ ∅(𝟐) = (𝟒)(𝟏) = 𝟒

2.1.2. Logaritmo discreto y otros conceptos asimilados

Para un elemento h de un grupo cíclico G con generador g, el logaritmo discreto se define como el entero perteneciente a Zn tal que h=gx.

• Problema del logaritmo discreto (DL): para un grupo <g> es difícil calcular x tal que dado un número del grupo gx.

Ejemplo: tenemos el siguiente caso 3k ≡ 13 (mod 17) para k. Existen infinitos valores de k que dan solución a esta ecuación. K=4 pero también k=4+16n para cualquier n entero, puesto que 316=1mod 17. Por tanto, es computacionalmente muy difícil encontrar el k correcto si únicamente se dispone de los otros valores.

• Problema de Diffie Hellmann (DH): para un grupo <g> es difícil calcular gxy dados dos números del grupo gx y gy

Ejemplo, si para el grupo ℤ7 tenemos los elementos 33=6 y 34=4, por tanto, sólo con los elementos 6 y 4, no es evidente calcular el logaritmo discreto, por lo que averiguar 312 no es sencillo. Un atacante que viera pasar los valores 6 y 4 no podría llegar con facilidad a calcular 312

• Problema decisional Diffie Hellmann (DDH): para un grupo <g> es difícil distinguir gxy de cualquier otro elemento del grupo gz dados gx y gy. Para poder resolver este problema.

Ejemplo, si para el grupo ℤ7 tenemos los elementos 33=6 y 34=4, y 312 =1 no es evidente identificar que este último proviene del producto de los anteriores, ya que la probabilidad de obtener cualquier número del cuerpo es la misma (distribución uniforme).

(17)

11

2.1.3. Criptografía de curvas elípticas

La criptografía de curvas elípticas se caracteriza por su eficiencia, rapidez de cálculo, poca exigencia en capacidad de computación y por asegurar un buen nivel de seguridad con un tamaño pequeño de clave.

Una curva elíptica es una curva plana definida por una ecuación de la forma:

y2=x3+ax+b tal que a, b pertenecen a ℤp y cumplen que 4a3+27b2 ≠0.

Este valor 4a3+27b2 se denomina el discriminante de la curva y el hecho de que sea diferente de 0 quiere decir que la curva no tiene vértices ni se cruza consigo misma.

A estos puntos de le añade un punto en el «infinito» o 𝜃.

Ejemplos gráficos de curvas elípticas sobre los números reales

Figura 2-1. Ejemplos de curvas elípticas (Wikipedia)

Esta representación permite comprobar que las curvas son simétricas con respecto al eje de abscisas, lo que tiene sentido ya que para obtener “y” es necesario realizar una raíz cuadrada.

A efectos criptográficos se trabaja con curvas elípticas sobre cuerpos finitos, por ejemplo ℤp para p primo. En este caso la representación gráfica no permite ver claramente la forma de la curva, de ahí que se haya realizado un ejemplo gráfico usando los números reales.

(18)

12

Las sumas en las curvas elípticas siguen las reglas siguientes:

• Suma del punto en el infinito consigo mismo 𝜃 + 𝜃 = 𝜃.

• Suma del punto en el infinito con otro punto de la curva:

(x, y) + 𝜃 = 𝜃 + (x, y) = (x, y)

• Suma de dos puntos con la misma x y la y igual pero de signos opuestos.

(x, y) + (x,−y) = 𝜃

• Suma de dos puntos diferentes, que se calcula trazando una recta entre los dos puntos, observando el punto en que dicha recta corta de nuevo la curva y calculando el punto simétrico con respecto al eje de abscisas de este punto, como se indica en la siguiente figura [7].

Figura 2-2. Suma de puntos en curvas elípticas

• Suma de un punto consigo mismo (o multiplicación escalar n*P), que se calcula haciendo la tangente a la curva en este punto y buscando el punto simétrico al punto donde esta tangente ha cortado la curva, como se indica en la siguiente figura [7].

Figura 2-3. Multiplicación escalar en curvas elípticas

(19)

13

2.2. Criptografía clásica

2.2.1. Conceptos criptográficos básicos

Criptografía, derivado del griego (κρύπτos (kryptós), «secreto», y γραφή (graphé), «grafo» escritura) significa 'escritura secreta'.

La criptografía parte de un mensaje no cifrado o texto en claro y obtiene el texto cifrado aplicando un algoritmo de cifrado determinado, que es una o varias funciones matemáticas utilizadas en el proceso de cifrado y descifrado.

Las funciones principales que garantiza la criptografía son:

• Confidencialidad: garantizar que nadie puede leer el contenido del mensaje excepto el destinatario previsto.

• Autentificación: proceso de demostrar la propia identidad.

• Integridad: el receptor sabe que el mensaje recibido no se ha alterado de ninguna forma respecto del original.

• No repudio: mecanismo para asegurar que el emisor no puede rechazar el haber enviado el mensaje.

• Intercambio de claves: método mediante el cual se comparten claves criptográficas entre el emisor y el receptor.

Típicamente, un esquema criptográfico consiste en un par de algoritmos:

1. Cifrado: utilizado por el emisor para encriptar el mensaje a enviar.

2. Descifrado: utilizado por el receptor, para desencriptar el mensaje recibido.

Para enviar un mensaje, el emisor aplicará el algoritmo de encriptación obteniendo el mensaje cifrado que enviará al receptor usando el canal inseguro. El receptor aplicará el protocolo de descifrado para recuperar el mensaje original.

Para que esta comunicación sea posible, es necesario que ambos conozcan una información que no sea conocida por un atacante. Esta información adicional es lo que se conoce como la clave de cifrado o descifrado.

Tanto el cifrado como el descifrado tienen que ser sencillos de calcular si se tienen las claves, y difíciles de calcular (porque, desgraciadamente, no podrá ser imposible en prácticamente todos los casos) si las claves son desconocidas.

(20)

14

2.2.2. Breve historia de la criptografía.

Los orígenes de la criptografía de remontan al pasado lejano, pero se presume que la necesidad de una escritura secreta apareció en el momento en el que las personas empezaron a intercambiarse información escrita, en los albores de la civilización.

Existen registro de algoritmos de cifrado desde la época de los romanos (cifrado César), y se sabe que mucho tiempo después se siguieron utilizando cifrado de sustitución y de transposición.

El criptoanálisis, esto es el arte de descifrar mensaje sin conocer la clave, es más reciente. Las primeras referencias se remontan a los siglos XIV y XV de nuestra era, en libros árabes, que describen no sólo el cifrado de sustitución, sino también el cifrado homomórfico en el que un mensaje en claro podría ser sustituido por varios mensajes cifrados. También describen los primeros métodos de criptoanálisis, como la cuenta de frecuencia en las letreas y la verosimilitud de que determinadas letras estén al lado de otras en función de la lengua del mensaje en claro.

En los siglos XV y XVI aparecieron los algoritmos de cifrado poli alfabéticos (pe Vigenere) con la idea básica de que cada letra del texto claro se cifraba utilizando un cifrado de sustitución diferente, utilizando diferentes alfabetos de cifrado de acuerdo con una clave que, si era razonablemente larga, tardaría bastante tiempo en repetirse.

No fue hasta el siglo XIX que se desarrollaron métodos estadísticos para resolver este tipo de problemas. Y durante la segunda guerra mundial, las máquinas de cifrado, que consistían en cifradores poli alfabéticos extremadamente complicados, jugaron un rol importante. De hecho, el cifrado y la codificación se han usado ampliamente por razones políticas y militares desde el siglo XVII.

Con la expansión de las telecomunicaciones, la facilidad de poder comunicarse inmediatamente puso de manifiesto que estas comunicaciones también podían ser escuchadas, lo que provocó la aparición de máquinas de cifrado, como por ejemplo la máquina Enigma, que era un cifrador poli alfabético extremadamente complicado.

En la era actual, la criptografía ha evolucionado hasta permitir el uso de las criptomonedas o el blockchain, destinado a revolucionar el paradigma de las comunicaciones en los próximos años.

(21)

15

2.2.3. Cifrado simétrico y asimétrico

Los criptosistemas de clave simétrica o compartida son aquellos en los cuales el emisor y el receptor comparten una misma clave, que es la que utilizan para cifrar y descifrar mensajes.

Es decir, en el cifrado de clave compartida, la clave que se utiliza para cifrar es la misma que se usa para descifrar y, por lo tanto, en cualquier momento, el emisor puede pasar a hacer de receptor y a la inversa, utilizando siempre las mismas claves.

El funcionamiento se explica en la siguiente figura. Cuando Alice quiere enviar a Bob un mensaje cifrado, deben intercambiarse una clave. El mensaje se cifra y descifra con dicha clave.

Figura 2-4. Cifrado simétrico https://www.ssl2buy.com/

La criptografía de clave simétrica presenta algunas limitaciones:

• La distribución de claves se tiene que realizar sobre un canal seguro.

Como ambos usuarios comparten la misma clave y esta clave puede ser utilizada directamente para cifrar y descifrar mensajes, ésta no puede ser transmitida por un canal inseguro, puesto que entonces un atacante que estuviera escuchando el canal podría capturarla y utilizarla.

• La gestión de claves se complica cuando el número de usuarios crece.

Si hay n usuarios y cada par de usuarios necesita compartir una clave, habrá que gestionar n(n – 1)

2 claves, es decir, el número de claves de un sistema crece cuadráticamente con el número de usuarios de este. Así pues, aparecen problemas de escalabilidad a la hora de gestionar todas estas claves.

• No se dispone de la propiedad de no repudio. Decimos que un criptosistema ofrece la propiedad de no repudio si el autor de un mensaje no podrá negar posteriormente su autoría. En criptografía simétrica, como hay más de un usuario que comparte una misma clave, no se puede garantizar que un usuario en concreto haya realizado una

(22)

16

acción dada, puesto que siempre habrá algún otro usuario que la podría haber realizado.

Los sistemas de clave simétrica tienen por otra parte varias ventajas, como la rapidez de ejecución y consumo de recursos, el nivel de seguridad (que explicaremos más adelante, es igual al tamaño en bits de la clave), y que han demostrado ser más resistentes (se explicará más adelante también), ante ataques con ordenadores cuánticos.

La criptografía de clave pública o asimétrica es aquella en la que cada usuario posee un par de claves, una clave pública, conocida por todos, y una clave privada, conocida solamente por él mismo. Para enviarle una información que solamente él podrá descifrar, basta con cifrarla con su clave pública.

El funcionamiento se detalla en el siguiente esquema. Cuando Alice quiere enviar un mensaje a Bob, encriptará el mensaje con la clave pública de Bob (conocida por todos). El mensaje sólo podrá descifrarse con la clave privada de Bob, que sólo él conoce.

Figura 2-5. Cifrado asimétrico

La criptografía de clave pública o asimétrica permite superar las limitaciones de la criptografía de clave simétrica.

• Por un lado, la criptografía de clave pública proporciona métodos de establecimiento de clave, es decir, métodos para conseguir que dos usuarios que se comunican por un canal inseguro puedan crear claves que les permitan comunicarse de manera segura.

• Por otro lado, la criptografía de clave pública permite que un conjunto de usuarios se comunique dos a dos de forma segura usando únicamente un par de claves para cada usuario. Así, el número de claves de un sistema de clave pública crece linealmente con el número de usuarios de este sistema (en contraposición al crecimiento cuadrático que presentan los esquemas de criptografía simétrica).

• Finalmente, por medio de las firmas digitales, la criptografía de clave pública nos ofrece la propiedad de no repudio.

(23)

17

Más allá de las propiedades que nos ofrece la criptografía de clave pública, esta también difiere de la criptografía simétrica en el tamaño de las claves y las necesidades computacionales de sus algoritmos. Como principal limitación es que para que un algoritmo de clave simétrica pueda garantizar el mismo nivel de seguridad que un algoritmo de clave pública es necesario que el tamaño de la clave sea mucho más largo. Por otra parte, los algoritmos de clave simétrica son computacionalmente más rápidos y eficientes.

Para resolver este problema, se utiliza el sobre digital, mecanismo donde la criptografía de clave simétrica se utiliza para enviar la clave compartida, una vez la clave compartida enviada la comunicación se cifrará usando criptografía de clave simétrica.

La siguiente figura presenta el funcionamiento del sobre digital:

Alice y Bob van a usar una clave simétrica para cifrar los datos. En primer lugar, utilizan un algoritmo de clave pública para intercambiar la clave secreta.

Para ello intercambiarla, Alice cifra esa clave simétrica con la clave pública de Bob. Cuando Bob la descifre habrán compartido la clave de forma segura y podrán utilizarla para cifrar el resto de la comunicación.

Figura 2-6. Sobre digital https://forum.huawei.com/

Un ejemplo de protocolo de clave simétrica es AES, y uno de clave pública es RSA. RSA se usa para cifrar pequeñas cantidades de datos y para firmas digitales. Siguiendo el ejemplo anterior se podría utilizar RSA para cifrar la clave AES que se usará a continuación.

(24)

18

2.2.4. Funciones hash y el modelo de oráculo aleatorio 2.1.1.2. Funciones unidireccionales

Funciones unidireccionales: las funciones unidireccionales son aquellas funciones que se pueden computar fácilmente en un sentido, pero muy difícilmente o imposible, en sentido inverso. Esto es, dado x, calcular f(x) no reviste una dificultad particular, pero dado f(x), es computacionalmente muy difícil obtener x. Este concepto es importante en criptografía, teniendo en cuenta que la seguridad de los algoritmos o protocolos criptográficos se basa en la dificultad existente para romperlos.

Ejemplo: La función Hash, que realiza el resumen de unos datos de entrada, se considera unidireccional. El logaritmo discreto es otra función que tiene esa consideración.

2.2.4.1. Funciones hash criptográficas

Las funciones hash criptográficas son aquellas que toman una entrada y proporcionan una salida cifrada y de menor longitud.

Propiedades:

• Unidireccionales, tal y como han sido definidas en el punto anterior, y por tanto, resistentes a la preimagen (dado H(x) es muy difícil computar x).

• Resistentes a colisiones débiles, de manera que dado x y H(x) es muy difícil encontrar x´ diferente a x tal que H(x)=H(x´)

• Resistentes a colisiones fuertes: es difícil encontrar un par x y x´

diferentes tales que h(x)=H(x´)

• Deterministas: un mismo mensaje x debe obtener siempre el mismo H(x)

• Bajo coste: fáciles de computar.

Tipos de funciones hash criptográficas

• MAC, código de autenticación de mensajes: El objetivo de estas funciones es comprobar, sin usar ningún mecanismo adicional, la autenticidad del origen de un mensaje asegurando además la integridad de dicho mensaje. Son funciones hash con clave, la cual mantienen en secreto tanto el que se quiere autenticar como el que verifica la autenticación. Para que sea resistente frente ataques es necesario que la función que comprime la entrada sea resistente a la computación de nuevos hashes, lo que implica que, a partir de un rango de pares conocidos (xi, H(xi)) no se puede computar H(y) para un nuevo dato sin que la clave sea conocida.

(25)

19

El funcionamiento se explica en la siguiente figura: Cuando el emisor quiere enviar un mensaje, calcula un tag (etiqueta) de éste con una clave (MAC) y envía el mensaje y el tag al receptor. El receptor utilizará la misma función sobre el mensaje recibido para comprobar que el tag obtenido es el mismo. En ese caso, el mensaje es auténtico.

Figura 2-7. MAC

https://www.computertechreviews.com/definition/mac/

• MDC, código de detección de modificaciones. El objetivo de estas funciones es poder detectar si un mensaje ha sido modificado o no. Por tanto, permiten la verificación de la integridad del mensaje. Su funcionamiento consiste en calcular el valor hash del mensaje y que este sirva como prueba para una posible verificación de si el mensaje ha sido modificado. Deben ser resistentes a las colisiones y no utilizan clave. Es equivalente al anterior pero no utiliza clave, por lo que solamente se verifica la integridad.

2.1.1.3. Modelo del oráculo aleatorio

El modelo de oráculo aleatorio (random oracle model) es una forma de proporcionar argumentos de seguridad para protocolos criptográficos suponiendo que las funciones hash criptográficas, se comportan como funciones aleatorias, de manera a considerarlos como cajas negras que responden a cada consulta con una respuesta realmente aleatoria elegida uniformemente en su rango de salida (funciones aleatorias perfectas).

A este tipo de oráculos se les llama oráculos aleatorios. Fue diseñado para mostrar la dificultad de romper algoritmos criptográficos modelizando ciertas partes del cifrador (normalmente la función hash) como funciones aleatorias.

Se utilizan por ejemplo en los esquemas de relleno de algoritmos como RSA OAEP o PSS, y son la base de determinados commitment schemes.

(26)

20

2.1.1.4. Generadores pseudoaleatorios

Los generadores pseudo aleatorios juegan también un rol fundamental en la construcción de los esquemas criptográficos.

Consisten en algoritmos determinísticos que expanden información. Esto es, parten de una información de longitud determinada y la convierten en una secuencia de la longitud deseada (superior a la inicial), de forma aparentemente aleatoria.

Son también la base de determinados commitment schemes.

2.2.5. Pruebas de conocimiento nulo

Una prueba de conocimiento nulo es una manera de probar que se conoce una información sin necesidad de facilitar dicha información. Generalmente se realizan varias rondas de preguntas y respuestas entre emisor y receptor, de manera que la persona que posee el conocimiento solo puede responder correctamente en todas las ocasiones si realmente tiene la información solicitada. El objetivo no es conocer la información que sino obtener el valor

“verdadero” o “falso” relativo al conocimiento de la información que supuestamente se conoce.

Las pruebas de conocimiento nulo se realizan entre dos roles, el probador, que pretende probar un determinado conocimiento, y el verificador, que pondrá a prueba al probador para averiguar si realmente dispone de dicho conocimiento.

Se denomina conocimiento nulo porque el verificador no sabe nada del conocimiento que posee el probador, que tiene que convencer al verificador de que posee el conocimiento sin darle más información que la respuesta a las preguntas realizadas.

Un ejemplo clásico de prueba de conocimiento nulo es el siguiente: Se denomina la “cueva de Ali Babá”. Alice ha descubierto la clave de una puerta secreta que se utiliza para abrir una puerta mágica en el interior de una cueva de recorrido circular. Esta puerta permite salir por un camino diferente al de la entrada. La imagen de la cueva es la siguiente:

Figura 2-8 prueba conocimiento nulo https://www.techiexpert.com

(27)

21

Alice debe probar a Bob que conoce la clave de la puerta sin indicarle dicha clave, para ello. Alice entra en la cueva y se queda del lado de la puerta. Bob le indicará por qué camino debe salir.

Figura 2-9. Prueba de conocimiento nulo

Si Alice conoce la clave podrá salir por el camino que le indique Bob, si no la conoce, solo podrá salir cuando el camino indicado por Bob sea el B.

Repitiendo la pregunta varias veces (en este caso 2 A y B), y contando el número de veces que el resultado es correcto, Bob puede saber si Alice tiene la clave o no, sin necesidad de que Alice le dé la clave.

Un sistema de conocimiento nulo debe, por tanto, tener las siguientes características:

• Completitud: El verificador debe aceptar todas las respuestas del probador como válidas, cuando ambos ejecutan el protocolo correctamente.

• Solvencia: un falso probador puede engañar al verificador con una probabilidad mínima.

• Conocimiento nulo: el conocimiento del verificador acerca del probador será el mismo antes y después de realizarse el protocolo, la única información que se obtendrá es si el conocimiento es verdadero o falso.

El ejemplo indicado en las figuras 2.8 y 2.9 cumple estas tres características.

Completitud, ya que, si Alice conoce la clave, siempre podrá salir por el camino que le indica Bob. La probabilidad de fallo es poco significativa. Solvencia, puesto que, si Alice no conoce la clave, solo podrá salir por la puerta indicada en una probabilidad del 50%. Al repetirse la prueba, esta probabilidad va disminuyendo hasta hacerse mínima. Conocimiento nulo, puesto que Víctor no averigua la clave, pero llega a la conclusión de que Alice la conoce puesto que siempre sale por el camino indicado por él.

(28)

22

Otra posible prueba de conocimiento nulo la verificación de la identidad del probador. Si el probador es quien dice ser, estará en posesión de su clave privada. El probador debe ser capaz de probar que es él mismo sin facilitar dicha clave privada y sin dar información sobre la misma. En el punto 3.1.2 de este documento se realizará un ejemplo de este tipo de prueba de conocimiento nulo y de cómo los commitment schemes ayudan a realizarlas.

2.2.6. Seguridad de los protocolos criptográficos

2.2.6.1. Seguridad de los protocolos criptográficos

El nivel de seguridad es un modo de evaluar la fortaleza de un algoritmo criptográfico con un tamaño de claves concreto, y poder así comparar la seguridad ofrecida por los diferentes algoritmos.

Evaluar la seguridad de un esquema criptográfico necesita definir en primer lugar el concepto de seguridad.

Existen dos aproximaciones

1. Teórica: Basada en la cantidad de información del mensaje en claro que se puede obtener analizando el mensaje cifrado. Un esquema será inseguro si se puede obtener información del texto en claro a partir del mensaje cifrado. Teóricamente, para alcanzar un nivel de seguridad perfecto, la longitud de la clave debería ser como mínimo la misma que la del mensaje en claro. Esta suposición limita enormemente la utilización de este criterio para definir la seguridad del esquema. Necesita además de un mecanismo seguro para compartir dicha clave.

2. Moderna: no importa la cantidad de información del mensaje en claro que se puede extraer del mensaje cifrado, sino en qué medida es difícil extraer dicha información. Se denomina complejidad computacional.

Basándonos en esta segunda definición. el nivel de seguridad de un algoritmo criptográfico es el número de pasos que necesita el mejor ataque conocido para descubrir la clave.

Diremos que un algoritmo proporciona una seguridad de n bits cuando el mejor ataque necesita 2n pasos, siendo este nivel de seguridad variable, en el sentido de que pueden aparecer nuevos ataques que afectan a su nivel de seguridad.

Cuanto mayor es el tamaño de la clave utilizada, más grande es la seguridad que nos ofrece. Por ejemplo, para obtener un mismo nivel de seguridad en un criptosistema de clave pública que en uno de clave simétrica, será necesario que la clave del primero sea mucho más grande que la del segundo. Esto, unido al hecho de que los algoritmos de clave pública requieren cálculos computacionalmente intensivos, hace que en general los algoritmos de clave pública sean más lentos que los de clave simétrica. De ahí la utilidad del sobre digital, presentado en el punto 2.2.3.

(29)

23

Las curvas elípticas son también una solución a este problema, ya que permiten el mismo nivel de seguridad de los esquemas criptográficos de clave pública, con tamaños de clave más pequeños.

El anexo 7.1 presenta la teoría de la complejidad basado en máquinas de Turing.

2.2.6.2. Problemas matemáticos complejos.

En el apartado anterior hemos indicado que se mide la seguridad de un protocolo criptográfico basándose en la complejidad computacional de dicho protocolo, en lugar de utilizar un concepto teórico de la seguridad.

Para ello, se han definido lo que se identifica como problemas matemáticos difíciles, entre los cuales se encuentran los siguientes.

2.2.6.2.1. Problema de la factorización de números enteros.

De acuerdo con el teorema fundamental de la aritmética, todo número entero es factorizable en un producto de números primos. Este producto de números primos es único.

La dificultad de este cálculo es la siguiente:

• Si tenemos dos números primos p y q, es muy fácil calcular su producto n = p · q.

• Sin embargo, dado un valor n que sabemos que es producto de dos primos, es muy difícil encontrar cuáles son estos dos primos, es decir, factorizarlos, en el supuesto de que n sea bastante grande.

La dificultad en la factorización de enteros de tamaño muy grande es la base de la seguridad del criptosistema RSA, cuyo algoritmo se describe a continuación:

Algoritmo de generación de claves RSA 1) Se eligen dos primos aleatorios p y q.

2) Se calcula n = p * q.

3) Se calcula ϕ(n) = (p – 1) * (q – 1).

4) Se selecciona un exponente público e >1 y < que ϕ(n)) tal que mcd (e, ϕ(n)) =1.

5) Se calcula el exponente privado d tal que de = 1 mod ϕ(n).

6) La clave pública kpub es el par (n, e), mientras que la clave privada kpriv es el valor d. Los valores ϕ(n), p y q también son valores secretos que sólo conoce el propietario de la clave privada.

(30)

24

La dificultad de calcular p y q sabiendo n es a base de la complejidad de algoritmo.

Ejemplo:

Se seleccionan los números primos p=17 y q=11.

Se calcula n=pq=187 ϕ(187) = (16) * (10) =160

Se busca e coprimo con 160, por ejemplo, e=7.

Se calcula tal que d7 = 1 mod ϕ(n), por ejemplo, d=23 La clave pública será (e,n)= (7,187)

La clave privada será d=23, que también conoce los valores 17,11 y 160.

Algoritmo de cifrado RSA

A partir de un mensaje en claro m y la clave pública del destinatario kpub = (n,e), se calcula el mensaje cifrado c:

c = me mod n Ejemplo:

Para cifrar el mensaje m=145, con los parámetros del ejemplo anterior, se realiza c=1457mod187=172.

Algoritmo de descifrado RSA

A partir de un mensaje en cifrado c y la clave privada del destinatario kpriv = (d), se recupera el texto en claro m:

m = cd mod n Ejemplo:

Para descifrar el mensaje del ejemplo anterior se realizará m=17223 mod 187=145

2.2.6.2.2. Problema del logaritmo discreto.

Como se ha indicado en el punto 2.1.1, el grupo de los enteros modulo p, Zp con p primo, es un grupo multiplicativo cíclico.

Dados dos elementos a y b de Zp, es muy sencillo calcular ab mod p. Pero, dado z perteneciente a Zp, es muy complicado determinar los números x e y cuya potencia modulo p es igual a z, es computacionalmente muy complicado.

Este cálculo es el equivalente a calcular el logaritmo de z en base x, pero restringido a los enteros módulo p. Por eso, este problema se conoce como problema del logaritmo discreto.

El problema del logaritmo discreto es la base de la seguridad de diferentes esquemas y protocolos criptográficos, los más conocidos de los cuales son el intercambio de claves de Diffie y Hellman y el criptosistema de El Gamal.

(31)

25

Algoritmo de generación de claves El Gamal

1) Se elige un primo p y un elemento a de orden q.

2) Se elige un valor aleatorio d = kpriv perteneciente a [2, …,p – 2] y se calcula b = ad(mod p)

3) La clave pública es kpub = (p,a,b) y la clave privada es el valor kpriv = d.

La dificultad de obtener d a partir de a y b módulo p es la base de la complejidad del algoritmo.

Ejemplo: elegimos p=11 y un elemento de Z11 2. Escogemos d=8 como clave secreta, y calculamos b=28 mod 11= 3

La clave privada será d=8 y la clave pública será (2,3) Algoritmo de cifrado El Gamal

A partir de un mensaje en claro m y la clave pública del destinatario kpub = (p,a,b), se calcula el mensaje cifrado c:

1) Se elige un número aleatorio v y se calcula c1 = ay mod p.

2) Se recupera la clave pública del receptor y se calcula c2 = m by mod p.

1) Se envía el mensaje cifrado (c1, c2).

Ejemplo: con los parámetros del ejemplo anterior, ciframos el mensaje m=7.

Se elige aleatoriamente el valor v=4 y se calcula c1=24 mod 11=5 y c2

=7*3^4mod 11=6. El mensaje cifrado será (5,6) Algoritmo de descifrado El Gamal

A partir de un mensaje cifrado (c1, c2) y la clave privada del destinatario kpriv, se recupera el texto en claro m:

m =c2/c1d mod p

Ejemplo: con los datos del ejemplo anterior se calcula m=6/5^8mod 11=7

2.2.6.2.3. Problema del logaritmo discreto en curvas elípticas.

La Criptografía de Curva Elíptica (del inglés: Elliptic curve cryptography, ECC) es una variante de la criptografía asimétrica basada en las matemáticas de las curvas elípticas.

Entre sus principales ventajas encontramos que la criptografía de curvas elípticas ofrece el mismo nivel de seguridad que la criptografía de clave pública tradicional, pero con tamaños de clave más pequeñas. De esta forma, se consigue también que las operaciones criptográficas sean más rápidas de ejecutar y requieran de menos recursos computacionales, haciéndolas posibles en dispositivos con recursos limitados.

(32)

26

Así, por ejemplo, el AES (simétrico) con un tamaño de clave de 128 bits ofrece un nivel de seguridad de 128 bits. Para conseguir este mismo nivel de seguridad utilizando RSA, será necesario utilizar una clave de 3072 bits. En cambio, el mismo nivel de seguridad requiere sólo una clave de 256 bits para ECDSA (protocolo de intercambio de claves basado en curvas elípticas).

Además, el crecimiento de tamaño de la clave en función del nivel de seguridad es más rápido en algoritmos de clave pública que en algoritmos de curvas elípticas.

Actualmente su uso está extendido en protocolos como IPSEC o TLS, también se utiliza en los esquemas de firma digital de algunas criptomonedas, como bitcoin.

Los esquemas criptográficos basado en curvas elípticas se basan en unos parámetros determinados, que determinarán la selección de la curva:

• Número primo p que especifica el orden del cuerpo sobre el que se define la curva

• Los coeficientes a y b de la curva

• El generador del grupo cíclico para construir el problema del logaritmo discreto.

• El cofactor h=#E/n donde #E es el número de puntos de la curva. #E deberá ser diferente de p y divisible por un número primo grande.

Una vez seleccionada la curva o generada aleatoriamente, proceso no trivial, la aplicación del problema del logaritmo discreto se realiza de la siguiente manera:

Dada una curva elíptica con orden #E con un elemento G y otro elemento T, el problema del logaritmo discreto sobre curvas elípticas consiste en encontrar un entero i tal que

𝑖 ∗ 𝐺 = 𝑇

Encontrar este número se considera es equivalente a calcular el logaritmo discreto, y como hacer dentro del conjunto de números de la curva es más complicado que dentro de un cuerpo finito, la longitud de la clave necesaria es inferior.

El problema del logaritmo discreto sobre curvas elípticas (PLDCE) se considera más difícil de resolver que el correspondiente a los cuerpos finitos (PLD). De esta manera, las longitudes de claves en criptografía de curva elíptica pueden ser más cortas con un nivel de seguridad comparable, teniendo en cuenta la definición de nivel de seguridad como la potencia necesaria para romper el algoritmo.

(33)

27

Ejemplo: Algoritmo de Diffie-Hellman sobre curvas elípticas.

Inicialización: selección de los parámetros de dominio: los elementos que definen la curva elíptica E, que serán el número primo p y los coeficientes a y b del discriminante, que pertenecerán a Zp y un elemento G = (xg; yg) de la curva, con orden n.

El algoritmo de intercambio de claves de Diffie-Hellman entre dos usuarios A y B, se basa en la multiplicación escalar de números en curvas elípticas (esto es, la multiplicación de un número por sí mismo un número determinado de veces).

Consta de los siguientes pasos:

1) A elige un valor aleatorio kpriva = a 𝜖 (1,…, n) y calcula kpubA = a*G = (xa; ya).

2) B elige un valor aleatorio kprivB = b 𝜖 (1,…, n) y calcula kpubB = b *G = (xb; yb).

3) A y B intercambian sus valores kpubB, es decir, A envía a B el valor kpubA y B envía a el valor kpubB.

4) A calcula la clave compartida kAB = kpubB * kpriva = (xAB; yAB) = (b*G) *a.

5) B calcula la clave compartida kAB = kpubA * kprivB = (xAB; yAB) =(a*G) *b.

Aunque las claves públicas son conocidas, averiguar a partir de ellas las claves privadas a y b se considera un problema computacionalmente difícil.

Ejemplo 2: Intercambio de claves Diffie-Hellmann sobre curvas elípticas con datos numéricos.

Alice y Bob deciden utilizar el intercambio de claves Diffie-Hellmann sobre curvas elípticas para intercambiarse una clave.

Para ello se ponen de acuerdo en p = 3851, E: y 2 = x3 + 324x + 1287, P=

(920, 303) ∈ a la curva.

Cada uno de ellos elige un valor secreto nA = 1194 y nB = 1759. Utilizando los cálculos explicados en el punto 2.1.3 hacen el siguiente producto (suma de puntos consigo mismos en curva elíptica).

QA = 1194P = (2067, 2178), que envía a Bob QB = 1759P = (3684, 3125), que envía a Alice

Alice hace el cálculo nAQB = 1194(3684, 3125) = (3347, 1242) Y Bob hace el cálculo nBQA = 1759(2067, 2178) = (3347, 1242) Obteniendo la clave simétrica compartida.

Un atacante que viera los datos compartidos QA y AB no podría obtener de ellos los valores de nA y nB a causa de la dificultad de cálculo del logaritmo discreto sobre curvas elípticas.

(34)

28

2.3. Criptografía post-cuántica.

2.3.1. Introducción

La criptografía es una herramienta básica para proteger la seguridad de los datos que se transmiten por medio de canales de comunicación inseguros.

Con la llegada de los computadores cuánticos, como el que se puede observar en la figura siguiente, los algoritmos criptográficos más utilizados en la actualidad (RSA, DH o ECC) están en riesgo, ya que existen algoritmos que ejecutados en ordenadores cuánticos pueden romperlos.

En el caso de los algoritmos de clave simétrica, la existencia de algoritmos cuánticos implica que deberán doblar el tamaño de sus claves si desean mantener el mismo nivel de seguridad.

Figura 2-10. Computador cuántico

venturebeat.com

La razón principal es que los algoritmos de criptografía de clave pública clásicos se basan en la dificultad de resolver tres problemas matemáticos complejos que se han explicado en el punto 2.2.6.2 de este documento: la factorización de enteros, el logaritmo discreto y el logaritmo discreto sobre curvas elípticas. Estos problemas, sin embargo, dejarían de ser difíciles si dispusiéramos de un ordenador cuántico de suficiente capacidad para utilizar algoritmos como el algoritmo de Shor o el algoritmo de Grover, que describiremos más adelante en este documento.

Uno de los principales riesgos de los ataques criptográficos con ordenadores cuánticos, además de la rotura de mecanismos de cifrados clásicos como RSA o El Gamal, es el descifrado de información antigua almacenada, que había sido cifrada con protocolos criptográficos clásicos, ya que esta información podría descifrarse sin dificultad.

(35)

29

El impacto de estos algoritmos afecta a numerosos casos de uso actuales, como el blockchain, cuya seguridad se basa en la seguridad de la resolución del problema del logaritmo discreto, en la factorización y en el uso de funciones hash. La rápida progresión de los computadores cuánticos ha abierto la posibilidad de realizar ataques que obligan a rediseñar blockchain utilizando criptosistemas que se consideran resistentes frente a ataques cuánticos.

Otro ejemplo de área en riesgo con la emergencia de la computación cuántica es el Internet of Things (IoT). De hecho, el 57% de los retos de esta tecnología están relacionados con la seguridad. Los criptosistemas que utilizan son vulnerables a los ataques con tecnología cuántica. Además, la posibilidad de aumentar el nivel de seguridad aumentando el tamaño de la clave no es una solución para estos dispositivos, ya que tienen poco espacio de almacenamiento y un consumo de energía limitado, lo que lo hace incompatible con el uso de claves larga. Todo esto convierte al IoT es muy sensible ante ataques con computadores cuánticos.

Otro ejemplo es el impacto sobre el mundo de las comunicaciones, influenciando la tecnología móvil de banda ancha 5G, que está pasando de usar técnicas de cifrado simétricas a criptografía de clave publica con PKI para hacerse más resistente ante ataques con computación cuántica.

Para solucionar este problema, hay todo un conjunto de familias de algoritmos de criptografía que se basan en otros problemas matemáticos, que se consideran difíciles de resolver tanto en ordenadores clásicos como en ordenadores cuánticos. A todos estos algoritmos se les denomina criptografía post-cuántica. Ejemplos de estas familias son la criptografía basada en retículos o en ecuaciones cuadráticas multivariante, que explicaremos más adelante.

2.3.2. Algoritmos diseñados para computadores cuánticos 2.3.2.1. Algoritmo de Shor

El algoritmo de Shor es un algoritmo cuántico que permite descomponer un número entero en factores.

El algoritmo de Shor es un algoritmo probabilístico, esto es da la factorización del número con una determinada probabilidad de acierto, la probabilidad de acierto aumenta a medida que aumentan las iteraciones del algoritmo. Consta de dos fases, una para encontrar el orden, que se ejecuta en un ordenador clásico. Una segunda para calcular el periodo del factor que se ejecuta en un ordenador cuántico y se basa en transformadas de Fourier.

(36)

30

Este algoritmo es capaz de realizar este cálculo en tiempo polinómico, por tanto, de forma eficiente. Por tanto, utilizar este algoritmo con un ordenador cuántico hace que el problema de la factorización ya no sea un problema matemático difícil (ver punto 2.2.6.2.1), poniendo en riesgo la seguridad de protocolos de clave pública como RSA.

Adicionalmente Shor desarrolló un algoritmo similar que permite resolver el valor de k en g = hkmod p , lo que implica que permite resolver el problema del logaritmo discreto (DLP), poniendo en riesgo algoritmos como Diffie- Hellmann o ECDSA basados en la dificultad inherente de la resolución de este problema.

De hecho, el algoritmo de Shor ha demostrado ser capaz de romper los protocolos descritos a continuación:

• Cifrado RSA-3072

• Firma RSA-3072

• Cifrado DH-3072

• Firma DSA-3072

• Intercambio de claves de 256-bit ECDH (Diffie Hellman on Elliptic Curves)

• Firma de 256-bit ECDSA (DSA on elliptic curves)

Todos estos algoritmos tienen un nivel de seguridad 128 en computación clásica.

2.3.2.2. Algoritmo de Grover

Existe otro algoritmo preparado para su uso con computadores cuánticos, el algoritmo de Grover, que ha demostrado ser útil contra protocolos de criptografía simétrica.

Se trata de un protocolo de búsqueda en bases de datos no estructuradas, que también está considerado útil para buscar raíces de funciones, es decir, aquellos valores de x que permiten que f(x)=0.

Esto permite desencriptar protocolos criptográficos simétricos como AES, de la siguiente manera (muy simplificada para hacerlo comprensible):

Ejemplo: Si un mensaje cifrado c es el resultado de utilizar AES sobre un mensaje m con una clave k, lo que expresamos como (c=AESk(m)), podríamos definir una función f(x) tal que f(x)= AESx(m)-c. Encontrar una raíz para esta función implica encontrar el valor de x para el cuál AESx(m)= AESk(m), lo que supone encontrar k y romper AES.

Referencias

Documento similar

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)