Sei sulla pagina 1di 75

A LA CRIPTOGRAFIA

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.1. Algoritmo de la divisin y expancin g-dica. . . . . . . . . . . . . . . . . .

1.2. Notacin O y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3. Costo de adicin, multiplicacin y divisin con residuo. . . . . . . . . . . .

1.4. Tiempo polinmico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5. Forma normal y extendida del algoritmo euclidiano. . . . . . . . . . . . . .

1.6. Funcin phi de Euler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7. Nmeros de Fermat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.8. Teorema de Fermat.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.9. Exponenciacin rpida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.10. lgebra lineal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Cifrado/Descifrado.
2.1. Cifrador de Csar.

11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2. Tipos de ataques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12


2.3. Alfabetos y palabras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4. Algunos cifradores simtricos. . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5. Cifradores de bloque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6. Cifrado mltiple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.7. Modos de operacin de los cifradores de bloque. . . . . . . . . . . . . . . . 17
2.7.1. Modo ECB (Electronic CodeBook). . . . . . . . . . . . . . . . . . . 17
2.7.2. Modo CBC (Cipher Block Chaining mode). . . . . . . . . . . . . . 18
2.7.3. Modo CFB (Cipher Feedback Mode). . . . . . . . . . . . . . . . . . 20
i

NDICE GENERAL

ii

2.7.4. Modo OFB (Output Feedback mode). . . . . . . . . . . . . . . . . . 22


2.8. Cifradores de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.8.1. Cifrador de flujo cincrnico

. . . . . . . . . . . . . . . . . . . . . . 24

2.9. Cifrador afn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


2.9.1. Cifrador de bloque afn general. . . . . . . . . . . . . . . . . . . . . 25
2.9.2. Cifrador de Hill (Lester S. Hill, 1929).

. . . . . . . . . . . . . . . . 26

2.9.3. Cifrador de Vigenre (Blaise Vigenre, Siglo XVI). . . . . . . . . . . 26


2.10. Criptoanlisis del cifrador afn.

. . . . . . . . . . . . . . . . . . . . . . . . 26

3. Paradoja del cumpleaos y secreto perfecto.

27

3.1. Paradoja del cumpleaos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27


3.2. Secreto perfecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3. Libreta de un solo uso de Vernam. . . . . . . . . . . . . . . . . . . . . . . . 31
4. Criptografa de clave pblica.

33

4.1. Seguridad de los criptosistemas de clave pblica. . . . . . . . . . . . . . . . 34


4.2. Criptosistema RSA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3. RSA como cifrador de bloques. . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4. Escogencia de parmetros en RSA. . . . . . . . . . . . . . . . . . . . . . . 40
4.5. Criptosistema Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.6. Logaritmo Discreto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.7. Intercambio de claves D - H . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.8. Criptosistema ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5. Funciones Criptogrficas Hash

51

5.1. Funciones hash y de compresin . . . . . . . . . . . . . . . . . . . . . . . . 51


5.2. Ataque del cumpleaos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.3. Funciones de compresin a partir de funciones de cifrado . . . . . . . . . . 54
5.4. Funciones hash a partir de funciones de compresin (R. Merkle) . . . . . . 55
5.5. Message Authentication Codes (MACs) . . . . . . . . . . . . . . . . . . . . 57
6. Firmas Digitales

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

6.3.1. Firmas RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

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

Figura 1: Canal de comunicacin.


vii

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.

Criptografa de la clave privada (Simtrica):


Si en un criptosistema la clave de cifrado es siempre igual a la llave de descifrado, o si sta
ltima puede ser obtenida fcilmente desde la primera, entonces el criptosistema es llamado simtrico. Si Alice y Bob usan un criptosistema simtrico, ellos deben intercambiar
la clave secreta antes de empezar la comunicacin. El intercambio seguro de las claves
es un problema importante. La clave se debe mantener en secreto, ya que cualquier persona que conozca dicha clave, puede determinar la correspondiente clave de descifrado.
Ejemplos de criptosistemas simtricos son los cifradores de bloque y los cifradores de flujo.

Criptografa de la clave pblica (Asimtrica):


En los criptosistemas asimtricos, las llaves de cifrado y descifrado son distintas, y la
computacin de la segunda desde la primera es inviable. En tal sistema, la llave de cifrado
puede ser hecha pblica. Si Bob desea recibir mensajes cifrados, el publica una llave de
cifrado y mantiene la correspondiente llave de descifrado secreta. Cualquiera puede usar
la clave de cifrado a cifrar mensajes para Bob. Por lo tanto, dicha clave es llamada clave
pblica. Pero solo Bob puede descifrar el mensaje, as, la llave de Bob es llamada clave
privada. Ejemplos de criptosistemas asimtricos son RSA y el cifrado ElGamal.

Captulo 1
Preliminares.
1.1.

Algoritmo de la divisin y expancin g-dica.

Definicin 1. Sea R, el mayor entero (mximo piso) de se define como bc :=


max{b Z : b }.
Nota:
1) Este mximo existe porque el conjunto {b Z : b } Z est acotado por encima.
2) A = bc si y slo si A < A + 1.
Teorema 1. Sean a, b Z, b > 0. Entonces existen enteros q y r determinados de manera
nica, tales que a = qb + r y 0 r < b.
Demostracin. sean q := ba/bc Z y r := a qb. As qb + r = qb + (a qb) = a.
Como q = ba/bc, por nota anterior q a/b < q + 1, de donde qb a < qb + b, luego
0 a qb < b. Concluimos que 0 r < b.
Veamos unicidad. Sean q 0 , r0 Z tal que a = q 0 b+r0 y 0 r0 < b. Entonces 0 aq 0 b < b,
de donde q 0 a/b < q 0 + 1. Luego q 0 = ba/bc = q.

Lema 1. Sean g Z, g > 1 y a N. Entonces existe un nico m N tales que


g m1 a < g m .


Demostracin. Sea m = logg a + 1, entonces m 1 logg a < m. Como g > 1, entonces
g m1 a < g m .
1

1. Preliminares.

Teorema 2. Sea g R, g > 1. Entonces para todo a N, existen nicos k N y


P
(a1 , ..., ak ) {0, 1, ..., g 1}k con a1 6= 0, tal que a = ki=1 ai g ki .

Demostracin. Sean g N, g > 1 y a N.


Existencia.
Sea P (a) la afirmacin

Ejemplo 1. Si g = 10, entonces 518 = 5 102 + 1 101 + 8 100 .


Corolario 1. De la induccin en la demostracin del teorema anterior, tenemos que
k
j




Pi1
kj
ki
k1
, donde k = logg a + 1.
a1 = a/g
. En general, ai = (a j=1 bj g )/g
Definicin 2. La sucesin (a1 , ..., ak ) en Teorema 2, es llamada la expansin g-dica de


a. a1 , ..., ak se llaman dgitos g-dicos. k = logg a + 1 es la longitud g-dica.
Nota:
1) Denotaremos la expancin g-dica por (a1 , ..., ak )g .
2) Si g = 2, (a1 , ..., ak )g es llamada expansin binaria. Si g = 16, (a1 , ..., ak )g es llamada
expansin hexadecimal.
Ejemplo 2. Encontrar la expansin hexadecimal de a = 500.



500 1 162
500
= 1, a2 =
=
Por corolario, tenemos que k = blog16 500c+1 = 3, a1 =
2
1
16
16



  
244
244 15 162
4
= 15, a3 =
=
= 4. As, 500 = 1 162 + 15 161 + 4 160 =
0
16
16
1
(1, 15, 4)16 .
Definicin 3. Sea a Z, la longitud binaria de a el tamao de a, denotado por size(a),
se define por

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.

Costo de adicin, multiplicacin y divisin con residuo.

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.4.

Tiempo polinmico.

Definicin 7. Supongamos que un algoritmo tiene como datos de entrada z1 , ..., zn Z.


Decimos que el algoritmo tiene tiempo polinmico, si existen e1 , ..., en Z0 tales que el
tiempo de ejecucin del programa es O((size(z1 ))e1 (size(z2 ))e2 (size(zn ))en ).
Un algoritmo es considerado efectivo si posee tiempo de computo polinmico.

Para algoritmos con un dato de entrada tenemos las siguientes definiciones.


