Criptografía asimétrica o de clave pública

Anuncio
Intro.
DH
RSA
ElGamal
Criptografı́a asimétrica o de clave pública
F. J. Martı́nez Zaldı́var
Departamento de Comunicaciones
ETSI Telecomunicación
Universidad Politécnica de Valencia
Comunicación de Datos II
ECC
Intro.
DH
RSA
ElGamal
Índice
1
2
3
4
5
Introducción
Introducción a la Teorı́a de Números
Funciones unidireccionales
Intercambio de claves Diffie y Hellman
Descripción DH
Algoritmo RSA (Rivest-Shamir-Adelman)
Descripción RSA
Fortaleza de RSA
Claves múltiples de descifrado
Mensajes no cifrables
Alternativas de descifrado RSA
RSA multiprimo
Relleno (padding)
Método ElGamal
Otros criptosistemas asimétricos: ECC
ECC
Intro.
DH
RSA
ElGamal
Criptografı́a asimétrica o de clave pública
Objetivo: evitar el problema de la distribución de claves
necesaria en un criptosistema simétrico (o de clave
secreta).
Primer documento: intercambio de claves de Diffie y
Hellman (1976).
Posteriormente otros criptosistemas asimétricos: RSA,
ElGamal, curvas elı́pticas, . . .
Asimétrica : distinta clave para cifrar que para descifrar.
Pública : de las claves es pública; la otra privada.
Conceptos previos necesarios: Teorı́a de Números
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Definición: divisor
Si a, b ∈ Z, entonces a divide a b, o a es divisor de b si
∃n ∈ Z : b = an
a|b denota que a divide a b
Ejemplo
4|12, ya que 12 = 4 · 3
Corolario: divisores del cero
Cualquier n ∈ Z, n 6= 0, divide a 0:
0 = n · 0 ⇒ n|0
ECC
Intro.
DH
RSA
Introducción a la Teorı́a de Números
Teorema: transitividad
Si a, b, c ∈ Z, con a|b y b|c, entonces a|c
Ejemplo
Si 4|8 y 8|16, entonces 4|16
ElGamal
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema: divisor de combinacion lineal
Si a, b, m, n ∈ Z y c|a y c|b, entonces
c|(ma + nb)
Ejemplo
3|6 y 3|9, entonces 3|(m · 6 + n · 9). Si, por ejemplo, m = 2 y n = −4,
entonces
3|(2 · 6 + (−4) · 9) −→ 3|(12 + (−36)) −→ 3|(−24)
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema: algoritmo de la división
Si a, b ∈ Z, b > 0, entonces
∃q, r ∈ Z únicos, : a = q · b + r , con 0 ≤ r < b
cona
q=
a
jak
b
, y r =a−q·b
donde ⌊ yx ⌋ con x, y ∈ Z es la operación denominada “redondeo hacia
−∞”: entero más próximo a yx del intervalo ] − ∞, yx ]
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema (cont.)
Ejemplo: a = 43, b = 5
q=
43
5
= ⌊8, 6⌋ = 8, y r = 43 − 8 · 5 = 3
por tanto: 43 = 8 · 5 + 3, con 0 ≤ r = 3 < b = 5
Ejemplo: a = −43, b = 5
q=
−43
5
= ⌊−8, 6⌋ = −9, y r = −43 − (−9) · 5 = 2
por tanto: −43 = (−9) · 5 + 2, con 0 ≤ r = 2 < b = 5
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Definición: cociente y resto
Los valores q y r del Algoritmo de la División se denominan
cociente y resto respectivamente.
Definición: números primos y compuestos
Un número primo es un número entero positivo mayor que 1
que sólo es divisible por 1 y por sı́ mismo. Un número
compuesto es todo entero positivo mayor que uno que no es
primo.
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema: divisores primos
Todo entero positivo mayor que 1 tiene al menos un divisor
primo.
Definición: máximo común divisor
Sean a, b ∈ Z, con a, b 6= 0, el máximo común divisor de a y b
denotado como mcd(a, b) es el mayor entero que divide tanto a
a como a b.
Definición: números relativamente primos
Dos enteros a y b son relativamente primos si mcd(a, b)=1. Ya
que los divisores de a lo son también de −a,
mcd(a, b)=mcd(|a|, |b|)
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario: máximo común divisor con cero
mcd(n, 0) = n, ∀n ∈ Z, n 6= 0
Teorema: algoritmo de Euclides (cálculo del mcd)
Sean r0 y r1 dos enteros no negativos con r1 6= 0, la aplicación
iterativa del Algoritmo de la División de la forma
rj = qj+1 rj+1 + rj+2 , j ≥ 0
hace que
mcd(r0 , r1 ) = rn , (el último resto no nulo)
ECC
Intro.
DH
Introducción a la Teorı́a de Números
Teorema (cont.)
RSA
ElGamal
ECC
Intro.
DH
RSA
Introducción a la Teorı́a de Números
Teorema (cont.)
Ejemplo: r0 = 250 y r1 = 110
luego mcd(250,110)=10.
250
=
110
=
2 · 110 + 30
30
=
1 · 20 + 10
20
=
2 · 10 + 0
3 · 30 + 20
ElGamal
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario
Si a, b ∈ Z, y a = qb + r , entonces mcd(a, b)=mcd(b, r ).
Teorema: mcd y la menor combinación lineal positiva
Si a, b ∈ Z, con a, b 6= 0, entonces mcd(a, b) es el menor entero
positivo resultante de cualquier combinación lineal de a y b.
Ejemplo: mcd(28,8)=4
28 · 1 − 8 · 3 = 28 − 24 = 4
Cualquier otra combinación lineal es:
Bien mayor o igual que 4
Bien negativa
Teorema
Si a, b, c ∈ Z, a, b, c > 0, mcd(a, b) = 1 y a|bc, entonces a|c.
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Definición: congruencia
Si a, b, n ∈ Z y n 6= 0, entonces, si n|(a − b) se dice que a es
congruente con b módulo n, y se denota como a ≡ b
(mód n).
Corolario
Si a ≡ b (mód n), entonces a mód n = b mód n
Ejemplo: 18 ≡ 6 (mód 4)
Es decir, 4|(18 − 6), entonces 18 mód 4 = 2 = 6 mód 4
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario
Cualquier entero es congruente módulo n con algún entero del
conjunto {0, 1, . . . , n − 1}.
Ejemplo: n = 4
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario: propiedad reflexiva
a≡a
(mód n)
Corolario: propiedad simétrica
a≡b
(mód n)
⇔
b≡a
(mód n)
Ejemplo
3
7
11
4
≡
7
≡
−3
≡
6≡
3
−4
(mód 2) ⇒ 2|(3 − 7) ⇒ 2|(−4)
(mód 2) ⇒ 2|(7 − 3) ⇒ 2|4
(mód 7) ⇒ 7|(11 − (−3)) ⇒ 7|14
(mód 7) ⇒ 7 6 | (4 − (−4)) ⇒ 7 6 | (−8)
ECC
Intro.
DH
RSA
ElGamal
ECC
Introducción a la Teorı́a de Números
Corolario: propiedad transitiva
a≡b
(mód n),
b≡c
(mód n)
⇔
Ejemplo
si 27 ≡ 3
(mód 6), y 3 ≡ 21
(mód 6), entonces
27 ≡ 21
.
(mód 6)
a≡c
(mód n)
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
¡¡¡Confusión!!!
Resto: a = b mód n
(por el Algoritmo de la división: b = qn + a)
Congruencia: a ≡ b
(mód n)
Entonces
a = b mód n ⇒ a ≡ b
a≡b
(mód n)
(mód n) 6⇒ a = b mód n
Ejemplo: 21 ≡ 3 (mód 18)
. . . , pero 21 6= 3 mód 18
Por lo tanto, lo demostrable para el resto es aplicable para la
congruencia, pero no al revés.
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema
Sea a, b, n, i ∈ Z, con n, i > 0, entonces
(ani + b) mód n = b mód n
o bien
(ani + b) ≡ b
(mód n)
Ejemplo: a = 3, n = 4, i = 2 y b = 7
(3 · 42 + 7) mód 4 = 55 mód 4 = 3 = 7 mód 4
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema
Si a, b, n ∈ Z, con n 6= 0 entonces:
(a + b) mód n = {(a mód n) + (b mód n)} mód n
(ab) mód n = {(a mód n)(b mód n)} mód n
Ejemplo
(8 + 9) mód 3
=
17 mód 3 = 2
8 mód 3
=
2
9 mód 3
=
0
((8 mód 3) + (9 mód 3)) mód 3
=
(2 + 0) mód 3 = 2
ECC
Intro.
DH
RSA
ElGamal
ECC
Introducción a la Teorı́a de Números
Corolario
ab mód n = {(a mód n)b } mód n
Ejemplo: ¿4225 mód 500?
Creación de tabla:
41
42
44
48
mód
mód
mód
mód
500
500
500
500
=
=
=
=
4
16
256
36
416
432
464
4128
mód
mód
mód
mód
500
500
500
500
=
=
=
=
296
116
456
436
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Ejemplo (cont)
N
= 4225 mód 500
= 4128+64+32+1 mód 500
= {(4128 mód 500)(464 mód 500)(432 mód 500) ·
·(41 mód 500)} mód 500
= {436 · 456 · 116 · 4} mód 500
= {(198 816 mód 500)(464 mód 500)} mód 500
= (316 · 464) mód 500
= 124
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Definición
La función de Euler, φ(n) (Euler totient function) es la cantidad
de enteros positivos menores que n que son relativamente
primos con n.
Ejemplo: n = 6
φ(6) = card{1, 5} = 2
Ejemplo: n primo → φ(n) = n − 1
φ(7) = card{1, 2, 3, 4, 5, 6} = 6
Teorema
Si p y q son primos y n = pq, entonces φ(n) = (p − 1)(q − 1).
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema
Sea
{r1 , r2 , . . . , rφ(n) }
con 0 < ri < n y mcd(ri , n)=1, ∀1 ≤ i ≤ φ(n). Si a > 0 y
mcd(a, n)=1, entonces
{ar1 mód n, ar2 mód n, . . . arφ(n) mód n}
es una permutación de
{r1 , r2 , . . . , rφ(n) }
Ejemplo: φ(5) = card{1, 2, 3, 4} = 4, a = 7, mcd(7,5)=1
{7 · 1 mód 5, 7 · 2 mód 5, 7 · 3 mód 5, 7 · 4 mód 5} = {2, 4, 1, 3}
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Lema
Si a, b, n ∈ Z, n > 0, mcd(b, n)=1 y ab ≡ b
a ≡ 1 (mód n).
(mód n), entonces
Demostración
Ya que ab ≡ b (mód n), entonces
n|(ab − b) ó n|b(a − 1)
Ya que mcd(b, n)=1, —y que si a, b, c ∈ Z, a, b, c > 0,
mcd(a, b) = 1 y a|bc, entonces a|c—, entonces
n|(a − 1) → a ≡ 1 (mód n)
ECC
Intro.
DH
RSA
ElGamal
ECC
Introducción a la Teorı́a de Números
Teorema
Teorema de Euler: si a, n ∈ Z, n > 0 y mcd(a, n)=1, entonces:
aφ(n) ≡ 1 (mód n)
Demostración
Sea {r1 , r2 , . . . , rφ(n) } : 0 < ri < n, mcd(ri , n) = 1, 1 ≤ i ≤ φ(n). Según el
Teorema 22:


