Está en la página 1de 38

Criptografı́a moderna

Albert Garreta
University of the Basque Country UPV/EHU
marzo-mayo de 2021

albert.garreta@ehu.eus
Table of Contents

Clase 1 - Contenidos y evaluación. Criterios de seguridad (32)

1
Contenidos

Parte I
Clase 1 - Contenidos y evaluación. Criterios de seguridad.
Clase 2 - Problemas con el Elgamal clásico.
Clase 3 - Curvas elı́pticas.
Clase 4 - Curvas elı́pticas en cuerpos finitos.
Clase 5 - Criptografı́a en curvas elı́pticas.
Clase 6 - Perfect secrecy.
Clase 7 - Teorema de Shannon y One-time pad.
Clase 8 - Funciones hash.
Clase 9 - Seguridad y construcción de funciones hash.
2
Contenidos

Parte II
Clase 11 - Firmas digitales en curvas elı́tpicas.
Clase 12 - ECDSA y otros tipos de firmas digitales.
Clase 13 - Padded RSA.
Clase 14 - Message Authentication Codes.
Clase 15 - Zero-knowledge proofs.
Clase 16 - Generación de números pseudoaleatorios.
Clase 17 - Esquemas de compartición de secretos.
Clase 18 - Construcción de protocolos criptográficos.
Clase 19 - Otros temas: criptografı́a basada en retı́culos, encriptación homomórfica.
3
Bibliografı́a

J. Hoffstein, J. Pipher, and J.H. Silverman.


An Introduction to Mathematical Cryptography.
Undergraduate Texts in Mathematics. Springer New York, 2008.
Jonathan Katz and Yehuda Lindell.
Introduction to Modern Cryptography, Third Edition.
CRC Press, 2020.
D.R. Stinson and M. Paterson.
Cryptography: Theory and Practice, Fourth Edition.
Textbooks in Mathematics. CRC Press, 2018.

4
Evaluación

• 2 exámenes largos (19 marzo y 30 abril): 3,5 puntos cada uno.


• Ejercicios por equipos: 3 puntos.

Los exámenes se harán individualmente en clase. Podéis usar los apuntes y diapositivas
de clase.
A partir del miércoles, la mayorı́a de clases durante la 2a hora se harán dos equipos.
Cada equipo realizará un problema y lo expondrá en la pizarra.

5
Recordatorio: sistema de encriptación simétrico

Se trata de (M, C, K, e, d) donde:

1. M es el conjunto de plaintexts
2. C es el conjunto de ciphertexts
3. K es el conjunto de llaves
4. e : M × K → C es la función de encriptación.
Para una llave k ∈ K y plaintext m ∈ M escribimos ek (m) en vez de e(m, k).
5. d : C × K → M es la función de decriptación.
Escribimos dk (c) en vez de d(c, k).

Tenemos que dk (ek (m)) = m para todo m ∈ M y k ∈ K.


Para que esto pueda darse es necesario que ek (m) 6= ek (m0 ) para todo m, m0 con
m 6= m0 (esto es, ek es inyectiva), para todo k.
6
e y d tienen que ser fáciles de calcular.
e puede ser probabilı́stica. Entonces ek (m) puede ser varios ciphertexts con distintas
probabilidades.
En este caso aún es necesario que ekpub (m) 6= ekpub (m0 ) para todo m, m0 con m 6= m0 .

7
Alice Público Bob
Obtención de una llave secreta común a través de un canal seguro
k k
Encriptación
Escoge un plaintext m ∈ M.
ek (m) Calcula y manda ek (m) a Alice.
Desencriptación
Calcula dk (e(m)), obteniendo m

La encriptación-desencriptación puede darse en el sentido inverso también.

8
Recordatorio: sistema de encriptación asimétrico

Un criptosistema de encriptación asimétrico consiste en:

1. M, C, plaintexts i ciphertexts.
2. K conjuntos de pares (kpriv , kpub ) donde kpriv es una llave secreta (o privada) y
kpub es una llave pública.
3. Una función de encriptación e que a cada m ∈ M y kpub asigna un ciphertex
ekpub (m) ∈ C.
4. Una función de decriptación d que a cada c ∈ C y kpriv asigna un plaintext
dkpriv (c) ∈ M.