Definicin 8. Sea n la longitud binaria del dato de entrada.
(i) Decimos que el algoritmo tiene tiempo polinmico, si el tiempo de ejecucin es igual a
O(nc ), para algn c R+ . Si tal es el caso, decimos que el algoritmo es eficiente.
(ii) El algoritmo tiene tiempo exponencial, si el tiempo de ejecucin es igual a O(cp(n) ),
para algn c R+ y p(n) un polinomio en n. En ste caso, decimos que el algoritmo es
ineficiente.
(iii) El algoritmo tiene tiempo super-exponencial, si el tiempo de ejecucin es igual a
O(ec+O(1) (ln n)r (ln(ln n))1r ), con r R, 0 < r < 1, c R+ y f (n) tal que lmn f (n) =
0.
Ejemplo 7. El algoritmo de la divisin tiene tiempo polinmico. Los algoritmos de factorizacin de enteros tienen tiempo exponencial.
Nota:
Polinmico << super-exponencial << exponencial.

1.5.

Forma normal y extendida del algoritmo euclidiano.

Teorema 3 (Algoritmo euclidiano). Sean a y b enteros positivos tales que a b. El


siguiente algoritmo calcula el gcd(a, b) en un nmero finito de iteraciones.
(i) Sean r0 = a y r1 = b.
(ii) Sea i = 1.
(iii) Divida ri1 por ri , obteniendo un cociente qi y un residuo ri+1 ; ri1 = ri qi + ri+1 , 0
ri+1 < ri .

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. Funcin phi de Euler.

Como rt+1 = 0, entonces 2k + 1 t + 1 y as 2k t.


De sta manera el algoritmo termina en a lo ms 2k iteraciones. Sea k el entero ms
pequeo tal que 2k b > 2k1 , entonces k log2 b > k 1, luego el nmero de iteraciones
es menor o igual a 2k = 2(k 1) + 2 < 2 log2 b + 2.
Ejemplo 8. Encontremos el gcd(2024, 748). Tomando a = 2024 y b = 748 en el algoritmo
euclidiano, tenemos que el nmero de iteraciones es < 2 log2 (748) + 2 2 10 + 2 = 22.
Adems,
2024 = 748 2 + 528
748 = 528 1 + 220
528 = 220 2 + 88
220 = 88 2 + 44
88 = 44 2 + 0
Entonces gcd(a, b) = 44.
Teorema 4 (Algoritmo euclidiano extendido). Sean a, b N. Entonces la ecuacin au +
bv = gcd(a, b) siempre tiene soluciones enteras u, v. Si (u0 , v0 ) es una solucin, entonces
bk
ak
y v = v0
, para algn k Z.
toda solucin tiene la forma u = u0 +
gcd(a, b)
gcd(a, b)
Demostracin. Del algoritmo euclidiano r2 = a bq1 y b = r2 q2 + r3 , de donde b =
(a bq1 )q2 + r3 , luego r3 = aq2 + b(1 + q1 q2 ). Continuando de esta manera, llegamos a
que gcd(a, b) = rt = au + bv, u, v Z
Nota:
Au + Bv = gcd(A, B)

1.6.

A
B
u+
v = 1.
gcd(A, B)
gcd(A, B)

Funcin phi de Euler.

Definicin 9. Sea n N. La funcin phi de Euler es definida por (n) := #{1 a


n 1 : gcd(a, n) = 1}, donde # refiere a cardinalidad.
Nota: a b mod n n/(b a).
Proposicin 1. Sean a, b, c, d Z y n N tales que a b mod n y c d mod n.
Entonces:

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

Definicin 10. Un nmero de Fermat es un nmero natural de la forma 22 + 1, n N.


5

Ejemplo 9. Probemos que 641 | 22 + 1.


Tenemos que 25 = 32 y 641 = 5 27 + 1, entonces 5 27 1(mod 641), multiplicando
varias veces 54 228 1(mod 641) (?). Tambin, 641 = 54 + 24 , luego 54 24 (mod 641).
De lo anterior y (?), 232 1(mod 641), de donde 232 + 1 0(mod 641). Concluimos que
5

641 | 22 + 1.

1.8.

Teorema de Fermat.

Teorema 5. Sea p un nmero primo y a Z. Entonces

ap1

1.9.

1 mod p si p - a

0 mod p si p | a

Exponenciacin rpida.

Dados A, N N y g Z, daremos el algoritmo para calcular g A mod n.


Paso 1: Calcular la expansin binaria de A como A = A0 +A1 21 +A2 22 +A3 23 + +Ar 2r ,
con A0 , A1 , . . . , Ar {0, 1} y r = blog2 (A)c.
i

Paso 2: Calcule las potencias g 2 (mod n), 0 i r, considerando la sucesin


a0 g(mod n)
a1 a20 g 2 (mod n)
2

a2 a21 g 2 (mod n)

1.10. lgebra lineal.

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

= g A0 (g 2 )A1 (g 2 )A2 (g 2 )A3 (g 2 )Ar

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

. A es invertible si y slo si gcd(detA, m) = 1 y A1 =

(detA)1 adjA(mod m).


(l,n)

Definicin 12. Una funcin f : Znm Zlm se llama afn si existen 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.

Versin general: Sea = Z26 , n Z, K = Z26 , P = C = n = Zn26 , entonces


Ee :

Zn26

Zn26

(x1 , ..., xn )

(x1 + e, ..., xn + e) mod 26

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.

2.3.

Alfabetos y palabras.

Un alfabeto es un conjunto finito no vaco . Su longitud ||, es el nmero de elementos


que posee. Sus elementos son smbolos o letras.
Ejemplo 11. El alfabeto tradicional es = {a, b, ..., z}. Por otro lado, el cdigo ASCII
tiene 128 elementos.
Definicin 14. Sea un alfabeto.
1. Una palabra o cadena sobre es una sucesin finita de elementos de . Se incluye la
cadena vaca que se denotar por .
2. es el conjunto de todas las cadenas de , incluyendo la cadena vaca.
3. Si L , decimos que L es un idioma o un lenguaje.
4. Si u, v , entonces uv es la palabra qque resulta de concatenar u y v.

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.

Un esquema de codificacin difiere de uno de cifrado en el sentido que es completamente


pblico. La funcin de codificacin y su inversa (de decodificacin) deben ser fciles de
calcular.

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).

Hacemos la siguiente modificacin: Pasamos de la cadena de bits de longitud B a enteros


entre 0 y 2B 1.
aB1 aB2 a2 a1 a0 aB1 2B1 + + a2 22 + a1 21 + a0
Tomamos
P = {m Z : 0 m < 2Bp }
C = {c Z : 0 c < 2Bc }
K = {k Z : 0 k < 2Bk }
Nota: Con la tecnologa actual, una longitud es considerada intratable si el espacio de
calves tiene por lo menos 280 elementos. Debido a algunos refinamientos de la bsqueda
exhaustiva, se recomienda un tama 21 o del espaci ode claves con al menos 2160 elementos.

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. Algunos cifradores simtricos.

2.4.

15

Algunos cifradores simtricos.

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.

La bsqueda exhaustiva no es posible en ste caso. Se puede probar fcilmente que el


criptosistema tiene las propiedades 1 y 2.

Afirmacin El criptosistema tanbin tiene la propiedad 3.


En efecto, dados m, c Zp , existe un k Zp tal que c = Ek (m).

Dados c1 , c2 , ..., cn Zp , sea m1 Zp , entonces existe k Zp tal que c1 = Ek (m1 ). Sea


m2 = Dk (c2 ), m3 = Dk (c3 ), ..., mn = Dk (cn ), hemos construido m1 , ..., mn Zp tales que
ci = Ek (mi ), i = 1, ..., n. Por tanto satisface la propiedad 3.

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

b(1) b(2) b(n)

Definicin 18. Sean un alfabeto y n N. Un criptosistema es llamado un cifrador de


bloque si P = C = n = {0, 1}n . Aqu, n es la longitud de bloque.
Ejemplo 15. 1. El cifrador de csar con longitud de bloque 1.
2. Los cifradores anteriores.
Teorema 8. Las funciones de cifrado y descifrado de un cifrador de bloque son biyectivas.

Demostracin. Por definicin de criptosistema, dados m1 , m2 n tal que Ek (m1 ) =


Ek (m2 ), existe d K tal que m1 = Dd (Ek (m1 )) = Dd (Ek (m2 )), entonces Ek es inyectiva
y sobreyectiva, pues es una funcin inyectiva sobre dos conjuntos finitos iguales.

Nota: Con base a lo anterior, podemos definir un cifrador de bloque como:

