Criptografía
Criptografía
Criptografía
INTRODUCCION
John Bayron Baena Giraldo
Escuela de Matemticas
Universidad Nacional de Colombia - sede Medelln
14 de diciembre de 2012
ndice general
Prefacio
Introduccin
vii
1. Preliminares.
1.2. Notacin O y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Cifrado/Descifrado.
2.1. Cifrador de Csar.
11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
NDICE GENERAL
ii
. . . . . . . . . . . . . . . . . . . . . . 24
. . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . 26
27
33
51
59
6.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2. Seguridad y Ataques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3. Esquemas de firmas digitales a partir de sistemas de clave pblica (PKCs)
60
NDICE GENERAL
6.4. Firmas ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.4.1. Generacin de claves . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.4.2. Generacin de la firma . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.4.3. Verificacin de la firma . . . . . . . . . . . . . . . . . . . . . . . . . 63
iii
iv
NDICE GENERAL
Prefacio
vi
0. Prefacio
Introduccin
El objetivo fundamental de la criptografa es permitir que dos personas, usualmente denominadas como Alice y Bob, se comuniquen a travs de un canal inseguro de tal manera
que un oponente, Oscar, no pueda entender lo que se transmite. Este canal podra ser una
lnea telefnica, una red de computadoras, entre otros. La informacin que Alice enva a
Bob, que llamaremos texto plano, puede ser un texto en ingls, datos numricos, entre
otros.
Alice cifra el texto plano, usando una clave predeterminada, y enva el texto cifrado resultante por el canal de transmisin. Oscar, al ver el texto cifrado, que obtiene por el
canal mediante espionaje, no puede determinar el contenido del texto plano mediante el
texto cifrado; pero Bob, quien conoce la clave de descifrado, puede descifrar el texto y
reconstruir el texto plano.
Hay dos objetivos principales en el intercambio de informacon:
Privacidad: Prevenir o evitar la exposicin o filtracin de la informacin transmitida.
Autencidad/Integridad: Prevenir o evitar la modificacin o alteracin de la informacin
0. Introduccin
viii
transmitida.
Seguridad computacional
Se tiene seguridad computacional si romper el sistema tarda una cantidad inmensa de
tiempo de computo (complejidad exponencial). La seguridad de los criptosistemas, descansan usualmente sobre algn problema matemtico difcil desde un punto de vista computacional.
Por ejemplo en el criptosistema RSA (Rivest-Shamir-Adleman), su seguridad descansa en
la factorizacin entera de un nmero entero dado n en dos factores primos p y q, pues
dado n = pq, obtener p y q es un problema computacionalmente difcil.
Hay dos tipos de criptografa, la de clave pblica y la de clave privada.
Captulo 1
Preliminares.
1.1.
1. Preliminares.
0
if a = 0
size(a) =
blog | a |c + 1 if a 6= 0
2
1.2. Notacin O y .
1.2.
Notacin O y .
En criptografa es importante calcular el tiempo de computo y la capacidad de almacenamiento que un algoritmo necesita.
Definicin 4. Sean k N, X, Y Nk , f : X R0 , g : Y R0 . Escribimos
f = O(g) si existen B, C N tal que para todo (n1 , n2 , ..., nk ) Nk , con ni > B se
cumple que :
1) (n1 , n2 , ..., nk ) X Y .
2) f(n1 , n2 , ..., nk ) Cg(n1 , n2 , ..., nk ).
Tambin se escribe g = (f ). Si g es constante, escribimos f = O(1).
Como caso particular, sean f : N R0 , g : N R0 . Escribimos f = O(g)
g = (f ) si existe C R+ tal que f (n) Cg(n) para todo n suficientemente grande.
Ejemplo 3. Sea f (n) = 2n2 + 5n + 3. Para n 1, sabemos que n n2 y 1 n2 , entonces
2n2 + 5n + 3 2n2 + 5n2 + 3n2 = 10n2 . Luego f (n) = O(n2 ).
Tambin, 2n2 + 5n + 3 = (n2 ) ya que para todo n 1, se tiene que 5n + 3 0 y
2n2 + 5n + 3 2n2 n2 .
P
j,aj Z0
, entonces f (n) = O(nD ).
En general, si f (n) = D
j=0 aj n
Nota:
O grande es el orden de magnitud de la complejidad, una cota superior para el nmero de
operaciones binarias requeridas para la operacin de un algoritmo en el peor escenario.
Ejemplo 4. Sean g N, g 2 y n N. Sea f (n) la expansin g-dica de n, entonces
f (n) = logg n + 1 logg n + 1. Si n es suficientemente grande 1 logg n, luego
f (n) logg n + 1 2 logg n. As, f (n) = O(logg n).
2
logb n
, luego f (n)
logb n. Por tanto,
Notemos que si b > 1, entonces logg n =
logb g
logb g
f (n) = O(logb n).
1. Preliminares.
1.3.
Aqu, supongamos que sumar dos bits requiere un tiempo de computo O(1).
Definicin 5. Sean a, b N dados en su representacin binaria, sean m = size(a) y
n = size(b), entonces el costo de tiempo de la adicin y la resta de a y b es O(max{m, n}).
Ejemplo 5. Sean a = 10101, b = 1011, calculamos a + b
10101
+1011
100000
Tiempo requerido O(maxsize(a), size(b)) = O(5).
Definicin 6. Sean a, b N dados en su representacin binaria, sean m = size(a) y
n = size(b), entonces el costo de tiempo de la multiplicacin y la divisin de a y b es
O(mn).
Ejemplo 6. Sean a = 11010, b = 101, calculamos ab
11010
*101
11010
00000
+11010
10000010
T (a b) = O(size(a)size(b)) = O(15).
Nota:
Si un nmero n tiene a lo mas r bits, entonces n 2r . de esta manera, si queremos
describir la complejidad en trminos de los nmeros en lugar de sus tamaos (binarios),
entonces podemos reescribir las complejidades de los algoritmos estudiados, as:
(i) Suma y resta: O(max{log2 m, log2 n})
(ii) Multiplicacin y divisin: O(log2 m log2 n).
1.4.
Tiempo polinmico.
1.5.
1. Preliminares.
(iv) Si el residuo ri+1 = 0, entonces ri = gcd(a, b) y el algoritmo termina.
(v) De lo contrario, ri+1 > 0, sea i = i + 1 y volvemos a el punto (iii).
La divisin del punto (iii) es efectuada a lo ms 2 log2 (b) + 2 veces.
Demostracin. Tenemos que
a = bq1 + r2 , 0 r2 < b = r1
b = r2 q2 + r3 , 0 r3 < r2
r2 = r3 q3 + r4 , 0 r4 < r3
..
.
rt2 = rt1 qt1 + rt , 0 rt < rt1
rt1 = rt qt .
Entonces rt = gcd(a, b).
Notemos que la sucesin b = r1 > r2 > r3 > . . . > rn > . . . 0 (2) es estrictamente
decreciente, luego eventualmente, uno de estos residuos ser cero, lo cual prueba que el
algoritmo termina en un nmero finito de iteraciones. Adems en cada iteracin del paso
(iii) tenemos que ri1 = ri qi + ri+1 , de donde gcd(ri1 , ri ) = gcd(ri , ri+1 ), i (?).
Como dijimos antes, eventualmente, un residuo ri ser cero, digamos rt+1 = 0 (t iteraciones). Entonces, rt1 = rt gt y as gcd(rt1 , rt ) = gcd(rt qt , rt ) = rt . De (?) tenemos
que
gcd(a, b) = gcd(r0 , r1 ) = gcd(r1 , r2 ) = = gcd(rt1 , rt ) = rt
Resta calcular la complejidad del algoritmo. De (2) es claro que el nmero mximo de
iteraciones t b. Dicha cuota es realmente exagerada, escojamos una mejor. Afirmamos
1
que ri+2 < ri , para todo 0 i t 1. Consideremos dos casos:
2
1
caso 1: ri+1 ri .
2
1
1
ri+2 < ri+1 ri , luego ri+2 < ri .
2
2
1
ri
ri
caso 2: ri+1 > ri (> 0, ya que i {1, 2, ..., t 1}). Tenemos 1 <
,b
c = 1 = qi+1 .
2
ri+1 ri+1
1
1
Entonces ri = ri+1 qi+1 + ri+2 = ri+1 + ri+2 , luego ri+2 = ri ri+1 < ri ri = ri . Usando
2
2
1
sto reptdamente obtenemos que para todo 2k + 1 {3, 4, ..., t + 1}, r2k+1 < r2k1 <
2
1
1
1
1
1
k
r2k3 < < k1 r3 < k r1 = k b. Si 2 b entonces k 1, de donde r2k+1 < 1,
22
2
2
2
2
luego r2k+1 = 0.
1.6.
A
B
u+
v = 1.
gcd(A, B)
gcd(A, B)
1. Preliminares.
(i) a b mod n, Z.
(ii) a + c b + d mod n.
(iii) ac bd mod n.
1.7.
Nmeros de Fermat.
n
641 | 22 + 1.
1.8.
Teorema de Fermat.
ap1
1.9.
1 mod p si p - a
0 mod p si p | a
Exponenciacin rpida.
a2 a21 g 2 (mod n)
9
..
.
r
ar a2r1 g 2 (mod n)
Cada trmino es el cuadrado del anterior.
Paso 3: Calcule g A (mod n) usando la frmula
1 +A
g A = g A0 +A1 2
22
2 +A
3
r
3 2 ++Ar 2
Ar
0 A1 A2 A3
aA
0 a1 a2 a3 ar (mod n)
Como A0 , . . . , Ar {0, 1}, entonces ste ltimo producto queda simplemente calculado
como el producto de los ai cuyo exponente Ai es 1. Esto requiere a lo ms otras r multiplicaciones mdulo N .
Se requieren a lo ms 2 log2 A multiplicaciones mdulo N para calcular g A mod n. Pero
r = blog2 Ac log2 A. Entonces se requieren a lo ms 2 log2 A multiplicaciones mod n
para calcular g A mod n.
1.10.
lgebra lineal.
Definicin 11. 1. Sea R un anillo conmutativo con unidad, denotaremos R(k,n) al espacio
de matrices Mkn (R).
2. Para A = (aij ) R(k,n) , para i, j {1, ..., n}, denotamos Ai,j la matriz que se obtiene
de A la matriz que se obtiene de A al borrar la fila i y la columna j.
3. La adjunta de A es la matriz definida por adjA = ((1)i+j detAj,i ).
4. En es la matriz identidad de orden n.
Teorema 6. A R(n,n) es invertible si y slo si detA es una unidad en R.
(n,n)
Corolario 2. Sea A Zm
y b Zlm ,
tal que f (v) = (Av + b) mod m, v Zlm . Si b = 0, entonces f se llama funcin lineal.
Teorema 7. Sea f : Znm Zlm una funcin afn, f es biyectiva si y slo si l = n y
gcd(detA, m) = 1.
10
1. Preliminares.
Captulo 2
Cifrado/Descifrado.
Definicin 13. Un esquema de cifrado o criptosistema es una 5-tupla (P, C, K, E, D),
satisfaciendo las siguientes condiciones:
1. P es un conjunto finito que llamaremos el espacio de textos planos,
2. C es un conjunto finito de posibles textos cifrados,
3. K el espacio de claves, es un conjunto finito de posibles claves y
4. E = {Ek : P C : k K} es el conjunto de funciones de cifrado.
5. D = {Dk : C P : k K} es el conjunto de funciones de descifrado.
Para cada k K, existe Ek E y Dk D tales que Dk (Ek (p)) = p, para todo texto plano p P.
2.1.
Cifrador de Csar.
Sea = {A, B, . . . , Z} el alfabeto de 26 letras. Por conveniencia tomamos la indentificacin: A 0, B 1, , Z 25. As, Z26 .
Sea P = C = K = , para e K = Z26 , la funcin de cifrado es
Ee : Z26 Z26
x
(x + e) mod 26
11
12
2. Cifrado/Descifrado.
Para d K = Z26 , la funcin de descifrado es
Dd : Z26 Z26
7
(x d) mod 26
Tomamos d = e.
Zn26
Zn26
(x1 , ..., xn )
Ejemplo 10. Tomando e = 6, cifremos el texto plano WINE. tenemos (22, 8, 13, 4)
(22 + 6, 8 + 6, 13 + 6, 4 + 6) mod 26 = (2, 14, 19, 10). Por tanto el texto cifrado es COTK.
2.2.
Tipos de ataques.
Slo texto cifrado: Es el ms dbil dado el texto cifrado c. El atacante conoce el texto
cifrado y intenta recobrar el correspondiente texto plano o la clave.
Ataque del texto plano conocido: El atacante conoce un texto plano y su correspondiente texto cifrado (o varios de tales pares de texto plano y texto cifrado correspondiente)
y quiere descifrar otros textos cifrados o conocer la clave.
Ataque del texto plano escogido: El atacante puede cifrar textos planos pero no conoce la clave. l desea conocer la llave usada o descifrar otros textos cifrados.
Ataque del texto cifrado escogido: El atacante puede descifrar algunos textos cifrados, pero no conoce la clave utilizada.
2.3.
Alfabetos y palabras.
Es conveniente ver las claves, textos planos y textos cifrados como nmeros enteros y luego
escribirlos en forma binaria. Una forma comnmente usada es tomar cadenas de 8 bits,
lo cual permite tener enteros de 0 a 255, es decir, elementos de Z256 . La gran mayora de
los computadores utilizando el cdigo ASCII (American Standard Code for Information
Interchage).
Ejemplo 12. En cdigo ASCII, la palabra Hola! corresponde a 72-111-108-97-33, lo
cual en binario es 0100100-0011011-1101101-1000110-0001001-0000100. Para despistar,
se puede repartir en bloques de 7 y rellenar con ceros.
Definicin 15. Un esquema de codificacin en un mtodo que convierte un tipo de datos
en otro tipo.
Ejemplo 13. Convertir textos en nmeros.
13
14
2. Cifrado/Descifrado.
Nota: Los computadores modernos trabajan con ms de un byte a la vez. Por ejemplo,
en computadores de 64 bits, opera con 8 bytes a la vez.
Cuando se usa un esquema de codificacin (en bits) es conveniente ver los elementos de
P, C, K como cadenas de bits de longitud fija Bp , Bc , Bk respectivamente.
El cifrado y descifrado se hace de a un bloque a la vez, por lo que es suficiente mostrar el
proceso para un slo bloque (cifradores de bloque).
Nota: Si (P, C, K, E, D) ha de ser un cifrador exitoso, debe tener las siguientes propiedades:
1. Para toda llave k y para todo texto plano m , debe ser fcil calcular el texto cifrado
Ek (m).
2. Dado un texto cifrado c y una clave k, debe ser fcil calcular el texto plano Dk (c).
3. Dado uno o mas textos cifrados c1 , ..., cn C, cifrar con la clave k, debe ser mas difcil
calcular cualquier de los correspondientes textos planos Dk (c1 ), ..., Dk (cn ) sin el conocimiento de la clave k.
4. Dado uno mas pares (m1 , c1 ), ..., (mn , cn) debe ser difcil encontrar cualquier texto
cifrado que no est en la lista, sin el conocimiento de la clave k. sto se conoce como
seguridad contra un ataque de texto plano escogido.
2.4.
15
Sea p un nmero primo grande, digamos 2159 < p < 2160 . Sea K = P = C = Zp =
{1, 2, ..., p 1}, entonces |K| = |P| = |C| 2160 . Bob y Alice eligen aleatoriamente una
clave k K, 1 k < p.
Funcin de cifrado
Ek : Zp Zp
7
km mod p
Funcin de descifrado
Dk : Zp Zp
k 0 c mod p
c
donde k 0 = k 1 mod p.
ste esquema de cifrado no satisface la propiedad 4, pues con slo conocer un par (m, c)
se puede hallar k mediante k = m1 c mod p.
Por otro lado, consideremos el criptosistema simtrico dado por las funciones de cifrado
y descifrado
Ek : Zp Zp
m
(m + k) mod p
Dk : Zp Zp
c
(c k) mod p
16
2. Cifrado/Descifrado.
Dicho criptosistema, no satisface las propiedades 1,2 y 3. Adems, dado (m, c), entonces
k = (c k) mod p, por tanto no cumple la propiedad 4.
2.5.
Cifradores de bloque.
Definicin 16. Sea X un conjunto diferente de vaco, definimos el conjunto de las permutaciones sobre X por
S(X) = {f : X X : f es funcin biyectiva}
Ejemplo 14. cuando X es finito, de cardinalidad n, entonces S(X) = Sn .
Lema 2. |Sn | = n!
Definicin 17. Sea X = {0, 1}n . Una permutacin de X en la cual slo las posiciones
de los bits son permutados es llamado una permutacin de bits. Es decir, dada 1 Sn ,
entonces
f:
{0, 1}n
b1 b2 bn
{0, 1}n
7
17
(v)
y la funcin de descifrado
D : n n
7
1 (w)
E :
n
7
(x1 , ..., xn )
D :
(x1 , ..., xn )
2.6.
Cifrado mltiple.
2.7.
2.7.1.
4
x1 ..., x4
4
7
x(1) ...x(4)
18
2. Cifrado/Descifrado.
2.7.2.
ste mtodo corrige los problemas del modo ECB. El cifrado depende del contexto. Bloques idnticos son cifrdos de manera diferente; la manipulacin del cifrado no funciona.
Definicin 19. La funcin o exclusiva de 2 bits (XOR), se define como
: {0, 1}2 {0, 1}
(b, c)
b c = (b + c) mod 2
En forma general, dados (b1 , ..., bl ), (c1 , ..., cl ) {0, 1}l , entonces (b1 , ..., bl ) (c1 , ..., cl ) =
(b1 c1 , ..., bl cl ).
Para ste mtodo elegimos un vector de inicializacin IV {0, 1}n el cual puede ser pblico, una longitud de bloque n y un alfabeto .
19
20
2. Cifrado/Descifrado.
0001, m3 = 0100, m4 = 1010 y cifrador de bloque de permutacin = (1, 2, 3, 4)
E :
{0, 1}4
x1 ..., x4
{0, 1}4
7
x(1) ...x(4)
Entonces
c1 = E (c0 m1 ) = E (0001) = 0010
c2 = E (c1 m2 ) = E (0011) = 0110
c3 = E (c2 m3 ) = E (0010) = 0100
c4 = E (c3 m4 ) = E (1110) = 1101
Luego c = 0010011001001101.
Nota: 1. CBC cifra el mismo texto plano deforma diferente para distintos IVs.
2. Cualquier intento de manipulacin en el texto cifrado, hace que el descifrado no se
pueda realizar.
3. Evita errores de transmisin.
4. Es muy indicado para el cifrado de textos muy largos.
2.7.3.
1. I1 = IV .
2. Oj = Ek (Ij ).
3. tj es los primeros r bits de Oj .
4. cj = mj tj. 5. Ij+1 se obtiene borrando los primeros r bits de Ij y anexando al final
As, c = c1 c2 cl .
1. I1 = IV .
2. Oj = Ek (Ij ).
3. tj es los primeros r bits de Oj .
4. mj = cj tj .
5. Ij+1 se obtiene borrando los primeros r bits de Ij y anexando al final mj .
Luego m = m1 m2 ml .
21
22
2. Cifrado/Descifrado.
2.7.4.
1. I1 = IV .
2. Oj = Ek (Ij ).
3. tj es los primeros r bits de Oj .
4. cj = mj tj . 5. Ij+1 = Oj .
As, c = c1 c2 cl .
1. I1 = IV .
2. Oj = Ek (Ij ).
3. tj es los primeros r bits de Oj .
4. mj = cj tj
5. Ij+1 = Oj .
Luego m = m1 m2 ml .
23
2.8.
Cifradores de flujo
Son construcciones distintas a los cifradores de bloque, los cuales tambin se usan para
cifrar textos planos de cualquier longitud. stos son especialmente apropiados para algunas aplicaciones, como comunicacin telefnica.
24
2. Cifrado/Descifrado.
2.8.1.
P4
j=1 cj s4j
25
4. Algunos modos de uso de RC4 lo han convertido en un sistema inseguro. Sin embargo,
algunos sistemas basados en RC4 son suficientemente seguros para uso comn.
2.9.
Cifrador afn
(ax + b) mod m
x
donde a0 = a1 mod m.
2.9.1.
Zm
(Av + b) mod m
donde A0 = A1 mod m.
26
2. Cifrado/Descifrado.
2.9.2.
Sea K = {A Zm
Av mod m
DA : Znm Znm
w
(A0 w mod m
donde A0 = A1 mod m.
2.9.3.
(v + k) mod m
Dk : Znm Znm
w
2.10.
(w k mod m
Ataque del texto plano conocido: Supongamos que un atacante quiere averiguar
la calve (A, b) K. Dicho atacante conoce n + 1 pares de texto plano-texto cifrado
(w0 , c0 = Aw0 + b), (w1 , c1 = Aw1 + b), ..., (wn , cn = Awn + b). Entonces ci c0 = A(wi
w0 ) mod m. Si W es la matriz W = (w1 w0 , ..., wn w0 ) mod m y C la matriz C =
(c1 c0 , ..., cn c0 ) mod m, entonces tenemos que AW = C mod m. Si W es coprimo a m,
entonces A = C(w0 adjW ) mod m, donde w0 es el inverso multiplicativo de detW mod m.
Adems, tenemos que b = c0 Aw0 . Asa clave es hallada desde n+1 pares de texto planotexto cifrado. Si el cifrador es lineal, entonces Oscar puede tomar w0 = c0 = b = 0.
Captulo 3
Paradoja del cumpleaos y secreto
perfecto.
3.1.
k1
Y
i=0
27
(n i)
28
.
Ahora, 1 + x ex se cumple para todo nmero real, por tanto desde lo anterior
q
k1
Y
ei/n = e
Pk1
i=1
i/n
= ek(k1)/(2n)
i=1
.
Si k (1 +
dos personas tengan el mismo cumpleaos es por lo menos 1/2. Para n = 365, la eleccin
k = 23 es suficiente para q 1/2. En otras palabras, si 23 personas estn en un saln,
entonces la probabilidad que dos de ellos tengan el mismo cumpleaos es por lo menos de
1/2.
3.2.
Secreto perfecto.
Un criptosistema posee secreto perfecto si Eva no puede obtener informacin alguna del
texto plano a partir del texto cifrado.
Suposiciones y Notacin:
Se supondr siempre que en el criptosistema :
1. |P |, |C|, |K| < .
2. p P, P rP (p) : Probabilidad del texto plano p (distribucin de probabilidad sobre el
espacio de textos planos P).
3. k K, P rK (k) : Probabilidad de la clave k (distribucin de probabilidad sobre el
espacio de claves K).
Para cifrar un texto plano Alice escoge una nueva clave, la cual es independiente del texto
plano. Establecemos la siguiente notacin:
1. P r(p, k) : Probabilidad de que el texto plano p ocurra y sea cifrado con la clave k.
2. P r(p, k) = P rP (p)P rK (k).
29
P r(p|c) = P r(p)
Nota: los eventos que un texto cifrado ocurra y que un texto plano en particular haya
sido cifrado son independientes.
Ejemplo 21. Veamos ahora un ejemplo de Criptosistema
P = {0, 1} con distribucin P rP (0) =
1
4
Ek :
p |k
y P rP (1) =
1
4
3
4
y P rK (B) =
3
4
Los eventos:
a {(p, k) : a = Ek (p)} = {(0, A), (1, B)} y
b {(p, k) : b = Ek (p)} = {(1, A), (0, B)}
tienen probabilidades:
P r(a) = P r(0, A) + P r(1, B) = P r(0)P r(A) + P r(1)P r(B) =
1 1 3 3
5
+ = y
4 4 4 4
8
1 3 3 1
3
+ =
4 4 4 4
8
P r(p = 0 c = a)
P r(0, A)
1/16
1
1
=
=
=
6= = P r(0)
P r(a)
P r(a)
5/8
10
4
30
Por otro lado, sea c un texto cifrado fijo. Para un texto plano p, sea k(p) la clave tal que
Ek(p) = c. Por un teorema en teora de la probabilidad tenemos que
P r(p|c) =
P r(k(p))P r(p)
P r(c|p)P r(p)
=
P r(c)
P r(c)
Para cualquier texto plano p. Ya que el criptosistema tiene secreto perfecto, tenemos que
P r(p|c) = P r(p). Lo anterior implica que P r(k(p)) = P r(c). As, la probabilidad P r(k(p))
es la misma para cualquier texto plano p. Pero cualquier clave k es igual a k(p) para algn
texto plano p. Por tanto, la probabilidad para todas las claves es la misma, que significa que la distribucin de probabilidad sobre el espacio de claves es la distribucin uniforme.
Ahora P r(k(p, c)) = 1/|K| ya que todas las claves son igualmente probables. As,
P
X
1
qP P r(q)
P r(q)P r(k(q, c)) =
=
|K|
|K|
qP
sto en la ecuacin anterior, obtenemos que P r(p|c) = P r(p).
3.3.
31
Sea n un entero positivo. La libreta de un solo uso cifra cadenas de bits de longitud n.
Tomamos P = C = K = {0, 1}n . La funcin de cifrado para cualquier clave k {0, 1}n
es
Ek : {0, 1}n {0, 1}n
p
pk
Para cifrar un texto plano p, Alice elige una clave k aleatoriamente con distribucin
uniforme desde el conjunto {0, 1}n . Ella calcula el texto cifrado c = p k. Por teorema en
secreto perfecto, ste criptosistema tiene secreto perfecto, pues la distribucin uniforme
es usada sobre el espacio de claves y para cualquier texto plano p y cada texto cifrado c
existe exactamente una clave k con c = p k, a saber k = p c.
32
Captulo 4
Criptografa de clave pblica.
Hasta ahora hemos estudiado los criptosistemas de clave privada (simtricos), en los cuales
la seguridad esta fundamentada en el desconocimiento por parte de terceros de la clave
secreta. El problema de estos criptosistemas es el intercambio entre Alice y Bob de la
clave secreta, puesto que en ausencia de un medio seguro de comunicacin (criptosistema
previo) este intercambio debera realizarse en un medio inseguro (por ejemplo internet)
poniendo as en completo riesgo la seguridad de su comunicacin.
Un ejemplo de criptosistema asimtrico es el RSA, en el cual la clave pblica es n un natural grande y e un exponente que cumple ciertas propiedades que discutiremos luego,
mientras que la clave privada es d el exponente derivado de e, este se calcula fcilmente
conociendo p y q primos, donde n = pq, pero sin conocer estos primos es virtualmente
imposible, intratable el calcular a d.
33
34
La desventaja de los criptosistemas de clave pblica es que son menos eficientes que los
de clave privada. Para resolver este inconveniente es usual en la practica usar un PCK
como medio seguro para intercambiar claves de un SKC (secret key cryptosystem) que es
mas eficiente.
4.1.
Seguridad semntica.
Definicin 22. Un PKC es seguro semanticamente si un atacante pasivo (ataques de
solo texto cifrado) con recursos limitados no puede obtener informacin relevante del
texto plano que corresponde al texto cifrado dado (secreto perfecto).
Seguridad de texto cifrado escogido.
Definicin 23. un PKC es seguro con respecto al ataque de texto cifrado escogido si dados
n pares (m1 , c1 ), (m2 , c2 ), . . . , (mn , cn ) de textos planos mk y sus respectivos textos cifrados
ck y otro texto cifrado c, no sea posible por medios prcticos hallar el correspondiente
texto plano m de c.
Nota: En los PKC siempre es posible este tipo de ataque, puesto que el atacante puede
cifrar cualquier cantidad de textos por lo que esta propiedad es fundamental. Hasta el
da de hoy no se ha podido probar lo intratable de los problemas computacionales en
los cuales se basan los PKC actuales. Por esto no existen PKC que sean probablemente
seguros (probably secure).
4.2.
Criptosistema RSA.
Generacin de claves
35
36
Nota: Para que la implementacin del RSA sea eficiente se usa el algoritmo de la exponenciacin rpida.
Ejemplo 22. sean p = 11, q = 23, entonces n = pq = 253 y (n) = (p 1)(q 1) =
(10)(22) = 220 = (4)(5)(11) ahora debemos escoger un e, con 1 < e < 220, gcd(e, 220) =
1, digamos e = 3, luego, usando el algoritmo euclidiano extendido calculamos
d = e1 mod 220 = 147, entonces nuestro espacio de textos planos y cifrados es Z253 , la
clave publica es el par (n, e) = (253, 3) y la clave secreta es d = 147, tenemos que el
cifrado viene dado por c = m3 mod 253 y el descifrado lo realizamos calculando
m = c147 mod 253, por ejemplo si m = 165 el correspondiente texto cifrado es c =
1653 mod 253 = 110 y al descifrar m = 110147 mod 253 = 165.
4.3.
Cifrado
E : k k+1 , para (m1 , . . . , mk ) k hacemos m =
Pk
n=1
mn N kn .
Teorema 11. m Zn
Demostracin.
0m=
k
X
n=1
mn N
kn
(N 1)
k
X
n=1
N kn =
(N 1)(N k 1)
= Nk 1 n 1
(N 1)
37
Descifrado
D : k+1 k , dado el texto cifrado (co , . . . , ck ) k+1 hacemos c =
Pk
n=0 cn N
kn
Nota:
Aunque la anterior descripcin no corresponde a la de un cifrador de bloque en el sentido
tradicional, RSA puede ser usado en versiones modificadas de los modos de operacin
ECB y CBC. Sin embargo, El RSA no puede ser implementado en los modos CFB, ni
OFB ya que su funcin de cifrado es pblica.
Ejemplo 23. sean p = 11, q = 23, luego, n = pq = 253, (253) = 220, tomemos e = 3,
entonces d = 147 sea N = 4, = {0, a, b, c} {0, 1, 2, 3} = Z4 , k = blog4 253c = 3,
entonces el espacio de textos planos es 3 y el de textos cifrados es 4 .
Sea abb nuestro texto plano. (1, 2, 2) m = 1(42 ) + 2(41 ) + 2(40 ) = 26, luego c =
263 mod 253 = 119, c c = 1(43 ) + 3(42 ) + 1(41 ) + 3(40 ), de donde el texto cifrado
correspondiente a abb es (1, 3, 1, 3), el cual podemos identificar en con acac.
Estudiemos la seguridad del RSA, Oscar, el atacante conoce (n, e), veremos ahora que
Oscar puede encontrar p y q, si y solo si puede hallar d.
38
como antes), entonces existe t {0, . . . , s 1}, tal que 1 < gcd(a2 k 1, n) < n.
Demostracin. Sea a Z, con gcd(a, n) = 1, se cumple que (ae )d a mod n, esto es
n | (ae )d a, y como n = pq se tiene que p | (ae )d a y q | (ae )d a, es decir, que
tenemos (ae )d a mod p y (ae )d a mod q, luego aed1 aa1 mod p, es decir que
s
(ak )2 1 mod p, de donde |ak |Zp | 2s y por tanto existe u {0, . . . , s} tal que |ak |Zp = 2u .
Razonando de manera anloga llegamos a que existe t {0, . . . , s} tal que |a|Zq = 2t ,
pero por hiptesis 2u 6= 2t y pos tanto u 6= t, sin perdida de generalidad supongamos que
t
(p 1)(q 1)
.
2
g = gcd(22
1, 253) = 253
Para t = s 2 = 3 2 = 1
1 55
g = gcd(22
1, 253) = 253
para t = s 3 = 3 3 = 0
0 55
g = gcd(22
1, 253) = 23 = q.
Q
m
= nj=1 mj ,
mk
k6=j
como gcd(mi , mj ) = 1, para i =
6 j se tiene gcd(mk , Mk ) = 1 para k {1, . . . , n}, enDemostracin. Sea m =
Qn
k=1
39
40
4.4.
Eficiencia en el descifrado
Utilizando el teorema chino del residuo se puede realizar de manera mas eficiente el descifrado as:
Dado un texto cifrado c con RSA se calcula:
mp = cd mod p1 mod p
mq = cd mod q1 mod q
entonces el texto plano m viene dado por:
m mp mod p
m mq mod q
Teorema 15. m obtenido como solucin de estas congruencias es efectivamente el texto
plano correspondiente a c
Demostracin.
Multiplicatividad (Defecto)
Supongamos que dos mensajes m1 , m2 Zn han sido cifrados con la clave (e, n), esto es
c1 = me1 mod n y c2 = me2 mod n, entonces c = c1 c2 = (m1 m2 )e mod n De esta manera, si
alguien conoce los textos cifrados c1 y c2 puede conocer el texto cifrado c correspondiente
a m = m1 m2 .
RSA Seguro
An si se siguen todas las recomendaciones anteriores para evitar dichos ataques al usar
RSA, persiste una debilidad muy grande: RSA no es semnticamente seguro o seguro
contra ataques de texto cifrado escogido (el atacante puede descifrar textos cifrados de su
eleccin).
por esto, existe una variante del RSA que es considerada segura, desarrollada en OAEP
(Optimal Asymmetric Encrypter Protocol).
Nota:
RSA se puede generalizar, usndolo en un grupo finito G en lugar de Zn , pero no hay
ganancia alguna con ello.
4.5.
Criptosistema Rabin
Tambin se basa en el problema de la factorizacin entera. A diferencia del RSA el problema de romper el criptosistema Rabin es tan difcil como el mismo problema de la
factorizacin entera.
Generacin de Claves
Alice escoge aleatoriamente dos primos p y q, tales que p q 3 mod 4, y calcula n = pq.
Clave pblica: n
Clave secreta: (p, q)
Espacio de textos planos y cifrados: Zn
Cifrado: Dado m Zn
E(m) = c = m2 mod n
El descifrado lo trataremos mas tarde.
41
42
Lema 3. Sea p un numero primo, con p 3 mod 4. Sea a Z tal que a es un cuadrado
mod p, esto es, existe un b Zp tal que a b2 mod p. entonces a
p+1
4
cuadrada de a mod p.
Demostracin. Sea b Zp tal que a b2 mod p, como p 3 mod 4 se tiene p + 1
0 mod 4, esto es 4 | p + 1 y en particular
(b2 )
p+1
2
p+1
4
N, entonces (a
p+1
4
)2 = (a
p+1
2
)2 = a
p+1
2
Ejemplo 26. Encontrar una raz cuadrada de a = 2201 mdulo el primo p = 4127.
Solucin:
p es un primo con p 3 mod 4, entonces por el lema a
p+1
4
= 2201
4128
4
= 22011032
3718 mod pes una raz cuadrada de a mdulo p, adems, es fcil verificar que 37182 mod 4127 =
2201
Nota:
si n = pq y a es un cuadradomod p y q para hallar eficientemente una raz cuadrada de a
mod n se puede usar el siguiente algoritmo.
Algoritmo 2. Dado a Z tal que a es cuadrado mdulo p y q.
1) Hallamos
ap = a
aq = a
p+1
4
mod p
p+1
4
mod q
p+1
4
q+1
4
mod p mp = 4
mod q mq = 3
43
44
c es un cuadrado mod n
17
races de 36 mod 253
c = (Usando R)
236
247
y entonces Eva consigue:
gcd(m x, n) =
45
4.6.
Logaritmo Discreto
10
11
12
s = logg a
11
10
Observaciones:
1) En general (en Zp )
46
4.7.
Intercambio de claves D - H
Seleccin de parmetros
Queremos escoger un entero g cuyo ordenmod p sea lo suficientemente grande. Por lo general se escoge g siendo una raz primitivamod p, como ya habamos comentado, pero este
problema en general es intratable, ya que requiere una factorizacin de p1. Sin embargo,
si p se elige de manera especial se pueden encontrar races primitivasmod p eficientemente.
p1
Por ejemplo si se escoge p tal que
sea tambin primo se puede hallar g eficiente
2
mente. Hoy en da se requiere que p sea del orden de 1024 bits.
Seguridad:
Un atacante conoce p, g, A, B
Problema Diffie-Hellman
?
logaritmos discretos
=
el problema D - H
La primera de las implicaciones es la nica forma que se tiene para romper el protocolo
D - H, la recproca es un problema abierto muy importante en PKC.
Problema de decisin D - H
Dados g a mod p, g b mod p y g c mod p, decidir si g c = g ab mod p.
Nota:
Si este problema es intratable entonces ningn atacante puede obtener informacin relevante a partir de la informacin publica en D - H.
Ataque Men-in-the-middle
47
48
4.8.
Criptosistema ElGamal
Cifrado:
Espacio de textos planos y cifados: Zp
Bob: Texto plano m Zp
Escoge aleatoriamente b {o, . . . , p 2}
Calcula B = g b mod p (Esta es la parte Bob de la clave secreta de D - H)
Calcula c = Ab m mod p (= km mod p)
Texto cifrado: (B, c) Alice
49
50
Captulo 5
Funciones Criptogrficas Hash
5.1.
52
5.2.
El ataque del cumpleaos combate la resistencia a colisin fuerte de una funcin hash
h : n , n 1. La idea del ataque es la siguiente:
(1.) Conseguimos tantos valores hash h (x) como el tiempo y la memoria computacional
permitan.
(2.) Todos estos valores (x, h (x)) son ordenados y almacenados.
53
54
50
100
150
200
Como log2 f (n) n/2 entonces f (n) 2n/2 . Esto significa que calculando un poco ms
de 2n/2 valores hash el ataque del cumpleaos encuentra una colisin con probabilidad
mayor a 1/2.
Para prevenir esto debe procurarse que n sea elegido de manera tal que calcular 2n/2
valores hash no sea factible. Con la tecnologa actual, se sugiere que n 128 y en algunos
casos se requiere incluso que n 160.
5.3.
5.4.
Las funciones de compresin resistentes a colisiones pueden utilizarse para construir funciones hash resistentes a colisiones. Describimos la idea de R. Merkle para tal definicin.
Sea g : {0, 1}m {0, 1}n una funcin de compresin resistente a colisiones y definimos
r = m n > 0. A partir de g deseamos construir una funcin hash h : {0, 1} {0, 1}n .
Sea x {0, 1} y supongamos que r > 1. h (x) se computa de la siguiente manera:
(i.) Construimos y = 0 0x adicionando ceros al comienzo de x hasta que ` (y), la
longitud de y, sea divisible entre r.
(ii.) Se adicionan r ceros al final de y para formar z = y 0| {z
0}.
r
55
56
Funcin hash
Longitud de bloque
MD4
128
MD5
128
RIPEMD-128
128
RIPEMD-160
160
SHA-1
160
5.5.
Las funciones criptogrficas hash se pueden utilizar para verificar la integridad de un documento, como vimos en el ejemplo 38. Si adems de la integridad estamos interesados
en comprobar la autenticidad del mismo pueden utilizarse funciones hash parametrizadas.
Definicin 26 (MAC). Una funcin hash parametrizada (o MAC) es una familia {hk : k K}
de funciones hash, donde K, es un conjunto no vaco llamado el espacio de claves de h.
Ejemplo 39. Sea g : {0, 1} {0, 1}4 una funcin hash. Podemos construir un MAC a
partir de g as: para k K = {0, 1}4 definimos la funcin hk : {0, 1} {0, 1}4 : x 7
g (x) k.
As, {hk : k K} es una funcin hash parametrizada, de acuerdo a nuestra definicin.
Como indicamos, la idea es utilizar un MAC para verificar autenticidad. La manera de
hacerlo es la siguiente:
(i.) Bob y Alice intercambian una clave secreta k K.
(ii.) Alice enva a Bob la pareja (x, hk (x)).
(iii.) Bob recibe (x0 , y 0 ).
(iv.) Bob acepta el documento x0 siempre que y 0 = hk (x0 ). De lo contrario, lo rechaza.
Este protocolo es seguro slo si obtener un par (x, hk (x)) sin el conocimiento de la clave
k K es intratable. Ms detalles al respecto pueden encontrarse en [1].
57
58
Captulo 6
Firmas Digitales
6.1.
Introduccin
6.2.
Seguridad y Ataques
60
6. Firmas Digitales
Algunos de los ataques posibles son los siguientes.
No-message attack: El atacante, Oscar, obtiene la clave pblica de verificacin de Alice y
puede computar mensajes x y sus respectivas firmas como si fuera Alice.
Un esquema de firmas digitales es considerado seguro contra este tipo de ataques si ningn atacante puede ejecutar tal ataque con una probabilidad de xito no despreciable, en
tiempo polinmico.
6.3.
Sea un criptosistema. Para un par (e, d) de claves de cifrado y descifrado correspondientes, existen Ee y Dd funciones de cifrado y descifrado, respectivamente. Supongamos
que para todo para todo par (e, d) y todo texto plano m se tiene
m = Ee (Dd (m)) .
Entonces puede ser usado para construir un esquema de firmas digitales de alguna de
las dos formas que describimos a continuacin.
(Vi.) Dado un documento m P, el espacio de textos planos de , Alice firma el
documento m con su clave de descifrado privada d y obtiene s = Dd (m). Alice
enva el par (m, s) a Bob, quien verifica la firma mediante la clave pblica de
cifrado e chequeando que m = Ee (s).
(Vii.) Alice y Bob acuerdan el uso de una funcin hash h pblica resistente a colisiones.
6.3.1.
Firmas RSA
Podemos aplicar el mecanismo descrito antes con el criptosistema RSA. Explicamos las
etapas del esquema de firmado digital.
Generacin de clave
Utilizamos la misma generacin de claves del criptosistema RSA: Alice elige dos primos p, q
aleatoriamente y hace n = pq. A continuacin elige un exponente e tal que 1 < e < (n)
y gcd (e, (n)) = 1. As mismo computa d Z tal que 1 < d < (n) y de 1 mod (n).
Su clave pblica es (n, e) y su clave secreta es d.
61
62
6. Firmas Digitales
Ejemplo 41. Alice elige p = 11, q = 23, e = 3 y d = 147. Su clave pblica es (n, e) =
(253, 3) y su clave privada (secreta) es d = 147.
Supongamos que Alice desea retirar US $111 de un cajero electrnico. Alice debe confirmar
que esto es lo que desea y para ello firma el nmero 111 y obtiene
s = 111147 mod 253 = 89.
El cajero recibe (111, 89) y verifica que 111 = 893 mod 253. De esta manera el cajero
sabe que es, en efecto, Alice quien desea retirar los US $111 e inclusive puede probarlo a
terceros.
El firmado digital mediante RSA como se describi arriba es susceptible de un nmero de
ataques posibles:
No-message attack (o de falsificacin existencial): Oscar elige s Zn y afirma que s
es una firma RSA vlida de Alice y enva a Bob. Bob calcula m = se mod n y puede
creer que Alice ha firmado m, si m resulta ser un texto con sentido.
Multiplicador de RSA: Dados m1 , m2 Zn y s1 = md1 mod n, s2 = md2 mod n, por la
propiedad multiplicativa de RSA, s = s1 s2 mod n = (m1 m2 )d mod n es la firma de
m = m1 m2 . A partir de esta propiedad se puede ejecutar un ataque de texto cifrado
escogido, situacin que puede evitarse mediante el uso de una llamada funcin de
redudancia.
Esto es, una funcin como R : {0, 1} {0, 1} : w 7 ww que trabaja por concatenacin. Esta funcin puede aplicarse al mensaje antes de ser firmado y en tales
circunstancias es muy improbable que el texto m = m1 m2 mod n tenga precisamente
la forma ww.
Como la clave pblica de Alice debe encontrarse en un directorio pblico, es necesario
que este directorio sea seguro. De lo contrario, Oscar podra reemplazar la clave
pblica de Alice con la suya sin que Bob lo note y, efectivamente, firmar en nombre
de Alice.
6.4.
Firmas ElGamal
Este esquema de firmado digital est basado en el criptosistema ElGamal, pero no mediante la aplicacin del esquema explicado en la seccin 6.3 de obtencin de firmas digitales
63
6.4.1.
Generacin de claves
Esta etapa es idntica a la del criptosistema ElGamal. La clave pblica es (p, g, A) donde
p es un primo grande elegido aleatoriamente por Alice, g es una raz primitiva mdulo p,
A = g a mod p y a {1, . . . ., p 2}. La clave secreta es a.
6.4.2.
Generacin de la firma
Alice elige una funcin hash h pblica resistente a colisiones, h : {0, 1} {1, 2, . . . , p 2}.
Para firmar un documento x {0, 1} , Alice elige un nmero aleatorio k {1, 2, . . . , p 2}
que es primo relativo con p 1 y computa
r = g k mod p
(6.1)
(6.2)
6.4.3.
Verificacin de la firma
Bob utiliza la clave pblica (p, g, A) para realizar la verificacin. Esto se hace en dos
etapas: primero Bob se asegura que 1 r p 1 y en caso contrario rechaza la firma. A
continuacin Bob verifica que
Ar rs g h(x) mod p.
(6.3)
64
6. Firmas Digitales
Demostracin. De la ecuacin 6.1 y como g es una raz primitiva entonces r {1, . . . , p 1}.
Ahora, si s se computa por la ecuacin 6.2 entonces
Ar rs g ar g kk
1 (h(x)ar)
Bibliografa
[1] A. Menezes, P. Van Oorschot & S. Vanstone, Handbook of Applied Cryptography
(Discrete Mathematics and Its Applications). 1996.
[2] J. Buchmann, Introduction to Cryptography (Springer). 2004.
[3] J. Silverman, An Introduction to Mathematical Cryptography (Springer). 2008.
65