Con la propiedad que si (kpub , kpriv ) ∈ K, entonces dkpriv (ekpub (m)) = m.

9
ekpub debe ser inyectiva para todo kpub .
Como antes, las funciones dkpriv y ekpub tienen que ser fáciles de calcular.
ekpub puede ser probabilı́stica.
Sigue siendo necesario que ekpub (m) siempre es 6= ekpub (m0 ) si m 6= m0 .

10
Alice Público Bob
Creación de llaves
Escoge un par (kpriv , kpub ) ∈ K
Publica la llave pública kpub kpub
Encriptación
Escoge un plaintext m ∈ M.
ekpub (m) Calcula y manda ekpub (m) a Alice.
Desencriptación
Calcula dkpriv (ekpub (m)), obteniendo
m

11
Vimos los siguientes sistemas asimétricos sobre Zp y Zpq .
• RSA.
• Elgamal.
• Goldwasser-Micali.
Los tres sistemas tienen problemas importantes.
El 3o en términos de eficiencia.
Los dos primeros tienen problemas de seguridad que hoy en dı́a no se consideran
aceptables.
A continuación vamos a revisitar y a ampliar criterios de seguridad para un
criptosistema.
Luego veremos cuáles son los problemas con RSA y Elgamal.
Entonces empezaremos a ver curvas elı́pticas con el fin de presentar una nueva versión
más segura de Elgamal. 12
Seguridad criptográfica

Hasta finales del siglo XX no se empezó a formalizar el concepto de “seguridad” en


criptografia.
Se trata de un concepto difı́cil de definir. Qué significa que un sistema de encriptación
y decriptación de mensajes sea seguro?
Hay dos aspectos a especificar:

1. Qué consideramos una brecha de seguridad. O visto desde el punto de vista del
adversario (Adv.), qué significa que un ataque sea exitoso.
2. Las capacidades del Adv. Esto es, el tipo de acciones que suponemos puede
realizar el Adv.

13
Posibles formas de “romper un criptosistema”, en el contexto de encriptación de
mensajes (simétrica o asimétricamente)1 :

1. Al Adv. consigue la llave privada.


2. El Adv. descubre cuál es el plaintext m que ha encriptado y mandado Bob.
3. El Adv. obtiene alguna información sobre m.

Luego veremos qué se entiende por “el Adv. obtiene alguna información sobre m”?

1
para firmas digitales y otros hay otras nociones
14
También se tiene que especificar qué tipo de ataque se está considerando, esto es las
capacidades del Adv.
Como vimos, hay varios tipos de ataques:

• Key-only attack: el Adversario sólo conoce el ciphertext c mandado por Bob (y la


llave pública k si el sistema es asimétrico)
• Known plaintext attack: Adicionalmente, el Adversario también conoce algunos
ejemplos de plaintexts y sus correspondientes encriptaciones bajo la llave k
(pública si asimétrico, privada si no).
Estándard para encriptación simétrica.

15
• Chosen Plaintext Attack (CPA): el Adversario puede elegir cualquier plaintext m
(o cualquier número de ellos) y obtener fácilmente su encriptación c bajo la llave
pública/privada k.
Estándard para encriptación asimétrica.
*En términos técnicos, se dice que el Adv. dispone de un oráculo que, dado
m ∈ M, le devuelve ek (m) en muy poco tiempo.
• Chosen Ciphertext Attack (CCA): el Adv. puede escoger un (o más) ciphertexts,
distintos del ciphertext mandado por Bob, y obtener los plaintexts
correspondientes.
*El Adv. dispone de un oráculo que, dado c ∈ C, le devuelve un m ∈ M tal que
ek m = c en muy poco tiempo.