2.6. Cifrado mltiple.

17

Sea un alfabeto y n N, tomemos P = C = n , K = S(n ). La funcin de cifrado para


una clave S(n ) es
E : n n
7

(v)

y la funcin de descifrado
D : n n
7

1 (w)

Ejemplo 16. Sea K = Sn , entonces |k| = n!. Para Sn


n

E :

n
7

(x1 , ..., xn )

D :

(x1 , ..., xn )

2.6.

(x(1) , ..., x(n) )

(x1 (1) , ..., x1 (n) )

Cifrado mltiple.

Con el objetivo de aumentar la seguridad de un cifrador de bloque, es posible utilizndo


varias veces. Comnmente se usa el cifrado E-D-E, c = Ek3 (Dk2 (Ek1 (m))), k1 , k2 , k3
K.

2.7.
2.7.1.

Modos de operacin de los cifradores de bloque.


Modo ECB (Electronic CodeBook).

Sea un alfabeto, usaremos un cifrador de bloque con longitud de bloque n. Si c K es


la calve de cifrado, entonces cada bloque es cifrado de la siguiente manera
Ejemplo 17. Sea = {0, 1}, n = 4 y K = S4 . Para S4
E :

4
x1 ..., x4

4
7

x(1) ...x(4)

18

2. Cifrado/Descifrado.

Figura 2.1: Modo ECB.


Deseamos cifrar la palabra AS, que corresponde en cdigo ASCII a 65-83, as el texto plano
es m = 0100 0001 0101 0011. Sea = (1, 2, 3, 4), entonces 1 = (1, 4, 3, 2). Tenemos
que c1 = (1000), c2 = (0010), c3 = (1010), c4 = (0110), luego c = 1000001010100110
Debilidad: Bloques iguales se cifran igual, se dicha manera se pueden reconocer patrones
del texto plano en el texto cifrado (ataque estadstico).
Por otro lado, un atacante puede modificar el texto cifrado reemplazando bloques de texto
cifrado por otros bloques de texto cifrado que han sido cifrados usando la misma calve.
ste mtodo no se recomienda para cifrar textos planos muy largos.

2.7.2.

Modo CBC (Cipher Block Chaining mode).

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 ).

2.7. Modos de operacin de los cifradores de bloque.

Figura 2.2: Modo CBC.

Ejemplo 18. Sean b = 01101, c = 11010, entonces b c = 10111.

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 .

Cifrado: Dado el texto plano m = m1 m2 ml , para una clave de cifrado e K, tenemos


c0 = IV, cj = Ee (cj1 mj ), 1 j l

Descifrado: Dado el texto cifrado c = c1 c2 cl , si d K es la clave de descifrado,


entonces
c0 = IV, mj = cj1 Dd (cj ), 1 j l
Ejemplo 19. Tomemos n = 4, c0 = IV = 1010, con el texto plano m1 = 1011, m2 =

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.

Modo CFB (Cipher Feedback Mode).

En algunas aplicaciones se requiere cifrado y descifrado en tiempo real, por ejemplo en


telefona.
Para ste mtodo se utiliza un cifrador de bloque de longitud r N, 1 r n y un
vector de inicializacin IV {0, 1}n el cual puede ser pblico.

Cifrado: Dado el texto plano m = m1 m2 ml , para una clave de cifrado k K, tenemos

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

2.7. Modos de operacin de los cifradores de bloque.

Figura 2.3: Modo CFB.


cj .

As, c = c1 c2 cl .

Descifrado: Dado el texto cifrado c = c1 c2 cl , para una clave de descifrado k K,


tenemos

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.

Nota: 1. Bob y Alice pueden calcular la cadena tj simultneamente.


2. La escogencia optima de r depende de un equilibrio entre velocidad de transmisin y
velocidad de cmputo.
3. Errores de transmisin daa el descifrado, ya que Ij+1 depende de cj .
4. CFB no se puede usar en criptosistemas de clave pblica.

2.7.4.

Modo OFB (Output Feedback mode).

Cifrador de bloque con longitud de bloque r, 1 r n, IV {0, 1}n .

Cifrado: Dado el texto plano m = m1 m2 ml , para una clave de cifrado k K, tenemos

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 .

Descifrado: Dado el texto cifrado c = c1 c2 cl , para una clave de descifrado k K,


tenemos

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 .

2.8. Cifradores de flujo

23

Figura 2.4: Modo OFB.

Nota: 1. Un error de transmisin slo se refleja en el bloque de texto plano en la misma


posicin .
2. tj slo depende de IV y de la clave k.
3. Bob y Alice pueden calcular simultneamente tj mejor que en CFB.
4. Manipulacin de un texto cifrado es ms fcil en OFB que en CFB.
5. Si se usa la misma clave k para cifrar dos textos planos m1 , m2 , entonces IV puede
calcularse.

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.

Figura 2.5: Registro de desplazamiento lineal.

2.8.1.

Cifrador de flujo cincrnico

Sea una alfabeto, P = C = , con espacio de claves K. Dada k K, generamos un


flujo de claves s1 , s2 , ..., si . Bob y Alice pueden calcular el flujo de calves de forma
sincrnica. ste slo depende de k K.
Dado k K, se calcula g(k) = s1 s2 si . Tenemos respectivamente las familias de cifrado
y descifrado
FE := {Es : : s }
FD := {Ds : : s }
Cifrado: Dado el texto plano m = p1 p2 pn , pi , se obtiene el texto cifrado c =
Es1 (p1 )Es2 (p2 ) Esn (pn )

Descifrado: m = Ds1 (c1 )Ds2 (c2 ) Dsn (cn )


Ejemplo 20. Dado n N, = {0, 1}, K = {0, 1}n , dada k = (k1 , ..., kn ) K, definimos
P
la ecuacin de recursin g de grado n por si = ki , 1 i n y s1 = nj=1 cj sij mod 2, i >
n, donde c1 , ..., cn fijos.

Si n = 4, entonces c1 = c2 = 0, c3 = c4 = 1, para i > 4, s5 =

P4

j=1 cj s4j

c1 s4 + c2 s3 + c3 s2 + c4 s1 = s2 + s1 . Entonces para i 1, si+4 = si + si+1 .


Tomemos k = (1, 0, 0, 0) K = {0, 1}4 . As g(k) = 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1.
Notemos que a partir de la posicin 15 se empieza a repetir, por tanto el periodo es 15.

Nota: 1. RC4 (Rivest cipher 4) es el sistema de cifrado de flujo ms usado.


2. Protocolo TLS/SSL protege el trfico en internet.
3. WEP (Wired Equivalent Privacy) es el encargado de la seguridad de redes inalmbricas.

2.9. Cifrador afn

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

Sea m N, = Zm , longitud de bloque igual a 1, K = {(a, b) Z2m : gcd(a, m) = 1}. Si


k = (a, b) K, entonces la fucin de cifrado es
Ek :
x

(ax + b) mod m

La correspondiente funcin de descifrado es


Dk :
(a0 (x b)) mod m

x
donde a0 = a1 mod m.

2.9.1.

Cifrador de bloque afn general.

Sea m 2 y n N la longitud de bloque. Tomamos P = C = Znm , K = {(A, b)


(n,n)

Zm

Znm : gcd(detA, m) = 1}. Para (A, b) K las correspondientes funciones de

cifrado y descifrado son


E(A,b) : Znm Znm
v

(Av + b) mod m

D(A,b) : Znm Znm


w

(A0 (w b)) mod m

donde A0 = A1 mod m.

Veamos algunos casos particulares del cifrador de bloque afn general.

26

2. Cifrado/Descifrado.

2.9.2.

Cifrador de Hill (Lester S. Hill, 1929).


(n,n)

Sea K = {A Zm

: gcd(detA, m) = 1}, las funciones de cifrado y descifrado son


EA : Znm Znm
v

Av mod m

DA : Znm Znm
w