φ(n)
Y
i=1


ri  mód n = 

φ(n)
Y
i=1

(ari mód n) mód n =  aφ(n)
por lo tanto
φ(n)
φ(n)
aφ(n)
Y
i=1
ri ≡
Según el lema anterior, aφ(n) ≡ 1
Y
ri
i=1
(mód n).
(mód n)
φ(n)
Y
i=1

ri  mód n
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario: Teorema de Euler para inversos modulares
aa−1 ≡ 1 (mód n)
con mcd(a, n)=1 (en caso contrario, dicho inverso no existe).
Solución:
a−1 ≡ aφ(n)−1
(mód n)
ya que
aa−1 ≡ aaφ(n)−1
≡ a
φ(n)
(mód n)
(mód n)
≡ 1 (mód n)
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario: Algoritmo de Euclides (extendido) —mcd— para
inversos modulares
Si a y n son relativamente primos:
1 = mcd(a, n)
= i ·a+j ·n
1 mód n = (i · a + j · n) mód n
1 mód n = i · a mód n
1 ≡ i ·a
(mód n)
−1
(mód n)
i ≡ a
Necesitamos conocer la combinación lineal
i ·a+j ·n
mediante el desarrollo del algoritmo de Euclides
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario (cont.)
Ejemplo: a = 32, n = 4927, con mcd(32,4927)=1
4927
32
31
=
=
=



 1