16
Cada uno de estos ataques es más fuerte que el anterior.
Nota: Si asumimos el principio de Kerchoff,
esto es el Adv. conoce todo sbre el criptosistema usado, ası́ como los parámetros
usados, menos la llave privada.
entonces tiene las capacidades de 1,2,3 automáticamente (asimétrico) o de 1
(simétrico).
En sistemas asimétricos no es razonable suponer que el Adv. es menos capaz que en 3.
Nunca lo vamos a considerar.

17
Criterios de seguridad

Supón hemos decidido qué significa romper el criptosistema y hemos elegido un tipo de
ataque.
Esto permite formular un problema P que debe resolver el Adv. para lograr sus fines.
Ejemplo: Si romper el sistema significa encontrar m, y el Adv. puede realizar un CPA,
entonces P es (sponemos sistema asimétrico):

• Input: los parámeros públicos del criptosistema, y un ciphertext c = ekpub (m) para
algún m ∈ M, junto con un oráculo que te devuelve ekpub (m0 ) siempre que le
mandas m0 ∈ M.
• Output: el plaintext m.

18
Como de seguro es el sistema? Hay varios criterios, o niveles de seguridad.

1. Computational security: Si resolver P requiere un número “muy grande” de


operaciones.
2. Provable security: Se basa en una reducción del tipo:
Si el Adv. puede resolver P, entonces puede resolver cierto problema que se cree
que es muy difı́cil.
(por ejemplo el problema de factorizar enteros, o el problema del logaritmo
discreto).
En términos más técnicos: un problema con mala complejidad computacional
(preferiblemente NP-hard) es (Turing) reducible al problema P.
3. Unconditional security: Cuando P es irresoluble aunque el Adv. tenga recursos
computacionales infinitos
(i.e. su ordenador tarda 0s en hacer cualquier operación y tiene infinita memoria).

19
Ası́ tenemos valoraciones del estilo:
“El sistema X es provably secure frente a chosen plaintext attacks, ... ”
“... pero no es provably secure frente a chosen ciphertext attacks, ...”
“... donde por seguridad entendemos encontrar el plaintext correspondiente al
ciphertext mandado por Bob.”

20
Hoy en dı́a, se espera de un criptosistema que sea como mı́nimo provably secure frente
al siguiente tipo de ataques:

• Objetivo: obtener información sobre el plaintext mandado por Bob.


• Tipo de ataque: Chosen Plaintext Attack (asimétrico) o Known Plaintext Attack
(simétrico).

No se persigue unconditional security.


Esta es la norma general: puede cambiar para aplicaciones especı́ficas.

21
Notas sobre complejidad computacional

Para nosotros un problema es algo de la forma2 :

• Input: Se nos da cierto tipo de información.


• Output: Tenemos que responder con otra pieza de información.

Ejemplo:

• Input: Un sistema de ecuaciones lineales.


• Output: Una solución.

2
Esta no es la definiciónd de problema usada en un ámbito formal
22
Sean P1 y P2 dos problemas.
Informalmente, se dice que P1 es Turing reducible o simplemente reducble a P2 si,
dado cualquier input i1 de P1 , es posible escribir un input de P2 cuyo output puede
usarse para obtener un output de P1 para el input i1 .
En este caso, P2 es como mı́nimo tan difı́cil como P1 .
NOTA: esta definición es bastante vaga. Durante el curso veremos ejemplos y quedará
claro lo que significa.
La definición formal nos llevarı́a demasiado tiempo.

23
Por ejemplo Sea P1 el siguiente problema:

• Input: Una ecuación lineal ax + b = 0 donde a, b ∈ R.


• Output: Un número x0 ∈ R tal que ax0 + b = 0.

P2 es el siguiente problema:

• Input: Una ecuación cuadrática ax 2 + bx + c = 0 donde a, b, c ∈ R.


• Output: Un número x0 ∈ R tal que ax02 + bx0 + c = 0.

Cualquier input ax + b = 0 de P1 puede escribirse como un input de P2 :


0x 2 + ax + b = 0. Resolver P2 con dicho input nos permite obtener una solución de P1 .
Por lo tanto si sabemos resolver P2 , también sabemos resolver P1 .
Si P1 fuese muy difı́cil, entonces P2 deberı́a serlo también.