(A0 w mod m

donde A0 = A1 mod m.

2.9.3.

Cifrador de Vigenre (Blaise Vigenre, Siglo XVI).

El espacio de claves es K = (Zm )n , con funciones de cifrado y descifrado


Ek : Znm Znm
v

(v + k) mod m

Dk : Znm Znm
w

2.10.

(w k mod m

Criptoanlisis del cifrador afn.

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.

Paradoja del cumpleaos.

Supongamos que tenemos n cumpleaos y que hay k personas en el saln. Un evento


elemental es una tupla (b1 , ..., bk ) {1, 2, ..., n}k . Si ste ocurre, entonces el cumpleaos
de la i-sima persona es bi , 1 i k, as tenemos nk eventos elementales. Asumiremos
que dichos eventos elementales son igualmente probables. Entonces la probabilidad de un
1
evento elemental es k .
n
Computaremos la probabilidad que dos personas en el saln tengan la misma fecha de
cumpleaos. Denotaremos dicha probabilidad por p. Entonces cualquier par de personas
tienen el da de cumpleaos diferente con probabilidad q = 1 p. Estimaremos sta
probabilidad q. El evento en que estamos interesados es el conjunto E de todos los vectores
(g1 , ..., gk ) {1, 2, ..., n}k cuyas entradas son diferentes a pares. Ya que la probabilidad
1
de un evento elemental es k , la probabilidad de E es el nmero de elementos en E
n
dividido por nk . El nmero de elementos de E es el nmero de vectores en {1, 2, ..., n}k
con entradas diferentes a pares. La primera entrada puede ser cualquiera de las n posibles.
Si la primera entrada es escogida, entonces hay n1 posibilidades para la segunda entrada,
y continuando obtenemos que
|E| =

k1
Y
i=0

27

(n i)

28

3. Paradoja del cumpleaos y secreto perfecto.


por tanto
k1
k1
Y
1 Y
i
q= k
(n i) =
(1 )
n i=0
n
i=1

.
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 +

1 + 8n log 2)/2, entonces q 1/2. Por tanto la probabilidad p = 1 q que

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).

3.2. Secreto perfecto.

29

Esto da origen a una distribucin de probabilidad sobre el espacio P K. Adems


1. Si p P, identificamos: p {(p, k) : k K} P K y as P rP K (p) = P rP (p),
puesto que la probabilidad de todas las claves es 1.
2. Si k K, identificamos: k {(p, k) : p P } P K, anlogamente P rP K (k) =
P rK (k) dado que la probabilidad de todos los textos planos es 1.
3. Si c C, identificamos: c {(p, k) : c = Ek (p)} P K.
4. Suponemos que Eva conoce la distribucin de probabilidad de los textos planos, por
ejemplo conoce el idioma utilizado por Alice y Bob.
Definicin 20. Un criptosistema posee secreto perfecto si
p P, c C.

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

K = {A, B} con distribucin P rK (A) =

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

P r(b) = P r(1, A) + P r(0, B) = P r(1)P r(A) + P r(0)P r(B) =

1 3 3 1
3
+ =
4 4 4 4
8

Por otro lado, P r(0|a) =

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

luego el criptosistema no posee secreto perfecto.

30

3. Paradoja del cumpleaos y secreto perfecto.


Teorema 9. Sea |C| = |K| y P r(p) > 0 para cualquier texto plano p. Un criptosistema
tiene secreto perfecto si y slo si la distribucin de probabilidad en el espacio de claves
es la distribucin uniforme y si cualquier texto plano p y cualquier texto cifrado c tienen
exactamente una llave k tal que Ek (p) = c.
Demostracin. Supongamos que el criptosistema tiene secreto perfecto. Sea p un texto
plano. Si hay texto cifrado c para el cual no existe clave k con Ek (p) = c, entonces
P r(p) 6= P r(p|c) = 0 ya que por hiptesis P r(p) > 0, lo cual contradice el secreto perfecto. As, para cualquier texto cifrado c existe una llave k con Ek (p) = c. Pero el nmero de
claves es igual a el nmero de textos cifrados. Por tanto, para casa texto cifrado c existe
exactamente una clave k con Ek (p) = c.

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 probemos el converso. Asumamos que la distribucin de probabilidad sobre el


espacio de claves es la distribucin uniforme y que para cualquier texto plano p y cualquier
texto cifrado c existe exactamente una clave k = k(p, c) con Ek (p) = c. Entonces
P r(p|c) =

P r(p)P r(k(p, c))


P r(p)P r(c|p)
=P
P r(c)
qP P r(q)P r(k(q, c))

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. Libreta de un solo uso de Vernam.

3.3.

31

Libreta de un solo uso de Vernam.

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

La funcin de descifrado para cualquier clave k es la misma que la funcin de cifrado.

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

3. Paradoja del cumpleaos y secreto perfecto.

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.

En respuesta a este problema surgen los criptosistemas de clave pblica (asimtricos) o


PKC (Public key cryptosystem), en los cuales se usan dos claves, la clave publica que
es usada para cifrar y una clave privada que es usada para descifrar, as si Bob planea
usar un criptosistema de clave pblica para comunicarse con Alice, El simplemente hace
conocer la clave publica de Alice (y probablemente de terceros) usando cualquier medio,
entonces usando esta clave Alice y cualquier otra persona puede cifrar mensajes para Bob,
pero nicamente el mismo Bob es capaz de descifrarlo.

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

4. Criptografa de clave pblica.


Como en el caso de RSA en los criptosistemas de clave pblica calcular la clave privada
a partir de la pblica debe ser un problema matemtico difcil.

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 de los criptosistemas de clave pblica.

Seguridad de la clave privada.


Definicin 21. Un PKC se considera seguro si el problema de calcular la clave privada
a partir de la clave pblica es intratable.
Como por ejemplo en el RSA el problema de factorizar un natural n = pq que es producto
de dos primos es un problema muy difcil.

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.

4.2.

Criptosistema RSA.

(Ron Rivest - Adi Shamir - Leonard Adleman [1978, MIT])

Es el primer PKC y an el mas importante, su seguridad se reduce a la dificultad de la


factorizacin de un entero que es el producto de dos primos muy grandes.

Generacin de claves

1) Se escoge aleatoria e independientemente 2 primos distintos y grandes p y q.


2) Se calcula n = pq (la longitud de n 2048 bits, una longitud menor se puede factorizar
en un computador comn).
3) Se escoge e N, 1 < e < (n) = (p 1)(q 1) y gcd(e, (n)) = 1 (Aqu es la funcin
generatriz de Euler).
4) Se calcula d = e1 mod (n) (usando el algoritmo Euclidiano extendido).

As la clave pblica es el par (n, e) donde n es el mdulo RSA y e es el exponente de


cifrado, mientras que la clave secreta es el exponente de descifrado d.

El espacio de textos planos y cifrados es: Zn


El cifrado es como sigue: c = E(m) = me mod n
Y el descifrado viene dado por: m = D(c) = cd mod n
Teorema 10. D(E(m)) = m
Demostracin.
D(E(m)) = D(me ) = (me )d mod n = med mod n
pero ed = 1 mod (n), esto es ed = 1 + k(n), para algn k Z, tenemos entonces
D(E(m)) = m1+k(n) mod n = (m)(m(n) )k mod n = m mod n = m
puesto que (m(n) )k mod n = 1k mod n = 1, si m 6= 0 y m Zn .

35

36

4. Criptografa de clave pblica.


Notamos entonces que el RSA se puede utilizar para cifrar numeros y como un cifrador
de bloque.

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.

RSA como cifrador de bloques.

Como antes n = pq, sea N N y sean = ZN , k = blogN nc (longitud de bloque), as


k logN n por lo que N k n. El espacio de textos planos es k , mientras que el espacio
de textos cifrados es k+1 .

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)

Continuando con el cifrado calculamos c = me mod n, por lo que c Zn y finalmente


hallamos la expansin N-dica de c = (co , . . . , ck )N , recordemos que esto no es mas que
P
c = kn=0 cn N kn , con cn Zn = , as la longitud N-dica de c es blogN nc + 1 = k + 1,

4.3. RSA como cifrador de bloques.

37

la funcin de cifrado viene dada por: E(m1 , . . . , mk ) = (co , . . . , ck ).

Descifrado
D : k+1 k , dado el texto cifrado (co , . . . , ck ) k+1 hacemos c =

Pk

n=0 cn N

kn

luego, calculamos m = cd mod n y hallamos la expansin N-dica de m = (m1 , . . . , mk )N ,


el texto plano es entonces D(co , . . . , ck ) = (m1 , . . . , mk ).

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.