153 · 32 + 31 

1 · 31 + 1
⇒



31 · 1

154
(154 · 32
pero también, −1 ≡ 4927−1
−1
−1
(31 · 4927
≡
=
32−1
=
=
=
=
32 − 1 · 31
32 − 1 · (4927 − 153 · 32)
154 · 32 − 1 · 4927
i ·a+j ·n
(mód 4927)
4928 = 1 · 4927 + 1)
(mód 32), o equivalentemente:
=
≡
=
−1 · 32 + 31
31 ≡ 4927−1
(mód 32)
152 737 = 4773 · 32 + 1)
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema: teorema de Fermat
Sea p, a ∈ Z, con p primo, y mcd(a,p)=1, entonces
ap−1 ≡ 1 (mód p)
Demostración
Es un caso particular del teorema de Euler, ya que
φ(p) = p − 1, por ser p primo.
ECC
Intro.
DH
RSA
ElGamal
ECC
Introducción a la Teorı́a de Números
Corolario
Sea p, a ∈ Z, con p primo, entonces
ap−1 a ≡ a
(mód p)
Demostración: dos posibilidades
Si mcd(p, a) = 1, entonces según el teorema de
Fermat, ap−1 ≡ 1 (mód p), es decir,
p|(ap−1 − 1) ⇒ p|(ap−1 − 1)a ⇒ ap−1 a ≡ a
(mód p)
Si mcd(p, a) 6= 1, entonces a = kp (p es primo), es
decir
p|a ⇒ p|(ap−1 − 1)a ⇒ ap−1 a ≡ a
(mód p)
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario
Sea p, a ∈ Z, con p primo, entonces
ak (p−1) a ≡ a
(mód p)
El razonamiento es análogo al anterior.
ECC
Intro.
DH
RSA
ElGamal
ECC
Introducción a la Teorı́a de Números
Corolario
Sea p, a, b ∈ Z, con p primo, entonces
ab ≡ ab mód (p−1)
(mód p)
Demostración
Sea b = k(p − 1) + r , con r = b mód (p − 1) (algoritmo
de la división), entonces
ab ≡ ak (p−1)+r ≡ ak (p−1) ar ≡ ar ≡ ab mód (p−1)
(mód p)
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema: teorema chino de los restos congruentes (CRT
—Chinese Remainder Theorem—)
Sean x1 , x2 , . . . xr ∈ Z y p1 , p2 , . . . pr ∈ Z con mcd(pi , pj )=1,
∀i 6= j y N = p1 p2 . . . pr . Sistema de ecuaciones de
congruencias:
x
≡ x1
(mód p1 )
x
≡ x2
(mód p2 )
..
.
x
≡ xr
(mód pr )
Solución única en [0, N − 1] (algoritmo de Gauss):
"
# !
r −1
X
N
N
(mód N)
(mód pi ) xi
x≡
pi
pi
i=1
ECC
Intro.
DH
RSA
ElGamal
ECC
Introducción a la Teorı́a de Números
Teorema (cont.)
Ejemplo: r = 2, x1 = 124, x2 = 8, p1 = 7, p2 = 13
x
x
≡
≡
124
8
(mód 7)
(mód 13)
con mcd(p1 , p2 ) = mcd(7,13) = 1, y N = 13 · 7 = 91, entonces
x
≡
≡
"
91
7
≡
91
7
(mód 7) · 124 +
(mód 91)
h
i
h
13 13−1 (mód 7) · 124 + 7 7−1
(13 · [6] · 124 + 7 · [2] · 8)
≡
(9672 + 112)
≡
47
≡
#
−1
9784
(mód 91)
(mód 91)
(mód 91)
91
13
(mód 91)
"
91
13
−1
#
!
(mód 13) · 8
i (mód 13) · 8
(mód 91)
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Teorema (cont.)
Ejemplo (cont.)
Por tanto, 47 es el único número en el intervalo [0, 7 · 13 − 1] = [0, 90] que
cumple que
≡
47
124
≡
47
8
(mód 7)
(mód 13)
Efectivamente ya que:
124
=
17 · 7 + 5
47
=
6·7+ 5
8
=
0 · 13 + 8
47
=
3 · 13 + 8
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario
Si N = p1 p2 · · · pr , con mcd(pi , pj )=1 ∀i