24
Decimos que P1 y P2 son equivalentes si P1 es reducible a P2 y P2 es reducible a P1 .

25
Qué significa obtener información sobre el plaintext?

Significa romper la seguridad semántica del criptosistema:


Fijamos un criptosistema (simétrico o asimétrico).
Se entiende que el Adv. obtiene información sobre el ciphertext si es capaz de resolver
el siguiente problema con > 50 % de prob. de éxito.
En términos técnicos, si hay un algoritmo probabilı́stico polinomial que resuelve el
siguiente problema:
• Input:
• Unos parámetros y unas llaves para el criptosistema.
• Dos plaintexts m1 , m2 que puede escoger el Adv. después de ver la info anterior.
• Un ciphertext c donde c = ek (mi ) para i = 1 ó i = 2.
• Output: Si i = 1 ó i = 2.
Un criptosistema determinista nunca es semánticamente seguro frente a CPA o más. 26
Se usan los siguientes términos para un sistema semánticamente seguro, dependiendo
del tipo de ataque.
En los 3 primeros nos referimos a provable security.
1. Indistinguishability under Chosen Plaintext Attacks (IND-CPA). Para chosen
plaintext attacks, esto es el Adv. es capaz de encriptar los plaintext que quiera
(algo muy razonable si el sistem es asimétrico).
2. Indistinguishability under Chosen Ciphertext Attacks (IND-CCA1). El Adv. es
como arriba, pero además puede obtener el plaintext de los ciphertexts que quiera
antes de recibir c (conociendo m1 y m2 ).
3. Indistinguishability under adaptive Chosen Ciphertext Attacks (IND-CCA2). El
Adv. es como arriba, pero además puede obtener el plaintext de los ciphertexts
6= c que quiera en cualquier momento.
4. Perfect secrecy. El Adv. es como en 1. y tiene infinito poder computacional.
Hoy en dı́a un criptosistema asimétrico es inaceptable si no es IND-CPA.
27
Sobre seguridad incondicional

Ningún criptosistema de encriptación asimétrico con función ekpub determinista puede


ser incondicionalmente seguro frente a que el Adv. descubra el plaintext con un CPA.
En efecto, dado un ciphertext c, un adversario que hace CPA con infinitos recursos
puede calcular todas las posibles encriptaciones de plaintexts

{ekpub (m) | m ∈ M}

y ver para qué m se tiene c = ekpub (m).


Esto le permite desencriptar cualquier plaintext.

28
Què pasa si la función de encriptación ek es probabilı́stica?
Sigue siendo posible desencriptar cualquier ciphertext con infinita capacidad
computacional bajo un CPA.
Suponiendo además que el Adv. conoce cómo opera ek .
Como ek es probabilı́stica, esto significa que a la hora de calcular ek (m) se escoge
cierto número, digamos t, de bits aleatorios.
Podemos crear una nueva función determinista ek0 (m, s) que acepta plaintext m y
secuencias de t bits (s = s1 , s2 , . . . , st , con si ∈ {0, 1} para todo i).
El ciphertext ek0 k (m, s) es el que resulta de calcular ekk (m) si la primera vez que se
necesita un bit aleatorio se escoge s1 , la 2a vez se escoge s2 , etc.

29
Entonces podemos probar todos los inputs posibles a ek0 , es decir, calcular

{ek0 k (m, s) | m ∈ M, s ∈ {0, 1}t }

y ver para qué (m, s) tenemos ekk (m, s) = c. Entonces m es el plaintext original.
(Nota: No puede pasar que ek0 k (m, s) = c = ek0 k (m1 , s1 ) para algún m1 6= m, ya que
entonces la función decriptación no puede satisfacer los requisitos de un criptosistema
de llave pública.)
Nota: un sistema simétrico tampoco es unconditionally secure ante un CPA,
pero para un sistema simétrico, CPA es una suposición mucho más fuerte.

30
Perfect secrecy

Perfect secrecy o seguridad incondicional es algo muy restrictivo.