La primera implicacin es inmediata, pues si oscar conoce p y q, conoce (n) = (p1)(q


1) y con una aplicacin del algoritmo euclidiano extendido se consigue d = e1 mod (n)
Acontinuacin mostraremos un algoritmo que calcula en tiempo polinmico p y q a partir
de d.
Observacin: e y d son impares.
como p y q son impares y (n) = (p 1)(q 1), (n) es par, y entonces e no es divisible
por 2 puesto que gcd(e, (n)) = 1, tenemos que ed es impar, dado que ed 1 mod (n)
se cumple que 2 | (n) | (ed 1), es decir, ed 1 es par y por tanto ed es impar, como
(ed 1)
ya vimos 2 | (ed 1), sea s = max{t N : 2t | (ed 1)} y sea k =
, as k N y
2s
2 - k. tambin recordemos que para m N se tiene que Zm = {1, . . . , m 1} es un grupo
bajo la multiplicadin mdulo m.

38

4. Criptografa de clave pblica.


Teorema 12. Como antes n = pq, sea a Z, con gcd(a, n) = 1, si |ak |Zp 6= |ak |Zq (k
t

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

t < u s, entonces a2 k 1 mod q pero a2 k 6 1 mod p, es decir q | a2 k 1 y p - a2 k 1,


t

hemos probado que gcd(a2 k 1, n) = q lo que completa la demostracin.


Teorema 13. |{a Zn : gcd(a, n) = 1, |ak |Zp 6= |ak |Zq }|

(p 1)(q 1)
.
2

Demostracin. Ver Buchmann.


Nota:
si A = {a Zn : gcd(a, n) = 1, |ak |Zp 6= |ak |Zq }, como |{a Zn : gcd(a, n) = 1}| = (n) =
1
(p 1)(q 1) se tiene que P (a A) para a {a Zn : gcd(a, n) = 1}.
2
Finalmente se dar el algoritmo para calcular p y q.
Algoritmo 1. Para factorizar n
1) Se escoge aleatoriamente un entero a {1, . . . , n 1}
2) Calcular g = gcd(a, n)
t

3) Si g = 1, entonces calcular g = gcd(a2 k 1 mod n, n), para t = s 1, . . . , 0 hasta que


1 < g < n o se alcance t = 0
4) Si 1 < g < n, entonces g = p o g = q.
5) Si se alcanza t = 0, vuelva al paso 1) con un a diferente.
Nota:
De los dos teoremas anteriores se sigue que despus de r iteraciones, la probabilidad de
1
xito es de por lo menos 1 r .
2
Ejemplo 24. Dados n = 253, (p = 11, q = 23) y e = 3, d = 147 usemos el algoritmo para
factorizar n. ed 1 = 440 = 23 (5)(11) de donde s = 3 y k = (5)(11) = 55

4.3. RSA como cifrador de bloques.


1) Tomemos a = 2
2) gcd(2, 253) = 1
3) Para t = s 1 = 3 1 = 2
2 55

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.

Aqu termina el algoritmo.


Teorema 14 (Teorema chino del residuo). Dados m1 , . . . , mn N, con gcd(mi , mj ) =
Q
1, para i 6= j y a1 , . . . , an Z, entonces existe un nico x mod nk=1 mk que satisface
simultneamente las congruencias:
x a1 mod m1 , . . . , x an mod mn .

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

mk y para k {1, . . . , n} definamos Mk =

tonces existen y1 , . . . , yn Z tales que yk Mk 1 mod mk y adems yk Mj 0 mod mj ,


P
para k 6= j puesto que mj | Mj , sea x = nk=1 ak yk Mk , es fcil ver que x satisface las
congruencias. Veamos ahora la unicidad de x mod m, para ello supongamos que y es otra
solucin entonces x y ak ak = 0 mod mk para k {1, . . . , n}, esto es mk | (x y)
para k {1, . . . , n} y por tanto m | (x y), o sea x y mod m, que prueba la unicidad
de x mod m.

Ejemplo 25. Resolver:


x 2 mod 4, x 1 mod 3, x 0 mod 5
Solucin:
Dado que gcd(4, 3) = gcd(4, 5) = gcd(3, 5) = 1, por el teorema chino del residuo sabemos
que hay una nica solucin mod m, m = (4)(3)(5) = 60, m1 = 15, m2 = 20 y m3 = 12,
ahora hallamos y1 , y2 , y3 tales que 15y1 1 mod 4, 20y2 1 mod 3 y12y3 1 mod 5, entonces y1 = 3, y2 = 2 y y3 = 3, luego x = 2(3)(15) + 1(2)(20) + 0 mod 60 = 10.

39

40

4. Criptografa de clave pblica.

4.4.

Escogencia de parmetros en RSA.

1) p y q: Size(p), Size(q) 1024


Existe un ataque que es exitoso si p 1 o q 1 tiene factores primos pequeos, a partir
de ellos se puede factorizar n, luego p 1 y q 1 no pueden tener factores pequeos.
2) e:
Por eficiencia en el cifrado e debe ser pequeo, pero para tener buena seguridad e debe
ser grande, as que el tamao de e debe ser balanceado.
3) d:
RSA puede ser roto si d < n0,292 , entonces d debe ser grande.

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 .

4.5. Criptosistema Rabin


Nota: Esto puede ser fcilmente corregido.

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

4. Criptografa de clave pblica.

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

mod p es una raz

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

mod p bp+1 mod p b2 mod p a mod p

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

2) Usando el Teorema chino del residuo encontramos b tal que


b ap mod p
b aq mod q
Ejemplo 27. Resolver x2 197 mod 437
Solucin:
437 = 19(23) y 19 3 mod 4, 23 3 mod 4, entonces ap = 1975 75 mod 19 = 8 y
aq = 1976 136 mod 23 = 6 ahora usando el teorema chino del residuo hallemos x tal que
x 8 mod 19 y x 6 mod 23 se obtiene que x = 236 es solucin del problema.
Descifrado: ahora vamos a ver el descifrado en el cifrador de Rabin
Algoritmo 3. Para resolver la congruencia x2 c mod n se procede de la siguiente manera:

4.5. Criptosistema Rabin


1) Hallamos (Usando el lema)
m2p c mod p
m2q c mod q
2) Usando el algoritmo Euclidiano extendido calculamos yp , yq Z tales que
yp mp + yq mq = 1
3) Calculamos
r = yp pmq + yq qmp mod n
s = yp pmq yq qmp mod n
s y r son las races cuadradas de c mod n
4) De estos 4 textos escogemos el texto plano original.
Ejemplo 28. Alice escoge p = 11 y q = 23 como su clave privada y hace conocer de Bob la
clave pblica n = pq = 253, supongamos que Bob desea cifrar el mensaje m = 158 Z253 ,
entonces c = m2 mod n = 1582 mod 253 = 170 este es el texto cifrado correspondiente a m
este mensaje es enviado a Alice por cualquier medio, Para descifrar este texto Alice halla:
mp = c
mq = c

p+1
4
q+1
4

mod p mp = 4
mod q mq = 3

luego, ella encuentra yp , yq Z tales que


yp mp + yq mq = 1 yp = 1 y yq = 1
As
r = yp pmq + yq qmp mod n r = 26
s = yp pmq yq qmp mod n r = 95
De donde las races de c = 170 mdulo 253 son 26, 95, 158, 227, de las cuales Alice escoge
la que corresponda al contexto.
Nota: El cifrado del cifrador de Rabin es mas eficiente que el de RSA, en el descifrado
no hay diferencia.
Teorema 16. Seguridad contra ataques de solo texto cifrado
Romper el cifrador de Rabin con ataques de solo texto cifrado es tan difcil como factorizar
el mdulo de Rabin (n).

Demostracin. Es claro que si uno es capaz de factorizar el modulo de Rabin, entonces


uno puede romper el criptosistema de Rabin, veamos que el recproco tambin es cierto.
Supongamos que Eva (atacante) puede romper el criptosistema de Rabin, esto es Eva
puede hallar el texto plano m correspondiente a cualquier texto cifrado c dado.
Sea n la clave pblica y (p, q) la clave privada y sea R el algoritmo que rompe el cifrador

43

44

4. Criptografa de clave pblica.


de Rabin
R:
c Zn

c es un cuadrado mod n

= (Calcula Eficientemente) m = R(c) Zn

(m es el texto plano correspondiente a c)