x ≡



 x ≡
x ≡ a (mód N) ⇔
..

.



x ≡
6= j, entonces
a
a
(mód p1 )
(mód p2 )
a
(mód pr )
Si en un sistema de ecuaciones de congruencias, xi = a,
∀1 ≤ i ≤ r , entonces la solución es x ≡ a (mód N)
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Corolario (cont.)
Ejemplo: a = 176, p1 = 7, p2 = 13, N = 7 · 13 = 91
x ≡ 176
(mód 91) ⇔
x
x
≡
≡
176
176
La solución en el intervalo [0, 90] es
x ≡ 85 ≡ 176
(mód 91)
con 176 = 1 · 91 + 85 . Efectivamente:
176
=
25 · 7 + 1
85
=
12 · 7 + 1
176
=
13 · 13 + 7
85
=
6 · 13 + 7
(mód 7)
(mód 13)
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Algoritmo: algoritmo de Garner
Resuelve sistemas de ecuaciones congruentes, evitando
operaciones (mód N), con un sustancioso ahorro en el
tiempo de cálculo.
Entrada: vectores pi y xi (i = 1 . . . r )
Salida: x
for i = 2 : r
Ci = 1
for j = 1 : i − 1
u = pj−1 mód pi
Ci = uCi mód pi
end
end
x = x1 mód p1
for i = 2 : r
u = (xi − x)Ci mód pi
Q
x = x + u i−1
p
j=1 j
end
return x
ECC
Intro.
DH
RSA
ElGamal
Introducción a la Teorı́a de Números
Ejemplo: traza del algoritmo de Garner con
r = 2, p1 = 7, p2 = 13, x1 = 124, x2 = 8
Entrada: vectores pi y xi (i = 1 . . . 2)
Salida: x
for i = 2 : 2
Ci = 1, (⇒ C2 = 1)
for j = 1 : 1
u = pj−1 mód pi , (⇒ u = p1−1 mód p2 , ⇒ u = 7−1 mód 13 = 2)
Ci = uCi mód pi , (⇒ C2 = uC2 mód p2 , ⇒ C2 = 2 · 1 mód 13 = 2)
end
end
x = x1 mód p1 , (⇒ x = 124 mód 7 = 5)
for i = 2 : 2
u = (xi − x)Ci mód pi , (⇒ u = (x2 − x)C2 mód p2 ,
⇒ u = (8 − 5)2 mód 13 = 6)
Q
x = x + u i−1
p , (⇒ x = x + up1 , ⇒ x = 5 + 6 · 7 = 47)
j=1 j
end
return x (⇒ x = 47)
h
i
x = x1 mód p1 + (x2 − x1 mód p1 )p1−1 mód p2 p1
ECC
Intro.
DH
RSA
ElGamal
Funciones unidireccionales
Definición
y = f (x) fácilmente calculable, pero x = f −1 (y) es intratable
computacionalmente
Ejemplo: y ≡ g x
grande
(mód p), con y, g, p ∈ Z, y p primo
La función inversa x ≡ logg y (mód p) —problema del logaritmo
√
discreto— requiere O(e log(p) log log(p) ) operaciones de cómputo elementales.
Si p tiene del orden de 512 dı́gitos binarios, y los logaritmos son en base 2,
entonces, son necesarias
e
√
512·9
= e67,8 = 2, 8 · 1029
operaciones
Si nuestro sistema es capaz de realizar 64 Giga-operaciones/s, se tardarı́a:
2, 8 · 1029
= 4, 4 · 1018 s = 1, 4 · 1011 a
64 · 109
ECC
Intro.
DH
RSA
ElGamal
Descripción DH
Parámetros
Sea
p un número primo grande
g un generador del grupo multiplicativo Zp : sus potencias
generan todos los elementos del grupo
Zp = {1, 2, . . . p − 1}
p y g son públicos
ECC
Intro.
DH
RSA
ElGamal
Descripción DH
Modus operandi
A
B
Acuerdo
en
pyg
1 < xa < p − 1: xa secreto
ya ≡ g xa (mód p)
ya
zba ≡ ybxa ≡ g xb xa (mód p)
⇐⇒
1 < xb < p − 1: xb secreto
yb ≡ g xb (mód p)
yb
zab ≡ yaxb ≡ g xa xb (mód p)
zab = zba : secreto compartido
Ruptura: problema del logaritmo discreto, inviable
computacionalmente.
Único problema: ataque en el medio (autenticación por
otros medios).
ECC
Intro.
DH
RSA
ElGamal
Descripción RSA
Parámetros
Sean p y q dos números primos grandes y N = pq,
entonces:
φ(N) = (p − 1)(q − 1)
Sea e un entero aleatorio, 1 < e < N, con mcd(e, φ(N))=1
Sea d otro entero que verifica:
ed
d
≡ 1 (mód φ(N))
≡ e−1
(mód φ(n))
es decir,
ed = kφ(N) + 1
ECC
Intro.
DH
RSA
ElGamal
Descripción RSA
Modus operandi
Mensaje M: entero 0 ≤ M < N
Cifrado C:
C ≡ Me
(mód N)
Descifrado:
M ≡ C d ≡ (M e )d ≡ M ed
(mód N)
Clave de cifrado —pública—: (N, e)
Clave de descifrado —privada—: (N, d)
ECC
Intro.
DH
RSA
ElGamal
Descripción RSA
Ejemplo
p
=
11
q
=
7
N
=
pq
=
11 · 7
φ(N)
=
77
(p − 1)(q − 1)
10 · 6
=
60
e
=
17
d
≡
e−1
≡
53
≡
23
≡
Me
≡
141050039560662968926103
≡
67
≡
Cd
M′
≡
(mód 60)
−1
17
=
C
≡
=
=
M
≡
(mód N)
2317
(mód 77)
(mód 77)
(mód 77) (Alg. de
exponenciación eficiente)
(mód N)
6753
(mód 77)
60529145527220195918987
11030314941034235684285
86509554343742858342336
(mód 60)
00865328511929839774350
(mód 60)
55987
≡
23
(mód 77)
(mód 77)
ECC
Intro.
DH
RSA
ElGamal
Descripción RSA
Comprobación: M ≡ M ed
(mód N)
Si N = pq, con p y q primos, por el Teorema chino de los
restos congruentes:
X ≡ M ed (mód p)
ed
X ≡M
(mód N) y
X ≡ M ed (mód q)
Podremos calcular X . Recordemos que
ed = kφ(N) + 1
luego
X
≡ M k φ(N)+1
(mód p)
X
k φ(N)+1
(mód q)
≡ M
ECC
Intro.
DH
RSA
ElGamal
ECC
Descripción RSA
Comprobación: M ≡ M ed
X
X
(mód N)
≡ M k(p−1)(q−1)+1 ≡ M k(p−1)(q−1) M ≡ M k1 (p−1) M
≡ M
k(p−1)(q−1)+1
≡ M
k(p−1)(q−1)
M ≡ M
k2 (q−1)
M
(mód p)
(mód q)
con k1 = k(q − 1) y k2 = k(p − 1). Como p como q son primos:
X
X
≡ M ≡ M k1 (p−1) M
≡ M ≡ M k2 (q−1) M
(mód p)
(mód q)
⇐⇒ X ≡ M ≡ M ed
(mód N)
Intro.
DH
RSA
ElGamal
Fortaleza de RSA
Fundamentos
A partir de la clave pública no puede deducirse nada
respecto a la clave privada
Problema del logaritmo discreto: inversión de c ≡ me
(mód N)
Problema de la factorización de N = pq
Problema del cálculo de la función de Euler φ(N)
. . . de un número —N— de valor extremadamente grande
ECC
Intro.
DH
RSA
ElGamal
Claves múltiples de descifrado
¿Cuántas?
Sean
λ = mcm(p − 1, q − 1)
dλ ≡ e−1
(mód λ)
entonces,
di = dλ + iλ,
son las
l
N−dλ
λ
m
N − dλ
i = 0, . . .
−1
λ
claves de descifrado RSA válidas.
ECC
Intro.
DH
RSA
ElGamal
Claves múltiples de descifrado
Ejemplo: p = 43, q = 71
N = pq = 43 · 71 = 3053
λ = mcm(p − 1, q − 1) = mcm(42, 70) = 210
Elegimos aleatoriamente e = 157, con tal de que mcd(e, λ)=1. Calculamos
dλ ≡ e−1 ≡ 157−1 ≡ 103
(mód 210)
ECC
Intro.
DH
RSA
ElGamal
Claves múltiples de descifrado
Ejemplo (cont.)
Las posibles claves de descifrado di parejas de e = 157 son:
di = dλ + iλ = 103 + i · 210
con
0≤i≤
N − dλ
λ
0 ≤ i ≤ 14
−1≤
3053 − 103
210
− 1 ≤ ⌈14, 04⌉ − 1 ≤ 15 − 1
Por lo tanto:
di = {103, 313, 523, 733, 943, 1153, 1363,
1573, 1783, 1993, 2203, 2413, 2623, 2833, 3043}
ECC
Intro.
DH
RSA
ElGamal
Claves múltiples de descifrado
Número mı́nimo posible de claves válidas: 2. Para
conseguirlas:
p y q son números primos fuertes:
p = 2p′ + 1
q = 2q ′ + 1
siendo p′ y q ′ dos números primos
Se escoge una clave de cifrado aleatoria e, tal que, siendo
dλ ≡ e−1 (mód λ), se cumpla que
dλ > N − 2λ
ECC
Intro.
DH
RSA
ElGamal
Claves múltiples de descifrado
Ejemplo: p = 11 = 2p′ + 1, p′ = 5; q = 23 = 2q ′ + 1,
q ′ = 11
N = pq = 11 · 23 = 253
λ = mcm(p − 1, q − 1) = mcm(10, 22) = 110
Se elije e aleatoriamente para que mcd(e, λ)=1, e = 31, siendo
dλ ≡ 31−1 ≡ 71
(mód 110)
siendo dλ = 71 > N − 2λ = 253 − 2 · 110 = 33. En este caso, las claves di
parejas de e = 31 son:
di = 71 + i · 110,
253 − 71
N − dλ
−1=
− 1 = ⌈1, 65⌉ − 1 = 2 − 1 = 1
0≤i≤
λ
110
= {71, 181}
ECC
Intro.
DH
RSA
ElGamal
ECC
Mensajes no cifrables
Definición: mensaje no cifrable
Me ≡ M
(mód N)
La cantidad de mensajes no cifrables σN es
σN = (1 + mcd(e − 1, p − 1))(1 + mcd(e − 1, q − 1))
(1)
Intro.
DH
RSA
ElGamal
Mensajes no cifrables
Mı́nima cantidad
Teorema: mı́nimo número de mensajes no cifrables
p primo ⇒ p impar ⇒ p − 1 par
q primo ⇒ q impar ⇒ q − 1 par
φ(N) = (p − 1)(q − 1) par
mcd(e, φ(N))=1 ⇒ e impar (luego 2 < e < N)⇒ e − 1 par
El valor mı́nimo de la ecuación (1) se obtiene cuando
mcd(e − 1, p − 1) = 2
mcd(e − 1, q − 1) = 2
En cuyo caso σN = (1 + 2)(1 + 2) = 9 mensajes no cifrables.
ECC
Intro.
DH
RSA
ElGamal
Mensajes no cifrables
Corolario: obtención del mı́nimo de mensajes no cifrables
p = 2p′ + 1
Si p y q son números primos fuertes
q = 2q ′ + 1
mcd(e − 1, p − 1) = mcd(e − 1, 2p′ ) = 2 ó 2p′
mcd(e − 1, q − 1) = mcd(e − 1, 2q ′ ) = 2 ó 2q ′
Si
mcd(e − 1, p′ ) = mcd(e − 1, q ′ ) = 1
entonces como e − 1 es par:
mcd(e − 1, 2p′ ) = mcd(e − 1, 2q ′ ) = 2
consiguiendo el mı́nimo de 9 mensajes no cifrables.
ECC
Intro.
DH
RSA
ElGamal
Mensajes no cifrables
Ejemplo: N del orden de 1024 bits
En una situación práctica, si por ejemplo, N se codifica con 1024 bits, la
probabilidad de que un mensaje sea no cifrable es:
Casos favorables
9
= 1024 ≈ 5 · 10−308
Casos posibles
2
ECC
Intro.
DH
RSA
ElGamal
Alternativas de descifrado RSA
Concepciones convencionales
m ≡ cd
(mód N)
Resolver el sistema
x ≡ cd
(mód p)
x ≡ cd
(mód q)
con N = pq, siendo la solución m ≡ x
(mód N)
ECC
Intro.
DH
RSA
ElGamal
ECC
Alternativas de descifrado RSA
Concepción alternativa
x
x
≡
≡
cd
cd
(mód p)
(mód q)
⇒
x
x
≡
≡
c dP
c dQ
(mód p)
(mód q)
siendo
dP ≡ e−1
(mód p − 1) ⇒ dP e ≡ 1
(mód p − 1) ⇒ dP e = kp (p − 1) + 1
dQ ≡ e−1
(mód q − 1) ⇒ dQ e ≡ 1
(mód q − 1) ⇒ dQ e = kq (q − 1) + 1
entonces
x
x
≡
≡
c dP
c dQ
≡
≡
medP
medQ
≡
≡
⇒x ≡m
mkp (p−1)+1
mkq (q−1)+1
(mód N)
≡
≡
m
m
(mód p)
(mód q)
Intro.
DH
RSA
ElGamal
ECC
Alternativas de descifrado RSA
Para resolver cualquiera de los sistemas planteados puede
emplearse el algoritmo de Gauss para el CRT
"
i=k −1
X
N
N
x≡
ri
ri
#
(mód ri ) ai
i=1
≡ q(q −1
≡q
p−1 d
≡ q(q
(mód p))c d + p(p−1
c +p
−1
q−1
cd
(mód p))c
≡ q p−1 c dP + pq−1 c dQ
(mód N)
(mód q))c d
(mód N)
(mód N)
dP
+ p(p−1
(mód N)
(mód q))c dQ
(mód N)
Intro.
DH
RSA
ElGamal
Alternativas de descifrado RSA
O bien el algoritmo de Garner, que particularizado al problema
RSA (k = 2, a1 = c dP , a2 = c dQ , r1 = p, r2 = q)
x = c dP mód p1 + [(c dQ − c dP mód p1 )p−1
(mód q)]p
En PKCS#1 se intercambian los papeles de a1 y a2 , y de r1 y r2
ECC
Intro.
DH
RSA
ElGamal
RSA multiprimo
Sistema RSA en el que N = r1 r2 · · · ru , con u > 2, entonces
λ = mcm(r1 − 1, r2 − 1, . . . , ru − 1)
Se elige 2 < e < N aleatorio, tal que mcd(e, λ)=1
Para cifrar:
c ≡ me
(mód N)
ECC
Intro.
DH
RSA
ElGamal
RSA multiprimo
Para descifrar, alternativas:
m ≡ cd
(mód N), donde
d ≡ e−1
(mód λ)
Se plantea el siguiente sistemas de ecuaciones
congruenciales:
m ≡ c d1
(mód r1 )
d2
(mód r2 )
m ≡ c du
(mód ru )
m≡c
..
.
donde
di ≡ e−1
(mód ri − 1),
i = 1, . . . u
resolviéndolo tı́picamente con el algoritmo de Garner.
Números primos implicados son más pequeños (menos
costosos computacionalmente de tratar y conseguir).
Desventaja: sistema menos robusto.
ECC
Intro.
DH
RSA
ElGamal
Relleno (padding)
Documento PKCS#1
PKCS#1-v1 5: si k es la longitud en octetos del módulo N,
y l la del mensaje sólo se pueden cifrar mensajes de
longitud l ≤ k − 11
Se cifra m′ = 00||02||PS||00||m
donde PS es una secuencia aleatoria de k − l − 3 octetos,
sin ningún octeto a cero.
OAEP: Optimal Asymmetric Encryption Padding.
ECC
Intro.
DH
RSA
ElGamal
Sean
p: número primo grande (varios centenares de dı́gitos
decimales)
g: generador del grupo Zp (sus potencias generan todos
los elementos del grupo {1, . . . p − 1}).
x: número entero aleatorio secreto
y ≡ gx
(mód p)
Clave secreta: (p, g, x)
Clave pública: (p, g, y)
ECC
Intro.
DH
RSA
ElGamal
Cifrado:
Acceso a clave pública (p, g, y)
Generación de número aleatorio secreto k, con
1 < k < p − 1 y mcd(k, p − 1)=1.
Un mensaje M, con 1 < M < p se cifra como
C = (r , s)
r ≡ gk
s ≡ My k
(mód p)
(mód p)
ECC
Intro.
DH
RSA
ElGamal
Descifrado:
Acceso a su clave privada (p, g, x)
Mensaje M recuperado a partir de C = (r , s):
M ≡ s (r x )
−1
(mód p)
Comprobación:
−1
s (r x )
≡ My k
gk
x −1
(mód p)
k −1
≡ My k (g x )
(mód p)
−1
≡ My k y k
(mód p)
≡M
(mód p)
ECC
Intro.
DH
RSA
ElGamal
Ventajas: el mismo mensaje no tiene porqué tener el
mismo texto cifrado, debido a k
Inconvenientes: el cifrado es expansivo (longitud del texo
cifrado es el doble que el texto llano)
Fortaleza: logaritmo discreto
ECC
Intro.
DH
RSA
ElGamal
ECC
Ejemplo: (p, g, x) = (107, 32, 74)
siendo la clave pública ElGamal (p, g, y ), con
y ≡ 3274 ≡ 53
(mód 107)
por tanto (p, g, y ) = (107, 32, 53)
Si alguien desea enviar un mensaje cifrado al propietario de esta clave debe:
Conseguir la clave pública (p, g, y ) = (107, 32, 53)
Generar un número aleatorio k , con mcd(k , p − 1)=1, por ejemplo 49
Cifrar el mensaje M con 1 < M < p, por ejemplo M = 82:
r ≡
s≡
C=
gk
My
k
(mód p) ≡
(mód p) ≡
(r , s) =
3249
82 · 5349
(mód 107) ≡
58
(mód 107)
(mód 107) ≡
28
(mód 107)
(58, 28)
Intro.
DH
RSA
ElGamal
Ejemplo (cont.)
El propietario de la clave podrá descifrar el mensaje haciendo:
−1
(mód p)
M ≡ s rx
−1
≡ 28 5874
(mód 107)
≡ 28 · 16−1
≡ 82
(mód 107)
(mód 107)
ECC
Intro.
DH
RSA
ElGamal
ECC: Elliptic Curve Cryptography (criptografı́a de curvas
elı́pticas)
ECC
Descargar