Para empezar solo existe para como mucho known plaintext attacks, como acabamos
de ver.
Existen sistemas de encriptación simétricos con perfect secrecy (para key-only attacks),
por ejemplo el One-time pad.
Se usan sólo en contadas ocasiones de “vida o muerte” (temas militares, geopolı́ticos,
etc.)
E.g. durante la guerra frı́a USA y la URSS se comunicaban con el one-time pad. Las
llaves privadas las transportaba un agente en una maleta llena de papeles con números
aleatorios.
Más tarde veremos algunos de estos sistemas simétricos.
31
Elgamal (repaso)

Creación de parámetros públicos


Un primo p, una raı́z primitiva g módulo p
Alice Público Bob
Creación de la llave pública
Escoge una llave privada a ∈
{1, . . . , p − 2}.
Calcula kpub = g a (mod p).
Publica la llave kpub kpub

32
Elgamal (repaso)

Encriptación
Escoge plaintext m ∈ Z∗p .
Escoge un elemento aleatorio k ∈
Zp .
Usa kpub para calcu-
k
lar C1 = g (mod p) y
C2 = mkpub k (mod p)
C2 Manda (C1 , C2 ) a Alice.
Desencriptación
Calcula C2 (C1a )−1 (mod p)
Esto es igual al plaintext m.

33
Seguridad de Elgamal (repaso)

En este análisis de seguridad asumimos que el adversario sólo conoce la información


pública y un ciphertext que ha interceptado (key-only attack). Su objetivo es decubrir
el plaintext.

• Es provably secure frente a chosen plaintext attacks (CPA) cuyo objetivo es


descubrir el plaintext de un mensaje encriptado.
Por reducción al Diffie-Hellman problem en Zp (DHP):
1. Input: g d1 (mod p) y g d2 (mod p) para algún g ∈ Z∗p y d1 , d2 ∈ Z.
2. Output: g d1 d2 (mod p).
Pero este problema puede romperse con un algoritmo subexponencial.
• Es computationally secure frente a los ataques anteriores.
• No es unconditionally secure frente a CPA.
• IND-CPA (el mı́nimo moderno): NO.
34
Toerema
Elgamal es provably secure en el siguiente sentido: Chosen Plaintext Attacks que
persiguen descubrir el plaintext encriptado.

Supón que el Adv. puede resolver el siguiente problema:

• Input: primo p; raı́z g mod p; llave A = g a (mod p) y ciphertext


(c1 , c2 ) = (g k , mAk ) (mod p) para algunos a, k ∈ Z, m ∈ Zp .
• Output: m.

35
Veremos que este problema es quivalente al siguiente problema:

• Input: primo p; raı́z g mod p; A = g a (mod p) y (c1 , c2 ) = (g k , g r ) (mod p) para


algunos a, k, r ∈ Z.
• Output: un m ∈ Zp tal que m ≡ c1−a c2 (mod p).

En efecto: Supón que puede resolver el primer problema. Basta tomar


(g k , mg ak ) = (g k , g r −ak Ak ) (mod p), donde m = g r −ak (mod p), como input al
primer problema (junto con los demás parámetros p, g , A). El output es m, y tenemos
c1−a c2 = g −ka g r = g r −ak = m.

36
El inverso, esto es resolver el primer problema suponiendo que puede resolver el
segundo: ejercicio.
Ahora vemos que el segundo problema es equivalente (Turing reducibles) al DHP:

1. Input: g d1 (mod p) y g d2 (mod p) para alguna raı́z g ∈ Z∗p y d1 , d2 ∈ Z.


2. Output: g d1 d2 (mod p)

En efecto: Supón que puede resolver el 2o problema y sea g d1 (mod p) y g d2 (mod p).
Entonces resuelve el 2o problema tomando A = g d2 (mod p) p, g ,
(c1 , c2 ) = (g d1 , g x ) (mod p), donde x es aleatorio.
Obtiene m ≡ c1−d2 c2 = g −d2 d1 g x (mod p), y ahora m−1 g −x ≡ g d1 d2 (mod p).
Recı́proco: ejercicio.

37

También podría gustarte