veamos como el algoritmo R se puede usar para factorizar n
1) Eva elige aleatoriamente x {1, . . . , n 1}.
2) Si g = gcd(x, n) 6= 1, entonces g = p o g = q y el algoritmo termina.
3) En caso contrario se calcula:
c = x2 mod n y m = R(c)
m es una raz cuadrada de c en Zn pero no necesariamente es m = x, pero m satisface:
(i) m x mod p y m x mod q
(ii) m x mod p y m x mod q
(iii) m x mod p y m x mod q
(iv) m x mod p y m x mod q
As:
si m satisface (i) entonces gcd(m x, n) = n
si m satisface (ii) entonces gcd(m x, n) = 1
si m satisface (iii) entonces gcd(m x, n) = p
si m satisface (iv) entonces gcd(m x, n) = q
como x se escoge aleatoriamente, entonces cada caso tiene la misma probabilidad, por
1
tanto la probabilidad de factorizar a n con este proceso es de , y luego de r intentos la
2
1
probabilidad de xito es 1 r .
2
Ejemplo 29. n = 253 = 11(23)
Supongamos que Eva es capaz de calcular races cuadradas mod 253 con el algoritmo R.
Eva escoge x = 17 {1, . . . , 252}, gcd(17, 253) = 1, entonces calcula c = 172 mod 253 = 36
y usando su algoritmo
R halla las races de 36 mod 253

17
races de 36 mod 253
c = (Usando R)

236

247
y entonces Eva consigue:

4.6. Logaritmo Discreto

gcd(m x, n) =

45

gcd(6 17, 253) = 11

As Eva consigue la factorizacin de n usando

gcd(247 17, 253) = 23


su algoritmo R.
Nota:
Si por alguna razn el atacante solo es capaz de descifrar ciertos tipos de textos planos
entonces le teorema no aplica pues podra darse el caso de que el atacante no obtenga los
casos (iii) ni (iv).

Ataque del texto cifrado escogido


El atacante puede descifrar textos cifrados de su eleccin pero no puede descifrar el que
desea, Si el atacante puede descifrar textos de su eleccin entonces puede factorizar a n
usando el algoritmo anterior y as romper el sistema, obteniendo la clave privada.
Una manera de evitar este ataque es restringiendo el espacio de textos planos de tal
manera que el teorema no sea valido.

4.6.

Logaritmo Discreto

Sea p un primo. Sabemos que Zp = {1, . . . , p 1} es un grupo cclico de orden p 1 bajo


el producto ( mod p), todo generador de este grupo se llama raz primitiva mod p. Sea g
una raz primitivamod p, es decir Zp = hgi = {e, . . . , g p2 }, entonces para todo a Zp
existe un nico s {0, . . . , p 2} tal que a = g s mod p este exponente s se denomina
logaritmo discreto de a en la base g mod p, denotado por s = logg a.
Hoy en da calcular logaritmos discretos se considera difcil. Hasta ahora no se conoce
algoritmo que resuelva este problema eficientemente. Por otro lado, no se sabe que tan
difcil realmente es este problema.
Ejemplo 30. Sea p = 13, una raz primitivamod 13 es 2, es decir, Z13 = h2i
a

10

11

12

s = logg a

11

10

Observaciones:
1) En general (en Zp )

46

4. Criptografa de clave pblica.


0 logg a p 2 2) El logaritmo discreto se puede generalizar a grupos cclicos finitos
en general
G = hgi, |G| = |g| = n
a G, !s {0, . . . , n 1} tal que g s = a, esto es s = logg a.
3) El logaritmo discreto no es un problema difcil en todo grupo cclico:
Sea G = Zn = h1i entonces a Zn se tiene log1 a = a.

4.7.

Intercambio de claves D - H

Objetivo: Alice y Bob quieren establecer/intercambiar una clave secreta k a travs de un


medio inseguro.
1) Escogen un primo p grande y un g Z, con 2 g p 2, tal que el orden de g mod p
es suficientemente grande. Normalmente, g se escoge como una raz primitiva mod p. p y
g son pblicos.
2) Alice escoge aleatoriamente un entero a {0, . . . , p 2} y calcula A = g a mod p y se
lo enva a Bob usando el medio inseguro. El exponente a es la parte de Alice de la clave
secreta que desea compartir con Bob.
3) Anlogamente Bob escoge aleatoriamente un entero b {0, . . . , p 2} y calcula
B = g b mod p y se lo enva a Alice.
4)

Alice calcula B a mod p = g ab mod p


= k = g ab mod p
b
ab

Bob calcula A mod p = g mod p


Es la clave secreta compartida.
Supongamos que Eva (atacante) intenta hallar esta clave secreta. Eva conoce p, g, A, B
puesto que son pblicos pero para hallar a o b se debe resolver a = logg A o b = logg B lo
cual ya sabemos es extremadamente difcil.
Ejemplo 31. Sea p = 17, g = 13 (Raz primitiva)
Alice: Escoge a = 7 = A = g a mod p = 137 mod 17 = 11 Bob
Bob: Escoge b = 4 = B = g b mod p = 134 mod 17 = 13 Alice
luego de recibir los mensajes de sus contrapartes:

4.7. Intercambio de claves D - H


Alice: Calcula B a mod p = 114 mod 17 = 4
Bob: Calcula Aa mod p = 137 mod 17 = 4
obteniendo as k = 4como su clave secreta compartida.

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

Determinar la clave secreta k = g ab mod p a partir de p, g, A, B.

Calcular eficientemente =X Resolver eficientemente

?
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. Criptografa de clave pblica.


Supongamos que Eva conoce que ni Bob ne Alice pueden determinar si el mensaje que
reciben realmente proviene de su contraparte. Supongamos adems que Eva puede interceptar todos los mensajes entre Bob y Alice. Eva intercepta los mensajes y manda valores
equvocos a cada uno
Alice: k2 = E2a mod p
Bob: k1 = E1b mod p

4.8.

Criptosistema ElGamal

Este criptosistema basa su seguridad en el problema de la decisin (Problema D - H)


en Zp . Fue publicado por Taher ElGamal en 1985. Este criptosistema es usado en varias
aplicaciones:
Software libre GNO Privacy guard.
Versiones recientes del software PGP.
Generacin de claves
Alice:
Escoge aleatoriamente un numero primo p y una raz primitiva gmod p
Escoge aleatoriamente un exponente a {0, . . . , p 2}
Calcula A = g a mod p
Clave pblica: (p, g, A)
Clave secreta: a = logg A

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

4.8. Criptosistema ElGamal


Descifrado:
Alice:
Calcula k = B a mod p (La clave secreta en D - H)
Calcula m = k 1 c mod p

Nota: Para evitar esta invesin mod p procedemos as:


Sea x = p a 1 = 0 x p 2 y se tiene m = B x c mod p
Veamos:
B x c (g b )x c mod p (g b )pa1 c mod p
(g b )p1 (g b )a c mod p (g b )a Ab m mod p
(g b )a (g a )b m mod p m mod p
Ejemplo 32. Alice: Escoge p = 3361, g = 22 y a = 5 y calcula A = g a mod p =
225 mod 3361 = 1219 as su clave pblica es (3361, 22, 1219)
Bob: Texto plano m = 696, para este texto plano escoge b = 56 y calcula B = g b mod p =
2904 y luego c = Ab m mod p = 121956 696 mod 3361 = 609 el texto cifrado es (2904, 609)
Observaciones: 1) Eficiencia: Notamos que al cifrar usando el cifrador ElGamal solo debemos calcular c = km mod p donde k es la clave secreta de D - H. As ElGamal es mas
eficiente que el RSA, pero los valores preclculados deben ser almacenados de forma segura.
2) Desventajas: Expansin del mensaje, el texto cifrado (B, c) es dos veces mas largo que
el texto plano.
3) Ventaja: Dado que para cada texto plano el exponente b se escoge aleatoriamente con
distribucin uniforme, por lo que el criptosistema ElGamal es semnticamente seguro (Secreto perfecto) siempre que el problema de la decisin D - H sea intratable.
4) Si Eva puede calcular eficientemente logaritmos discretos entonces puede romper el
criptosistema ElGamal, la implicacin recproca es un problema abierto.
Teorema 17. Eva puede romper el protocolo D - H, si y solo si Eva puede romper ElGamal

Demostracin. (=) Dados p, g, A, B Eva puede calcular eficientemente k = g ab mod p


para cada texto cifrado y obtener m = k 1 c mod p, por lo que puede romper ElGamal.
(=) Eva escoge c = 1 y Eva puede calcular eficientemente el texto plano m = k 1 c mod p
correspondiente y luego k = m1 mod p.

49

50

4. Criptografa de clave pblica.


Seleccin de parmetros
Existen algunos algoritmos para ele calculo de logaritmos discretos. Para evitar estos
algoritmos p debe escogerse por lo menos de 1024 bits de largo. Adems algunos algoritmos (Dohing - Hellman o Number field sieves) son muy eficientes si p es de cierto tipo
especial. Una buena forma de prevenir estos primos es escoger a p de manera aleatoria
con una distrbucin uniforme dentro de los primos con tamao mayor de 1024 bits.
Para cada texto plano m, debe escogerse un exponente b aleatoriamente.
Supongamos que Bob escoge el mismo exponente para cifrar dos textos planos m y m0
entonces c = Ab m mod p y c0 = Ab m0 mod p de donde c0 c1 = (Ab )1 Ab m1 m0 mod p =
m1 m0 mod p, as si Eva conoce m puede recuperar m0 = c0 c1 m mod p.

Captulo 5
Funciones Criptogrficas Hash
5.1.

Funciones hash y de compresin

En lo siguiente suponemos que es un alfabeto.


Definicin 24 (Funcin Hash). Una funcin hash es un mapeo que enva cadenas arbitrariamente largas en cadenas de longitud fija. Esto es, son funciones de la forma h : n ,
donde n es un natural fijo.
Debido a que | | > |n | las funciones hash nunca son inyectivas y usualmente el alfabeto
se toma como = {0, 1} con 128 n 512.
Ejemplo 33. Definamos h : {0, 1} {0, 1} por h (b1 . . . bk ) = b1 b2 bk . Es claro
que h no es inyectiva pues enva cadenas con un nmero impar de bits iguales a 1 en 1 y
las dems cadenas en 0.
Por ejemplo, h (01101) = 0 1 1 0 1 = 1 y h (111100001) = 1.
Ejemplo 34. Sea N N y n = blog2 N c + 1 la longitud de la expansin binaria de N .
Definimos la funcin hash h : {0, 1} {0, 1}n por

b1 b2 . . . bk 7 h (b1 . . . bk ) = b1 2k1 + b2 2k2 + + bk1 2 + bk modN,
esto es, la expansin binaria de un nmero z es enviada en z mdulo N .
Ejemplo 35. En criptografa son muy usadas las funciones hash MD5 y SHA-1: MD5 fue
creada por Ronald Rivest de MIT en 1994 y produce valores hash de 128 bits. Aunque
es una de las funciones hash ms utilizadas el tamao del hash permite contemplar la
posibilidad del ataque del cumpleaos (que estudiaremos ms adelante) y, desde 2004, se
51

52

5. Funciones Criptogrficas Hash


conocen tambin colisiones de MD5.
SHA-1 fue diseada por la NSA (National Security Agency) del gobierno de los Estados
Unidos y presentada en 1993. Produce valores hash de 160 bits. Aunque a la fecha existen varios ataques tericos para producir colisiones de SHA-1, estos requieren recursos
computacionales altsimos.
Definicin 25 (Funcin de compresin). Una funcin de compresin es una funcin
m n donde m > n, m, n N.
Ejemplo 36. La funcin h : {0, 1}m {0, 1} : b1 . . . bm 7 b1 bm es una funcin
de compresin para m > 1, con n = 1.
Tomemos m, n N y escribamos D = o D = m , m > n, segn h : D n sea una
funcin hash o de compresin, respectivamente. Es deseable que esta funcin h satisfaga
ciertas propiedades:
(i.) h (x) debe ser fcil de calcular para todo x D.
(ii.) Para s n debe ser difcil encontrar una imagen inversa x D, es decir, un
x X tal que h (x) = s.
Esto es lo que se conoce como funcin one-way. La idea intuitiva es que una funcin
es de este estilo si dado s n un algoritmo para computar x tal que h (x) = s
requerira una cantidad inusual de tiempo computacional o espacio en memoria.
En la actualidad no se sabe si existen o no funciones one-way pero s se sabe de la existencia
de funciones fciles de evaluar para las cuales no se conocen algoritmos eficientes que
puedan encontrar imgenes inversas y por tal razn pueden ser usadas como funciones
one-way.
Ejemplo 37. Sea p un primo elegido aleatoriamente con size (p) > 1024 y g una raz
primitiva mdulo p. Definimos f : Zp Zp por f (x) = g x modp para todo x Zp .
Entonces f es una funcin fcil de calcular mediante exponenciacin rpida, pero difcil
de invertir: el clculo de una preimagen de s Zp involucrara el clculo de un logaritmo
discreto. Con estas caractersticas, f puede ser usada como funcin one-way.
Una colisin de h : D n es un par (x, x0 ) D D tal que x 6= x0 y h (x) = h (x0 ).
Todas las funciones hash y de compresin, al ser no inyectivas, poseen colisiones, como
vimos en el ejemplo 1. Sin embargo, encontrar estas colisiones debera ser, en general,
difcil.
Diremos que h es resistente a colisin dbil si no es factible computar una colisin (x, x0 )

5.2. Ataque del cumpleaos


dado un x D, y que h es resistente a colisin fuerte si es inviable hallar x, x0 D
tales que (x, x0 ) es una colisin de h. Veremos que estas caractersticas se requieren para
diversas aplicaciones de las funciones hash, como en firmas digitales o para garantizar la
integridad de documentos, como ilustra el ejemplo siguiente.
Ejemplo 38. Alice escribe un programa x que debe permanecer guardado en el disco
duro de su computador pues se encuentra, por ejemplo, sin terminar. Ella utiliza una
funcin hash h : n antes de abandonar su computador y guarda el valor y = h (x)
en su smart-card o celular personal.
Al da siguiente Alice encuentra el programa x0 en su mquina y desea comprobar que ste
corresponde a su programa original. Es decir, que ste no ha sido modificado ni alterado.
Para ello calcula h (x0 ). Si h (x0 ) = y Alice acepta el archivo como su original y sigue
trabajando. En caso contrario lo rechaza pues sabe que ste fue alterado.
El ejemplo anterior ilustra una manera tpica de utilizar una funcin resistente a colisiones. De hecho, el chequeo que hace Alice tiene sentido nicamente si la funcin hash es
resistente a colisin dbil o de lo contrario un atacante podra alterar el archivo original
x a x0 sin que Alice lo notara.
Proposicin 2. Sea h : n , n 1, una funcin hash. Si h es resistente a colisin
(fuerte) entonces es una funcin one-way.
Demostracin. Supongamos, por el contrario, que existe un algoritmo eficiente para invertir h. Escogemos x0 aleatoriamente. Usando el algoritmo de inversin encontramos
x tal que h (x) = h (x0 ), entonces (x, x0 ) es una colisin de h a menos que x = x0 ,
pero la probabilidad de que x 6= x0 ciertamente es alta.

5.2.

Ataque del cumpleaos

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

5. Funciones Criptogrficas Hash


(3.) Buscamos una colisin entre estos valores.
Gracias a la paradoja del cumpleaos podemos analizar el procedimiento: sabemos que
si las cadenas x pueden elegirse de manera que la distribucin de probabilidad en
el espacio de valores hash h (x) para dichas cadenas es la distribucin uniforme entonces


p
n
dadas k de estas cadenas, con k 1 + 1 + (8 ln 2) || /2, la probabilidad de que halla
dos valores hash iguales (pinsese en esto como dos sujetos con el mismo cumpleaos) es
superior a 1/2.


p
Por ejemplo, si = {0, 1} entonces k f (n) = 1 + 1 + (8 ln 2) 2n /2 es suficiente
para tener tal probabilidad. La siguiente tabla muestra los valores de log2 f (n) para
algunos valores distintos de n:
n
log2 f (n)

50

100

150

200

25.24 50.24 75.24 100.24

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.

Funciones de compresin a partir de funciones de


cifrado

Aunque no se sabe si existen funciones hash resistentes a colisin ni esquemas de cifrado


seguros y eficientes, es posible construir una funcin hash que aparenta ser resistente
a colisiones siempre que el esquema de cifrado subyacente sea seguro. A continuacin
mostraremos cmo construir una funcin de compresin resistente a colisiones a partir de
un esquema de cifrado seguro.
Sea un criptosistema con P = C = K = {0, 1}n y Ek : {0, 1}n {0, 1}n las respectivas funciones de cifrado, para k K. Escogemos n > 128 para prevenir el ataque del
cumpleaos (por ejemplo, DES no puede ser usado) y podemos definir una funcin de

5.4. Funciones hash a partir de funciones de compresin (R. Merkle)


compresin h : {0, 1}n {0, 1}n {0, 1}n de cualquiera de las siguientes formas:
h (k, x) = Ek (x) x
h (k, x) = Ek (x) x k
h (k, x) = Ek (x k) x
h (k, x) = Ek (x k) x k.
Si es un criptosistema seguro entonces cualquiera de estas funciones de compresin
aparenta ser resistente a colisiones.

5.4.

Funciones hash a partir de funciones de compresin


(R. Merkle)

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

(iii.) Hallamos la representacin binaria de ` (y), digamos w.


(iv.) Se hace t = w0 0 adicionando a w tantos ceros al final como sea necesario para
que r 1 divida a ` (t).
(v.) Construimos u = 1t1 t2 tr1 1tr tr+1 t2r2 1t2r1 anexando unos en frente de
t y de cada (r 1) j-sima posicin de t, j = 1, 2, 3, . . ..
(vi.) Ahora v = zu = v1 . . . vk es una cadena tal que cada vi {0, 1}r , 1 6 i 6 l.
(vii.) El valor hash h (x) se calcula de forma iterativa as: sea H0 = 0 0 = 0n la cadena
con n ceros y Hi = g (Hi1 vi ), 1 6 i 6 l.

55

56

5. Funciones Criptogrficas Hash


(viii.) h (x) = Hl .
Teorema 18. Si g es resistente a colisiones entonces h tambin lo es.
Demostracin. Veremos esto probando que de una colisin de h podemos deducir una de
g. Supongamos entonces que (x, x0 ) es una colisin de h y sean x1 , . . . , xt , x01 , . . . , x0t0 los
bloques de x y x0 , respectivamente, como arriba. Sean H0 , . . . , Ht , H00 , . . . , Ht00 los correspondientes valores hash en la secuencia (vii) explicada arriba.
Asumimos, sin prdida de generalidad, que t 6 t0 . Por lo tanto Ht = Ht0 ya que (x, x0 )
es una colisin de h. Queremos ver que existe un i, 0 6 i < t, tal que Hti = Ht00 i y
Hti1 6= Ht0 i1 pues de aqu obtendramos que = Hti1 xti 6= Ht00 i1 x0t0 i = 0 y sin
embargo

g () = g (Hti1 xti ) = Hti = Ht00 i = g Ht00 i1 x0t0 i = g ( 0 ) ,
es decir (, 0 ) es una colisin de g.
Ahora justificamos la existencia de tal i. Para ello basta ver que xti 6= x0t0 i :
Si el nmero de palabras requeridas para representar ` (x) es ms pequeo que el nmero
de palabras requeridas para representar ` (x0 ) entonces existe i tal que xti , la cadena
entre x y la representacin binaria de su longitud, es la cadena de ceros, pero x0t0 i es no
cero pues comienza con 1 puesto que todas las palabras en la representacin binaria de
` (x0 ) comienzan con 1.
Si por el contrario el nmero de palabras requeridas para representar ` (x) es el mismo
que para ` (x0 ) pero la longitud de x es distinta que la de x0 entonces las representaciones
de las longitudes contienen una palabra diferente en el mismo ndice.

Funcin hash

Longitud de bloque

MD4

128

MD5

128

RIPEMD-128

128

RIPEMD-160

160

SHA-1

160

Cuadro 5.1: Longitud de bloque para funciones hash comunes.

5.5. Message Authentication Codes (MACs)

5.5.

Message Authentication Codes (MACs)

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

5. Funciones Criptogrficas Hash

Captulo 6
Firmas Digitales
6.1.

Introduccin

Las firmas digitales tienen aplicaciones en la autenticacin de transacciones bancarias


electrnicas y la distribucin de software, as como para verificar integridad o para el no
repudio de contratos electrnicos.
La idea de funcionamiento es la siguiente:
(i.) Alice utiliza su clave privada para generar una firma digital de un documento dado.
Alice enva el par (documento, firma) a Bob.
(ii.) Bob hace uso de la clave pblica de Alice para verificar que la firma digital enviada
por ella corresponde al documento recibido. En tal caso, Bob acepta el documento,
o de lo contrario lo rechaza.
Lo anterior significa que todo esquema de firmas digitales consta de tres partes: un algoritmo para la generacin de la clave pblica y privada, un mtodo para generar las firmas
digitales a partir de la clave privada y finalmente uno para verificar la validez de la firma
digital utilizando la clave pblica.

6.2.

Seguridad y Ataques

Un esquema de firmas digitales slo puede considerarse seguro si el problema de hallar


la clave privada a partir de la informacin pblica disponible es un problema intratable.
59

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.

Ataque de mensajes escogidos: Oscar obtiene la clave pblica de verificacin de Alice.


Oscar computa un mensaje x y una firma para x utilizando la clave pblica de Alice.
Durante el proceso, el atacante puede obtener siempre firmas para documentos de su
eleccin.
Ejemplo 40. Un servidor web permite el acceso slo a usuarios legtimos. Para verificar
la identidad de un usuario el servidor pide al usuario que firme mensajes de prueba. Si un
atacante se hace pasar por el servidor web entonces l puede obtener firmas de documentos
de su eleccin.

6.3.

Esquemas de firmas digitales a partir de sistemas


de clave pblica (PKCs)

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. Esquemas de firmas digitales a partir de sistemas de clave pblica (PKCs)


Dado un documento m y firma el documento mediante s = Dd (h (m))
utilizando su clave de descifrado privada d. Alice enva el par (m, s) a Bob, quien
verifica que h (m) = Ee (s) utilizando la clave pblica e.
Ntese que la ltima versin de firmado permite firmar textos arbitrariamente largos.

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.

Generacin y verificacin de la firma


Como antes, explicamos dos versiones para la generacin de la firma de un documento
cualquiera.
(Vi.) Si m Zn es el mensaje, utilizamos el cifrado usual de RSA para computar la
firma s:
s = md mod n.
Bob puede verificar la firma computando se mod n = med m mod n.
(Vii.) Alice y Bob acuerdan el uso de una funcin hash pblica h, resistente a colisiones.
Para computar la firma de un mensaje m se utiliza s = h (m)d mod n. Bob
recibe el par (m, s) y verifica la firma mediante h (x) = se mod n.
En ambos casos s constituye una firma pues elevando el nmero aparentemente aleatorio
s a la potencia e, Bob puede verificar si ha recuperado el documento m. Esto significa
que m es una raz e-sima de m mod n y no existe una manera prctica de determinar las
races e-simas mod n sin conocimiento de d. Como Alice es la nica persona que conoce
d esto significa que fue ella quien efectivamente comput s y por tanto firm m.

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

6.4. Firmas ElGamal

63

a partir de PKCs. Su seguridad est basada en la dificultad de computar logaritmos


discretos en Zp , donde p es un nmero primo.

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)

s = k 1 (h (x) ar) mod (p 1) ,

(6.2)

donde k es el inverso multiplicativo de r mdulo p 1. La firma de x es el par (r, s).


Es importante que k sea elegido aleatoriamente por cada uso de la firma para evitar un
ataque por falsificacin existencial.

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)

l acepta la firma si esta congruencia se satisface.


Proposicin 3. La comprobacin de la firma ElGamal descrita arriba es correcta. Esto
es, si 1 r p 1 y se satisface la ecuacin 6.3 entonces s es la firma de x.

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)

mod p g h(x) mod p.

De otro lado, si (r, s) es un par que satisface 6.3 y si k es el logaritmo discreto de r en la


base g, entonces
g ar+ks g h(x) mod p.
Como g es una raz primitiva mod p entonces debe tenerse que ar + ks h (x) mod p 1
y si k y p 1 son primos relativos entonces la nica forma de obtener s es como en 6.2.

Ejemplo 42. Alice elige p = 23, q = 7, a = 6 y computa A = g a mod p = 4. Su clave


pblica es (p = 23, g = 7, A = 4). Su clave privada es a = 6.
Alice quiere firmar el documento x que, supondremos, tiene hash h (x) = 7. Para ello elige
k = 5 y aplicando las ecuaciones 6.1 y 6.2 obtiene r = 17 y la firma s = k 1 (h (x) ar) mod p
1 = 9 (7 6 17) mod 22 = 3. La firma de x es (17, 3).
Bob desea verificar la firma. Para ello computa Ar rs mod p = 417 173 mod 23 = 5, as que
al firma es vlida.

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

Potrebbero piacerti anche