Cuerpos finitosLlorenç Huguet Rotger
Josep Rifà Coma
Juan Gabriel Tena Ayuso
PID_00200953
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España deCreative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéisel autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un usocomercial y no hagáis una obra derivada. La licencia completa se puede consultar enhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 Cuerpos finitos
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Existencia y propiedades de los cuerpos finitos . . . . . . . . . . . . . . 7
1.1. Existencia y construcción de cuerpos finitos . . . . . . . . . . . . . . . . . . 7
1.2. Estructura aditiva y multiplicativa de un cuerpo finito . . . . . . . . 12
1.2.1. Representación aditiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.2. Representación multiplicativa . . . . . . . . . . . . . . . . . . . . . . . . 14
2. Bases de cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3. Computación en cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1. Aritmética en cuerpos finitos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.1. Multiplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.2. División . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.3. Exponenciación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2. Complejidad de la aritmética en cuerpos finitos . . . . . . . . . . . . . . 23
3.3. Algoritmos aritméticos en cuerpos finitos . . . . . . . . . . . . . . . . . . . . . 27
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 5 Cuerpos finitos
Introducción
Los sistemas y protocolos criptográficos que serán objeto de estudio en módu-
los posteriores utilizan como alfabeto un cuerpo finito o una curva definida
sobre ese cuerpo. La necesidad de la estructura de cuerpo obedece a que en
dichos sistemas hay que realizar las cuatro operaciones de suma, diferencia,
multiplicación y división y obviamente, como siempre en criptografía, este
tipo de alfabeto debe ser finito.
Los cuerpos finitos han sido estudiados desde hace siglos por diversos mate-
máticos, en particular Evariste Galois (de hecho son también conocidos como
cuerpos de Galois), pero es en los últimos 50 años cuando el interés por estas
estructuras ha conocido un crecimiento espectacular, debido a sus aplicacio-
nes en diferentes campos de indudable interés para el mundo industrial y
financiero, como son la criptografía o los códigos correctores de errores.
La teoría de códigos correctores de errores trata de preservar la calidad de la
información cuando es transmitida a través de canales susceptibles de sufrir
perturbaciones, que introducen errores en el mensaje transmitido. Un código
corrector permite, dentro de ciertos límites, detectar y corregir tales errores.
Esta teoría comparte con la criptografía fines (si los códigos correctores tratan
de defender la información de la degradación natural la criptografía trata de
defenderla de los ataques humanos) y técnicas, en particular diversos sistemas
criptográficos (McEliece, Niederreiter), están basados en códigos correctores.
Denotaremos Fq a un cuerpo finito con q elementos (algunos autores utilizan
la notación GF(q), por Galois field con q elementos). El presente módulo es-
tudia esta estructura matemática, con especial énfasis en los aspectos compu-
tacionales de su aritmética.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 6 Cuerpos finitos
Objectivos
En los materiales didácticos de este módulo el estudiante encontrará los con-
tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer la estructura aditiva y multiplicativa de un cuerpo finito Fq, de
q = pm elementos, donde p es un número primo.
2. Saber calcular la tabla de equivalencias polinomial-exponencial y saber cal-
cular en un cuerpo finito Fq dando los resultados en cualquiera de las dos
representaciones.
3. Saber reconocer la complejidad computacional de un cálculo en cuerpos
finitos.
4. Conocer y saber aplicar los principales algoritmos aritméticos en cuerpos
finitos.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 7 Cuerpos finitos
1. Existencia y propiedades de los cuerpos finitos.
En este apartado se muestra para qué valores de q existe un cuerpo finito Fq y
cómo construirlo explícitamente y se estudian sus propiedades y estructura.
1.1. Existencia y construcción de cuerpos finitos
En primer lugar señalemos el siguiente resultado del teorema 1.
Lectura recomendada
Sobre el teorema de
Wedderburn podéis
consultar la obra de Lidl y
Niederreiter (1997).
.
Teorema 1.1 (Teorema de Wedderburn). Todo cuerpo finito es
conmutativo (es decir, su multiplicación es conmutativa).
Observación
Existen cuerpos infinitos queno son conmutativos, comoel cuerpo de los cuaterniones.
.
Definición 1.2 (Característica de un cuerpo). La característica de un
cuerpo K se define como el mínimo p de los enteros positivos n tales
que n · 1 = 1 + 1 + · · · + 1 = 0 (suma de n copias de 1), donde 0 es el
elemento neutro de la suma y 1 el elemento neutro del producto en el
cuerpo K. Si tal p no existe, como sucede con el cuerpo de los números
reales, decimos que K tiene característica 0. Caso contrario p debe ser
un número primo (si p = r · s, 1 < r,s < p se tendría que 0 = p · 1 =
(r · 1)(s · 1) y uno de los dos factores debería ser cero, en contradicción
con la minimalidad de p) y el cuerpo se dice de característica prima p.
Un primer ejemplo de cuerpo finito viene dado por el siguiente resultado.
.
Proposición 1.3. Para todo número primo p el conjunto Zp de los en-
teros módulo p, con la suma y producto inducidos por las de Z, cons-
tituye un cuerpo conmutativo.
Demostración: Recordemos que el conjunto Zp de los enteros módulo p es
el conjunto de clases de equivalencia de números enteros, donde dos enteros
x,y son equivalentes si, y solamente si, son congruentes módulo p: x ≡ y
(mod p) (es decir x – y es divisible por p). El conjunto Zp tiene cardinal p y un
conjunto de representantes viene dado por Fp = {0,1, . . . ,p – 1}.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 8 Cuerpos finitos
Las operaciones a + b (mod p) y a · b (mod p) (realizar la suma o producto de
a y b en Z , dividir el resultado por p y tomar el resto) dota a este conjunto
de estructura de cuerpo: es obvio que (Fp,+) es un grupo aditivo, con 0 como
elemento neutro y opuesto de a ∈ Fp el elemento –a = p – a. Por lo que se
refiere a (F∗p = Fp –{0},·) la multiplicación es conmutativa, el elemento 1 actúa
como unidad y dado un elemento a ∈ F∗p la existencia de inverso (y un método
efectivo de calcularlo) se deduce del algoritmo de Euclides (el cual se describirá
a continuación): dado que a y p son coprimos entre sí, existen elementos
x,y ∈ Z tales que mcd(a,p) = 1 = ax + py, y por tanto en Fp (nótese que p ≡ 0
(mod p)) ax ≡ 1 (mod p), luego el elemento x (mod p) es el inverso del a.
Cuerpo binario
Si p = 2, se tiene el cuerpocon dos elementosF2 = {0,1} base de lacomputación binaria (lasoperaciones de cuerpocoinciden con lasoperaciones lógicasO-exclusivo (XOR) y AND).
El algoritmo de Euclides (Euclides, libro VII), que permite obtener el máximo
común divisor d de dos números a,b ∈ N, es uno de los algoritmos bási-
cos en matemática computacional. Una modificación - algoritmo de Euclides
extendido- permite obtener d como combinación lineal de a y b con coefi-
cientes enteros (Identidad de Bezout):
d = ax + by (1)
Exponemos a continuación el algoritmo de Euclides extendido.
.
Algoritmo 1.4.
1. Tomar, como valores iniciales,
a0 := a, a1 := b, x0 := 1, x1 := 0, y0 := 0, y1 := 1.
2. A partir de i := 1, iterar las asignaciones
ai+1 := ai–1 – qiai (calculamos el cociente qi y el residuo ai+1
de la división entre ai–1 y ai)
xi+1 := xi–1 – qixi (a partir de xi–1,xi i qi, calculamos xi+1)
yi+1 := yi–1 – qiyi (a partir de yi–1,yi i qi, calculamos yi+1)
hasta obtener un residuo ai = 0.
3. Si an es el primer residuo nulo, entonces d = an–1 = axn–1 + byn–1.
Ejemplo 1.1. Sean a = 256, b = 96. Aplicando el algoritmo 1.4 se obtiene: a2 = 64, a3 =
32, a4 = 0, x2 = 1, x3 = –1, y2 = –2, y3 = 3. Luego d = a3 = 32 = 256(–1) + 96 · 3. Observación
El Algoritmo 1.4 puedeaplicarse también a dospolinomios a(X),b(X) concoeficientes en un cuerpo K.Ver el ejemplo 1.3.
Ejemplo 1.2. Sea p = 7, y el cuerpo F7 = {0,1,2,3,4,5,6}. Para a = 3, b = 6 se tiene
3 + 6 ≡ 2 (mod 7), 3 · 6 ≡ 4 (mod 7) y 3–1 ≡ 5 (mod 7) (nótese que 1 = 1 · 7 – 2 · 3).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 9 Cuerpos finitos
Ejemplo 1.3. Calcular el máximo común divisor mcd(P(X),Q(X)) y expresar el resulta-
do como combinación de los polinomios iniciales P(X) y Q(X), donde P(X) y Q(X) son
polinomios a coeficientes en F3: P(X) = X7 + 2X2 + X + 1; Q(X) = X3 + 2X2.
La aplicación del algoritmo de Euclides extendido nos da:
a0 = X7 + 2X2 + X + 1; a1 = X3 + 2X2; a2 = X + 1; a3 = 1; a4 = 0
q1 = X4 + X3 + X2 + X + 1; q2 = X2 + X + 2
x0 = 1; x1 = 0; x2 = 1; x3 = 2X2 + 2X + 1
y0 = 0; y1 = 1; y2 = 2X4 + 2X3 + 2X2 + 2X + 2; y3 = X6 + 2X5 + X4 + X3 + X2
O sea que, 1 = mcd(P(X),Q(X)) y, además:
(X2 + X + 2)P(X) + (X6 + 2X5 + X4 + X3 + X2)Q(x) = 1
Determinemos ahora para qué otros valores de q, distintos de los primos, exis-
te un cuerpo finito con q elementos.
.
Proposición 1.5. Sea K = Fq un cuerpo finito con q elementos, con
elemento neutro para la adición 0K y elemento unidad para la multi-
plicación 1K. Existe un primo p tal que K contiene al cuerpo Fp de los
enteros módulo p.
Demostración: El cuerpo K no puede tener característica 0 (caso contrario
contendría al conjunto infinito {1K,2 · 1K, · · · ,n · 1K, · · · }). K es pues de carac-
terística prima p y contiene al subcuerpo {0K,1K,2 · 1K, · · · (p – 1) · 1K} isomorfo
al cuerpo Fp de los enteros módulo p.
.
Corolario 1.6. Sea Fq un cuerpo de característica p. Existe un entero
positivo m tal que q = pm.
Demostración: Fq admite una estructura de espacio vectorial sobre su sub-
cuerpo Fp, sea m su dimensión (obviamente finita). Fijada una base cualquiera
de este espacio vectorial, Fq se identifica con el conjunto de vectores Fmp , con-
junto con cardinal pm.
Observación
El cuerpo C de los númeroscomplejos contiene las raícesde todo polinomio concoeficientes en el cuerpo Q
de los números racionales.Sin embargo C no es unaclausura algebraica de Q yaque no se cumple lacondición de minimalidad. Laclausura es un subcuerpo deC denominado cuerpo de losnúmeros algebraicos.
El resultado anterior muestra que el cardinal de un cuerpo finito es siempre
potencia de un número primo. El siguiente teorema muestra que para cual-
quier potencia de un primo existe un cuerpo finito con ese cardinal y que tal
cuerpo es esencialmente único.
.
Definición 1.7 (Clausura algebraica). Sea K un cuerpo. La clausura
algebraica de K es un cuerpo que contiene a K, tal que todo polinomio
con coeficientes en K tiene todas sus raíces en él y que es minimal con
esta propiedad. Tal clausura existe y es única salvo isomorfismo.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 10 Cuerpos finitos
.
Teorema 1.8. Para todo primo p y todo número natural m existe un
cuerpo finito con q = pm elementos. Tal cuerpo es único salvo isomor-
fismo.
Demostración: Sea Fp el cuerpo con p elementos y el polinomio definido
sobre este cuerpo: F(X) = Xq – X. Sea R el conjunto de las q raíces de F(X) en
una cierta clausura algebraica de Fp (no confundir con las raíces complejas de
tal polinomio, nótese que Fp no está contenido en los complejos). Tales raíces
son distintas (el polinomio F(X) no tiene raíces múltiples, ya que su derivada
no es nula: F′(X) = qXq–1 – 1 ≡ –1 (mod p) y por tanto R tiene cardinal q.
Ahora bien R es un cuerpo: Sean α,β ∈ R, es decir αq = α, βq = β. Obviamente,
entonces (α · β)q = α · β y (suponiendo β 6= 0) (α : β)q = α : β. Pero teniendo en
cuenta que en Fp, q ≡ 0, también (α±β)q = α±β (pues todos los demás miem-
bros del desarrollo de (a + b)q son múltiplos de p), luego la suma, diferencia,
producto y cociente de elementos de R están en R.
Sea K otro cuerpo con q elementos. El grupo multiplicativo K∗ = K – {0} tiene
cardinal q–1 y por tanto, todo elemento a ∈ K∗ verifica aq–1 = 1K, luego aq = a,
ecuación que obviamente también verifica OK. Es decir, los q elementos de K
son raíces de Xq – X y por tanto K puede identificarse con R.
Habitualmente, en criptografía se utilizan los dos tipos de cuerpos siguientes:
1) Cuerpos binarios F2m , con 2m elementos.
2) Cuerpos Fp, con p elementos y p primo (habitualmente muy grande).
El teorema 1.8 demuestra la existencia de un cuerpo finito con q elemen-
tos, pero no una construcción explícita. El método siguiente proporciona tal
construcción, que es formalmente análoga a la del cuerpo Fp como clases de
equivalencia de los enteros módulo p.
Sea f (X) = Xm+fm–1Xm–1+· · ·+f1X+f0 ∈ Fp[X] un polinomio mónico (coeficiente
del término de mayor grado igual a 1) e irreducible, con coeficientes en Fp.
En el anillo de polinomios Fp[X] consideremos el conjunto de sus clases de
equivalencia módulo f (X). Un conjunto de representantes de estas clases viene
dado por el conjunto K de los q = pm polinomios a0+a1X+· · ·+am–1Xm–1 ∈ Fp[X]
de grado menor que m (pues todo g(X) ∈ Fp[X] es equivalente al polinomio
resto de su división por f (X)).
Si denotamos α ∈ K a la clase de equivalencia de X, es decir α ≡ X (mod f (X)),
podemos identificar el elemento a0 + a1X + · · · + am–1Xm–1 con a0 + a1α + · · · +
am–1αm–1 y K con el conjunto de estas expresiones.
Nótese que αm + fm–1αm–1 + · · · + f1α + f0 ≡ 0K y por tanto α puede considerarse
como una raíz del polinomio f (X) en K. Se tiene,
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 11 Cuerpos finitos
.
Teorema 1.9. El conjunto K con las operaciones suma y producto en
Fp[α] inducidas por la suma y producto de polinomios en Fp[X] es un
cuerpo con q elementos.
Demostración: El razonamiento es totalmente análogo al de la proposición
1.3 y los detalles se dejan como ejercicio. En particular el inverso de un ele-
mento no nulo se obtiene utilizando el algoritmo de Euclides extendido para
polinomios.
Nota
Se ha señalado que α puede considerarse como raíz de f (X). Dado que este polinomio
de grado m tiene m raíces puede plantearse cuál de ellas es α. Sin embargo, a diferencia
de lo que sucede con las raíces de un polinomio con coeficientes racionales, las cuales
pueden individualizarse y tienen un valor concreto (real o complejo), esto no ocurre en
cuerpos finitos. El elemento α puede considerarse como un símbolo, que se toma como
raíz de f (X); una vez fijada esta raíz, las restantes pueden expresarse en función de α (ver
el ejemplo siguiente).
Ejemplo 1.4. Consideremos el polinomio irreducible X3 + X + 1 ∈ F2[X], y sea α una
raíz. Las otras dos raíces son entonces α2 y α2 + α. Un cuerpo con 8 elementos estaría
formado por los elementos:
F8 = {0,1,α,1 + α,α2,1 + α2,α + α2,1 + α + α2} (2)
con las siguientes tablas de adición y multiplicación:
+ 0 1 α 1 + α α2 1 + α2 α + α2 1 + α + α2
0 0 1 α 1 + α α2 1 + α2 α + α2 1 + α + α2
1 1 0 1 + α α 1 + α2 α2 1 + α + α2 α + α2
α α 1 + α 0 1 α + α2 1 + α + α2 α2 1 + α2
1 + α 1 + α α 1 0 1 + α + α2 α + α2 1 + α2 α2
α2 α2 1 + α2 α + α2 1 + α + α2 0 1 α 1 + α
1 + α2 1 + α2 α2 1 + α + α2 α + α2 1 0 1 + α α
α + α2 α + α2 1 + α + α2 α2 1 + α2 α 1 + α 0 1
1 + α + α2 1 + α + α2 α + α2 1 + α2 α2 1 + α α 1 0
· 1 α 1 + α α2 1 + α2 α + α2 1 + α + α2
1 1 α 1 + α α2 1 + α2 α + α2 1 + α + α2
α α α2 α + α2 1 + α 1 1 + α + α2 1 + α2
1 + α 1 + α α + α2 1 + α2 1 + α + α2 α2 1 α
α2 α2 1 + α 1 + α + α2 α + α2 α 1 + α2 1
1 + α2 1 + α2 1 α2 α 1 + α + α2 1 + α α + α2
α + α2 α + α2 1 + α + α2 1 1 + α2 1 + α α α2
1 + α + α2 1 + α + α2 1 + α2 α 1 α + α2 α2 1 + α
Nota
El ejemplo anterior construye un cuerpo con 8 elementos utilizando el polinomio irre-
ducible X3 + X + 1 ∈ F2[X]. Pero una construcción análoga podría obtenerse a partir de
una raíz β del polinomio X3 + X2 + 1 ∈ F2[X] el cual es también irreducible (en realidad,
salvo para p = m = 2 en que el único polinomio irreducible es el X2 +X+1, siempre existe
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 12 Cuerpos finitos
más de un polinomio irreducible de grado m). En esta otra construcción se obtendrían
tablas aditivas y multiplicativas aparentemente diferentes.
Sin embargo, el teorema 1.8 garantiza que solo existe un cuerpo con 8 elementos. ¿Cuál
es la explicación de esta aparente contradicción? En realidad es un simple problema de
etiquetado de los elementos: en concreto, puede comprobarse que la asignación α→ β′ =
1 + β se extiende a un isomorfismo entre ambos cuerpos (las tablas para α y β′ son
iguales).
1.2. Estructura aditiva y multiplicativa de un cuerpo finito
El cuerpo finito Fq contiene dos grupos abelianos, (Fq,+) y (F∗q ,·). La estructura
de estos grupos es particularmente simple.
.
Teorema 1.10 (Estructura aditiva). Si q = pm, el grupo aditivo
(Fq,+) es un producto directo de m grupos cíclicos de orden p:
(Fq,+) ≃ Z/pZ × · · · × Z/pZ. (3)
Demostración: Como se ha indicado (Fq,+) es un espacio vectorial sobre
su subcuerpo primo Fp. Cualquier base de este espacio (por ejemplo, una ba-
se del tipo {1,α · · · ,αm–1} utilizada en el teorema 1.9 induce el isomorfismo
indicado.
1.2.1. Representación aditiva
En virtud del teorema 1.10 los elementos de Fq pueden representarse como
vectores m-dimensionales con coeficientes en Fp, es decir, expresiones de la
forma (a1,a2, . . . ,am) con ai ∈ {0,1, . . . ,p–1}. Así, por ejemplo, los elementos de
F8 pueden identificarse con el conjunto de triples binarias {(i,j,k)}|i,j,k ∈ {0,1},
lo que proporciona una forma adecuada de transmitir los elementos de tal
cuerpo a través de un canal binario.
En esta forma aditiva los elementos pueden sumarse (sumando coordenada a
coordenada módulo p) o multiplicarse escalarmente por un elemento de Fp.
Para estudiar la estructura multiplicativa, recordemos que, dado un grupo abe-
liano finito (G,·), llamamos orden de x ∈ G al orden del subgrupo engendra-
do por x, es decir, ord(x) = min{n | xn = 1} y exponente de G a exp(G) =
mcm{ord(x) |x ∈ G}.
.
Lema 1.11. Si (G,·) es un grupo abeliano finito de exponente n, enton-
ces existe un elemento x ∈ G de orden n.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 13 Cuerpos finitos
Demostración: Sea n = pe1
1 · · · pemm la descomposición de n en factores primos.
Como pei
i aparece en la factorización, existe xi ∈ G de orden kipei
i para un
cierto entero natural ki. Entonces el elemento xki
i tendrá orden pei
i y por tanto
x =Qm
i=1 xki
i tendrá orden exactamente n.
.
Teorema 1.12 (Estructura multiplicativa). El grupo multiplicati-
vo (F∗q ,·) es cíclico de orden q – 1.
Demostración: Sea n el exponente de F∗q . En virtud del lema anterior debe
existir un elemento de orden n. Por tanto n ≤ q – 1 = #F∗q . Por otra parte, por
ser n múltiplo del orden de todo elemento, los q–1 elementos de F∗q satisfacen
la ecuación Xn – 1 = 0, con lo que q – 1 ≤ n y finalmente n = q – 1.
Dado que existe un elemento de orden q – 1 el grupo es cíclico.
.
Definición 1.13 (Elemento primitivo). Llamaremos elemento pri-
mitivo de Fq a un generador del grupo cíclico (F∗q ,·).
Nota
La noción de elemento primitivo en el contexto de un grupo cíclico finito de orden n y
la notación ϕ(n) para el número de tales elementos primitivos puede encontrarse en el
módulo 5 del curso Criptografía de la UOC. Tal número es importante en matemáticas y
será utilizado en otras partes de este curso, por lo que damos a continuación su definición
y algunas de sus propiedades.
.
Definición 1.14 (Función de Euler). Para todo número natural n se
denota ϕ(n) al número de elementos a; 0 < a < n tales que mcd(a,n) =
1. La función así obtenida se denomina función de Euler.
.
Proposición 1.15. La función de Euler verifica las siguientes propie-
dades:
1) Si p es un número primo, ϕ(p) = p – 1.
2) Si p es un número primo y r un número natural, ϕ(pr) = pr – pr–1 =
pr–1(p – 1).
3) Si m,n son números naturales primos entre sí (es decir, mcd(m,n) =
1), ϕ(mn) = ϕ(m)ϕ(n)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 14 Cuerpos finitos
La demostración es sencilla y se deja como un ejercicio.
.
Corolario 1.16. Sea n = pr1
1 . . . prss la factorización prima del número
natural n. Se tiene:
ϕ(n) = n ·Y
i
(1 – 1/pi) (4)
El corolario 1.16 muestra que el cálculo de ϕ(n) es fácil si se conoce la fac-
torización de n. Por contra, sin conocer tal factorización, este cálculo es un
problema computacionalmente dificil.
1.2.2. Representación multiplicativa
En virtud del teorema 1.12, si α es un elemento primitivo de Fq, entonces
F∗q = {αi | i = 1, . . . ,q – 1}. Esta representación será fundamental en los sistemas
criptográficos basados en el problema del logaritmo discreto.
Ejemplo 1.5 . Para q = 11, α = 2 es un elemento primitivo de F∗
11.
Observación
No se conoce ningúnalgoritmo eficiente para elcálculo de un elementoprimitivo, ni siquiera en elcaso de los cuerpos Fp, pprimo.
Ejemplo 1.6 . Como en el ejemplo 1.4, consideremos el polinomio irreducible X3 + X +
1 ∈ F2[X], y sea α una raíz.
Para saber si α es un elemento primitivo, en F8 deberíamos calcular su orden y ver si es
máximo. O sea, si el menor entero positivo r tal que αr = 1 es r = q – 1 = 7.
Sabemos que α3 +α + 1 = 0, o sea α3 = α + 1. Luego, α4 = α2 +α; α5 = α3 +α2 = α2 +α + 1;
α6 = (α3)2 = α2 + 1 y α7 = α3 + α = 1.
Luego α es un elemento primitivo y la tabla de equivalencias entre la representación
vectorial (o polinomial) y exponencial es:
Observación
Observar que al escribir unpolinomio como vector,utilizando los coeficientes desu expresión aditiva, hemosempezado por el término degrado cero como primeracoordenada.
Exponencial Vectorial Polinomial
0 (0,0,0) 0
α0 (1,0,0) 1
α1 (0,1,0) α
α2 (0,0,1) α2
α3 (1,1,0) 1 + α
α4 (0,1,1) α + α2
α5 (1,1,1) 1 + α + α2
α6 (1,0,1) 1 + α2
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 15 Cuerpos finitos
2. Bases de cuerpos finitos.
Como se ha indicado, los elementos de Fq, q = pm pueden expresarse como
combinación lineal, con coeficientes en Fp, de los elementos de una base.
Desde un punto de vista computacional, dos tipos de bases son especialmente
importantes.
.
Definición 2.1 (Base polinómica). Se denomina base polinómica
del cuerpo Fq a una base del tipo {1,α · · · ,αm–1}, con α raíz de un
polinomio mónico e irreducible con coeficientes en Fp.
El número de bases polinómicas de Fq será pues igual al número de polino-
mios mónicos e irreducibles de grado m con coeficientes en Fp. Tal número
puede determinarse explícitamente.
.
Proposición 2.2. Xq – X es el producto de todos los polinomios irre-
ducibles sobre Fp cuyo grado divide a m.
Demostración: Sea g(X) ∈ Fp[X] un polinomio mónico e irreducible de gra-
do d|m. Es decir m = dd′. En virtud del teorema 1.9 las raíces de g(X) determi-
nan un cuerpo con Fpd elementos y por tanto, por el teorema 1.8, son raíces
de Xpd
– X, luego g(X) divide a Xpd
– X. Se tiene pm – 1 = (pd – 1)(pd(d′–1) + pd(d′–2) +
· · · pd + 1) es decir pd – 1 divide a pm – 1. Un razonamiento análogo con X en
lugar de p, muestra que Xpd–1 – 1 divide a Xpm–1 – 1 luego Xpd
– X y por tanto
g(X) divide a Xq – X.
Recíprocamente, un razonamiento similar prueba que si g(X) es un polinomio
mónico e irreducible que divide a Xq – X, su grado es un divisor de m.
.
Corolario 2.3. Si denotamos por Np(d) el número de polinomios irre-
ducibles de grado d sobre Fp, se tiene,
q =X
d|m
dNp(d). (5)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 16 Cuerpos finitos
El número buscado Np(m) figura como sumando en la expresión anterior. Vea-
mos cómo despejarlo.
.
Definición 2.4 (Función de Moebius). Llamaremos función de Moe-
bius a la función de variable natural, µ : N –→ {–1,0,1} definida del
modo siguiente: si n ∈ N y n =Qs
i=1 pei
i es su descomposición en factores
primos, entonces
µ(n) =
8
>
>
>
>
>
>
<
>
>
>
>
>
>
:
1 si n = 1;
0 si ei ≥ 2 para algún valor de i;
(–1)s si ei = 1 para todo valor de i.
(6)
.
Lema 2.5. Si n ∈ N, se verifica que
X
d|n
µ(d) =
8
>
>
<
>
>
:
1 si n = 1;
0 si n > 1.
(7)
Demostración: El caso n = 1 es trivial. Supongamos pues que n > 1 y sean
p1,p2, . . . ,ps los divisores primos distintos de n. Teniendo en cuenta la defini-
ción de la función de Moebius,
X
d|n
µ(d) = µ(1) +s
X
i=1
µ(pi) +X
1≤i<j≤s
µ(pipj) + · · · + µ(p1p2 . . . ps)
= 1 +
0
B
B
@
s
1
1
C
C
A
(–1) +
0
B
B
@
s
2
1
C
C
A
(–1)2 + · · · +
0
B
B
@
s
s
1
C
C
A
(–1)s
= (1 – 1)s = 0.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 17 Cuerpos finitos
.
Lema 2.6 (Fórmula de inversión de Moebius). Sea f una función
de variable natural con valores en un grupo abeliano. Para n ∈ N defi-
namos g(n) mediante
g(n) =X
d|n
f (d). (8)
Se verifica que
f (n) =X
d|n
µ(d)g(n
d) =
X
d|n
µ(n
d)g(d). (9)
Demostración:
X
d|n
µ(d)g(n
d) =
X
d|n
µ(d)X
e|(n/d)
f (e)
=X
e|n
X
d|(n/e)
µ(d)f (e)
=X
e|n
f (e)X
d|(n/e)
µ(d)
= f (n).
donde para la última igualdad hemos tenido en cuenta el lema 2.5.
.
Teorema 2.7. El número de polinomios irreducibles de grado m sobre
Fp es
Np(m) =1
m
X
d|m
µ(d)pm/d =1
m
X
d|m
µ(m
d)pd. (10)
Demostración: Basta aplicar la fórmula de inversión de Moebius a la función
f (m) = mNp(m).Observación
Un polinomio irreducible degrado m puede obtenersetomando polinomiosarbitrarios y aplicándoles untest de irreducibilidad (Lidl yNiederreiter, 1997). El valorNp(m) dado por el teorema2.7 proporciona unaestimación de la probabilidadde éxito de tal búsquedaaleatoria.
Ejemplo 2.1. Para p = 2 el número de polinomios de grado m es:
1) 1 si m = 2. El polinomio: X2 + X + 1.
2) 2 si m = 3. Los polinomios: X3 + X + 1 y X3 + X2 + 1.
3) 3 si m = 4. Los polinomios: X4 + X + 1, X4 + X3 + 1 y X4 + X3 + X2 + X + 1.
4) etc.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 18 Cuerpos finitos
.
Definición 2.8 (Base Normal). Se denomina base normal de Fq a
una base del tipo {α,αp, · · · ,αpm–1
} con α ∈ Fq.
Como se verá en el apartado siguiente, las bases normales son muy eficientes
para el cómputo de la exponenciación en Fq, operación básica en los algorit-
mos criptográficos basados en el problema del logaritmo discreto. Para tener
una base normal es necesario un elemento α cuyas potencias p-ésimas sucesi-
vas sean linealmente independientes.
Ejemplo 2.2. Sea q = 8 = 23, α raíz del polinomio irreducible,
• X3 + X + 1. En este caso {α,α2,α4} no es base normal (pues ni siquiera es base, ya que
los tres elementos son linealmente dependientes).
• X3 + X2 + 1. En este caso {α,α2,α4} es base normal.
Lectura recomendada
Sobre el teorema de la base
normal podéis ver la obra
de Lidl y Niederreiter (1997)
o la de Menezes (1993).
En general, no es obvia la existencia de un elemento α generando una base
normal. Se tiene, sin embargo, el teorema 2.9.
.
Teorema 2.9 (Teorema de la base normal). Existe una base nor-
mal para todo cuerpo finito.
Evaluemos el número de bases normales. Supongamos fijada una tal base nor-
mal B = {α,αp, . . . ,αpm–1
} (cuya existencia garantiza el teorema 2.9). Un cambio
de base de B a una nueva base B′ = {β0,β1, . . . ,βm–1} viene determinado por
una matriz m × m inversible C = (cij), cij ∈ Fp.
Observación
Comenzar con 0 lossubíndices de los elementosde la base B′ y de loscomponentes de la matrizcirculante es por coherenciacon los exponentes de la basenormal B: p0,p1, . . . ,pm–1
Veamos qué condición debe cumplir C para que la nueva base B′ sea también
normal.
.
Definición 2.10 (Matriz circulante). Se denomina matriz circulan-
te (con coeficientes en un cuerpo o anillo) a una matriz del tipo:
[a0,a1, . . . ,am–1] =
0
B
B
B
B
B
B
B
B
B
B
B
B
B
B
@
a0 a1 . . . am–1
am–1 a0 . . . am–2
. . . .
. . . .
a1 a2 . . . a0
1
C
C
C
C
C
C
C
C
C
C
C
C
C
C
A
. (11)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 19 Cuerpos finitos
Es decir, la matriz queda determinada por su primera fila, ya que las siguientes
se deducen cada una de la anterior mediante una permutación cíclica de sus
elementos, que desplaza cada coordenada una posición a la derecha.
.
Teorema 2.11. La base B′ es normal si, y solo si, la matriz C de cambio
de base es circulante
Demostración: Supongamos que la matriz es circulante, es decir C = [a0,a1,
. . . ,am–1] lo que implica que cij = aj–i luego,
βi =X
j
aj–iαpj
=
0
@
X
j
aj–iαpj–i
1
A
pi
=
0
@
X
j
ajαpj
1
A
pi
= βpi
0
lo que muestra que la base B′ es normal.
Si recíprocamente suponemos B′ normal, sea β0 =P
j c0jαpj
. Se tendrá:
βi = βpi
0 =X
j
c0jαpi+j
=X
j
c0,j–iαpj
(12)
pero también (por definición) βi =P
j cijβpj
, lo que muestra que la matriz C es
circulante.
Lectura recomendada
Para la determinación del
número de bases normales
del cuerpo Fq podéis ver la
obra de Lidl y Niederreiter.
El número de bases normales del cuerpo Fq será pues igual al número de ma-
trices m × m circulantes e invertibles con coeficientes en Fp.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 20 Cuerpos finitos
3. Computación en cuerpos finitos.
El propósito de este apartado es mostrar cómo pueden realizarse, con los ele-
mentos de un cuerpo finito Fq, las operaciones aritméticas habituales y cuál
es el coste computacional de las mismas.
3.1. Aritmética en cuerpos finitos
Como se ha indicado en el teorema 1.10, fijada una base de Fq sobre Fp,
todo elemento a ∈ Fq puede ser representado como un vector de la forma
a = (a1,a2, . . . ,am), con ai ∈ {0,1, . . . ,p – 1}. La adición o substracción de dos
elementos a, b se realiza sumando o restando coordenada a coordenada y re-
duciendo el resultado módulo p.
3.1.1. Multiplicación
Fijada una base cualquiera B = {v1,v2, . . . ,vm} y dos elementos de Fq: a = a1v1 +
a2v2 + · · · + amvm, b = b1v1 + b2v2 + · · · + bmvm, (que podemos identificar con los
vectores a = (a1,a2, · · · ,am), b = (b1,b2, · · · ,bm)), se tiene:
c = a · b = (X
i
aivi)(X
j
bjvj) =X
ij
aibj(vivj) =X
ij
aibj(X
k
tkijvk) (13)
Luego, denotando Tk = (tkij), k = 1,2, . . . ,m, se tienen m matrices m × m deno-
minadas tablas de multiplicación. Si c = c1v1 + c2v2 + · · · + cmvm, las coordenadas
ci vienen dadas por la ecuación matricial:
Observación
En la ecuación 14 la bt
denota el vector traspuestodel b (en este caso un vectorescrito verticalmente).
ck = aTkbt . (14)
Las tablas de multiplicación determinan pues el producto. Este puede imple-
mentarse bien en software, almacenando las m tablas, bien en dispositivos
hardware específicos, que constan de m circuitos cada uno de los cuales da,
como salida a los inputs a,b ∈ Fq, una componente ck del producto.
Usualmente se emplean bases particulares, como las polinómicas o las norma-
les, ya descritas. Veamos las características específicas de estos dos casos:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 21 Cuerpos finitos
• Base polinómica: Sea {1,α, · · · ,αm–1}, con α raíz del polinomio (mónico
e irreducible) f (X). En este caso, dados a = a0 + a1α + · · · + am–1αm–1 y b =
b0 + b1α + · · · + bm–1αm–1, el cálculo de a · b implica dos operaciones:
1) Multiplicación de a y b como si fuesen polinomios en X.
2) Reducción del polinomio obtenido, de grado a lo sumo 2m – 2, módulo
f (X) (es decir, realizar la división euclídea por f (X) y tomar el resto).
Ejemplo 3.1. Sea el cuerpo F8 y α raíz de f (X) = X3+X+1 y los elementos a = 1+α2, b =
1 + α.
1) El producto de los polinomios a(X) = X2 + 1 y b(X) = X + 1 da como resultado el
polinomio c(X) = X3 + X2 + X + 1.
2) La division de c(X) por f (X) da como resto X2.
Luego a · b = α2.
• Base Normal: Si se utiliza una base normal B = {α0 = α,α1 = αp, . . . ,αm–1 =
αpm–1
}, las m tablas de multiplicación Tk = (tkij) verifican la siguiente rela-
ción:
.
Lema 3.1. Para 0 < l ≤ m – 1 se tiene tlij = t0
i–l,j–l. Es decir, la tabla Tl se
deduce de la T0 por desplazamiento de l posiciones en filas y columnas.
Demostración: Por definición de las tablas αiαj =P
k tkijαk. Elevando ambos
miembros a p–l se tiene que αp–l
i αp–l
j = αi–lαj–l =P
k tkijαk–l. Pero, por definición,
αi–lαj–l =P
k tki–l,j–lαk. Igualando los coeficientes de α0 en ambas expresiones se
tiene el resultado.
En consecuencia, si se tiene un algoritmo (o en hardware un circuito electró-
nico) para calcular la primera coordenada c0 del producto de los elementos
a,b ∈ Fq el mismo algoritmo o circuito calcula la coordenada cl con las coor-
denadas de a y b desplazadas l posiciones.
3.1.2. División
La división de dos elementos a,b ∈ Fq, b 6= 0, implica la multiplicación de a
por el inverso del elemento b. Si se emplea una base polinómica, dicho inverso
puede computarse utilizando el algoritmo de Euclides 1.4 para polinomios.
Ejemplo 3.2. Sea f (X) = X3 + X + 1, b = 1 + α2. El algoritmo de Euclides proporciona:
a2 = 1,a3 = 0, x2 = 1, y2 = X y por tanto 1 = f (X) · 1 + (X2 + 1)X, luego b–1 = α.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 22 Cuerpos finitos
3.1.3. Exponenciación
* A su vez necesarios en el
sistema criptográfico RSA;
consultar la obra de Koblitz
(1994).
Cálculos del tipo an (mod m), con a,n,m ∈ Z (o bien del tipo an, a ∈ Fq, n ∈
N) son una herramienta fundamental en los sistemas criptográficos basados
en el problema del logaritmo discreto y en otros campos como los tests de
primalidad*. En principio podría realizarse este cálculo multiplicando a por sí
mismo n veces y posteriormente reduciendo módulo m el resultado obtenido.
Ahora bien, para n grande, un cálculo del tipo anterior sería impracticable por
dos razones:
1) El número excesivo de multiplicaciones.
2) Los cálculos intermedios de estas multiplicaciones proporcionan números
de tamaño creciente, que pronto superarán la capacidad de almacenamiento
del computador.
Existe sin embargo un algoritmo (multiplicación y elevación al cuadrado) que
permite evitar estos dos inconvenientes:
Sea n = s0 + s12 + · · · sk–12k–1 la expresión binaria de n y sea b := 1,
.
Algoritmo 3.2 (Multiplicar y elevar al cuadrado).
Desde j = k – 1 hasta 0
Si sj = 1 entonces b := b·a (mod m).
Si j > 0 entonces b := b2 (mod m).
Final Desde
El resultado es an = b (mod m).
Ejemplo 3.3. Sean a = 3, m = 5, n = 67. Teniendo en cuenta que en base 2, 67 =
1000011, ejecutando las etapas del algoritmo anterior se obtiene 367 ≡ 2 (mod 5).
Notas
1) El algoritmo puede adaptarse a la expresión del exponente n en otra base diferente
de 2 (por ejemplo, para base 3 se tendría un algoritmo donde en lugar de elevar al
cuadrado se elevaría al cubo).
2) La reducción módulo m puede sustituirse por operación en un cuerpo finito Fq. En
particular para m = p primo la reducción módulo p es la operación en el cuerpo
primo Fp.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 23 Cuerpos finitos
La exponenciación puede simplificarse, especialmente en el caso de cuerpos
binarios, utilizando bases normales. En efecto se tiene:
.
Lema 3.3. Sean {a0,a1, . . . ,am–1} las coordenadas de un elemento a ∈ Fq
en la base normal {α,αp, . . . ,αpm–1
}. El elemento ap tiene por coordena-
das (am–1,a0,a1, . . . ,am–2).
Demostración: Se tiene (teniendo en cuenta que todos los demás miembros
del desarrollo de (a + b)q son potencia de p y por tanto nulos en característica
p, que api = ai y que αpn
= αq = α) que:
(a0α+a1αp+· · ·+am–1α
pm–1
)p = a0αp+a1α
p2
+· · ·+am–1αpm
= am–1α+a0αp+· · ·+am–2α
pm–1
El lema anterior muestra que la elevación a la potencia p implica simplemente
una permutación circular de los coeficientes y por tanto, su coste computacio-
nal es despreciable. Si p = 2 es la elevación al cuadrado, pieza fundamental en
el algoritmo 3.2, la que tiene coste cero.
3.2. Complejidad de la aritmética en cuerpos finitos
Veamos cómo obtener una estimación del coste de los algoritmos aritméti-
cos descritos en un cuerpo finito Fq. La disciplina que estudia el coste de los
algoritmos y problemas matemáticos se denomina teoría de la complejidad
computacional. Si se desea medir la cantidad de computación necesaria pa-
ra ejecutar un algoritmo, habrá que tener una unidad de medida. Dado que
un computador reduce cualquier cálculo a sumas binarias elementales, puede
tomarse tal suma como unidad.
.
Definición 3.4 (Operación bit). Se denomina operación bit a la adi-
ción de dos elementos en el cuerpo F2, es decir, a la suma binaria (mó-
dulo 2) de dos números iguales a 0 ó 1 (bits).
Para medir en operaciones bit el tiempo o cantidad de computación de un algo-
ritmo, la teoría de la complejidad computacional introduce dos precisiones:
1) El tiempo debe ser función de la longitud de los datos (inputs). Tales datos
son siempre números naturales (o reducibles a ellos: por ejemplo, un elemento
de un cuerpo finito con cardinal q = pm queda determinado por m números
naturales menores que p).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 24 Cuerpos finitos
2) El tiempo de ejecución de un algoritmo, para una longitud dada de los da-
tos, variará en cada caso concreto. Se adopta el criterio del caso peor tomando
una cota válida para toda instancia particular de dicha longitud.
.
Definición 3.5 (Longitud binaria de un número). Se denomina
longitud (binaria) k de un número natural n , al número de dígitos de
su expresión en base 2. Dicha longitud es el número natural k tal que
2k–1 ≤ n < 2k y por tanto k = ⌊log2 n⌋ + 1. Nótese que la longitud de
un número es también el número de bits de memoria necesarios para
almacenarlo en un computador.
.
Definición 3.6 (Notación O). Dadas f ,g funciones en las variables
naturales k1,k2, . . . ,ks y con valores reales positivos, se dice que f es del
orden de g (f = O(g)), si existen constantes reales t,C tales que si ki > t
para todo i , f (k1,k2, . . . ,ks) < Cg(k1,k2, . . . ,ks).
.
Definición 3.7 (Complejidad Polinómica). Un algoritmo con da-
tos iniciales: los enteros n1,n2, . . . ,ns , de longitudes k1,k2, . . . ,ks , se llama
de complejidad polinómica si existe un polinomio P en s variables tal que
el tiempo de ejecución de dicho algoritmo, medido en operaciones bit,
es O(P(k1,k2, . . . ,ks)).
Algoritmos eficientes
Los algoritmos decomplejidad polinómica sedenominancomputacionalmenteeficientes o buenos, ya que elcomputador puedeejecutarlos en un tiemporazonable, por oposición a losalgoritmos cuya complejidades exponencial en la longitudde los datos.
Como veremos, las operaciones aritméticas usuales en cuerpos finitos, en par-
ticular las implicadas en los algoritmos criptográficos, tienen una complejidad
polinómica. Dado que las operaciones en cuerpos finitos se remiten a opera-
ciones con números enteros, veamos previamente la complejidad de algunos
algoritmos básicos con enteros.
.
Proposición 3.8.
• El tiempo necesario para sumar dos números naturales de longitud
binaria k es O(k). La adición de números naturales tiene pues com-
plejidad lineal en la longitud de los datos.
• El tiempo necesario para multiplicar dos enteros naturales de longi-
tudes k, l , l ≤ k es O(k2). La multiplicación tiene pues una compleji-
dad cuadrática en la longitud de los datos.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 25 Cuerpos finitos
Observación
Debe señalarse que elalgoritmo habitual demultiplicación no es el mejoralgoritmo conocido pararealizar esta operación. Existeotro, debido a Schönhage yStrassen, con complejidadO(k log(k) log log(k))
Demostración:
1) Puede siempre suponerse la misma longitud para ambos sumandos, aña-
diendo eventualmente ceros a la izquierda de la representación binaria del de
menor longitud. La suma se obtiene entonces realizando k sumas binarias, es
decir, por definición, k operaciones bit.
2) Sea l ≤ k. Con la regla habitual de multiplicación: colocar el número me-
nor debajo del mayor y multiplicar cada dígito de aquel por este, colocar los
resultados en filas desplazadas cada una de ellas una posición a la izquierda
respecto de la anterior y sumando, a lo sumo, las l filas, de longitud k + l, (te-
niendo en cuenta los k–l desplazamientos), se tiene un número de operaciones
bit,
O(l(k + l)) = O(2kl) = O(2k2) = O(k2)
Nota
La operación de substracción o resta tiene obviamente el mismo tiempo de ejecución
que la suma. La división, con la regla habitual, se reduce a multiplicaciones y diferencias
y tiene pues igual tipo de complejidad que la multiplicación, es decir, cuadrática. Sin
embargo, debe recordarse que la estimación de la complejidad, dada por la notación O,
implica una constante, por lo que dos algoritmos con igual complejidad pueden tener de
hecho costes muy diferentes. Es el caso de la división, bastante más costosa que la mul-
tiplicación. Ello justifica el tratar de evitar o limitar al máximo el número de divisiones;
en el caso de la criptografía con curvas elípticas, ello puede conseguirse mediante el uso
de coordenadas proyectivas.
Veamos la complejidad del algoritmo 1.4 (de Euclides extendido) necesario,
como hemos visto, para el cálculo de inversos en Fp.
Obsérvese que en el algoritmo 1.4 los restos ai, obtenidos al iterar el paso 2,
forman una sucesión decreciente. Por tanto, el algoritmo finaliza necesaria-
mente en un número finito de etapas. Más concretamente se tiene,
.
Lema 3.9. Si a ≥ b, el número de etapas necesarias en la ejecución del
algoritmo de Euclides extendido es O(log(a)).
Demostración: Basta probar que los restos ai verifican la relación ai+2 <12 ai,
lo que implica que el número de etapas es, a lo sumo, 2⌊log(a)⌋. Ahora bien,
si ai+1 ≤ 12 ai, entonces ai+2 < ai+1 ≤ 1
2 ai. Si ai+1 >12 ai, la división euclídea
proporciona ai = 1ai+1 + ai+2, con lo que también en este caso, ai+2 = ai – ai+1 <
12 ai.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 26 Cuerpos finitos
.
Proposición 3.10. El coste computacional del algoritmo de Euclides
extendido es O(log2 a) (es decir, cuadrático en la longitud de los datos).
Demostración: Cada etapa del algoritmo comporta una división (de ai entre
ai+1), dos multiplicaciones (de qi+1 por xi+1 y por yi+1) y dos diferencias (para
obtener xi+2 e yi+2). El coste total de estas operaciones elementales es O(log2 a).
La proposición se deduce teniendo en cuenta el lema anterior.
Veamos finalmente la complejidad del algoritmo 3.2, de multiplicar y elevar
al cuadrado:
.
Proposición 3.11. El algoritmo de multiplicar y elevar al cuadrado
para calcular an (mod m), tiene una complejidad de O(log2(m) log(n)).
Demostración: El algoritmo comporta, como máximo, O(log(n)) cuadrados,
O(log(n)) multiplicaciones y O(log(n)) divisiones (para realizar las reducciones
módulo m), de números, todos ellos de longitud O(log m). Luego la compleji-
dad sería del orden de 3· log(n)· log2(m), o sea O(log2(m)· log(n)).
Coste computacional de las operaciones en cuerpos finitos
Una vez establecido el coste computacional, medido en operaciones bit, de
las operaciones aritméticas elementales con números naturales, así como del
algoritmo de Euclides y el algoritmo de multiplicar y elevar al cuadrado, po-
demos deducir el coste de la aritmética en el cuerpo finito Fq, q = pm,
.
Proposición 3.12. El coste computacional de una adición (o de una
substracción) de elementos de Fq es O(log(q)) operaciones bit.
Demostración: La adición de dos elementos a,b, realizada como adición
(o sustracción) de vectores con coeficientes en Fp implica la realización de m
adiciones (o sustracciones) de números naturales menores que p y la reducción
de cada resultado módulo p. Obsérvese que para tal reducción no es necesaria
una división: dado que los números obtenidos son menores o iguales que
2(p–1), para obtener el resultado módulo p basta dejar el resultado inalterado
si el número es menor que p y restarle p caso contrario. Luego la complejidad
será,
O(m)O(log(p)) = O(m log(p)) = O(log(q)). (15)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 27 Cuerpos finitos
Observación
A efectos computacionales elcoste de las sumas odiferencias en un algoritmoen cuerpos finitos suelenconsiderarse irrelevantes, yaque su complejidad es menorque la de la multiplicación. Aveces tal complejidad seexpresa no en operacionesbit sino en número deoperaciones elementales: eneste caso se entienden por tallas multiplicaciones.
.
Proposición 3.13. El coste computacional (utilizando la representa-
ción polinómica) de una multiplicación (o de una división) de elemen-
tos de Fq es O(log3 q) operaciones bit.
Demostración: Los elementos a ∈ Fq se manejarán como expresiones a =
a0 + a1α + · · · + am–1αm–1, ai ∈ {0,1, . . . ,p – 1}. Realizar la multiplicación de a
por b implica realizar el producto de los polinomios que los representan y la
reducción del resultado módulo f (X).
La multiplicación de dos polinomios de grado m – 1 sobre Fp implica la reali-
zación de O(m2) multiplicaciones de enteros módulo p, cada una de las cuales
requiere O(log2 p) operaciones bit, más una serie de adiciones que, por tener
un coste computacional inferior, podemos no tomar en consideración. Así
pues, esta primera etapa requiere O(m2 log2 p) operaciones bit. La división del
resultado por el polinomio f (X) requiere realizar O(m) divisiones de enteros
módulo p (que realizadas con el algoritmo de Euclides requieren O(log3 p) ope-
raciones bit) y O(m2) multiplicaciones de enteros módulo p; por tanto, esta
reducción representa un coste de O(m log3 p + m2 log2 p).
En total, la multiplicación de a por b implica pues
O(m2 log2(p) + m log3(p) + m2 log2(p)) = O((m log(p))3) = O(log3(q)) (16)
operaciones bit.
Observación
Puede observarse que lacomplejidad de lamultiplicación (o división) enun cuerpo finito es cúbicamientras que lamultiplicación (o división) ennúmeros naturales escuadrática. Ello obedece alsobrecoste de la reducciónmódulo p y del cálculo delinverso módulo p.
Por lo que respecta a la división x/y, solo resta probar que el inverso de y ∈ F∗q
puede computarse en O(log3 q) operaciones bit. Basta aplicar el algoritmo de
Euclides a f (X) y al polinomio que representa b, lo que requiere O(m) di-
visiones de polinomios de grado a lo sumo m, cada una de las cuales com-
porta O(m log3 p + m2 log2 p) operaciones bit. En definitiva, el coste total es
O(m3 log3 p) = O(log3 q) operaciones bit.
3.3. Algoritmos aritméticos en cuerpos finitos
El subapartado 3.1 describe los aspectos matemáticos de las operaciones arit-
méticas en cuerpos finitos. Desde un punto de vista computacional, especial-
mente para cuerpos de cardinal q muy grande es crucial poder implementar,
tanto en software como en hardware, tales operaciones lo más eficientemen-
te posible. Existen numerosos algoritmos con este propósito, adaptados tanto
al tipo de cuerpo finito como a la plataforma particular en la que se quiere
implementar tal aritmética (por ejemplo, existen algoritmos específicos para
plataformas con reducida capacidad de computación y de memoria, como las
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 28 Cuerpos finitos
tarjetas inteligentes o las etiquetas electrónicas). Es este un activo campo de
investigación en la actualidad, pero que desborda los objetivos del curso, por
lo que nos limitamos a mostrar un solo ejemplo básico para la adición y la
multiplicación en los dos tipos de cuerpos usuales en criptografía: los cuerpos
primos Fp y los cuerpos binarios F2m .
Referencias adicionales
Para otros algoritmos de
adición y multiplicación, así
como de exponenciación y
división remitimos a la
numerosa bibliografía sobre
el tema, por ejemplo, I.
Blake; G. Seroussi; N. Smart
(2000). Elliptic Curves inCryptography, London
Mathematical Society
Lecture Note Series 265.
Cambridge: U. Press; y D.
Hankerson; A. Menezes; S.
Vanstone (2004).Guide toElliptic Curve Cryptography.
Springer.
1) Cuerpos primos Fp
Si el cardinal p del cuerpo es grande, sus elementos tendrán longitud k =
⌈log2 p⌉ mayor que la longitud P de palabra del computador (usualmente P =
16,32 o 64 bits). Si t = ⌈k/P⌉ los elementos a ∈ Fp pueden representarse en la
forma A := A[t – 1] . . . A[1]A[0], concatenación de t bloques A[i] de P bits.
Para dos tales bloques x,y, notaremos [z,ǫ] si x + y = ǫ2P + z, ǫ = 0,1, 0 ≤ z ≤
2P – 1.
Algoritmo de adición: Sean a,b ∈ {0,1, . . . ,p–1}. El siguiente algoritmo calcula
c ≡ a + b (mod p).
.
Algoritmo 3.14.
1. Sea (C[0],ǫ) := A[0] + B[0].
2. Para i = 1, . . . ,t – 1 sea (C[i],ǫ) := A[i] + B[i] + ǫ.
3. Sea c = C[t – 1] · · ·C[0].
Si ǫ = 1 tomar c := c – p.
Si c ≥ p tomar c := c – p.
4 c ≡ a + b (mod p).
Ejemplo 3.4. Por simplicidad supondremos P = 2 (como se ha indicado, los valores
habituales de P suelen ser 16,32,64, etc). Sea el primo p = 101, lo que implica k = 7, t = 4.
Sean a = 83 = 26 + 24 + 2 + 1 (luego A[0] = 11, A[1] = 00, A[2] = 01,A[3] = 01) y b = 71 =
26 + 22 + 2 + 1 (es decir B[0] = 11, B[1] = 01, B[2] = 00,B[3] = 01). Apliquemos el algoritmo
anterior a los elementos a,b. Se tiene que (C[0],ǫ) = (10,1) (pues A[0] + B[0] = 3 + 3 = 6 =
1 · 2P + 2). Análogamente se obtiene:
(C[1],ǫ) = (10,0), (C[2],ǫ) = (01,0), (C[3],ǫ) = (10,0)
Concatenando los bloques C[i] se tiene: c = 10011010 = 27 + 24 + 23 + 2 = 154. Como este
número es mayor que p el resultado final es c := c – p = 53.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 29 Cuerpos finitos
Algoritmo de multiplicación: Sean a,b ∈ {0,1, . . . ,p – 1}. El producto en Fp
implica el cálculo del producto entero c = a ·b y la posterior reducción módulo
p. Para la etapa de reducción existen diversos algoritmos (Barret, Montgomery,
etc). El siguiente algoritmo calcula el producto entero c = a · b.
.
Algoritmo 3.15.
1. Sean R0 := 0, R1 := 0, R2 = 0.
2. Para k = 0,1, . . . 2t – 2, calcular,
2.1: Para cada par (i,j); i + j = k, 0 ≤ i,j ≤ t – 1.
UV := A[i] · B[j].
(R0,ǫ) := R0 + V.
(R1,ǫ) := R1 + U + ǫ.
R2 := R2 + ǫ.
2.2 C[k] := R0, R0 := R1, R1 := R2, R2 := 0.
3 C[2t – 1] := R0.
4 c = C[2t – 2] . . . C[0].
Ejemplo 3.5. Sean los mismos datos del ejercicio 3.4. Apliquemos el algoritmo anterior
a a,b.
Para k = 0 se tiene UV = A[0]B[0] = 9 = 1001 (luego U = 10, V = 01). Por tanto
(R0,ǫ) = (01,0), (R1,ǫ) = (10,0), R2 = 0
luego c[0] = 01. Análogamente se obtendría,
C[1] = 01, C[2] = 00, C[3] = 00, C[4] = 11, C[5] = 01, C[6] = 01
Es decir c = 011100000101 = 5893.
2) Cuerpos binarios F2m
En este caso la longitud binaria del cardinal del cuerpo es obviamente m. En
la base polinómica determinada por una raíz α del polinomio irreducible de
grado m f (X), los elementos a ∈ F2m se expresan en la forma: a = a0 + a1α +
· · · + am–1αm–1, ai = 0,1. Escribimos f (X) = Xm + r(X).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 30 Cuerpos finitos
La adición de dos elementos a,b ∈ F2m es trivial: expresados a,b en cualquier
base basta realizar la suma binaria de los dos bits correspondientes a cada una
de las m coordenadas.
Algoritmo de multiplicación. El producto de los elementos a,b comporta
la multiplicación de dos polinomios binarios a(X),b(X), de grado a lo sumo
m – 1 y la posterior reducción módulo f (X). El siguiente algoritmo resuelve
el primer problema. El resultado c(X) polinomio de grado a lo sumo 2m – 2
puede expresarse como una palabra C formada por t bloques C[j] de tamaño
P cuyas componentes son el bloque B representando a b(X) o bien un bloque
nulo.
.
Algoritmo 3.16.
1. C := concatenación de t bloques de tamaño P con entradas nulas.
2. Para k = 0,1, . . . P – 1,
Para j = 0,1, . . . ,t – 1.
Si el bit k de A[j] es 1 colocar B en la posición k del bloque A[j].
Caso contrario colocar un bloque nulo en dicha posición.
3. C es la representación de c(X).
Ejemplo 3.6.
Sean a = 101101 y P = 2, luego t = 3, A[0] = 01, A[1] = 11, A[2] = 10.
C estará formado por 3 bloques de tamaño 2 cuyas entradas son nulas o B: Para cada
k = 0,1 si el bit correspondiente de A[j]; j = 0,1,2 es 1 se pone B en la casilla correspon-
diente de C[j] y caso contrario un bloque 0. Queda finalmente C = [B,0][B,B][0,B].
Nótese que el resultado corresponde a la forma polinómica c(X) = BX5 + BX3 + BX2 + B,
el mismo resultado que se habría obtenido multiplicando a(X) = X5 + X3 + X2 + 1 por B.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 31 Cuerpos finitos
Ejercicios de autoevaluación
1. Justificar la necesidad de que n sea primo para que Zn, el conjunto de los enteros módulo
n, tenga estructura de cuerpo. Mostrar que Z6 no es un cuerpo.
2. Construir explícitamente el cuerpo finito F9 con 9 elementos y dar la tabla de equivalen-
cias vectorial-exponencial.
3. ¿Qué elementos de F9 se pueden tomar como generadores de su grupo multiplicativo?
¿Qué elementos de F9 tienen raíz cuadrada en este cuerpo?
4. ¿Para qué valores de p, (p = 3,5,7,11,13,19,23), se puede construir un cuerpo de orden p2
usando el polinomio x2 + 1?
5. Encontrar los valores de m para los cuales X2 + mX + 2 es un polinomio irreducible y
primitivo en Z11[X].
6. Sea q = pm, p primo, r ∈ N. Probar que el cuerpo Fpr está contenido en el cuerpo Fq si, y
solamente si, r es un divisor de m.
7. Sea el cuerpo F8, definido por el polinomio binario f (X) = X3 + X + 1 y sea α una raíz de
f (X). Expresar en la base polinómica {1,α,α2} los elementos α5 y α1+α2 .
8. Demostrar que en el cuerpo Fq la suma de todos los elementos es cero y si q es una potencia
de un número primo impar, el producto de todos los elementos no nulos es –1.
9. Demostrar que en un cuerpo finito de característica p,
a) Si p = 2, cada elemento es un cuadrado;
b) Si p es impar, exactamente la mitad de los elementos son cuadrados.
10. Escribir la tabla de equivalencias vectorial-exponencial para el cuerpo finito F24 , con
generador α.
a) Determinar δ como potencia de α, donde δ = α10 +α7 + α23
1 + α12+ 1
b) Encontrar todas las raíces de la ecuación:
α7x2 + (α2 + α9)x +1 + α
α4= 0
11. Utilizar el algoritmo extendido de Euclides para calcular:
a) El inverso de 43 en el cuerpo Z101.
b) El inverso de (1,2) en el cuerpo F9 (generar F9 a partir del polinomio irreducible f (X) =
X2 + 1)
12. Encontrar todas las bases normales del cuerpo F8, sobre el cuerpo F2.
13. Sea q = pm, p primo, Fq el cuerpo finito con q elementos y B : {x1, . . . ,xm} una base
de Fq sobre Fp. Dado x ∈ Fq sea la aplicación lineal ϕx : Fq → Fq dada por: ϕx(y) = xy.
Como toda aplicación lineal ϕ vendrá determinada en la base B por una matriz m × m con
coeficientes en Fp, A = (aij).
Se denomina Traza de x a Tr(x) =P
i aii ∈ Fp (es decir, lo que se denomina traza de la ma-
triz A, la suma de los elementos de su diagonal principal) y Norma de x a N(x) = |A| ∈ Fp
(determinante de la matriz A). Aunque definido en términos de una base concreta, puede
verse en cualquier texto de álgebra lineal que Tr(x),N(x) son los mismos en cualquier base.
Al variar x ∈ Fq se tienen dos aplicaciones Tr : Fq → Fp y N : Fq → Fp. Probar las siguientes
propiedades:
i) Tr(x + y) = Tr(x) + Tr(y),
i’) N(x · y) = N(x) · N(y), x,y ∈ Fq,
ii) Tr(λx) = λTr(x),
ii’) N(λx) = λmN(x), λ ∈ Fp, x ∈ Fq,
iii) Tr(λ) = mλ,
iii’) N(λ) = λm,λ ∈ Fp.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 32 Cuerpos finitos
14.a) Multiplicar en binario los números a = 103, b = 65. Determinar el número de operaciones
bits realizadas.
b) Generalizar al caso a número de longitud binaria k y b = 2k–1 + 1.
c) Comparar el número de operaciones bits de esta última multiplicación con la complejidad
general para la multiplicación obtenida en la proposición 3.8.
15.a) Formular un algoritmo para la exponenciación an en un cuerpo finito análogo al algorit-
mo 3.2 para la exponenciación modular en Z.
b) Determinar la complejidad del algoritmo anterior.
c) Aplicar al caso del cuerpo F8, a = 1 + α, α raíz del polinomio X3 + X + 1 ∈ F2[X] y n = 5.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 33 Cuerpos finitos
Soluciones
1) Si n no fuese primo admitiría una factorización n = ab, 1 < a,b < n. Los elementos a,bno admiten entonces inverso: si por ejemplo a admitiese inverso a–1, a–1 ∈ {1,2, . . . ,n–1} se
tendría que aa–1 = 1 y multiplicando ambos miembros por b: (ba)a–1 = na–1 y 1b = b. Dado
que n · a–1 = 0 en Zn, entonces b = 0, lo que es una contradicción.
En el caso n = 6, de lo anterior se deduce que los elementos 2 y 3 no admiten inverso, lo
que también puede comprobarse directamente, viendo que el producto de 2 o de 3 por los
elementos del conjunto {1,2,3,4,5} nunca es 1.
2) De acuerdo a la construcción dada por el teorema 1.9 es necesario tomar un polinomio
irreducible de grado dos sobre el cuerpo primo con tres elementos F3. Un tal polinomio es
por ejemplo el X2 + 1. Si α es una raíz de dicho polinomio se tendría:
F9 = {0,1,2,α,2α,1 + α,2 + α,1 + 2α,2 + 2α}
Las tablas aditivas y multiplicativas para este cuerpo podrían construirse como en el ejemplo
1.4. Sin embargo, el polinomio usado no es primitivo y una raíz de este polinomio no nos
sirve como generador del grupo multiplicativo del cuerpo (observemos que α4 = 1).
Tomemos ahora el polinomio X2 + 2X + 2 y sea α una raíz y por tanto, α2 = 1 + α. Se tiene la
correspondencia.
Exponencial Vectorial Polinomial
0 (0,0) 0
α0 (1,0) 1
α1 (0,1) α
α2 (1,1) 1 + α
α3 (1,2) 1 + 2α
α4 (2,0 2
α5 (0,2) 2α
α6 (2,2) 2 + 2α
α7 (2,1) 2 + α
3) Puesto que F∗
9 es un grupo cíclico de orden 8, la teoría general de grupos cíclicos nos dice
que existen φ(8) = φ(23) = 22 · 1 = 4 generadores del grupo multiplicativo de este cuerpo.
Si α es un tal generador (por ejemplo, como en el ejercicio anterior, puede tomarse como α
una raíz del polinomio X2 + 2X + 2 ∈ F3[X]) se tiene:
F∗
9 = {α,α2,α3,α4,α5,α6,α7,α8 = 1}
Los generadores serán de la forma αi, donde mcd(i,8) = 1 y, por lo tanto, i = 1,3,5 y 7. Así
pues, los generadores serán {α,α3,α5,α7}. En efecto, todos estos elementos tienen orden 8 y
por tanto, sus potencias recorren todo F∗
9 .
Los elementos que tienen raíz cuadrada son aquellos en los que el exponente es par, o sea
{α2,α4,α6,α8}. En efecto estos elementos tienen raíz cuadrada, de hecho, cada uno de ellos
tiene dos raíces cuadradas: por ejemplo α2 tiene por raíz α pero también α5 ((α5)2 = α10 =
α2). En cambio los elementos con exponente i impar no admiten raíz cuadrada, lo que puede
comprobarse directamente. Obsérvese que si β ∈ F9 fuese una raíz cuadrada de αi, es decir
β2 = αi, puesto que αi tiene orden 8, β tendría orden 16, lo que es absurdo pues su orden
debe ser divisor del orden del grupo, que es 8.
4) Debemos averiguar para qué valores de p se puede construir un cuerpo con p2 elementos
a partir del polinomio irreducible X2 + 1, es decir, debemos poder construir un cuerpo Fp2 =
Zp[X]/(X2 + 1). Si f (X) = X2 + 1 no fuera irreducible, podría ser descompuesto de la forma
(X – a)(X – b). Entonces, si existen valores X = a o X = b tales que f (X) = 0 (mod p), f (X)
no sería irreducible, y por lo tanto, Zp[X]/X2 + 1 no será un cuerpo. Supongamos f (X) = 0,
entonces sería X2 +1 = 0 (mod p) y X2 = –1 = p–1 (mod p). Así pues, comprobaremos si p–1
tiene raíz cuadrada módulo p y, en caso afirmativo, f (X) no será irreducible.
a) Para p = 3: x2 = 2 no tiene solución, por tanto f (X) es irreducible.
b) Para p = 5: x2 = 4 tiene solución x = 2, x = –2, por tanto f (X) no es irreducible.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 34 Cuerpos finitos
c) Para p = 7: x2 = 6 no tiene solución, por tanto f (X) es irreducible.
d) Para p = 11: x2 = 10 no tiene solución, por tanto f (X) es irreducible.
e) Para p = 13: x2 = 12 tiene solución x = 5 (52 = 25 = 12 (mod p)), por tanto f (X) no es
irreducible.
f) Para p = 19: x2 = 18 no tiene solución, por tanto f (X) es irreducible.
g) Para p = 23: x2 = 22 no tiene solución, por tanto fXx) es irreducible.
Los valores de p que cumplen que Fp2 = Zp[X]/X2 + 1 es un cuerpo son: 3,7,11,19 y 23.
Obsérvese que son todos los primos del conjunto dado congruentes con 3 módulo 4.
5) Debemos encontrar todos los valores de m tales que el polinomio p(X) = X2 + mX + 2 sea
irreducible y primitivo en Z11[X].
Primero encontraremos los valores de m para los cuales p(X) es irreducible. Para ello, su-
pondremos que p(X) se puede descomponer en factores, X2 + mX + 2 = (X – a)(X – b) =
X2 – bx – ax + ab = X2 – (a + b)X + ab. O sea, –(a + b) = m y ab = 2.
Las posibles soluciones son: (a = 1,b = 2,m = 8); (a = 2,b = 1,m = 8), (a = 3,b = 8,m = 0),
(a = 4,b = 6,m = 1), (a = 5,b = 7,m = 10), (a = 6,b = 4,m = 1), (a = 7,b = 5,m = 10),
(a = 8,b = 3,m = 0), (a = 9,b = 10,m = 3), (a = 10,b = 9,m = 3). La conclusión es que los
posibles valores de m para que p(x) sea irreducible son 2,4,5,6,7 y 9.
Finalmente, debemos sustituir m por estos valores y ver si p(x) es primitivo. Para ver que
un polinomio es primitivo, debemos comprobar que sus raíces tengan orden pn – 1, o sea,
orden 120 en nuestro caso. Un elemento α tiene orden i si αi = α0 = 1 en el cuerpo en el
que estamos trabajando. Entonces, podemos tomar α = [X] como raíz e ir calculando las
potencias de este elemento hasta llegar a un exponente i tal que αi = 1. Si i = 120 (orden
máximo), podemos decir que α es primitivo y el polinomio correspondiente también (no
hace falta calcular todas las potencias de α hasta 120, basta calcular αi con i divisor de 120).
Finalmente, después de las operaciones pertinentes, nos quedan como valores que hacen que
p(x) sea primitivo m = 4,5,6 y 7.
6) Si r|m se ha probado en la proposición 2.2 que el polinomio Xpr– X divide al polinomio
Xpm– X. Por tanto las raíces del primero (que constituyen el cuerpo Fpr ) son también raíces
del segundo, es decir, elementos del cuerpo Fq.
Supongamos recíprocamente que Fpr ⊂ Fpm . Puesto que ambos cuerpos contienen a Fp se
tiene la cadena Fp ⊂ Fpr ⊂ Fpm . Entonces se tiene que:
• Fpr es un espacio vectorial de dimensión r sobre Fp
• Fpm es un espacio vectorial de dimensión m sobre Fp
• Fpm es un espacio vectorial sobre Fpr . Llamemos s a su dimensión.
Pero es fácil demostrar la siguiente relación entre las tres dimensiones:
n = [Fpm : Fp] = [Fpm : Fpr ][Fpr : Fp] = rs ⇒ r|m
[Basta tomar bases {v1,v2, . . . ,vs} de Fpm sobre Fpr y {w1,w2, . . . ,wr} de Fpr sobre Fp y com-
probar que los productos viwj forman una base de Fpm sobre Fp.]
7) Por ser raíz del polinomio f (X) = X3 + X + 1, α verifica (en binario) α3 = α + 1. Por tanto
a) α4 = α2 + α y α5 = α3 + α2 = α + 1 + α2.
b) α1+α2 = α(1 + α2)–1. Para obtener el inverso de 1 + α2 se aplica el algoritmo de Euclides
para a = a0 = X3 + X + 1, b = a1 = X2 + 1 y xo = 1, x1 = 0, y0 = 0, y1 = 1. Se obtiene:
a2 = 1, a3 = 0, x2 = 1, y2 = X. Luego
1 = mcd(a,b) = X3 + X + 1 + X(X2 + 1) ⇒ (1 + α2)–1 = α
Finalmente: α1+α2 = αα = α2.
8) El cuerpo Fpm está formado por todos los elementos que cumplen Xpm– x = 0. Sean estos
elementos {0,a1,a2, · · · ,apm–1}. Entonces Xpm–1 – 1 = (X – a1)(X – a2) · · · (X – apm–1). Haciendo
operaciones:
Xpm–1 – 1 = Xpm–1 – (a1 + a2 + · · · + apm–1)| {z }
=0
Xpm – 2 + · · · + (–1)pm–1Y
ai
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 35 Cuerpos finitos
En cualquier caso la suma de todos los elementos de Fpm da cero y, si p es impar, pm – 1 es par
y, entonces, el producto es igual a –1.
9) Supongamos que p = 2, entonces podemos escribir el cuerpo finito F2m como F2m =
{0,α1,α2, · · · ,α2m–1 = 1}, donde α es un elemento primitivo. Vamos a ver si α tiene raíz
cuadrada:
1 = α0 = α2m–1 =⇒ α = α2m=⇒
√α = α2m–1
Como α tiene raíz cuadrada, todos los elementos de F2m la tendrán también.
En segundo lugar, supongamos que p = 2k + 1. En este caso podemos escribir Fpm = {0,α1,α2,
· · · ,αpm–1}, donde α es un elemento primitivo y αpm–1 = α0. Evidentemente, α2k tiene raíz
cuadrada, así como el elemento cero. Por lo tanto, los elementos que podemos asegurar que
tienen raíz cuadrada serán:
{0,α0,α2, · · · ,αpm–1}
que son exactamente la mitad de los elementos no nulos de Fpm y, además, el cero.
Vamos a ver que no hay más elementos en Fpm con raíz cuadrada y, para ello, consideremos
φ : Fpm –→ Fpm , definida como φ(x) = x2. En esta aplicación, excepto el cero, todas las
imágenes tienen exactamente dos antiimágenes. En efecto, supongamos que dos elementos
x,y ∈ Fpm ,x 6= y tienen un mismo cuadrado, es decir, x2 = y2. Entonces
x2 = y2 =⇒ x2 – y2 = 0 =⇒ (x + y) · (x – y) = 0
Esta ecuación tiene dos posibles soluciones: x = y y x = –y. Como p es impar, siempre existirán
valores diferentes x,y ∈ Fpm tales que x = –y, excepto en el caso del cero.
10) Tomemos el cuerpo finito F24 = Z2[X]/f (x), dónde f (x) se un polinomio irreducible de
grado 4 y coeficientes en Z2. Nuestro primer problema es, pues, encontrar un polinomio
irreducible y primitivo de cuarto grado.
Empecemos, primero, con los polinomios irreducibles de grado 1 (hay dos: X,X + 1). Los de
grado 2 (hay uno: X2 + X + 1). Los de grado 3 (hay dos: X3 + X2 + 1; X3 + X + 1). Los de grado
4 (hay 3: X4 + X3 + X2 + X + 1; X4 + X3 + 1; X4 + X + 1). De entre estos últimos polinomios
de cuarto grado, buscaremos uno que sea primitivo, es decir, que sus raíces tengan orden
pn – 1 = 15.
Comprobemos el polinomio X4 + X3 + X2 + X + 1:
Sea α una raíz, entonces
α4 = α3 + α2 + α + 1,
α5 = α4 + α3 + α2 + α = 1,
O sea, α5 = 1 y, por tanto, α no es de orden 15 y el polinomio no es primitivo.
Comprobemos ahora el polinomio X4 + X3 + 1:
Sea α una raíz, entonces
α4 = α3 + 1
α5 = α4 + α = α3 + α + 1
α6 = α4 + α2 + α = α3 + α2 + α + 1
α7 = α4 + α3 + α3 + α = α2 + α + 1
α8 = α3 + α2 + α
α9 = α4 + α3 + α2 = α2 + 1
α10 = α3 + α
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 36 Cuerpos finitos
α11 = α4 + α2 = α3 + α2 + 1
α12 = α9 + α6 + α3 + 1 = α + 1
α13 = α2 + α
α14 = α3 + α2
α15 = 1
Por tanto, el polinomio X4 + X3 + 1 se primitivo.
Así pues, utilizaremos el polinomio primitivo X4 + X3 + 1 y F24 = Z2[X]/X4 + X3 + 1.
La tabla de equivalencias vectorial-potencial es:
0 (0000) α0 (1000) α1 (0100) α2 (0010) α3 (0001)
α4 (1001) α5 (1101) α6 (1111) α7 (1110) α8 (0111)
α9 (1010) α10 (0101) α11 (1011) α12 (1100) α13 (0110)
α14 (0011)
• Para calcular δ como potencia de α, calcularemos:
δ = α10 +α7 + α23
1 + α12+ 1 = α10 +
α7 + α8
α+ 1 = α10 +
α4
α+ 1 = α10 + α3 + 1 = α12.
• Para encontrar las raíces de la ecuación dada, debemos resolver:
α7x2 + (α2 + α9)x +1 + α
α4= 0,
o sea: α7x2 + x + α8 = 0.
Por búsqueda exhaustiva, encontramos las raíces α3 y α13.
11) En primer lugar, el inverso de 43 en Z101 será un x tal que 43 · x = 1 (mod 101). Por lo
tanto, 43x = 1 + 101y.
Aplicamos el algoritmo extendido de Euclides con a0 = a = 101,a1 = b = 43.
Los valores encontrados son:
a0 = a = 101,a1 = b = 43,a2 = 15,a3 = 13,a2 = 2,a3 = 0,
q1 = 2,q2 = 2,q3 = 1,q4 = 6,
x0 = 1,x1 = 0,x2 = 1,x3 = –2,x4 = 3,x5 = –20,
y0 = 0,y1 = 1,y2 = 2,y3 = –5,y4 = 7,y5 = –47.
Finalmente, 1 = –101·20 + 43·47 y 1 = 43·47 (mod 101).
Por tanto, 43–1 = 47 (mod 101).
En segundo lugar vamos a calcular el inverso de (1,2) en F32 , donde F32 se ha generado a
partir de f (X) = X2 + 1.
El vector (1,2), en forma polinómica, está representado por 1+2α, donde α = [X] ∈ Z3[X]/X2+
1.
Utilizando el algoritmo extendido de Euclides entre X2 + 1 y 2X + 1 obtenemos:
a0 = a = X2 + 1,a1 = b = 2X + 1,a2 = 2,
q1 = 2X – 1,
x0 = 1,x1 = 0,x2 = 1,
y0 = 0,y1 = 1,y2 = 2X – 1.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 37 Cuerpos finitos
Finalmente, 2 = 1 · (X2 + 1) – (2X – 1) · (2X + 1), o sea:
(2X – 1) · (2X + 1) = 1 (mod X2 + 1).
Por lo tanto, (1,2)–1 = (–1,2).
12) Sea α ∈ F8, raíz del polinomio irreducible X3 +X+1. El conjunto B = {α,α2,α4 = 1+α+α2}forma una base normal. Por el teorema 2.11 cualquier otra base B′ es de la forma B′ = BC,
con C = [c0,c1,c2] matriz circulante no singular, es decir, con determinante no nulo (y por
tanto, en este caso determinante igual a 1).
El problema se reduce pues a encontrar tales matrices. Puesto que los coeficientes ci ∈ {0,1}existen 8 matrices circulantes. Veamos cuáles son no singulares:
a) Sean c0 = c1 = c2 = 0: la matriz es obviamente singular (todos sus coeficientes son nulos).
b) Sean c0 = c1 = c2 = 1: la matriz es singular (pues tiene sus tres filas iguales).
c) Sean c0 = 1 y c1 = c2 = 0: la matriz obtenida es la identidad, no singular, y se tiene B′ = B.
d) Sean c0 = 0, c1 = 1, c2 = 0: la matriz obtenida es
0
B
B
B
@
0 1 0
0 0 1
1 0 0
1
C
C
C
A
,
matriz no singular que proporciona la base normal B′ = {α4,α,α2} (Nótese que (α4)2 =
α8 = α.
e) Sean c0 = 0, c1 = 0, c2 = 1: la matriz obtenida es
0
B
B
B
@
0 0 1
1 0 0
0 1 0
1
C
C
C
A
,
matriz no singular que proporciona la base normal B′ = {α2,α4,α}.
f) Sean c0 = 1, c1 = 1, c2 = 0: la matriz obtenida es
0
B
B
B
@
1 1 0
0 1 1
1 0 1
1
C
C
C
A
,
matriz que es singular.
g) Sean c0 = 1, c1 = 0, c2 = 1: Se obtiene también una matriz singular.
h) Sean c0 = 0, c1 = 1, c2 = 1: De nuevo la matriz obtenida es singular.
Como conclusión: existen tres bases normales, las {α,α2,α4}, {α4,α,α2}, y {α2,α4,α}. Ob-
sérvese, sin embargo, que las dos últimas son simplemente permutaciones de la primera.
13) Si A,B son las matrices asociadas con las aplicaciones ϕx,ϕy; x,y ∈ Fq se tiene que la
matriz asociada con ϕx+y es A + B de donde se deduce i). La matriz asociada con ϕλx es (λaij),
de donde se deduce ii). La matriz asociada con ϕ(λ ) es la matriz diagonal con λ en todos los
elementos de la diagonal principal, de donde se deduce iii).
Las propiedades i’), ii’) y iii’) se deducen de la misma forma, teniendo en cuenta que la matriz
asociada a ϕxy es AB.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 38 Cuerpos finitos
14)
a) La expresión binaria de ambos números es a = 1100111, b = 1000001. Con la regla
habitual de multiplicación se obtiene
a = 0 0 0 0 0 0 1 1 0 0 1 1 1
a′ = 1 1 0 0 1 1 1 0 0 0 0 0 0
a + a′ = a · b = 1 1 0 1 0 0 0 1 0 0 1 1 1
Se han realizado un total de 13 operaciones bits (suma de dos números binarios de lon-
gitud 13). El resultado obtenido ha sido: 212 + 211 + 29 + 25 + 22 + 2 + 1 = 6695.
b) Ambos números tienen longitud binaria k y expresión binaria a = 1ak–1 · · · a1a0, b =
10 · · · 01. Dado que b tiene solo dos coeficientes no nulos (el primero y el último), habría
que realizar la suma de dos números binarios de longitud 2k–1, obteniéndose un número
con longitud, según los casos, 2k – 1 o 2k, por lo que el número de operaciones bits será
a lo sumo 2k.
c) La complejidad para el producto anterior es pues O(k), lineal en la longitud de los datos.
La complejidad en el caso general, Proposición 3.8, era sin embargo O(k2). Recuérdese,
sin embargo, que el símbolo O daba una expresión “en el caso peor”.
15)
a) El algoritmo debe calcular una expresión de la forma an, a ∈ Fq, n ∈ N. La reducción
módulo m en el algoritmo 3.2 debe sustituirse ahora por “operaciones” (multiplicaciones
y cuadrados) en el cuerpo finito. Con este cambio se obtiene al algoritmo deseado.
b) El algoritmo exige realizar, a lo sumo, O(log(n)) multiplicaciones y O(log(n)) cuadrados
(a diferencia del Algoritmo 3.2 no son necesarias divisiones). Como la complejidad de
una multiplicación y un cuadrado en Fq es O(log2(q)) el coste total será:
O(log(n))O(log2(q)) + O(log(n))O(log2(q)) = O(log(n) log2(q))
c) En este caso la expresión binaria de n es 5 = 101. Habría pues que realizar tres etapas:
• Etapa 1: s2 = 1, luego b := 1 + α y b := (1 + α)2 = 1 + α2.
• Etapa 2: s1 = 0, luego b := (1 + α2)2 = 1 + α + α2.
• Etapa 3: s0 = 1, luego b := (1 + α)(1 + α + α2) = α.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200953 39 Cuerpos finitos
Bibliografía .
Koblitz, N. (1994). “A Course in Number Theory and Cryptography, Second Edition”. Nue-
va York: Springer (Graduate Texts in Mathematics, núm. 114).
Lidl, R.; Niederreiter, H. (1997). “Finite Fields”. Encyclopedia of Mathematics and its Appli-cations (vol. 20, núm. 20, pág. 2). Cambridge: Cambridge U. Press.
Menezes, A. (1993) (ed.). Applications of Finite Fields. Massachusetts: Kluwer Academic Pu-
blishers.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Elementos decriptografíaLlorenç Huguet Rotger
Josep Rifà Coma
Juan Gabriel Tena Ayuso
PID_00200951
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España deCreative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéisel autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un usocomercial y no hagáis una obra derivada. La licencia completa se puede consultar enhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 Elementos de criptografía
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Criptosistemas simétricos o de clave privada . . . . . . . . . . . . . . . . . 9
1.1. Criptosistema DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Criptosistema IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3. Criptosistema AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4. Modos de operación de los criptosistemas de clave privada . . . 14
2. Criptosistemas de clave pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1. Funciones unidireccionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Criptosistema RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1. Descripción del criptosistema . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2. Firma digital, basada en el RSA . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Criptosistema ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.1. Descripción del criptosistema ElGamal . . . . . . . . . . . . . . . 21
2.3.2. Firma digital, basada en el ElGamal . . . . . . . . . . . . . . . . . . 22
2.4. Algoritmo DSA como alternativa a la firma digital RSA . . . . . . . 23
2.5. Funciones hash: MD5 y SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.1. El algoritmo MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.2. El algoritmo SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6. Infraestructura de clave pública: PKI . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.1. Sistemas gestores de certificados electrónicos:
la recomendación X.509. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6.2. Listas de certificados revocados: CRL . . . . . . . . . . . . . . . . . 32
3. Criptografía cuántica y post-cuántica . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1. Criptografía cuántica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2. Los códigos correctores de errores en la criptografía
post-cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1. Nociones básicas de códigos correctores de errores . . . 37
3.2.2. Códigos lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.3. Los códigos lineales cíclicos: BCH y RS . . . . . . . . . . . . . . . 43
3.2.4. Los códigos cíclicos BCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.5. Los códigos cíclicos RS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3. Los criptosistemas de McEliece y de Niederreiter . . . . . . . . . . . . . . 47
3.3.1. Criptosistema de McEliece . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.2. Criptosistema de Niederreiter. . . . . . . . . . . . . . . . . . . . . . . . . 49
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 Elementos de criptografía
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Solucionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 5 Elementos de criptografía
Introducción
Lectura recomendada
Para hacer más
comprensible este módulo
didáctico se puede
acompañar del libro de
Criptografía de J. Domingo,
J. Herrera y H. Rifà-Pous de
los estudios de Informática
y Multimedia, de la UOC.
Tradicionalmente, la criptografía tiene como objetivo la transmisión o alma-
cenamiento de mensajes indescifrables para todo receptor que no disponga de
la clave del algoritmo de descifrado.
Hoy, la criptografía se presenta como la solución al problema de la vulnera-
bilidad de los sistemas de transmisión, o de almacenamiento, con respecto al
secreto y a la autenticidad de la información transmitida, o almacenada. El
objetivo concerniente a la privacidad y autenticidad asociados a una red de
sistemas es evitar que un espía pueda violar o eliminar la protección del sis-
tema en referencia a las líneas de comunicación, a la conexión de acceso a la
red (contraseñas) y a la utilización de los recursos de un determinado sistema.
En tiempos pasados, la criptografía ha sido una actividad casi exclusivamente
utilizada en la diplomacia y en la guerra, pero, a partir de la Segunda Guerra
Mundial, la aparición de los ordenadores ha hecho que todos los sistemas crip-
tográficos utilizados antes, excepto el método de Vernam (basado en claves de
un solo uso y del cual se puede demostrar matemáticamente su inviolabili-
dad), formen parte de la historia puesto que la velocidad en el tratamiento de
la información hace que sea un juego de niños el problema de encontrar sus
correspondientes claves (criptoanálisis).
De esta simplicidad de los métodos clásicos es un ejemplo el sistema cripto-
gráfico, llamado de Julio César, por ser él su primer usuario, utilizado todavía
durante la segunda guerra mundial, que consistía en numerar los caracteres
alfabéticos y cifrar el mensaje m como el criptograma c, mediante una trasla-
ción cíclica que hoy enunciaríamos como c = (m + k) (mod 25), donde m es el
valor numérico asignado a cada letra del alfabeto {A = 0,B = 1,...,Z = 24}, por
ejemplo, y para un cierto valor de k previamente elegido (Cesar escogía k = 3).
El texto AMOR quedaría, en valores numéricos, 0,12,14,17 que se cifrarían en
3,15,17,20; es decir, se transmitiría el mensaje cifrado (criptograma): DPRU.
Desde siempre, toda técnica criptográfica que opera sobre un mensaje, sin
tener en cuenta su estructura lingüística, está basada en una operación ejecu-
tada por el emisor, transformando el mensaje original en un mensaje cifrado,
mediante un algoritmo que implementa esta operación, ligado a una clave k.
Al mismo tiempo, esta operación posee la operación inversa, ejecutada por el
receptor, que permite encontrar el mensaje original.
Todo sistema criptográfico, también denominado criptosistema, consta de cin-
co componentes: {M,C,K,E y D}, donde M es el conjunto de todos los mensa-
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 6 Elementos de criptografía
jes a transmitir, C el de todos los mensajes cifrados, K el de las claves a utilizar,
E el de todos los métodos de cifrado: E = {Ek|Ek(m) ∈ C,∀m ∈ M,∀k ∈ K} y D el
de todos los métodos de descifrado: D = {Dk|Dk(c) ∈ M,∀c ∈ C,∀k ∈ K}.
Cada método de cifrado de E, y cada método de descifrado de D, está definido
mediante un algoritmo, que es común a todos los métodos, y donde cada
clave k ∈ K, distinguirá la instancia correspondiente a cada transformación Ek,
y Dk, respectivamente.
Para toda clave k ∈ K, la transformación Dk es la inversa de Ek; es decir:
Dk(Ek(m)) = m,∀m ∈ M
Observar sin embargo, que esto no quiere decir que Ek sea el inverso de Dk, en
sentido matemático.
Fuentem Cifrado
Ek(m) = cDescifradoDk(c) = m
Criptoanálisis
Receptor
Métodosde cifrado
Métodosde descifrado
ClavesCanal seguro
c
Ek Dk
k k
m
Todo criptosistema, tal y como muestra la figura anterior, debe cumplir al
menos estos tres requisitos:
Principios de Kerchoff
En criptografía, laspropiedades deseables de uncriptosistema constituyen losprincipios de Kerckhoff; deentre ellos, los másimportantes: Si elcriptosistema no esteóricamente irrompible, almenos lo debe ser en lapráctica. La efectividad delcriptosistema no debedepender de que su diseñopermanezca en secreto. Elcriptosistema debe ser fácilde usar. La clave debe serfácilmente memorizable, paraevitar recurrir a notas escritas.Los criptogramas deberíanser alfanuméricos.
1) Todos los algoritmos de cifrado y descifrado Ek y Dk deben ser computacio-
nalmente eficientes.
2) Los algoritmos Ek y Dk deben ser fácilmente implementables.
3) La seguridad del sistema solo debe depender del secreto de las claves k ∈ K,
y no de los algoritmos correspondientes de E y D.
Además, siempre se deberá tener en cuenta los objetivos de privacidad y au-
tenticidad, donde se considera:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 7 Elementos de criptografía
• Privacidad: como la incapacidad, para un criptoanalista, de determinar un
mensaje original a partir del criptograma que haya podido interceptar.
• Autenticidad: como la incapacidad, para un criptoanalista, de sustituir un
criptograma falso c′, en lugar del criptograma real c, sin que sea detectado.
Consideraciones a los criptosistemas
Actualmente, se consideran dos tipos de criptosistemas, según la utilización
y administración de los algoritmos de cifrado y descifrado. El criptosistema
clásico o convencional, en el cual la clave correspondiente a ambos algoritmos
es la misma o, en su defecto, una fácilmente deducible de la otra. En este caso,
cada usuario dispone de su pareja de algoritmos Ek y Dk particulares y ningún
otro usuario puede disponer de ellos sin conocer la clave k. Son los llamados
criptosistemas de clave privada o simétricos.
Lectura recomendada
W. Diffie; M. Hellman.
“New Directions in
Criptography”. IEEETransactions on InformationTheory (vol. IT-22).
En el año 1976 entra en juego un nuevo concepto de criptosistema, propues-
to por W. Diffie y M. Hellman, llamados criptosistemas de clave pública o
asimétricos, caracterizados por el hecho de que conocer el algoritmo Ek no
revela ninguna información sobre Dk o viceversa. Es decir, una de las claves
puede ser revelada públicamente sin peligro de que la otra pueda ser deducida.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 8 Elementos de criptografía
Objetivos
En los materiales didácticos de este módulo el estudiante encontrará los con-
tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer los sistemas criptográficos de clave simétrica más comunes (DES,
IDEA, AES).
2. Conocer los sistemas criptográficos de clave asimétrica más comunes (RSA,
ElGamal).
3. Conocer los principales algoritmos usados en las funciones hash (MD5,
SHA).
4. Conocer los fundamentos y algún ejemplo de sistema criptográfico cuán-
tico.
5. Conocer los fundamentos de la teoría de la codificación para la corrección
de errores y los sistemas criptográficos postcuánticos basados en esta (McE-
liece, Niederreiter).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 9 Elementos de criptografía
1. Criptosistemas simétricos o de clave privada.
Nos referiremos a los criptosistemas como simétricos o de clave privada cuan-
do el emisor y el receptor comparten una única clave k. Por esto, establecemos
como característica principal la existencia de un canal seguro a través del cual
el emisor transmite al legítimo receptor su clave privada k de forma que queda
protegida ante un criptoanalista.
Fuentem Cifrado
Ek(m) = cDescifradoDk(c) = m
Criptoanálisis
Receptor
ClavesCanal seguro
c
k k
m
El emisor quiere enviar cifrado el mensaje m, por lo cual, mediante el algorit-
mo de cifrado calcula el criptograma c a partir de m y de la clave k:
Ek(m) = c
El receptor debe ser capaz de descifrar el criptograma c, a partir del conoci-
miento de la clave k, es decir, reencontrar el mensaje m mediante:
Dk(c) = m
1.1. Criptosistema DES
En el año 1977 el NBS (National Bureau of Standards), de los EE. UU., anun-
ció un algoritmo de cifrado estándar, el DES (Data Encryption Standard, FIPS
pub. 46, National Bureau of Standards, (enero 1977)), para que fuera utilizado
por todas las agencias federales, con el propósito de hacer compatibles todos
los sistemas de protección de la información utilizados en los diferentes esta-
dos, bajo un sistema criptográfico común admitido como estándar. La nueva
agencia que sustituyó a la NBS, el NIST (National Institute of Standards and
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 10 Elementos de criptografía
Technology), certificó el DES en el año 1987 y otra vez en 1993, hasta que en
1997 ya no lo certificó. Durante estos años fue considerado estándar a nivel
mundial y hoy todavía es utilizado en el intercambio de información entre los
cajeros automáticos y los bancos respectivos. Aunque sea por motivos históri-
cos nos parece interesante hacerle referencia.
El DES consiste en un algoritmo de cifrado-descifrado en bloques de 64 bits,
mediante una clave k, también de 64 bits (de los cuales solo 56 bits son efec-
tivos).
Enlace de interés
Se puede encontrar un
aplicativo de simulación del
DES, de uso libre, en la
dirección:
www.criptored.upm.es.
Los 64 bits de entrada (mensaje original) se transforman a través de una per-
mutación inicial PI, cuya salida se divide en dos sub-bloques L0 y R0 de 32 bits
cada uno, los cuales están sujetos a un conjunto de 16 transformaciones, de
acuerdo con una cierta función f y 16 sub-claves ki (i = 1, . . . ,16). Tras realizar
las 16 transformaciones se reunifican los sub-bloques R16 y L16 y se le aplica la
inversa de la permutación inicial: PI–1.
Si Ti es el resultado de la i-ésima iteración, entonces Ti está formada por dos
partes la Li, que denota los 32 bits más a la izquierda de Ti, y Ri, que denota
los 32 bits más a la derecha de Ti; o sea, Ti es la concatenación de Li con Ri. El
cálculo se hace de este modo:
Li = Ri–1,
Ri = L–1 ⊕ f (Ri–1,ki)
donde ⊕ es la operación or-exclusiva y ki es una sub-clave de 48 bits obtenida
a partir de la clave original k.
La función f transforma los 32 bits del bloque Ri–1, mediante la sub-clave ki en
los 32 bits del bloque Ri. Para hacer esto, primero se expanden los 32 bits de
Ri–1 en un bloque de 48 bits, utilizando una tabla de expansión E para calcular
la or-exclusiva de E(Ri–1) y ki, el resultado de la cual se divide en ocho bloques
Bi de 6 bits de entrada y cuatro de salida. Estos bits de salida son concatenados
por dar un nuevo bloque de 32 bits. Finalmente, la salida de la función f es el
resultado de aplicar una cierta permutación P al bloque de 32 bits anterior. Es
decir:
f (Ri–1,ki) = P(S1(B1),S2(B2)...S8(B8))
Cada una de las 16 iteraciones del algoritmo DES utiliza una clave diferente
de 48 bits, ki, calculada a partir de la clave k de 64 bits, la cual posee 8 bits de
control en las posiciones 8,16,24,32,40,48,56,63, mediante una permutación
P1 de 56 bits. El resultado P1(k) se divide en dos partes de 28 bits cada uno,
a los que se aplica un desplazamiento a la izquierda diferente para cada sub-
clave ki.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 11 Elementos de criptografía
La siguiente figura detalla los pasos del algoritmo de cifrado DES:
Nota
El hecho de que no seanintercambiados R16 y L16
antes de aplicarles lapermutación PI–1 obedece aque el algoritmo quedescribimos también seutilizará para el descifrado.
m = texto original de 64 bits
Permutación inicial PI
L0
L1
L2
L14
L15
L16
R0
R1
R2
R14
R15
Inversa de PI
c = texto cifrado
R16
k1
k2
k15
k16
f(R0,k1)
f(R1,R2)
f(R14,k15)
f(R15,k16)
Para aumentar la fortaleza del DES ante posibles criptoanálisis se propuso la
reiteración de los procesos de cifrado/descifrado operando, sucesivamente, so-
bre el mismo bloque con varias claves independientes. Este es el caso del doble
o triple cifrado.
1) Doble cifrado. Dadas las claves independientes k1 y k2, los algoritmos de
cifrado y descifrado vienen dados por:
c = Ek2(Ek1
(m))
m = Dk1(Dk2
(c))
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 12 Elementos de criptografía
2) Triple cifrado. Dadas las claves independientes k1, k2 y k3, los algoritmos
de cifrado y descifrado vienen dados por:
c = Ek3(Dk2
(Ek1(m))
m = Dk1(Ek2
(Dk3(c))
El método de triple cifrado puede ser utilizado para evitar el ataque criptoana-
lítico del meet in the middle.
1.2. Criptosistema IDEA
El International Data Encryption Algorithm es un criptosistema de clave si-
métrica, que fue diseñado para corregir las debilidades detectadas en el DES.
Hoy en día es utilizado en correo electrónico seguro (PGP)
El algoritmo IDEA opera en bloques de 64 bits como texto original, dando un
texto cifrado de 64 bits, mediante una clave de 128 bits. Es decir, opera sobre
la misma longitud de bloques de bits que el DES, pero con una longitud de
clave doble, lo cual añade complejidad al criptoanálisis.
Enlace de interés
Se puede encontrar un
aplicativo para la
simulación del IDEA, de uso
libre, en la dirección:
www.criptred.upm.es.
Las operaciones se realizan sobre sub-bloques de 16 bits, cosa que permite su
adaptación a arquitecturas de 16 bits. En el algoritmo encontramos tres tipos
de operaciones: la or-exclusiva ⊕, la suma módulo 216 y el producto módulo
216 + 1 (este valor, 216 + 1 es un número primo, por lo cual podemos calcular
inversos dentro del cuerpo finito correspondiente).
Sea m un bloque de 64 bits que queremos cifrar; éste se dividirá en 4 sub-
bloques de 16 bits: m1, m2, m3, m4, que serán la entrada al algoritmo de cifra-
do. El algoritmo consta de ocho pasos con las mismas características. En cada
paso, intervienen los cuatro sub-bloques de texto y seis sub-claves, también
de 16 bits, de forma que en cada paso los bloques segundo y tercero se inter-
cambian. Para acabar, hay un noveno paso, en el cual intervienen los cuatro
sub-bloques de texto y solo cuatro sub-claves.
La clave de 128 bits se subdivide en ocho sub-bloques de 16 bits cada uno,
los cuales constituyen las primeras ocho sub-claves utilizadas por el algorit-
mo: seis de estas en el primer paso y las dos restantes son las dos primeras del
segundo paso. Para poder continuar, se le aplica a la clave inicial una rota-
ción de 25 bits a la izquierda y la nueva clave resultante se subdivide en ocho
sub-bloques de 16 bits. Ahora el algoritmo utilizará las dos sub-claves anterio-
res seguidas de las cuatro primeras sub-claves provenientes de la subdivisión
actual. Las cuatro restantes se utilizarán en el tercer paso, y así sucesivamente
El diagrama de bloques del criptosistema IDEA se muestra en la figura si-
guiente.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 13 Elementos de criptografía
mi = sub-bloque texto original
kij= subclave j-ésima del paso i
ci= sub-bloque texto cifrado
m1 m2 m3 m4
k11 k12 k13 k14
k15
k16
k91 k92 k93 k94
7 pasosmás
c1 c2c3 c4
Sumador módulo 216
Multiplicador módulo 216 + 1
XOR= sumador bit a bit, módulo 2
+ +
+
+
+ +
+
1.3. Criptosistema AES
Enlace de interés
Se puede encontrar un
aplicativo de simulación del
AES, de uso libre,
denominado AES Inspectoren la dirección:
www.formaestudio.como
/rijndaelinspector.
Durante el periodo que el DES estuvo en vigor (1977-2001) se propusieron
decenas de cifrados alternativos, muchos de ellos de dominio público. La NSA
(National Security Agency) también dio a conocer en 1994 un nuevo cifrado
para ser usado en telefonía y comercio electrónico: Skipjack.
El Skipjack es un algoritmo de cifrado en bloques de 64 bits, fue declarado
secreto, y los chips que se han implementado impiden acceder a su código
fuente. Quizás proceda así la agencia NSA porque no desea que uno de sus
criptosistemas circule abiertamente por todo el mundo, o para poder escuchar
conversaciones telefónicas cifradas, o ambas cosas.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 14 Elementos de criptografía
En enero de 1997, el NIST (National Institute of Standards and Technology),
viendo que la seguridad del DES estaba ya comprometida (por motivos es-
trictamente computacionales, porque el DES nunca ha sido roto), convocó a
concurso público la adjudicación del nuevo estándar de cifrado. Se denomi-
naría AES, acrónimo de Advanced Encryption Standard. En la convocatoria
se especificaba una serie de requisitos mínimos: un cifrado en bloque de 128
bits; con claves de 128, 192 y 256 bits; la posibilidad de ser implementado
tanto en hardware como en software y estar disponible gratuitamente. Pero lo
más destacado de la convocatoria era que el concurso estaba abierto a todo el
mundo y que el proceso de selección iba a ser totalmente transparente.
Con esta idea se inició una etapa larga de selección que culminó, el año 2000,
en la elección del criptosistema Rijndael de los investigadores belgas Vincent
Rijmen y Joan Daemen.
Desde este momento, DES ya tiene sustituto: AES. Naturalmente, la decisión
del NIST de adoptar el nuevo criptosistema solo obliga a la administración
federal americana, y en lo concerniente a la información no clasificada; pero
con toda seguridad, AES va a ser el cifrado más usado en los próximos años.
La recomendación del cifrado por parte del NIST es todo un certificado de
garantía para empresas y organizaciones. Prueba de ello es que la misma NSA
ha aprobado el uso de AES para cifrar información clasificada: la secreta con
claves de 128 bits y la de alto secreto con claves de 192 y 256 bits.
Criptoanálisis
El disponer de un estándar decifrado de uso generalizadotiene un gran inconveniente:que todo el mundo quiereromperlo. Al exigir claves conuna longitud mínima de 128bits, el NIST dotaba a sucifrado de una seguridad másque suficiente contra unataque de fuerza bruta; elúnico método que venció alanterior estándar, el DES.Descubrir una clave de 128bits comprobando una a unatodas las posibles es unatarea prácticamente eternapara cualquier ordenador dehoy en día. Incluso paratodos ellos trabajando juntos.Y 256 bits son garantía desobra contra todos losordenadores electrónicos quese construyan en las próximasdécadas. Será necesario algomás que fuerza bruta paraderrotar al AES. Durante elconcurso, el vencedorRijndael (igual que el resto delos finalistas) probó serinmune a todos los métodosde criptoanálisis conocidoshasta aquel momento.
El proceso de cifrado de cada bloque de 128 bits de texto original consta de
tres transformaciones, o capas distintas donde se tratan los bits, que cons-
tan de:
• Capa de Mezcla Lineal: difusión de los bits: ShiftRow y MixColumns.
• Capa No Lineal: ByteSub (similar a las S-boxes del DES).
• Capa de Adición de Clave: operaciones con la función or-exclusiva entre
el estado intermedio y la sub-clave de cada ronda.
Las operaciones implicadas en AES se expresan en términos algebraicos em-
pleando cierta aritmética de bytes. En esta aritmética, la suma y el producto
de bytes son justamente la suma y el producto en el cuerpo finito F28 , cons-
truido a partir del polinomio primitivo: p(X) = X8 + X4 + X3 + X + 1.
1.4. Modos de operación de los criptosistemas de clave privada
Por aumentar la seguridad del algoritmo de cifrado y el de descifrado se utili-
zan de diferentes modos:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 15 Elementos de criptografía
• Cifrado en bloque: donde el texto original se procesa en bloques disjun-
tos de 64 bits, los bloques de salida de los cuales, también de 64 bits, se
concatenan para formar el texto cifrado. Este modo suele llamarse ECB
(Electronic Code-Book). Esta manera de cifrar/descifrar impide, por un lado,
la supresión y/o inserción de bloques de texto cifrado, porque en cualquier
caso el receptor sería incapaz de descifrar el criptograma recibido y, por lo
tanto, quedaría alertado de las posibles intrusiones. Por otro lado, los ata-
ques estadísticos también se complican, debido a la interdependencia del
texto cifrado a lo largo de todo el proceso. Una alternativa es el denomi-
nado cifrado en bloques encadenados, consistente en dividir el texto que
hay que cifrar en bloques y hacer depender el bloque n-ésimo de texto ci-
frado/descifrado del bloque (n – 1)-ésimo. Es decir:
cn = Ek(mn ⊕ cn–1)
mn = Dk(cn)⊕ cn–1
El primer bloque de entrada al proceso de cifrado está formado por la or
exclusiva entre el primer bloque del mensaje y los 64 bits del vector inicial
c0 = VI, el cual es compartido por los algoritmos de cifrado y de descifrado.
Este modo suele denotarse CBC (Cipher Block Chaining).
• Cifrado en flujo: operando sobre uno o más bits, desplazando previamente
un conjunto de bits de la operación anterior en número suficiente para
guardar los nuevos (stream cipher).
Secreto perfecto deShannon
El hecho de que los registrosde desplazamiento quegeneran la secuencia binariak1,k2...kn tengan un periodofinito está en contraposicióncon los requerimiento delsecreto perfecto de Shannon,porque, si el texto a cifrar esmuy largo, se repetirá la clavede forma determinista.
Dentro de este modo de cifrado, se considera el modo CFB Cipher Feedback,
que consiste en una or-exclusiva entre los n bits más a la izquierda de la
información de salida del proceso de cifrado y los n bits de la información
de entrada produciendo n bits de texto cifrado (n es el número bits a cifrar).
El criptograma se obtiene a partir de un valor inicial VI y del criptograma
anterior. Para cargar estos n bits en el dispositivo de cifrado, desplazaremos
el contenido del valor inicial VI n bits a la izquierda.
Esta modalidad permite el tratamiento de bloques de menos de 64 bits.
Normalmente se utiliza para la seguridad de mensajes muy repetitivos y
para cifrar/descifrar ficheros donde no conviene almacenar información
inútil.
Existen otros métodos, implementados con registros de desplazamiento;
LFSR (Linear Feedback Shift Register), en los cuales la clave k se usa para con-
trolar un generador de claves variables (running key genarator), que produce
una secuencia binaria k1,k2...kn (n debe ser mucho más grande que la lon-
gitud de la clave). Así, los dígitos del texto cifrado se forman a partir del
texto original, en binario:
ci = mi ⊕ ki
Evidentemente, el descifrado se hará de forma simétrica: mi = ci ⊕ ki
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 16 Elementos de criptografía
2. Criptosistemas de clave pública.
En el año 1976 entra en juego el nuevo concepto de criptosistema propuesto
por Diffie y Hellman, con dos claves, una de las cuales puede ser revelada
públicamente sin peligro de que se pueda deducir la otra.
Separabilidadescritura/lectura
Este tipo de criptosistemasson muy indicados para laprotección de ficherospúblicos, puesto que elhecho de poder escribirinformación sobre el ficherono implica poderla leer yviceversa, porque las clavesde escritura y lectura sonindependientes, pese a queestán relacionadas.
En un criptosistema con claves públicas cada usuario tiene un algoritmo de
cifrado Ek, registrado en un directorio público, y un algoritmo de descifrado
Dk que solo conoce el usuario. Mientras Dk se define en función de la clave
privada, Ek se define mediante un algoritmo o función que no permita, desde
el punto de vista computacional, la revelación de Dk. Estos tipos de algoritmos
o funciones reciben el nombre de unidireccionales.
En este caso, dos algoritmos diferentes proporcionan el secreto y la autentici-
dad. Por ejemplo, si el usuario A quiere transmitir el mensaje m al usuario B,
ambos conectados al mismo directorio público, solo debe buscar el algoritmo
de cifrado EkBde B en el directorio público y transmitir el mensaje cifrado c =
EkB(m). Cuando el usuario B recibe c tiene que aplicar DkB
, que solo él conoce,
y encuentra el mensaje original DkB(c) = m, (ya que DkB
(c) = DkB(EkB
(m)) = m).
Con la utilización de la criptografía de clave pública queda asegurado el se-
creto, pero no queda protegida la autenticidad, puesto que todos los usuarios
pueden conocer EkB. Firma digital
En general, se envía la firmapor una parte y el mensaje,cifrado o no, por otra parte;según la necesidad deprivacidad del mensaje. Así, siA quiere enviar un mensajefirmado a B, enviará m, oEkB
(m) y la firmacorrespondiente:s = DkA
(h(m)). Entonces, Brecupera m con su claveprivada que compara con elresultado de aplicar el cifradocon la clave pública de A a s.Si ambos resultadoscoinciden se acepta laautenticación y de locontrario se rechaza. Incluso,como veremos más adelante,lo que se enviará es elmensaje m, cifrado o no, y lafirma de un resumen delmensaje: h(m) (función dehash). En tal caso la firmaserá: s = DkA
h(m) (ver elalgoritmo de firma DSA).
Para conseguir la autenticidad tendremos que exigir a las transformaciones
Ek y Dk, de cada usuario, que verifiquen que Ek sea la transformación inversa
de Dk; es decir, que para todo mensaje m y para todo usuario con clave k,
tengamos: Ek(Dk(m)) = m,
En este caso el usuario A podrá firmar sus mensajes mediante su transforma-
ción secreta DkA. En efecto, si A quiere enviar el mensaje m a B, autenticando
su procedencia, podrá firmar digitalmente este mensaje haciendo s = DkA(m),
donde s será la firma y DkAla transformación de descifrado del usuario A; que
solo él conoce y, por lo tanto, solo él podrá hacer esta operación.
Ahora, una vez firmado el mensaje, A enviará el mensaje cifrado c=EkB(s).
Cuando B reciba c; puede encontrar s, puesto que s = DkB(c), que será inin-
teligible para él. Ya que ha sido prevenido por A que le enviaba un mensaje,
para descifrar el contenido de s, solo debe buscar en el directorio público el
algoritmo EkAde A. Y en efecto, EkA
(s) = m era el mensaje que pretendía trans-
mitirle A.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 17 Elementos de criptografía
2.1. Funciones unidireccionales
La idea fundamental de Diffie y Hellman para la definición de criptosistema
con clave pública se basa en la existencia de las funciones unidireccionales
(One way functions).
.
Definición 2.1 (Función unidireccional).
Una función f sobre un dominio U se llama unidireccional si ∀x ∈ U,
f (x) es fácilmente calculable, mientras que para casi todo y ∈ f (U), no
es computacionalmente factible encontrar x ∈ U, tal que f (x) = y.
Observar que la definición no es muy precisa: los términos fácilmente calcula-
ble, para casi todo y computacionalmente factible son muy imprecisos, aunque se
pueden definir matemáticamente para que tengan un sentido perfectamente
preciso.
.
Definición 2.2 (Función unidireccional con trampilla).
Una familia de funciones invertibles fk con dominio Uk, con índice k,
se llama función unidireccional con trampilla si, dado k, se pueden en-
contrar algoritmos Ek y Dk que calculen fácilmente fk(x) y f –1k (y) ∀x ∈ Uk
y ∀y ∈ f (Uk); y, sin embargo, para casi todo k y ∀y ∈ f (Uk), no es compu-
tacionalmente eficiente encontrar f –1k (y), con el único conocimiento
de Ek.
Una de las primeras candidatas a función unidireccional fue la del logaritmo
discreto, propuesta por los mismos Diffie y Hellman. En efecto, dados un nú-
mero primo grande, p, y α un elemento primitivo del cuerpo Fp, la función
exponencial discreta: f (x) = αx (mod p), donde 1 < x < p es computacional-
mente eficiente calcularla.
Algoritmo de multiplicary elevar
Para valores de x grandes,podemos usar el métodobinario de exponenciación(D. E. Knuth (1981). The Art
of Computer Programming.
vol. 2 Semi-Numerical
Algorithms. Addisson Wesley).Por ejemplo (véase elalgoritmo 3.2 del módulo“Cuerpos finitos” de estaasignatura), para calcular α25
se puede realizar de estaforma: α25 = α16+8+1 =
(((α2)2)2)2 · ((α2)2)2 · α.
En cambio, la inversa de la exponencial discreta; el logaritmo discreto x =
logα(y) no es computacionalmente eficiente calcularlo si p–1 tiene un factor
primo grande.
2.2. Criptosistema RSA
A partir del concepto de función unidireccional, Diffie y Hellman definen la
estructura de un criptosistema de clave pública. Sin embargo, no proporcio-
nan ninguna implementación concreta de tal estructura, excepto para el caso
del protocolo de distribución de claves privadas que veremos más adelante.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 18 Elementos de criptografía
R. L. Rivest, A. Shamir y L. Adleman, del MIT, en su artículo “A Method for
Obtaining Digital Signatures and Public-Key Cryptosystems”, Comm. of ACM
21(2); 120-126, February 1978, presentaron un criptosistema de clave pública
que cumplía todas las condiciones enumeradas anteriormente (el criptosiste-
ma RSA), basado en el teorema de Euler y en la dificultad de factorizar un valor
n = p · q, donde p y q son primos.
Cálculo de ϕ(n)
Para valores grandes de p y q,no es computacionalmenteeficiente el cálculo de ϕ(n),para quien no conoce losvalores de p y q.
Teorema de Euler
El teorema de Euler aseguraque la función f –1
kes la
inversa de fk, es decir:f –1k
(fk(x)) = x (mod n), si xes relativamente primo con n.
La función unidireccional del RSA es la exponencial discreta: fk(x) = xe (mod n);
donde 0 < x < n = p · q y donde k = (e,n); p y q son dos números primos muy
grandes y e cumple 0 < e < ϕ(n) y mcd(e,ϕ(n)) = 1. El algoritmo Ek para calcular
fk(x) es relativamente fácil; es la exponenciación por el método de multipli-
car y elevar mencionado anteriormente. Hacer público este algoritmo requiere
divulgar n y e.
Trampilla
Dado ϕ(n) es fácil generar elpar de números e y d quesatisfacen la condición deinversos (mod ϕ(n)),cuando e o d sonrelativamente primos conϕ(n). Es decir, dado e, es fácilcalcular d (o viceversa) siconocemos ϕ(n). Sinembargo, si e y n sonconocidos, sin revelar ϕ(n),no es computacionalmenteeficiente calcular d.
La función inversa es:
f –1k (y) = yd (mod n)
donde d es el único 0 < d < n tal que e · d = 1 (mod ϕ(n)). El algoritmo f –1k es
fácil de calcular para quien conoce la clave (d,n). Pero solo conocerá d, quien
conozca ϕ(n), difícilmente calculable para quien no conoce la factorización de
n en p y q (esta es la trampilla de la función unidireccional utilizada).
2.2.1. Descripción del criptosistema
El criptosistema RSA consiste en asociar a cada carácter del alfabeto, en qué
están escritos los mensajes originales, un valor numérico y entonces cifrar el
mensaje por bloques de la misma longitud y con un valor numérico compren-
dido en un cierto rango.
Supongamos m ∈ [2,n – 1] correspondiente a un cierto bloque a cifrar. El algo-
ritmo de cifrado se reduce al cálculo de una exponencial donde la clave es el
par de números (e,n):
c = E(e,n)(m) = me (mod n)
La algoritmo de descifrado, para poder obtener m a partir de c, consiste
también en una exponenciación, donde la clave es ahora otro par de núme-
ros (d,n):
m = D(d,n)(c) = cd (mod n)
La manera de obtener un buen esquema de cifrado y descifrado recae en la po-
sibilidad de obtener ϕ(n). Rivest, Shamir y Adleman sugieren este tratamiento:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 19 Elementos de criptografía
1) Encontrar el valor n = p · q, donde p y q son dos números primos grandes
(en los inicios del RSA ya se sugerían de un centenar de dígitos cada uno).
2) Conociendo p y q, calcular: ϕ(n) = (p – 1) · (q – 1).
3) Tomar e relativamente primo con ϕ(n).
4) Calcular d = e–1 (mod ϕ(n)).
Veamos un ejemplo aunque los valores empleados no son los que se podrían
usar en la realidad.
* Por ejemplo, usando el
algoritmo de Euclides
extendido, según el
algoritmo 1.4 del módulo
“Cuerpos finitos”.
Ejemplo 2.1. Supongamos p = 13 y q = 17. Entonces n = 13 · 17 = 221 y ϕ(n) = 12 · 16 =
192. Escogiendo e = 11 ((e, ϕ(n))=(11, 192)=1), calculamos el valor de d, tal que d · e = 1
(mod ϕ(n)) y encontramos d = 35.* La clave pública será (11,221) y la clave privada será
(35,221).
Entonces el cifrado será: c = E(11,221)(m) = m11 (mod 221) y el descifrado: m =
D(35,221)(c) = c35 (mod 221).
Si suponemos que el conjunto de mensajes originales es M = {A,B,...,Y,Z} y la correspon-
diente asignación numérica es Mn = {2,3,...,26,27}, y queremos cifrar el mensaje m = EDIo, numéricamente, 060510, haremos sucesivamente:
• 611 (mod 221) = 141
• 511 (mod 221) = 164
• 1011 (mod 221) = 173
y nos dará el criptograma c = 141164173.
Para el descifrado iremos cogiendo sucesivamente bloques de tres dígitos y haremos:
• 14135 (mod 221) = 6
• 16435 (mod 221) = 5
• 17335 (mod 221) = 10
que nos dará el mensaje original m = 060510 o, en caracteres: m = EDI.
2.2.2. Firma digital, basada en el RSA
Los algoritmos de cifrado y descifrado del algoritmo RSA son conmutativos; es
decir: Dk(Ek(m) = Ek(Dk(m)), y por lo tanto, el esquema RSA puede ser utilizado
para ambos objetivos de privacidad y autenticidad. En base a esta conmutati-
vidad se puede utilizar el RSA para construir firmas digitales.
En este caso, si suponemos dos usuarios A y B, con claves públicas (eA,nA) y
(eB,nB) y claves privadas (dA,nA) y (dB,nB), respectivamente, podremos arbitrar
un sistema de firma digital como se ha mencionado anteriormente.
Si el usuario A quiere enviar el mensaje m, firmado digitalmente, al usuario B,
procederá de la forma siguiente:
Firma digital, basada enel RSA
En general, dado que losvalores de m serán muygrandes, se firmará unresumen de m y la firma será:s = D(dA,nA)(h(m)), dondeh(m) es la función resumen(hash) de m.En este caso, en lugar deproceder cómo indica elsegundo paso del cifrado, elmensaje m se enviará aparte,cifrado o no.La función resumen deberáser conocida, también por elusuario B, para poderproceder a hacer laverificación del segundo pasodel descifrado.
Por parte del usuario A:
1) Firmar m con su clave privada: s = D(dA,nA)(m)
2) Cifrar la firma con la clave pública de B: c = E(eB,nB)(s)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 20 Elementos de criptografía
Por parte de B, una vez recibido el criptograma c:
1) Descifrar el criptograma c con su clave privada: D(dB,nB)(c) = s
2) Verificar, a partir de la firma s, si el criptograma c ha sido enviado realmente
por A: E(eA,nA)(s) = m
Ejemplo 2.2.
Usuario A:
Sean p = 29 y q = 7 los valores escogidos por A. Entonces nA = 29 · 7 = 203 y ϕ(nA) =
28 · 6 = 168.
Supongamos que A escoge: (eA = 19,nA = 203) como clave pública, entonces (dA =
115,nA = 203) será su clave privada.
Usuario B:
Sean p = 13 y q = 17 los valores escogido por B. Entonces nB = 13 · 17 = 221 y ϕ(nB) =
12 · 16 = 192.
Supongamos que B escoge: (eB = 11,nB = 221) como clave pública, entonces (dB = 35,nB =
221) será su clave privada.
Si suponemos que el conjunto de mensajes originales es M = {A,B,...,Y,Z} y la corres-
pondiente asignación numérica es Mn = {2,3,...,26,27}, y queremos firmar digitalmente
el texto original EDI o, numéricamente, 060510, haremos sucesivamente:
• 6115 (mod 203) = 13
• 5115 (mod 203) = 96
• 10115 (mod 203) = 101
y nos dará la firma s = 013096101.
Para el cifrado, iremos cogiendo sucesivamente bloques de tres dígitos de la firma s y
haremos:
• 01311 (mod 221) = 208
• 09611 (mod 221) = 216
• 10111 (mod 221) = 186
que nos dará el criptograma c = 208216186.
Cuando el usuario B ha recibido c, lo divide en bloques de tres dígitos y los descifra con
su clave privada:
• 20835 (mod 221) = 013
• 21635 (mod 221) = 096
• 18635 (mod 221) = 101
el mensaje s que recupera es ininteligible (13 equivale al carácter L, 96 y 101 no tienen
equivalencia dentro del conjunto de mensajes originales). Ahora, el usuario B debe com-
probar que 013096101 es la firma digital del usuario A, para esto debe cifrar el resultado
obtenido de la anterior operación con la clave pública de A.
• 01319 (mod 203) = 6
• 09619 (mod 203) = 5
• 10119 (mod 203) = 10
que nos dará el texto original 060510 o, en caracteres, EDI.
Nota
El usuario B acepta EDI comoel mensaje que le ha enviadoA, sencillamente porque paraél es inteligible; pero esto enmuchos casos no seríasuficiente. Tal y comoveremos, en otros casos, laestrategia de firma serádiferente.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 21 Elementos de criptografía
2.3. Criptosistema ElGamal
Ver también
El algoritmo DSA se estudiaen el subapartado 2.4 de estemódulo.
El criptosistema de clave pública ElGamal se basa en la función unidireccional
exponencial discreta. Este criptosistema ha servido de base para la definición
de un algoritmo de firma alternativo al RSA, el DSA.
2.3.1. Descripción del criptosistema ElGamal
Si fijamos un cuerpo finito Fp y un elemento primitivo α, supondremos que el
mensaje que queremos cifrar se corresponde con un elemento m ∈ Fp. A partir
de aquí, cada usuario U escoge al azar un entero rU ∈ [2,p – 1] que será su clave
privada. Su clave pública será yU = αrU (mod p) ∈ Fp.
Entonces, si un usuario A quiere transmitir al usuario B el criptograma corres-
pondiente al mensaje original m ∈ Fp, deberá hacer las siguientes operaciones
dentro de Fp:
Fortaleza
Cualquier enemigo quequiera calcular KrB , a partirdel conocimiento de K y yB,pero sin conocer rB, deberácalcular previamente ellogaritmo discreto logα(yB).En la dificultad de estecálculo se basa la fortalezadel criptosistema ElGamal.
.
Algoritmo 2.3 (Algoritmo ElGamal):
1) Escoger al azar un entero k y calcular K = αk (mod p)
2) Cifrar m como: c = EyB(m) = m · (yB)k (mod p)
3) Transmitir el par de números (K,c)
Entonces, el usuario B podrá recuperar m a partir del par de números recibidos,
haciendo las siguientes operaciones dentro de Fp:
1) Calcular β = KrB (mod p)
2) Calcular c/β (mod p) = mNota
El resultado de esta operaciónha de ser, efectivamente,igual a m, ya que KrB
(mod p) = (αrB )k
(mod p) = (yB)k (mod p).
A continuación veremos un ejemplo de utilización del algoritmo, para poder
seguirlo mejor, aunque los valores del ejemplo son pequeños comparados con
los que se tendrían que usar en la realidad.
* Tal como se ha visto en el
módulo “Cuerpos finitos”.
Ejemplo 2.3.
Supongamos el cuerpo finito F23 y sea α = 5 el elemento primitivo elegido*. Si rA = 13,
la clave pública del usuario A será yA = 513 (mod 23) = 21. Si rB = 17, la clave pública del
usuario B será yB = 517 (mod 23) = 15.
Si el usuario A quiere transmitir al usuario B el mensaje m = 18 efectuará los siguientes
cálculos:
1) Tomará al azar un entero, por ejemplo k = 7, y calculará K = 57 (mod 23) = 17
2) Cifrará m = 18, sabiendo que yB = 15, como: c = E15(18) = 18 · 157 (mod 23) = 14.
3) Transmitirá el par de números (17,14).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 22 Elementos de criptografía
Entonces el usuario B podrá recuperar m a partir del par de números recibidos, (K,c),
haciendo las siguientes operaciones dentro de F23:
1) Calculará β = 1717 (mod 23) = 11
2) Calculará c/β = 14/11 (mod 23) = 18; (11–1 (mod 23) = 21).
Este resultado coincide con el valor del mensaje original, m = 18.
2.3.2. Firma digital, basada en el ElGamal
El criptosistema ElGamal no cumple la condición de conmutatividad que he-
mos visto en el subapartado de firma digital basada en el RSA. O sea, no se
cumple Ek(Dk(m)) = m. Sin embargo, se puede adaptar el sistema para la au-
tenticación mediante otro tipo de firma digital.
Supongamos que el mensaje a firmar por un usuario A, para ser trasmitido a
un usuario B, sea m ∈ Fp. Para la firma, el usuario A debe realizar las siguientes
operaciones en Fp:
1) Elegir un entero k tal que mcd(k,p – 1) = 1 y calcular K = αk (mod p).
Firma ElGamal
Se puede calcular, de formadirecta, haciendos = (m – rA · K) · k–1
(mod q – 1).
2) Encontrar un entero s tal que: m = rA ·K + k · s (mod p – 1), donde rA y k son
valores que solo conoce el usuario A; por lo tanto solo él será capaz de calcular
la firma s.
3) La firma digital es el par de números (K,s). Entonces transmitirá (K,s,m),
aunque, opcionalmente, quizá pueda querer también cifrar el mensaje m, c =
EyB(m), y enviar (K,s,c).
Para la validación de la firma del mensaje m, el usuario B debe comprobar que
se cumple la siguiente igualdad:
αm = (yA)K · Ks (mod p)
donde yA es la clave pública del usuario A y, por lo tanto, disponible por el
usuario B.
Verificación
Efectivamente: (yA)K = (αK)rA
Ks = (αk)s = α(m–rA·K) =
αm · (αK)–rA
El producto de ambasigualdades resulta ser, αm.
En caso de que la igualdad se cumpla, el usuario B aceptará como auténtico el
mensaje m que le ha enviado el usuario A. De lo contrario, el mensaje m no
será validado.
Ejemplo 2.4. Suponemos que continuamos con las mismas hipótesis del ejemplo an-
terior: F23, α = 5, rA = 13 y rB = 17 La clave pública del usuario A es yA = 21 y la clave
pública del usuario B es yB = 15.
Si A quiere transmitir el mensaje m = 18 al usuario B de forma secreta y autenticada, hará
los siguientes cálculos:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 23 Elementos de criptografía
1) Escogerá al azar un entero, por ejemplo k = 7 (mcd(7,22) = 1), y calculará K = 57
(mod 23) = 17.
2) Calculará s tal que m = rA · K + k · s (mod 22). Es decir:
s = (m – rA ·K) · k–1 (mod 22) = (18 – 13 ·17) ·7–1 (mod 22) = 15; (7–1 (mod 22) = 19).
3) Para transmitir el mensaje cifrado (en el ejemplo anterior c = 14) y firmado, el usuario
A envía: (K,s,c) = (17,15,14).
Entonces, el usuario B puede validar la transmisión a partir de m (en el ejemplo anterior,
a partir de c, había reencontrado m = 18) y el par de números (K,s).
Efectuando el cálculo (yA)K ·Ks (mod p) = 2117 ·1715 (mod 23) = 6, que coincide con αm
(mod p) = 518 (mod 23) = 6.
Por lo tanto, el usuario B daría por válida la firma s del mensaje m.
2.4. Algoritmo DSA como alternativa a la firma digital RSA
En 1991, el NIST (National Institute of Standards and Technology) hizo la
propuesta del algoritmo DSA (Digital Signature Algorithm) como un estándar
de firma digital DSS (Digital Signature Standard).
Este algoritmo DSA fue desarrollado por la NSA (National Security Agency), a
partir de la firma digital de ElGamal, pero con el propósito añadido de reducir
la longitud. Este algoritmo contiene los parámetros siguientes:
• p, un número primo de 2 · L bits, donde L es un múltiplo de 64 y está
comprendido entre 512 y 1024 bits.
• q, un factor primo de p – 1 de unos 160 bits. Sea n = (p – 1)/q
• α, tal que α = gn (mod p), donde g es un número menor que p – 1 y de
forma que α (mod p) > 1.
• x, un número cualquiera menor que q.
• y, tal que y = αx (mod p).
Función unidireccionalhash
Una función hash, h, vienedefinida por una serie deoperaciones que transformanun mensaje m, de longitudvariable, en una secuencia depocos bits, h(m), de longitudfija, como veremos en elpróximo subapartado.
• h(.), una función unidireccional hash.
Los números p, q y α son públicos para todos los usuarios de la red, mientras
que x es la clave privada e y es la clave pública.
Sea m el mensaje que A quiere enviar a B, firmado para que B pueda autenti-
carlo.
El usuario A, del cual se suponen conocidos los parámetros anteriores, excepto
x, deberá realizar las siguientes operaciones:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 24 Elementos de criptografía
1) Escoger un número aleatorio k, menor que q.
2) Generar dos valores r y s, tales que:
r =`
αk (mod p)) (mod q)
s = ((h(m) + x · r) · k–1) (mod q)
3) Enviar el mensaje m y su firma digital (r,s).
El usuario B, al recibir el mensaje m, y su firma digital correspondiente (r,s),
podrá hacer el siguiente proceso de autenticación:
1) Seleccionar, en el directorio público, los parámetros de A: p,q,α y h(.)
2) Calcular: w = s–1 (mod q)
u1 = (h(m) ·w) (mod q)
u2 = (r ·w) (mod q)
Verificación de firma
Por simplicidad, y sin perderrigor en la prueba,obviaremos los cálculosmodulares.v = αu1 · yu2 = (αh(m)·s–1
) ·(αx)r·s–1
= α(h(m)+x·r)·s–1,
y según la definición de s,este resultado es,efectivamente, αk = r.
3) Calcular: v = ((αu1 · yu2 ) (mod p)) (mod q)
4) Autenticar: Si v = r entonces la firma digital (r,s) de A, es aceptada por B.
El siguiente diagrama representa el proceso de esta firma digital:
mSHA h(m) DSA
x k
Signatura p,q,g
Ficheropúblico
Verificación
Signaturarechazada
Signaturaaceptada
No
Sí
v v = r
SHAp,q,g
DSA
rs
h(m)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 25 Elementos de criptografía
Función hash ficticia
Por simplicidad, en elejemplo hemos escogidocomo función hash, ficticia, elproducto de los valoresnuméricos de los caracteresimpares (mod 29). Estapropuesta no tiene nada quever con una función de hash
real, como las quedetallaremos en el próximoapartado.
Ejemplo 2.5.
Suponemos que el conjunto de mensajes originales es M = {A,B,...,Y,Z} y la correspon-
diente asignación numérica Mn = {2,3,...,26,27}. Si el usuario A quiere firmar digitalmen-
te el texto original EDI o, numéricamente, 060510, teniendo en cuenta los parámetros
del criptosistema, hará las siguientes operaciones:
Parámetros públicos:
p = 29,q = 7 (n = (p – 1)/q = 28/7 = 4)
α = 54 (mod 29)=16; (g = 5)
Clave privada: x = 3
Clave pública y = 163 (mod 29) = 7
Parámetro aleatorio secreto: k = 6
Entonces, el usuario A calcula (suponiendo la función ficticia de hash anterior):
h(m) = h(06,05,10) = 60 (mod 29) = 2
r = (166 (mod 29)) (mod 7) = 20 (mod 7) = 6
s = (2 + 3 · 6) · 1/6 (mod 7) = 6 · 1/6 (mod 7) = 1
Por lo tanto, DSA(EDI) = DSA(060510) = (6,1) y enviará al usuario B: (EDI,6,1).
El usuario B, a la recepción de esta tripla, realiza la verificación, tras seleccionar los pará-
metros p,q,g y h(.):
Calcula:
h(EDI) = 2, puesto que (h(06,05,10) = 6 · 10 (mod 29))
w = 1–1 (mod 7) = 1
u1 = 2 · 1 (mod 7) = 2
u2 = 6 · 1 (mod 7) = 6
Verifica que v = (162 · 76 (mod 29)) (mod 7) = 20 (mod 7) = 6(= r) y por lo tanto, valida
la firma.
Criticidad de la funciónde hash
Si suponemos que enviamosun texto diferente con lamisma firma (EDJ, 6, 1), elusuario B haría los siguientescálculos:h(EDJ) = 8;(h(06,05,11) = 6 · 11
(mod 29) = 8)w = 1–1 (mod 7) = 1
u1 = 8 · 1 (mod 7) = 1
u2 = 6 · 1 (mod 7) = 6
v = (161 · 76 (mod 29))
(mod 7) = 23
(mod 7) = 2(6= r = 6), con locual no se autenticaría lafirma.Sin embargo, hay queobservar que si el mensajefirmado hubiera sido BUS,como queh(BUS) = h(03,22,20) = 3 · 20
(mod 29) = 2, derivaría lamisma firma. Con lo cual, sepuede ver que la elección dela función de hash es críticarespecto a este algoritmo.
2.5. Funciones hash: MD5 y SHA-1
Enlace de interés
Se puede encontrar un
aplicativo de simulación de
las funciones hash MD5 y
SHA-1, de uso libre, en la
dirección:
www.criptored.upm.es.
El propósito de las funciones hash es el de proporcionar una huella, una im-
pronta, de pocos bits, de un fichero, mensaje o cualquier otro bloque de datos,
por grande que sea, el cual se quiere autenticar.
Una función hash, h, debe tener las siguientes propiedades:
1) Se debe poder aplicar la función h a un bloque de datos de cualquier lon-
gitud.
2) El resultado de la función h debe ser de longitud fija, de pocos bits.
3) Debe ser computacionalmente eficiente calcular h(m) para cualquier m,
tanto en implementaciones de hardware como de software.
4) Para un bloque determinado x, no debe ser computacionalmente eficiente
encontrar un mensaje m tal que h(m) = x.
5) Para un mensaje determinado m, no debe ser computacionalmente eficien-
te encontrar otro mensaje m′ 6= m tal que h(m) = h(m′).
6) No debe ser computacionalmente eficiente encontrar un par (m,m′) tal que
h(m) = h(m′).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 26 Elementos de criptografía
Utilidad de las propiedades
Las primeras tres propiedades son tres requisitos para llevar a la práctica las funciones
hash y la autenticación de mensajes.
La cuarta propiedad sirve para asegurar que no debe ser computacionalmente eficiente
encontrar la inversa de las funciones hash (funciones unidireccionales, one-way functions).
La quinta y sexta propiedad garantizan que no debe ser posible encontrar un mensaje
alternativo con la misma secuencia hash que el original.
A continuación, pasaremos a examinar los dos algoritmos que implementan
las funciones hash más utilizadas actualmente: el algoritmo message-digest,
MD5, y el algoritmo secure hash, SHA.
2.5.1. El algoritmo MD5
Eficiencia del MD5
Rivest muestra que, con elMD5, la dificultad deencontrar dos mensajes conla misma secuencia hash esdel orden de 264
operaciones, y, por otraparte, que la dificultad deencontrar un mensaje conuna secuencia hash
determinada es del orden de2128 operaciones.
El message-digest MD5 lo desarrolló Ron Rivest y consiste en un algoritmo
que tiene como entrada un mensaje de una longitud arbitraria y produce una
salida de 128 bits (el message digest).
El mensaje de entrada se procesa en bloques de 512 bits, siguiendo los pasos:
• Paso 1: Añadir bits de padding. Se insertan bits en el mensaje para que su
longitud final sea congruente con 448 (mod 512). Esta secuencia de bits
de padding consiste en un 1 seguido de la cantidad necesaria de 0’s.
Efecto del padding
Los bits de padding se añadensiempre, incluso si el mensajeya tiene la longitud deseada.Por ejemplo, si el mensajetiene 448 bits de longitud,entonces se añaden 512 bitsde padding para llegar a unalongitud de 960 bits. Estoquiere decir que añadimosuna cantidad de bits depadding que oscilará entre 1y 512.
• Paso 2: Añadir la longitud. Al resultado del paso anterior le añadimos la
representación en 64 bits de la longitud del mensaje antes de añadir los
bits de padding. Por lo tanto, este campo contiene la longitud del mensaje
original (mod 264). Tras los dos primeros pasos tenemos un mensaje con
una longitud en bits igual a un múltiplo de 512. El mensaje se divide en
bloques de 512 bits, denominados Y0,Y1 · · ·YL–1; por lo tanto, podemos
expresar la longitud del mensaje como L·512 bits, o también ver el mensaje
como un múltiplo de 16 palabras de 32 bits.
• Paso 3: Iniciar el buffer MD. Para guardar tanto los resultados intermedios
como el resultado final, se utiliza un buffer de 128 bits, el cual se representa
por cuatro palabras de 32 bits, A,B,C,D, que se inician con los siguientes
valores hexadecimales:
A = 01234567
B = 89ABCDEF
C = FEDCBA98
D = 76543210
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 27 Elementos de criptografía
• Paso 4: Procesamiento del mensaje en bloques de 512 bits (16 palabras
de 32 bits). La parte central del algoritmo es un módulo que tiene cuatro
etapas de funcionamiento.
Las cuatro etapas tienen una estructura similar, pero utilizan funciones
lógicas primitivas diferentes.
En la figura, se ha etiquetado cada etapa con fF, fG, fH , fY para indicar
que todas tienen la misma estructura, f , pero con una función primitiva
diferente: F,G,H,I.
Yq
512
512 512 512 512
512 512 512 512
MDq
3232 32
128128
MDq + 1
ABCD
ABCD
ABCD
ABCD
fF fG fF fI
T[1_16] T[17_32] T[33_48] T[49_64]
128
+
+
+
+
Cada etapa tiene como entrada el respectivo bloque de 512 bits (Yq) y el
valor del buffer A,B,C,D de 128 bits y actualiza el contenido del buffer. En
cada etapa también se utiliza una cuarta parte de los 64 elementos de una
tabla T[1..,64] que proporciona un conjunto seudo-aleatorio de secuencias
de 32 bits, que sirven para eliminar cualquier regularidad en los datos de
entrada. Por lo tanto, el proceso del bloque Yq consiste en coger como
entrada el mismo Yq y el resultado (message digest) intermedio correspon-
diente MDq para producir el MDq+1. Las sumas que se hacen al final de las
cuatro etapas son sumas (mod 232).
• Paso 5: Salida. Tras procesar los L bloques de 512 bits, la salida MDL–1 del
L-ésimo bloque de proceso es la secuencia hash de 128 bits.
2.5.2. El algoritmo SHA-1
El algoritmo SHA-1 fue desarrollado por el NIST y publicado como estándar
de procesamiento de información federal FIPS (federal information process stan-
dard, PUB 180) en el año 1993.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 28 Elementos de criptografía
El algoritmo tiene como entrada un mensaje de longitud menor que 264 bits
y produce una salida de 160 bits (el message digest). El mensaje de entrada se
procesa en bloques de 512 bits, siguiendo los pasos:
Comparación entre SHA yMD5
Los algoritmos MD5 y SHAson bastante similares, ya queambos derivan del mismoalgoritmo MD3.La diferencia más obvia, y lamás importante, es que lasecuencia resultante deaplicar el SHA es 32 bits máslarga que la del MD5.Entonces el SHA es unalgoritmo más fuerte, desdeel punto de vista delcriptoanálisis, que el MD5. Encambio, el SHA consta de 80pasos y el MD5 solo de 64,cosa que hace que el SHA seejecute del orden de un 25 %más lento. Debemos notarque los dos algoritmos tienenuna gran cantidad de sumasmódulo 232, por lo tantoambos funcionan muy bienen arquitecturas de 32 bits.
• Paso 1: Añadir bits de Padding y Paso 2: Añadir la longitud. Igual que
en el algoritmo MD5.
• Paso 3: Iniciar el buffer SHA. Para guardar tanto los resultados interme-
dios como el resultado final, se utiliza un buffer de 160 bits. Podemos re-
presentar el buffer como cinco palabras de 32 bits, A,B,C,D,E, que se inician
con los siguientes valores hexadecimales:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
SHA-2 y SHA-3
Actualmente, se utiliza lavariante SHA-2, desarrolladaen el 2005 a partir del laSHA-1, donde la salida puedeser de 224, 256, 384 o 512bits, para aumentar ladificultad de ser roto.Además, está en marcha unconcurso público paradiseñar el nuevo estándarSHA-3, que seguramente sehará público durante 2012.
• Paso 4: Procesamiento del mensaje en bloques de 512 bits (16 palabras
de 32 bits). La parte central del algoritmo es un módulo que tiene 80 etapas
de procesamiento. La lógica de este módulo es la siguiente:
Cada etapa tiene como entrada el actual bloque de 512 bits, Yq, y los 160
bits del buffer ABCDE y, como resultado, actualiza el contenido del buffer.
En cada etapa se hace uso de la suma por una constante Kt . De hecho, solo
se utilizan cuatro constantes diferentes. Los valores hexadecimales son los
siguientes:
0 ≤ t ≤ 19, entonces Kt = 5A827999
20 ≤ t ≤ 39, entonces Kt = 6ED9EBA1
40 ≤ t ≤ 59, entonces Kt = 8F1BBCDC
60 ≤ t ≤ 79, entonces Kt = CAN62C1D6
Es decir, el algoritmo SHA para procesar un bloque Yq de 512 bits, toma
como entrada el bloque Yq y el valor intermedio en aquel momento de la
secuencia hash SHAq que se toma del buffer ABCDE. Después, el resultado
de las 80 etapas se suma a SHAq, dando SHAq+1 que se coloca en el buffer
ABCDE. Esta última suma se hace con dos sumandos de 160 bits cada uno,
la operación se hace de forma independiente para cada una de las cinco
palabras de 32 bits que tiene cada sumando (suma módulo 232).
• Paso 5: Salida. Tras procesar los L bloques de 512 bits, la salida SHAL–1 del
L-ésimo bloque de proceso es la secuencia hash de 160 bits.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 29 Elementos de criptografía
Yq
512
512 512 512
32 32 32
SHAq
3232 32
160 160SHAq + 1
ABCDE
ABCDE
ABCDE
PASO0 PASO1 PASO79
K0 K1K79
160
+
+
+
+
+
...
2.6. Infraestructura de clave pública: PKI
En el ámbito de las comunicaciones abiertas es imprescindible garantizar la
identidad de los usuarios, además de los servicios de seguridad: confidenciali-
dad, integridad, autenticación y no repudio.
Para que estas operaciones se puedan realizar de forma fiable, se deben cumplir
dos condiciones:
Lectura recomendada
Para hacer más
comprensible este
subapartado es
recomendable el módulo 7
del libro de Criptografía de
J. Domingo, J. Herrera y H.
Rifà-Pous de los estudios de
Informática y Multimedia
de la UOC.
• Que la clave privada se guarde de forma segura y no se desvele a nadie.
Para conseguir esto, la clave privada se almacena en un soporte físico im-
posible de duplicar, como una tarjeta inteligente. Además, para acceder al
contenido de la tarjeta se necesita un número personal que solamente el
propietario legítimo conoce.
• Que se pueda determinar a qué persona pertenece una clave pública. De
esta forma se puede saber, por ejemplo, quién ha llevado a cabo la firma
electrónica de un documento.
Para dar cumplimiento a estas dos condiciones, se utiliza el certificado elec-
trónico, emitido por una autoridad de certificación (CA). El apoyo tecnológico
del certificado electrónico es la criptografía de clave pública. Así, puede ver-
se un certificado electrónico como un documento electrónico que asocia una
clave pública con su propietario.
Por esto, el certificado digital contendrá la clave pública junto con datos de
carácter personal del poseedor de la clave (nombre, DNI...). Normalmente con-
tiene más información (fechas de validez y otras), así como también se refiere
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 30 Elementos de criptografía
al ámbito de utilización del certificado, lo que se conoce como política de cer-
tificación. Por ejemplo, si es un certificado de uso personal o nos acredita para
actuar en una empresa.
Al realizar una firma electrónica se suele adjuntar el certificado electrónico del
firmante de forma que se puede extraer su clave pública para verificar la firma
y a la vez comprobar la identidad del firmante.
Una infraestructura de clave pública (PKI, public key infrastructure) es una es-
tructura de sistemas informáticos, procedimientos de operación, protocolos,
políticas de certificación, repositorios de información, estándares, declaracio-
nes de prácticas y recursos humanos, la finalidad de los cuales es ofrecer a los
usuarios una plataforma para la gestión de la identidad digital.
Una PKI dispone de los elementos y de la arquitectura necesarios para integrar
todos los procedimientos de solicitud de certificados, verificación de identida-
des, generación de claves, almacenamiento y publicación de certificados elec-
trónicos, renovación, revocación, etc.
Las infraestructuras de clave pública se fundamentan en la interacción de di-
versos subsistemas, de los cuales destacan los siguientes:
• Autoridad de certificación, CA. Una autoridad de certificación (CA: cer-
tificate authority), es una entidad de confianza, cuya finalidad es emitir,
renovar y revocar certificados electrónicos. Las autoridades de certificación
constituyen el núcleo de las infraestructuras de clave pública, que permiten
utilizar los certificados electrónicos con total seguridad.
Ejemplos de autoridad de certificación
En la actualidad, un usuario puede escoger entre múltiples CA para conseguir un
certificado electrónico, pero las más utilizadas son; a nivel internacional Verisign, a
nivel estatal FNMT y en el ámbito catalán CATCert.
* http://www.verisign.com
Verisign* es una de las empresas de mayor reputación internacional y prestigio en el
mundo de la certificación digital y la seguridad de la información. Aunque su aba-
nico de servicios es muy amplio (soluciones comerciales para comercio electrónico,
servidores seguros, tarjetas inteligentes, servidores de nombres de dominio, consul-
toría,...), el más conocido es el de CA para la expedición de certificados electrónicos,
ampliamente utilizados en Internet.
** http://www.fnmt.es
Fábrica Nacional de Moneda y Timbre (FNMT)**, es un organismo público na-
cional español que depende del Ministerio de Economía que tiene establecida una
arquitectura de certificación, CERES, para autenticar y garantizar la confidencialidad
de las comunicaciones entre ciudadanos, empresas u otras instituciones y adminis-
traciones públicas a través de redes abiertas de comunicación.
*** http://www.catcert.cat
CATCert*** es la Agencia Catalana de Certificación que emite y gestiona la idCAT que
es un certificado electrónico que garantiza la identidad de las personas en Internet y
permite operar con diferentes administraciones.
• Autoridades de registro, RA. Una autoridad de registro (RA, registration
authority) es una entidad encargada de llevar a cabo los procesos de veri-
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 31 Elementos de criptografía
ficación de identidad, solicitud y distribución de certificados electrónicos.
Normalmente, en una PKI, los usuarios finales no interactúan directamen-
te sobre la CA, sino que canalizan sus operaciones a través de una o va-
rias RA.
Sin embargo, estos subsistemas no pueden expedir certificados electrónicos
por sí mismos.
• Certificados electrónicos. Un certificado electrónico es un archivo o do-
cumento electrónico expedido y firmado por una CA en el cual se vincula
una identidad a una clave pública, ligado, a su vez, a la correspondiente
clave privada.
Para obtener un certificado electrónico, el usuario se dirige a una RA (auto-
ridad de registro); ésta verifica la identidad del usuario y pide a la CA que
expida el certificado.
• Directorio lightweight directory access protocol, LDAP. Su finalidad, den-
tro de una PKI, es la de mantener un registro de usuarios y actuar como
almacén para los certificados electrónicos y la lista de certificados revoca-
dos (CRL), que veremos más adelante. El protocolo LDAP es una versión
simplificada del protocolo X.500 que especifica tanto el modelo de infor-
mación como los mecanismos de acceso a la misma.
2.6.1. Sistemas gestores de certificados electrónicos:
la recomendación X.509
El auge de la certificación electrónica nace de la consolidación internacional
del protocolo estándar X.509. A partir de este momento, no solo aparecen en
el mercado multitud de aplicaciones que aprovechan los servicios de la iden-
tidad digital, sino también un gran número de paquetes de software que im-
plementan las funciones básicas de una PKI. Estos paquetes reciben el nombre
de sistemas gestores de certificados electrónicos.
Las soluciones de implementación para los sistemas gestores de certificados
electrónicos pueden clasificarse en tres categorías: Las integradas en el sistema
operativo, las libres (de código abierto) y las comerciales.
La recomendación X.509 de la ITU-T forma parte de la serie de recomenda-
ciones X.500, la finalidad de las cuales es definir un servicio de directorio. Por
directorio se entiende un servidor o conjunto distribuido de servidores que
gestionan una base de datos de información sobre usuarios. En la actualidad,
hablar de X.509 y certificados electrónicos es hablar del mismo concepto. Ac-
tualmente, este estándar de certificación electrónica se utiliza en protocolos de
Internet de uso tan extendido como SSL, SMIME (Secure Multipurpose Internet
Mail Extensiones) y IPSec (IP Security).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 32 Elementos de criptografía
2.6.2. Listas de certificados revocados: CRL
Una lista de certificados revocados (CRL, Certificate revocation list), es un docu-
mento electrónico expedido y firmado por una CA, en el cual se incluyen los
números de serie de todos aquellos certificados que, sin haber expirado, han
sido revocados por algún motivo.
Al recibir un certificado electrónico, el usuario debe consultar la CRL de la CA
que firma el certificado para verificar la validez del mismo. El protocolo OCSP
(online certificate status protocol) permite realizar consultas en tiempo real sobre
la base de datos de certificados revocados de una CA. Algunos navegadores
web ya incluyen apoyo para OCSP.
La validación de certificados en tiempo real es imprescindible para el desarro-
llo del comercio electrónico.
La recomendación X.509 define un formato estándar para las listas de certifi-
cados revocados, de forma análoga a la estructura sugerida para los certificados
electrónicos.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 33 Elementos de criptografía
3. Criptografía cuántica y post-cuántica.
De manera muy resumida podríamos decir que, hoy en día, la criptografía de
clave pública se utiliza para la distribución de claves privadas, para la firma
digital y otros protocolos de autenticación y, en cambio, la criptografía de cla-
ve privada se utiliza para conseguir la privacidad de los datos. Los algoritmos
de clave pública más utilizados son RSA, DSA y ECDSA (el algoritmo DSA uti-
lizando curvas elípticas). ¿Qué pasaría si en pocos años alguien anunciara la
construcción de un gran ordenador cuántico?
Algoritmo de Shor
En 1994, Shor descubrió unalgoritmo capaz de factorizarun número producto de dosprimos con una complejidadpolinomial sobre unhipotético ordenadorcuántico. La base delalgoritmo es unatransformada discreta deFourier que en un ordenadorcuántico, y de maneraprobabilística, da el resultado.Se han hecho pruebas realesde este algoritmo conprototipos de ordenadorcuántico y han funcionado.En el 2001, en IBM’s Almaden
Research Center, usando unprototipo de ordenadorcuántico que funcionaba conregistros de 7 qubits basadosen NMR (nuclear magnetic
resonance) se consiguófactorizar el número 15 = 3·5.
Dado que la criptografía de clave pública se basa en la factorización o en el
problema del logaritmo discreto o del logaritmo elíptico y que no existe el
algoritmo de Shor para los ordenadores clásicos, parece ser que con el adveni-
miento de la computación cuántica la seguridad basada en RSA, DSA y ECDSA
se verá comprometida. Aún así, no podemos decir que la criptografía está bajo
sospecha de desaparición con el advenimiento de la computación cuántica.
Hay todo un campo criptográfico post-cuántico que podrá resistir los grandes
ordenadores clásicos y a los ordenadores cuánticos.
Algunos de estos sistemas de cifrado que se cree que son, y serán, resistentes a
la computación clásica y cuántica son:
• Criptografía basada en funciones hash
• Criptografía basada en la teoría de códigos
• Criptografía basada en la combinatoria
• Criptografía de clave privada como AES. Hay un algoritmo que puede
simplificar los cálculos para romper el AES en un ordenador cuántico. Es el
algoritmo de Grove, pero no es tan dramático como el algoritmo de Shor.
En el caso de Grove se pasa de una complejidad O(n) en el caso clásico a
una complejidad O(√
n) en el caso cuántico.
Tanto el sistema RSA como el de McEliece (basado en la teoría de códigos, que
veremos más adelante) han sido propuestos el mismo año 1978. Los dos han
conseguido resistir durante más de 30 años el esfuerzo del criptoanálisis para
romperlos.
RSA se basa en la dificultad de la factorización. En el año 1978, el mejor algo-
ritmo conocido para factorizar tenía una complejidad exponencial del orden
O(exp(log(n)1/2 log log(n)1/2)).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 34 Elementos de criptografía
Con el tiempo, esta complejidad ha sido mejorada, básicamente utilizando
nuevos conceptos matemáticos y, actualmente, parece ser que ya no puede
conseguirse ninguna mejoría, manteniéndose una complejidad del orden
O(exp(log(n)1/3 log log(n)1/3)).
Complejidad
La complejidad del RSA sellama subexponecial y la delsistema Mc.Eliece se llamaexponencial.
La complejidad del sistema McEliece era del orden O(exp(n/(2· log(n)))), en
1978. Ha habido mejoras y parece ser que la mejor complejidad posible seguirá
siendo más o menos la misma, salvo que quizás en lugar del factor 2 habrá una
constante algo menor.
La pregunta, ahora, es obvia. ¿Por qué actualmente no usamos el sistema de
McEliece en lugar de RSA? La respuesta rápida es que el tamaño de la clave
hace que optemos por RSA en lugar de McEliece. Para el mismo nivel de se-
guridad, RSA utiliza claves de algunos miles de bits, mientras que en McEliece
habría que utilizar del orden del millón de bits.
Todavía falta tiempo para que la computación cuántica sea una realidad. En
el camino, podemos pensar en ordenadores clásicos cada vez más potentes
(no hace falta que sean potentes trabajando aislados, pero podemos pensar en
grandes sistemas de computación distribuida).
Algunos sistemas de cifrado, como el RSA, con cuatro mil bits de clave se cree
que serán resistentes a los ataques con grandes ordenadores clásicos, pero no
lo serán a los ataques con grandes computadoras cuánticas. Algunas alternati-
vas, como por ejemplo McEliece con una clave de cuatro millones de bits, se
cree que será capaz de resistir los ataques de los grandes ordenadores clásicos
y cuánticos.
Nos hemos centrado en la criptografía de clave pública, puesto que los orde-
nadores cuánticos parece que tienen muy poco efecto sobre la criptografía de
clave privada y la criptografía basada en funciones hash.
Ver también
El algoritmo de Bennet yBrassard se estudia en elsubapartado 3.1 de estemódulo.
Aunque los ordenadores cuánticos no son todavía una realidad, sí que hay
ciertos fenómenos físicos basados en la mecánica cuántica que pueden usarse
en criptografía. Un ejemplo claro es el sistema de distribución de claves basado
en el algoritmo de Bennet y Brassard. Aparte de este algoritmo criptográfico
basado en la mecánica cuántica, si ahora nos situásemos en la época en que
ya funcionen los ordenadores cuánticos tendríamos algunos planteamientos
que deberíamos empezar a estudiar:
• Eficiencia: El software de criptografía post-cuántica es más lento que el
software criptográfico de hoy en día.
• Confianza: A día de hoy, estamos utilizando sistemas criptográficos clási-
cos que han sobrevivido a muchos años de esfuerzos criptoanalíticos para
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 35 Elementos de criptografía
romperlos. Al considerar nuevos sistemas cuánticos, que son recientes y no
del todo probados, es necesario que también los criptoanalistas dispongan
de tiempo para buscar los ataques a estos sistemas y depurarlos.
• Usabilidad: Es importante desarrollar software y hardware adaptando las
implementaciones a los nuevos conceptos con mucho cuidado, para evitar
pérdidas de tiempo o efectos colaterales. Implementaciones de conceptos
como los de aleatoriedad o relleno (padding) se deben mejorar en las nue-
vas tecnologías y seguramente habrá sistemas híbridos, compartiendo las
nuevas tecnologías con las actuales que necesitarán estandarizaciones.
3.1. Criptografía cuántica
A diferencia de los sistemas criptográficos convencionales, ya sean de clave
pública o privada (que basan su seguridad en el hecho de mantener una cla-
ve de manera privada) los sistemas criptográficos cuánticos basan su fortaleza
en un fenómeno físico. En 1984, Bennet y Brassard diseñaron (a nivel teó-
rico) un protocolo criptográfico basado en un hecho de la física cuántica: la
imposibilidad de medir simultáneamente un par de observables (principio de
incertidumbre de Heisenberg, 1927).
La seguridad tradicional de un método de distribución de claves se ha basado
en problemas intratables debido a su complejidad computacional. El método
de Benet y Brassart se basa en un hecho físico inviolable.
Podemos imaginar una nube de fotones que vibran en todas las direcciones
perpendiculares a su línea de propagación. Si los hacemos pasar por un filtro
polarizado en vertical, los fotones que vibran verticalmente pasarán por el
filtro y, los otros, lo harán con una probabilidad cos2(ϕ), donde ϕ es el ángulo
que separa su dirección de vibración de la vertical. Sólo los fotones que vibran
horizontalmente (cos(ϕ) = 0) no pasarán por el filtro.
Protocolo de Ekert
En 1991 Artur Ekert presentóotro protocolo diferente al deBennet y Brasard. En estecaso, A y B reciben losfotones de una pareja“entrelazada”. En este caso,la seguridad se basa en elefectoEinstein-Podolsky-Rosen.
El protocolo que describimos aquí permite a dos usuarios A y B compartir una
clave secreta sobre un canal no seguro. Al final del protocolo, A y B tendrán
la seguridad que ningún enemigo criptoanalista ha interceptado su comuni-
cación y podrán usar la clave compartida para cifrar los siguientes mensajes
(normalmente con un sistema como el AES).
• A envía a B una secuencia de pulsos de fotones. Cada pulso está polarizado
aleatoriamente en una de las cuatro direcciones: vertical (↑), horizontal
(←), según la diagonal primaria (տ) y según la diagonal secundaria (ր).
• B utiliza, aleatoriamente, un detector polarizado para detectar polarizacio-
nes vertical-horizontal o polarizaciones en diagonal, pero no las dos al mis-
mo tiempo.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 36 Elementos de criptografía
Por ejemplo:
A envía a B: տ տ ↑ ↑ ← ր ← ր ↑ ←
B utiliza:N N L N L L L N L N
B obté: տ տ ↑ ր ← ↑ ← ր ↑ տ
Los pulsos 4, 6 y 10 también podían haber sidoտ,← yր, respectivamente.
• A y B se comunican a través de un canal no seguro para ver qué detectores
ha usado B que no haya usado A. Los dos, A y B se guardan solo los bits
que corresponden a los detectores correctos.
En nuestro caso, los dos usuarios están de acuerdo en que el bit 1 se re-
presentara por ← y տ, mientras que el bit 0 sería ↑ y ր. O sea que A y B
habrán generado, entre ellos, la secuencia:
1101100
Esta secuencia no es conocida por el espía que intenta interferir en la comu-
nicación entre A y B, puesto que la conversación (sobre un canal inseguro)
entre A y B solo decía qué detectores se habían usado correctamente. Y,
cada detector puede dar, indistintamente, ambos resultados 1 o 0.
Cualquier espía que intercepte los fotones que envía A los deberá re-enviar a
B y, básicamente, tiene dos grandes problemas:
• Cuando escucha la transmisión entre A y B, el espía solo puede deducir con
seguridad los bits que corresponden a detectores que él mismo está usando
y que, a la vez, coincidan con los detectores que están utilizando A y B.
• En una de cada cuatro veces, el detector que está usando el espía no coin-
cide ni con el de A ni con el de B (que, a su vez, coincide con el de A).
En estos casos, A y B están de acuerdo en el detector que han usado, pero
el bit que obtendrán uno y otro será distinto. Si A y B descubren (por un
canal que no hace falta que sea secreto) algunos de los bits obtenidos en el
protocolo podrán deducir la presencia del espía y abortar el proceso.
Hay algunos prototipos de este protocolo que están funcionando sobre fibra
óptica entre distancias del orden de los 200 km (Toshiba Research-2003).
Aun cuando la física cuántica nos asegura la validez del protocolo anterior,
desde los primeros intentos de construcción de prototipos que lo implemen-
tarán ha habido varios problemas que han aplazado su comercialización. No
es tan sencilla la construcción “segura” de todos los dispositivos implicados
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 37 Elementos de criptografía
en el protocolo. Los países asiáticos están al frente de la investigación en esta
área. Japón ha anunciado planes para tener satélites con comunicaciones de
tipo cuántico para el 2013 y China para el 2016.
3.2. Los códigos correctores de errores en la criptografía
post-cuántica
En este subapartado presentaremos dos sistemas criptográficos, basados en la
teoría de códigos correctores de errores. En particular nos centraremos en los
criptosistemas de McEliece y de Niederreiter, definidos a partir de códigos para
los cuales se conoce un sistema de descodificación computacionalmente efi-
ciente. En ambos casos, la función unidireccional utilizada para el cifrado se
basa en una transformación de la matriz generadora del código, en el caso de
McEliece, o de la matriz de control, en el caso de Niederreiter. Esta función
unidireccional hará que el criptoanalista deba trabajar con un código equi-
valente para el que el algoritmo de descodificación es computacionalmente
ineficiente.
Por comprender mejor estos dos criptosistemas, veamos unas nociones básicas
de códigos correctores de errores.
3.2.1. Nociones básicas de códigos correctores de errores
Los códigos detectores y correctores de errores tienen como objetivo principal
reducir la probabilidad de error en la descodificación, mediante la incorpora-
ción de redundancia en la transmisión.
Consideremos ahora el sistema de transmisión de información, representado
por el diagrama:
Emisor Codificador
Ruido
Decodificador Receptor
El principio general de la detección de errores es el siguiente: el codificador
añade, según una regla C, una cierta cantidad de información suplementaria
a la información útil, y el descodificador, en primer lugar, verifica si esta ley
es respetada. Si no lo es, estamos seguros de que, al menos, se ha producido
un error. Esta ley C que caracteriza el código consiste en una correspondencia
biunívoca entre la información a enviar y el mensaje enviado.
En lo que sigue, consideramos el cuerpo finito F = Fq, donde q = pm y p un
número primo.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 38 Elementos de criptografía
.
Definición 3.1 (Código-bloque).
Dada una fuente de información S = {A1,A2, · · · ,Ak} y un alfabeto F, se
considera el producto cartesiano Fn.
Llamaremos código-bloque, de longitud n, a cualquier subconjunto C ⊂F
n de manera que a cada elemento Ai ∈ S, le hacemos corresponder, de
manera única, un vector vi ∈ Fn, al que llamaremos palabra-código.
Si el cardinal de S es M nos referiremos al código C como:
C(M,n) = {vi = (vi1 ,vi2 , · · · ,vin), tal que vij ∈ F}.
Podemos considerar un código-bloque como un conjunto de secuencias de
elementos de un cuerpo finito F (palabras-código) de la misma longitud. Un
código-bloque es binario cuando q = 2.
Los parámetros a considerar en un código-bloque C(M,n), además de su lon-
gitud, n, y su número de palabras-código M, son: la tasa de transmisión:
(1/n)logq(M) y la distancia mínima entre todas las palabras-código, d.
Ejemplo 3.1.
Supongamos el caso en el que tenemos que transmitir dos posibles mensajes, S = {A1,A2}donde A1= “Hace sol” y A2 = “Llueve”. El canal por el cual debe circular la transmisión
es binario, es decir, el alfabeto será F2 = {0,1}.
Un código-bloque para S puede ser C(2,3) = {A1 → (0,0,0); A2 → (1,1,1)}.
Distancia y métrica
La distancia de Hammingsatisface las propiedades de ladefinición matemática dedistancia y define unamétrica.
∀x,y,z ∈ Fn:
1) dH (x,x) = 0
2) dH (x,y) = dH (y,x)
3) dH (x,y)+dH (y,z)≤dH (x,z)
.
Definición 3.2 (Distancia de Hamming).
Dados dos elementos x,y ∈ Fn, definimos su distancia de Hamming
como:
dH(x,y) = #{i : 1 ≤ y ≤ n,xi 6= yi},
es decir, la distancia entre dos vectores x e y es la cantidad de compo-
nentes diferentes que tienen entre uno u otro.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 39 Elementos de criptografía
.
Definición 3.3 (Distancia mínima).
Dado un código C(M,n), definiremos la distancia mínima d, del código,
como:
d = min{dH(x,y) : x 6= y,x,y ∈ C}.
.
Definición 3.4 (Regla de descodificación a distancia mínima).
Dado un código C(M,n), definiremos la regla de descodificación a dis-
tancia mínima como la que descodifica un vector recibido u ∈ Fn por la
palabra-código que está a mínima distancia de él. Es decir establece una
aplicación Fn –→ C, tal que si u –→ v, resulta que v es la palabra-código
para la cual dH(v,u) = min{dH(v′,u),∀v′ ∈ C}.
.
Definición 3.5 (Capacidad correctora).
Podemos considerar en Fn las bolas centradas en las palabras-código de
radio el máximo valor posible de forma que las bolas sean disjuntas.
El radio de estas bolas se puede calcular como c = ⌊ d–12 ⌋ y este valor se
denomina capacidad correctora del código.
Diremos que el código es c-corrector.
3.2.2. Códigos lineales
Los códigos lineales permiten una buena solución al problema de la codifi-
cación/descodificación, considerando la regla de descodificación a distancia
mínima.
Consideramos la estructura de espacio vectorial de Fn = {u = (u1, · · · ,un) : ui ∈
F}, de dimensión n, sobre F, con las operaciones suma y producto por escalares
habituales en un espacio vectorial:
u + v = (u1 + v1, · · · ,un + vn), u,v ∈ Fn
k · (u1, · · · ,un) = (k · u1,...,k · un);
.
Definición 3.6 (Código lineal).
Un código-bloque se llama lineal si es subespacio vectorial de Fn. Si la
dimensión de este subespacio es k, el código tendrá M = qk palabras-
código, de longitud n, y será denotado por C(n,k).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 40 Elementos de criptografía
Coincidencia en losvalores del peso mínimoy de distancia mínima
Un código lineal tiene lapropiedad que la suma dedos palabras-código es unapalabra-código, por lo tanto:dH (u,v) =
#{i : ui 6= vi} =
#{i : ui – vi 6= 0} =
wt(u – v)
Así, en un código lineal, ladistancia entre dospalabras-código es igual alpeso de otra palabra-códigoy, en consecuencia, ladistancia mínima, no nula,coincide con el peso mínimodel conjunto depalabras-código no nulas.
.
Definición 3.7 (Peso de un vector).
El peso wt(v) de un vector v ∈ Fn es el número de coordenadas no nulas
de este vector. Es decir:
wt(v) = #{vi 6= 0 : vi ∈ F}.
.
Definición 3.8 (Error de transmisión).
Un error en la transmisión se corresponde con un cambio de coordena-
da entre la palabra-código de entrada y el vector de salida.
Estas características nos dan la capacidad detectora y correctora de errores.
.
Lema 3.9.
Un código lineal, con distancia mínima d ≥ 2c +1, puede detectar hasta
d – 1 errores y corregir hasta c si se utiliza el esquema de descodificación
a distancia mínima.
.
Definición 3.10 (Matriz generadora).
De la definición de código lineal resulta que todo conjunto de k vectores
de Fn, linealmente independientes, constituye una base de un código
lineal C(n,k). Así, todo código lineal puede ser definido por la matriz
k×n, donde las k filas son k vectores independientes, de una cierta base
de C.
A tal matriz, denotada Gk×n, se la llama matriz generadora del código,
ya que toda palabra-código v es una combinación lineal de las k filas de
esta matriz.
Podemos escribir, matricialmente:
v = a ·G
y dando a a = (a1,a2, · · · ,ak) todos los valores posibles (qk en total),
obtendremos todas las palabras-código de C.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 41 Elementos de criptografía
Ortogonalidad
Ortogonal, o perpendicular,va a significar que elproducto escalar sea cero.
.
Definición 3.11 (Matriz de control).
Un código lineal C(n,k) puede ser descrito, además, por otra matriz. En
efecto, el subespacio ortogonal al código, que es de dimensión n – k,
puede ser descrito por una matriz, H, donde las n – k filas son los n – k
vectores linealmente independientes de este subespacio, ortogonales a
todos los vectores de C. O sea, HT(n–k)×n ·Gk×n = 0(n–k)×k.
Entonces, todo vector v del código tiene la propiedad de ser ortogonal
a esta matriz, es decir, verifica:
H · vT = 0⇐⇒ v ∈ C(n,k)
Esta matriz H permite controlar si un vector determinado pertenece o
no al código y, por esto, se llama matriz de control.
Ejemplo 3.2.
Para construir un código lineal binario C(6,3) podemos tomar la siguiente matriz gene-
radora:
G3×6 =
0
B
B
B
@
1 1 1 0 0 0
0 1 1 1 0 1
0 0 1 1 1 0
1
C
C
C
A
.
que nos va a permitir codificar de la siguiente manera:
a v = a · G wt(v)
(0,0,0) (0,0,0,0,0,0) 0
(1,0,0) (1,1,1,0,0,0) 3
(0,1,0) (0,1,0,0,1,1) 4
(0,1,1) (0,1,0,0,1,1) 3
(0,0,1) (0,0,1,1,1,0) 3
(1,1,0) (1,0,0,1,0,1) 3
(1,0,1) (1,1,0,1,1,0) 4
(1,1,1) (1,0,1,0,1,1) 4
El peso mínimo del código, que coincide con la distancia mínima, es 3 y, por lo tanto,
podrá detectar hasta 2 errores en la transmisión, pero solo podrá corregir 1.
Por otra parte, se puede verificar que la matriz H3×6 es una matriz de control para el có-
digo C(6,3) anterior, puesto que las tres filas de H son una base del subespacio ortogonal
a C.
H3×6 =
0
B
B
B
@
1 1 0 0 0 1
1 0 1 0 1 1
0 0 0 1 1 1
1
C
C
C
A
.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 42 Elementos de criptografía
Dado un código lineal C(n,k) y un vector e ∈ Fn–C tomemos el conjunto C+e =
{v + e : v ∈ C}, llamado coset (o trasladado) de C, con líder (o representante) e,
que contiene qk vectores distintos de Fn.
.
Teorema 3.12.
Un código lineal C(n,k) admite qn–k cosets diferentes, que constituyen
una partición de todo el espacio Fn.
Demostración: Consideremos la relación de equivalencia sobre Fn, inducida
por el código C, definida como:
e,u ∈ Fn; u ∽ e⇐⇒ u – e ∈ C
que nos induce la partición de Fn en clases de equivalencia, donde dos vectores
de Fn son equivalentes si y solo si pertenecen a la misma clase. De hecho
tenemos:
u – e ∈ C⇐⇒ u ∈ C + e
de donde deducimos que las clases de equivalencia coinciden con los cosets.
Obviamente, cada coset contiene qk elementos (tantos como palabras-código).
.
Definición 3.13 (La aplicación síndrome).
Dado un código lineal C(n,k), consideremos su matriz de control H. Esta
(n – k) × n matriz nos permite definir una aplicación lineal, del espacio
Fn en el subespacio de las (n – k)-uplas de F, o sea F
n–k:
S : Fn –→ F
n–k,
tal que cada vector u ∈ Fn se transforma en S(u) = H · uT . Este valor S(u)
recibe el nombre de síndrome del vector u.
.
Lema 3.14.
Existe una correspondencia biunívoca entre los qn–k cosets posibles y los
qn–k síndromes posibles.
A causa de esta correspondencia biunívoca entre cosets y síndromes, y habien-
do hecho la elección de los líderes de los cosets tomando un vector de peso
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 43 Elementos de criptografía
mínimo en cada coset, el síndrome de un vector cualquiera caracteriza el líder
del coset de manera única, y por lo tanto podemos considerar la re-definición
de la regla de descodificación a distancia mínima:
.
Definición 3.15 (Regla de descodificación vía síndrome).
Si u ∈ Fn es el vector recibido:
1) Calcular S(u) = H · uT
2) Determinar el líder e tal que S(e) = H · eT = S(u)
3) Descodificar u por la palabra-código v∗ = u – e.
(Efectivamente, v∗ ∈ C, ya que H · (v∗)T = H · (u – e)T = H · uT – H · eT =
S(u) – S(e) = 0).
Corrección del error
Si solo se ha producido unerror, entonces estamosseguros de que v∗ = v esrealmente la palabra-códigoque se había enviado. De locontrario, si se ha producidomás de un error, entonces ladescodificación, aun cuandov∗ ∈ C, sería incorrecta.
Ejemplo 3.3.
Descodificar el vector u = (1,1,0,1,0,1), usando la descodificación vía síndrome, por el
código C(6,3) del ejercicio anterior (este código es 1-corrector).
S(u) = H · uT = H · (1,1,0,1,0,1)T = (1,0,0)
El vector e = (0,1,0,0,0,0) ∈ Fn – C, cumple que S(e) = S(u):
S(e) = H · eT = H · (0,1,0,0,0,0)T = (1,0,0)
Así, la estimación que hacemos de la palabra-código enviada es:
v∗ = u – e = (1,1,0,1,0,1) – (,0,1,0,0,0,0) = (1,0,0,1,0,1) ∈ C
3.2.3. Los códigos lineales cíclicos: BCH y RS
Para hacer el estudio de estas familias de códigos asociaremos a los vectores
del espacio Fn un polinomio, de grado inferior o igual a n – 1, tal que sus
coeficientes coincidan con las coordenadas del vector. Entonces un código
lineal cíclico podrá ser considerado como un ideal del anillo de polinomios
de grado inferior o igual a n–1 y coeficientes en F (notaremos a este anillo por
Fn[X] ≈ F[X]/Xn – 1).
.
Definición 3.16 (Códigos cíclicos).
Un código C de longitud n se llama cíclico si toda permutación cíclica
de una palabra-código es también una palabra-código. Es decir:
∀v = (v0,v1, · · · ,vn–1) ∈ C =⇒ vπ = (vn–1,v0, · · · ,vn–2) ∈ C
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 44 Elementos de criptografía
Para estudiar las propiedades algebraicas de estos códigos, es cómodo utilizar
una descripción polinómica. A toda palabra-código le asociamos un polino-
mio de la siguiente manera:
v = (v0,v1...,vn–1) ∈ C =⇒ v(X) = v0 + v1X + ... + vn–1Xn–1
Si llamamos C(X) al conjunto de los polinomios asociados a las palabras-
código de C, observaremos que: vπ(X) = X · v(X) – vn–1Xn; es decir, que: vπ(X) =
X · v(X) (mod Xn – 1).
.
Lema 3.17.
Fn[X], con la suma habitual de polinomios y el producto a(X)∗b(X) =
a(X) · b(X) (mod Xn – 1) tiene estructura de anillo conmutativo.
.
Lema 3.18.
Un código lineal C(n,k) es cíclico⇐⇒ C(X) es un ideal de Fn[X]/(Xn – 1).
Los dos lemas anteriores nos permiten escribir el siguiente resultado, que es la
base de la construcción de los códigos lineales y cíclicos.
.
Teorema 3.19.
Sea C un código lineal y cíclico de longitud n (ideal de Fn[X]/(Xn – 1)).
Sea g(X) un polinomio mónico (el coeficiente del término de mayor
grado es 1) de grado más pequeño dentro de C(X). Sea r el grado de
g(X). Entonces se cumple:
1) g(X) es el único polinomio mónico de grado r en C(X).
2) g(X) es el generador de C(X) como ideal principal de Fn[X]/(Xn – 1)
(es decir, ∀v(X) ∈ C(X) existe h(X) tal que v(X) = g(X) ∗ h(X)).
3) g(X) divide Xn – 1 (con n longitud del código).
4) {Xi · g(X),0 ≤ i ≤ (n – r – 1)}, genera C(X) como subespacio vectorial.
Es decir, ∀v(X) ∈ C(X), existen ciertos coeficientes ai para los que
v(X) =Pn–r–1
i=0 aiXi · g(X) (mod Xn – 1).
Este teorema nos permite asegurar que todo polinomio g(X) ∈ Fn[X], de grado
r, divisor de Xn –1 genera un código lineal y cíclico C(n,k) que tiene por matriz
generadora:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 45 Elementos de criptografía
Gk×n =
0
B
B
B
B
B
B
B
B
B
B
B
B
B
B
@
g0 g1 · · · gn–1 · · · 0 0 0
0 g0 g1 · · · gn–1 · · · 0 0
· · · · · · · · · · · · · · · · · · · · · · · ·
· · · · · · · · · · · · · · · · · · · · · · · ·
0 0 · · · · · · g0 g1 · · · gn–1
1
C
C
C
C
C
C
C
C
C
C
C
C
C
C
A
.
Es decir, las filas de Gk×n, donde k = n – r, son los coeficientes de Xi · g(X)
(mod Xn – 1).
Observar que multiplicar g(X) por Xi (mod Xn – 1) equivale a desplazar a la
derecha (con retroalimentación) i posiciones los coeficientes de g(X), i = 1, · · · ,n – r – 1, visto como un vector de F
n.
3.2.4. Los códigos cíclicos BCH
Los códigos BCH fueron introducidos por Hocquenghem (1959) y Chaudhuri,
Bose (1960), donde la estructura algebraica se basa en los cuerpos finitos, Fpm .
En nuestro caso tomaremos p = 2.
Este tipo de códigos vienen definidos por dos parámetros m y c y verifican:
Polinomio mínimo de αi
Sea α un elemento primitivode F2m , Sea t tal que (αi)t = 1
y sea s el más pequeñoentero tal que t divide 2s – 1.Entonces, el polinomiomínimo de αi se puedecalcular como:
mi(X) = Πs–1j=0(X – (αi)2j
)
.
Teorema 3.20.
Para todo entero n de la forma n = 2m – 1, m ≥ 3, y todo entero c tal
que n – c · m > 0, existe un código cíclico c-corrector, de longitud n,
dimensión k ≥ n – c ·m y distancia mínima d ≥ 2 · c + 1, que tiene por
polinomio generador:
g(X) = mcm(m1(X),m3(X),...,m2·c–1(X))
siendo mi(X) el polinomio mínimo de αi y α un elemento primitivo de
F2m .
.
Definición 3.21 (Los códigos cíclicos BCH).
Un código con las características del teorema anterior se llama código
BCH primitivo.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 46 Elementos de criptografía
La matriz de control de los códigos BCH es:
H =
0
B
B
B
B
B
B
B
B
B
B
B
B
B
B
@
1 α α2 · · · αn–1
1 α3 α6. . . α3(n–1)
· · · · · · · · · · · · · · ·
· · · · · · · · · · · · · · ·
1 α2c–1 α(2c–1)·2. . . α(2c–1)·(n–1)
1
C
C
C
C
C
C
C
C
C
C
C
C
C
C
A
,
ya que que v(X) = v0+v1X+...+vn–1Xn–1, vi ∈ F, será el polinomio asociado a una
palabra-código v, si y solo si, v(αi) = 0,∀i = 1,3, · · · ,2c – 1. Es decir, las palabras
código son múltiplos del polinomio g(X) que tiene, por construcción, como
ceros los elementos α,α3, · · · ,α2c–1 (y, también, α2,α6, · · · ,α2c).
En la tabla siguiente podemos ver los parámetros de algunos códigos BCH.
n t k g(X)
7 1 4 X3 + X + 1
– 2 1 X6 + X5 + X4 + X3 + X2 + X + 1
15 1 11 X4 + X + 1
– 2 7 X8 + X7 + X6 + X4 + 1
– 3 5 X10 + X8 + X5 + X4 + X2 + X + 1
31 1 26 X5 + X4 + X2 + 1
– 2 21 X10 + X9 + X8 + X6 + X5 + X3 + 1
– 3 16 X15 + X11 + X10 + X9 + X8 + X7 + X5 + X3 + X2 + X + 1
– 5 11 X20 + X18 + X17 + X13 + X10 + X9 + X7 + X6 + X4 + X2 + 1
– 7 6 X25 + X24 + X21 + X19 + X18 + X16 + X15 + X14 + X13 + X11 + X9 + X5 + X2 + X + 1
3.2.5. Los códigos cíclicos RSCorrección de paquetesde errores
Los símbolos de laspalabras-código sonelementos αi ∈ F2m , lo cualquiere decir que cadasímbolo que se transmite porel canal es un elemento de mcoordenadas binarias. Por lotanto, un código deReed-Solomon (n,k), enrealidad transmite m · k bitsde información mediante unapalabra-código de n · m bits.En consecuencia, esimportante señalar que, conestos códigos, los errores noson bits aleatorios sino quepueden ser paquetes de mbits, que será consideradocomo un solo error. Estacaracterística mejora lacapacidad correctora global,puesto que en realidad puedecorregir hasta c paquetes dem errores (cada error es uncambio de un αi por un αj).
Reed y Solomon introdujeron en 1960, una clase particular de códigos BCH
que mejoraba, todavía más, las prestaciones de corrección y la facilidad de
descodificación. En particular, los códigos de esta familia tienen la mejor ca-
pacidad detectora y correctora, dado el par de parámetros n y k.
.
Definición 3.22 (Los códigos cíclicos RS).
Un código de Reed-Solomon (RS), primitivo, es un código cíclico sobre
F2m , de longitud n = 2m – 1 y dimensión k, con distancia mínima d =
n – k + 1, y que tiene por polinomio generador:
g(X) = (X – α) · (X – α2) · · · (X – αd–1)
donde α es un elemento primitivo de F2m .
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 47 Elementos de criptografía
Nota
Un código lineal siempre satisface que d ≤ n – k + 1 (cota de Singleton). Un código que
satisface la igualdad se llama MDS (máxima distancia separable). Evidentemente, los
códigos RS son de máxima distancia separable.
La matriz de control de los códigos RS es:
H(n–k)×n =
0
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
@
1 α α2 · · · αn–1
1 α2 α4. . . α2(n–1)
1 α3 α6. . . α3(n–1)
· · · · · · · · · · · · · · ·
· · · · · · · · · · · · · · ·
1 αd–1 α2(d–1). . . α(d–1)·(n–1)
1
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
A
,
ya que v(X) = v0+v1X+...+vn–1Xn–1, vi ∈ Fm. En este caso, v(X) será el polinomio
asociado a la palabra-código v, si y solo si, v(αi) = 0,∀i = 1,2, · · · ,d – 1. Es decir,
las palabras código son múltiplos del polinomio g(X) que, por construcción,
tiene por ceros los elementos α,α2, · · · ,αd–1.
En 1969, Berlekamp y Massey dieron un algoritmo muy eficiente de descodi-
ficación, basado en el teorema de Dirichlet. Estos códigos han sido amplia-
mente utilizados en sistemas de almacenamiento de datos (CDs, DVDs,...), en
módems de alta velocidad (ADSL, DSL,...), en televisión digital (TDT, MPEG2,
MPEG4, . . . ) y también propuestos para ser usados en criptografía.
3.3. Los criptosistemas de McEliece y de Niederreiter
En este subapartado veremos los dos criptosistemas de McEliece y de Nie-
derreiter, donde la función unidireccional se basa en códigos correctores de
errores.
3.3.1. Criptosistema de McEliece
Robert McEliece propuso en 1978 un criptosistema de clave pública funda-
mentado en que el algoritmo de descodificación de un código lineal, en gene-
ral, no es computacionalmente eficiente (R. J. McEliece (1978). “A public-key
cryptosystem based on algebraic coding theory”. DSN Progress Report, 42-44
(1978)).
En su propuesta utilizó los códigos de Goppa (de la misma familia de códigos
que los BCH y RS, los llamados códigos alternantes), de los cuales se conoce
un algoritmo de descodificación computacionalmente eficiente. En particular,
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 48 Elementos de criptografía
el algoritmo de descodificación de Patterson que tiene un funcionamiento
muy parecido al de Berlekamp-Massey.
La idea principal del criptosistema consiste en transformar la matriz genera-
dora, Gk×n, del código alternante escogido, C(n,k), c-corrector, y transformarla
en una matriz generadora de un nuevo código lineal C′(n,k), que notaremos
por G′
k×n (que también será c-corrector).
Para llevar a término esta transformación, se utilizan dos matrices; una matriz
binaria, no singular, Sk×k, por lo tanto invertible, y una matriz de permutación
Pn×n.
Así, la clave privada será Gk×n y las matrices Sk×k y Pn×n, mientras que la clave
pública será: G′
k×n = Sk×k ·Gk×n ·Pn×n y el parámetro c (la capacidad correctora
del código C(n,k)).
Supongamos un usuario B que quiere enviar un mensaje cifrado al usuario A,
que tiene G′, como hemos descrito antes, como clave pública:
• Algoritmo de cifrado. Si m es el mensaje a cifrar por B, éste lo dividirá en
bloques de k símbolos. Sea mi un de estos bloques; entonces el criptograma
correspondiente será:
ci = EG′(mi) = mi ·G′ + e,
siendo e ∈ Fn un vector de error arbitrario, escogido por B, tal que wt(e) ≤ c.
• Algoritmo de descifrado. Este algoritmo hace uso del conocimiento, por
parte del usuario A, de S–1 y P–1. Así, recibido ci, el usuario A hará:
1) Calcular c′i = ci ·P–1 = (mi ·G′ + e) ·P–1 = mi ·S ·G+ e ·P–1, donde e ·P–1 es un
error que se puede corregir por G, puesto que evidentemente wt(e·P–1) =
wt(e), ya que la permutación no cambiará el número de coordenadas no
nulas.
2) Aplicar a c′i el algoritmo de descodificación del código C(n,k). Este co-
rregirá el error e · P–1 y nos devolverá el vector mi · S ∈ Fk.
3) Multiplicando, ahora, el vector recibido por S–1 reencontraremos mi.
Efectivamente, mi = mi · S · S–1.
Pese a tratarse de un criptosistema en el cual los procesos de cifrado y desci-
frado son relativamente rápidos, en la actualidad se utiliza escasamente. Esto
es debido, principalmente, a los tamaños de clave (219 bits para la clave pú-
blica) y al factor de expansión del mensaje que hace que el criptograma tenga
un tamaño un 60 % mayor que el mensaje original. Sin embargo, dado que el
algoritmo de Shor no afecta a este criptosistema, parece ofrecer resistencia al
criptoanálisis basado en computación cuántica.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 49 Elementos de criptografía
3.3.2. Criptosistema de Niederreiter
H. Niederreiter, en 1986, propone un criptosistema, dual al de McEliece, basa-
do en el uso de códigos GRS (generalized Reed-Solomon), estrechamente ligados
a los códigos de Goppa, y definidos por su matriz de control. La propuesta
de utilización de estos códigos se basa en la posibilidad de reducir el tamaño
de los parámetros respecto a los de Goppa (H. Niederreiter (1986). Knapsack-
type cryptosystem and algebraic coding theory, Problems of Control and Information
Theory).
En su propuesta, Niederreiter, utilizó los códigos GRS para los cuales, se co-
noce un algoritmo de descodificación computacionalmente eficiente. La idea
principal consiste en transformar la matriz de control, H(n–k)×n, del código es-
cogido, sobre F2m , c-corrector (c = ⌊(d–1)/2⌋), y transformarla en una matriz de
control de un nuevo código código lineal, que denotaremos por H′
(n–k)×n (que
también será c-corrector).
Para llevar a término esta transformación, se utilizan dos matrices; una ma-
triz binaria, no singular, S(n–k)×(n–k), por lo tanto invertible, y una matriz de
permutación Pn×n.
Así, la clave privada será H(n–k)×n y las matrices S(n–k)×(n–k) y Pn×n, mientras
la clave pública será: H′
(n–k)×n = S(n–k)×(n–k) · H(n–k)×n · Pn×n y el parámetro c (la
capacidad correctora del código C(n,k)).
Supongamos que el un usuario B quiere enviar un mensaje cifrado a otro usua-
rio A, que tiene H′, como hemos descrito antes, como clave pública:
• Algoritmo de cifrado. Si m es el mensaje a cifrar por B, éste lo dividirá en
bloques mi de n símbolos, tales que wt(mi) ≤ c. Entonces el criptograma
correspondiente será:
ci = (H′) · (mi)T ∈ F2m ,
que da el síndrome de mi.
Equivalencia de los doscriptosistemas
Yuan Xing Le y otrosdemuestran que loscriptosistemas de McEliece yNiederreiter son equivalentes,en términos de seguridad (Y.Xing Le; R. H. Deng; X. MeiWang (1994). “On theequivalence of McEliece’s andNiederreiter public-keycryptosystems”. IEEE
Transaction on Information
Theory).
• Algoritmo de descifrado. Este algoritmo hace uso del conocimiento, por
parte del usuario A, de S–1 y P–1. Así, recibido ci, el usuario A hará:
1) Calcular c′i = S–1 · ci = S–1 ·H′ · (mi)T = H · P · (mi)
T = H · (m′
i)T , donde c′i es
el síndrome de m′
i = mi · PT , calculado a partir de H.
2) Aplicar el algoritmo de descodificación a c′i , para encontrar mi · PT .
3) mi = mi · PT · (P–1)T
La siguiente tabla muestra algunos resultados interesantes sobra la eficiencia
de los criptosistemas de McEliece y Niederreiter.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 50 Elementos de criptografía
Lectura recomendada
R. Overbeack; N. Sendrier.
(2009). “Code-based
cryptography”. A: D.
Bernstein; J. Buchmann; J.
Ding (eds.). Post-QuantumCryptography (págs. 95-145).
Springer.
(n,c) (2048,32) (2048,40) (4096,22) (4096,45)
McEliece texto original 1928 1888 4024 3904
criptograma 2048 2048 4096 4096
tamaño clave pública 73 kb 86 kb 123 kb 234 kb
Niederreiter texto original 232 280 192 352
criptograma 352 4408 264 540
tamaño clave pública 73 kb 86 kb 123 kb 234 kb
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 51 Elementos de criptografía
Ejercicios de autoevaluación
1. Un usuario de una red ha recibido el criptograma: 1611,3556,4744,3504 resultado de cifrar
caracteres, individualmente, de M = {A,B, · · · ,Y,Z} ≈ {A = 02,B = 03, · · · ,Y = 26,Z = 27};
empleando el criptosistema RSA con la clave pública n = 7597 y e = 4947. Encontrar el
mensaje original.
2. Utilizar un criptosistema RSA para dos usuarios A y B, con el mismo valor de
n = 151953280470109
y claves públicas, respectivamente eA = 17 y eB = 19. Suponer que el usuario A quiere cifrar,
para enviar a B, el texto:
m = Los ordenadores cuánticos pueden dejar obsoletos los métodos actuales de cifrado
a) ¿Cuál será el resultado del cifrado?
b) ¿Cuál sería la firma RSA del mensaje?
c) Simular la verificación de la firma por parte de B.
3. A partir de un cuerpo finito F71 de 71 elementos y un elemento primitivo α = 7, conside-
ramos un criptosistema ElGamal.
a) Tomando k = 2, si el criptograma correspondiente a m = 30 es c = (57,49), encontrar el
valor de la clave pública utilizada.b) Si se toma otro valor de k, y resulta que para el mismo valor de m obtenemos c = (b,59),
¿cuál es el valor de b?
4. Construir un criptosistema ElGamal para dos usuarios A y B, en un cuerpo Fp, con p =
1231451311 y α = 21. Suponer que el usuario A tiene por clave privada xA = 113 y que
el usuario B tiene por clave privada xB = 97. Suponer el texto: m =HOLA, empleando los
símbolos de M = {A,B, · · · ,Y,Z} ≈ {A = 02,B = 03, · · · ,Y = 26,Z = 27}a) ¿Cuál será el resultado del cifrado de m, tomando el valor de k = 247, que A enviará a
B? Hacer el correspondiente descifrado para reencontrar m.b) ¿Cuál sería la firma del mensaje, por parte de A?
c) Simular la verificación de la firma por parte de B.
5. Sobre la firma DSA:
a) Supongamos p = 124540019, q = 17389,g = 10083255, x = 12496 y k = 9557. Tomando
como función de hash ficticia, h(m) = m, comprobar que la firma de m = 5246 es (r,s) =
(13752,9137).b) Simular su verificación.
6. Ana y Bernardo deciden utilizar el protocolo cuántico de Bennett-Brassard para intercam-
biarse una clave de sesión. Al comienzo deciden que las polarizaciones \ y | indicarán un 1 y
las polarizaciones / y — indicarán un 0.
Ana envía 20 fotones a Bernardo. Ernesto, que es un espía que está observando la comuni-
cación entre A y B, los intercepta todos y los reenvía a B con la misma polarización con que
los ha detectado.
Posteriormente A y B se comunican públicamente entre ellos y deciden que los bits 1, 2, 3,
4, 5, 7, 8, 9, 10, 20 serán desestimados puesto que, en ellos, no han usado la misma polari-
zación. La polarización de los bits restantes, como ha deducido B, es: / / / / / | | | | |.
Sabiendo que los bits 13, 14, 15, 16, que inicialmente había enviado A son, respectivamente,
1, 0, 0, 1, ¿sabríais decir con qué polaridad A ha enviado los fotones que representan estos
bits? y, ¿qué polarizador ha utilizado Ernesto en estos bits? ¿por qué?
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 52 Elementos de criptografía
Solucionario
1. Para resolver el problema nos ayudaremos del software SAGE. En primer lugar hace falta
factorizar n:
sage: n = 7597sage: factor(n)71 * 107
A continuación encontraremos el inverso e = 4947 módulo ϕ(n) = 70 ∗ 106 = 7420:
sage: e = 4947sage: phi = 7420sage: d = inverse_mod(e,phi)sage: print d3
Con la función power_mod(C,d,n) encontraremos el mensaje original descifrando el mensaje
recibido:
sage: power_mod(1611,d,n)2sage: power_mod(3556,d,n)3sage: power_mod(4744,d,n)4sage: power_mod(3504,d,n)5
Finalmente, m = ABCD.
2. Utilizaremos el software SAGE para simplificar los cálculos. Para empezar, necesitamos pa-
sar del texto alfabético a mensajes numéricos que nos permitan efectuar las operaciones RSA.
Para hacerlo necesitamos definir algunas operaciones previas, las de codificar/descodificar
letras, codificar/descodificar cadenas, cifrar/descifrar números, cifrar/descifrar mensajes. Da-
mos por hecho que la programación elemental utilizada es conocida por el estudiante:
alphabet = ’ abcdefghijklmnopqrstuvwxyz’L = len(alphabet)def codifica_char(lletra):
return alphabet.index(lletra)
def descodifica_char(n):return alphabet[n]
def codifica_text(missatge):return [codifica_char(c) for c in text]
def descodifica_chain(llista):return ’’.join([descodifica_char(v) for v in llista])
def chiper_RSA(llista,n,e):return [power_mod(valor,e,n) for valor in llista]
def unchiper_RSA(llista,n,d):return [power_mod(valor,d,n) for valor in llista]
a) Con estas definiciones previas podemos cifrar el mensaje que nos dan:
sage: m = ’Los ordenadores cuánticos pueden dejar obsoletos los métodos actuales de cifrado’sage: n = 151953280470109sage: e = 17sage: chiper_RSA(codifica_text(m),n,e)
[762939453125, 93211876845592, 32590367823381, 0, 74138716094102, 103704942061406, 17179869184,114274128424688, 97563638183746, 1, 17179869184, 74138716094102, 103704942061406, 32590367823381,
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 53 Elementos de criptografía
0, 69016003153490, 33625452816007, 1, 97563638183746, 105460815098081, 114274128424688, 129140163,32590367823381, 0, 83278712378725, 74138716094102, 17179869184, 762939453125, 97563638183746, 0,17179869184, 762939453125, 114274128424688, 119465547730806, 1, 103704942061406, 0, 74138716094102,131072, 32590367823381, 74138716094102, 93211876845592, 762939453125, 105460815098081, 32590367823381,0, 762939453125, 93211876845592, 32590367823381, 0, 19568778972781, 762939453125, 105460815098081,74138716094102, 17179869184, 762939453125, 32590367823381, 0, 1, 129140163, 105460815098081,33625452816007, 1, 93211876845592, 32590367823381, 0, 17179869184, 762939453125, 0, 119465547730806,114274128424688, 16926659444736, 103704942061406, 1, 105460815098081]
b) Para firmar el mensaje debemos tener calculado el valor d que forma parte de la clave
privada y que el enunciado del problema no nos da. Como el número n no es muy largo,
lo podemos factorizar:
sage: factor(151953280470109)1738934123 * 87383
Ahora podemos calcular ϕ(n) = 1738934122 ∗ 87382 y el inverso de e módulo phi(n).
sage: e = 17sage: phi = 1738934122 * 87382sage: d = inverse_mod(e,phi)print d8938325967565
Entonces la firma la podemos encontrar con la misma función que el cifrado, pero susti-
tuyendo el parámetro e por d:
sage: missatge_signat = chiper_RSA(codifica_text(m),n,d)
[42782583250323, 30308012709953, 132858054847474, 0, 94150478556282,30541430930646, 108907931565622, 76520780070238, 18215677713314, 1,108907931565622, 94150478556282, 30541430930646, 132858054847474, 0,44035504519670, 121144087766341, 1, 18215677713314, 16213728552100,76520780070238, 84208423477578, 132858054847474, 0, 26232893409272,94150478556282, 108907931565622, 42782583250323, 18215677713314, 0,108907931565622, 42782583250323, 76520780070238, 54058519904057, 1,30541430930646, 0, 94150478556282, 77779196084924, 132858054847474,94150478556282, 30308012709953, 42782583250323, 16213728552100,132858054847474, 0, 42782583250323, 30308012709953, 132858054847474, 0,21980253538582, 42782583250323, 16213728552100, 94150478556282,108907931565622, 42782583250323, 132858054847474, 0, 1, 84208423477578,16213728552100, 121144087766341, 1, 30308012709953, 132858054847474, 0,108907931565622, 42782583250323, 0, 54058519904057, 76520780070238,96067072003657, 30541430930646, 1, 16213728552100]
c) El usuario B puede comprobar la firma del mensaje que le ha enviado el usuario A utili-
zando la clave pública de aquel y observando que el resultado da el mensaje inicial:
sage: descodifica_chain(unchiper_RSA(missatge_signat,n,e))
’Los ordenadores cuánticos pueden dejar obsoletos los métodos actuales de cifrado’
3. a) Escribamos la clave pública de A como a = αU , entonces el mensaje cifrado es c = m·(a)k
(mod p), o sea 57 = 30·(a)2 (mod 71) y, por lo tanto a =√
57·30–1 (mod 71) =√
9
(mod 71).
sage: mod((57 * 30^(-1))^(1/2), 71)9
O sea, la clave pública puede ser αU = ±3 (mod 71).
b) Si tomamos otro valor de k tenemos que αk = b y 30·ak = 59, donde a es la clave pública.
Entonces b = 30·(59)–1 (mod 71) = 33.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 54 Elementos de criptografía
4. Utilizaremos el software SAGE. Entramos los datos del ejercicio:
sage: p=1231451311sage: alfa=21sage: xA=113sage: xB=97sage: k=247sage: m=9161302sage: R=IntegerModRing(p)
Con la última instrucción indicamos que trabajaremos en el anillo Zp. Ahora ya podemos
calcular:
a) sage: YB=R(alfa^xB)print YB4198807sage: YA=R(alfa^xA)print YA120638760sage: K= R(alfa^k)print K840316018
El criptograma c, correspondiente a m, se encuentra haciendo:
sage:c=R(m * YB^k)print c399347538
Entonces, A envía c = 399347538 a B. Ahora, para reencontrar el mensaje enviado, Bhará:
sage: beta= R(K^xB)sage: mr=R(c/beta)print mr9161302
Efectivamente, el mensaje recibido mr coincide con el enviado m.
b) Para poder hacer la firma A, debe calcular en el anillo Zp–1, y para esto devolvemos el valor
entero a K:
sage: R1=IntegerModRing(p-1)sage: kinv=R1(1/k)sage: K1=Integer(K)sage: s=R1((m-xA * K1) * kinv)print s14451644
Por lo tanto, el valor de la firma de m es s = 144516444
c) Para poder hacer la verificación de la firma anterior, realizamos los siguientes cálculos
sage: M=YA^k * K^sprint M542102987sage:N=R(alfa^m)print N542102987
Dado que los valores de M y N coinciden, la firma se daría por válida.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 55 Elementos de criptografía
5. Utilizaremos el software SAGE. Entramos los datos del ejercicio:
sage: p=124540019sage: q=17389sage: q=10083255sage: x=12496sage: k=9557sage: m=5246
Ahora ya podemos calcular:
a) sage: n=(p-1)/qprint n7162sage: alfa=mod(g^n,p)print alfa57574454sage: y= alfa^xprint y33942608
Para la firma de m calculamos:
sage: r=mod(alfa^k,q)print r13752sage: s=mod((m+x * r)/k,q)print s9137
Por lo tanto, la firma (r,s) = 13752,9137) coincide con la dada.
b) Para simular la verificación de la firma procedemos:
sage: w=mod(1/s,q)sage: uno1=mod(m * w,q)sage: uno2=mod(r * w,q)sage: v=mod(alfa^uno1 * y^uno2,q)print v13752
Dado que el valor de v = 13752 coincide con el valor de r, la firma se daría por válida.
6. La polarización en que A ha enviado los mencionados bits debe ser coherente con la que
ha recibido B, puesto que estos bits no han sido desestimados. Por lo tanto A ha enviado:
\ / — |
La polarización que ha utilizado Ernesto en el bit 13 esL
y en el bit 15N
. En los bits 14 y
16 puede haber utilizadoL
oN
indistintamente.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200951 56 Elementos de criptografía
Bibliografía .
Domingo, J.; Herrera, J.; Rifà-Pous, H. (2006). Criptografía. Barcelona: UOC.
Rifà, J.; Huguet, L. (1991). Comunicación digital: Teoría matemática de la información. Codi-ficación algebraica. Criptología. Barcelona: Ed. Masson.
Simmons, G. J. (1992). Contemporary cryptology: the science of information integrity. New
York: IEEE Press Inc.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
ProtocoloscriptográficosLlorenç Huguet Rotger
Josep Rifà Coma
Juan Gabriel Tena Ayuso
PID_00200954
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España deCreative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéisel autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un usocomercial y no hagáis una obra derivada. La licencia completa se puede consultar enhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 Protocolos criptográficos
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. Protocolos de gestión y distribución de claves . . . . . . . . . . . . . . . 9
1.1. Protocolo de transporte de una clave privada . . . . . . . . . . . . . . . . . 10
1.2. Protocolo de intercambio de dos claves de Needham-Schroeder 11
1.3. Protocolo de distribución de claves centralizado . . . . . . . . . . . . . . 11
1.4. Protocolo de acuerdo de claves de Diffie-Hellman . . . . . . . . . . . . 12
2. Protocolos de autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1. Protocolo de tres pasos de Shamir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2. Protocolo de Omura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Protocolo de Needham-Schroeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4. Protocolo de Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5. Protocolo STS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6. Otros protocolos: ISO, CCITT X.509, SSL . . . . . . . . . . . . . . . . . . . . . 24
2.7. Protocolos de identificación de conocimiento nulo . . . . . . . . . . . 26
3. Transacciones electrónicas seguras: dinero electrónico . . . . . 30
3.1. Protocolo de Chaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2. Transacciones sin rastro. Firmas digitales ciegas de Chaum . . . 33
3.3. Sistemas de pago electrónicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4. Protocolos de transferencia inconsciente . . . . . . . . . . . . . . . . . . . . . 38
4.1. Protocolo de Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2. Protocolos de compromiso de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3. Firma electrónica de contratos: Protocolo de Even . . . . . . . . . . . . 43
4.4. Protocolo de correo electrónico certificado. . . . . . . . . . . . . . . . . . . . 46
5. Esquemas umbral y reparto de secretos . . . . . . . . . . . . . . . . . . . . . . . 49
5.1. Esquema de Shamir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6. Votaciones electrónicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.1. Garantizar la privacidad y la corrección de los resultados . . . . . 53
6.2. Garantizar la auditoría de la votación . . . . . . . . . . . . . . . . . . . . . . . . . 55
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 Protocolos criptográficos
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Solucionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 5 Protocolos criptográficos
Introducción
Las comunicaciones electrónicas ofrecen nuevas posibilidades en los inter-
cambios de información, sobre todo en el campo de las transacciones comer-
ciales y en la administración electrónica.
En el mundo no electrónico los intercambios de información, llevados a cabo
con medios más convencionales, presentan problemas de seguridad y descon-
fianza que se resuelven a través de un arbitraje con terceras partes de confian-
za, como, por ejemplo, jueces, notarios y agentes postales, entre otros, que
tradicionalmente son los que han dado seguridad a estos intercambios.
En las transacciones electrónicas, llevadas a cabo mediante protocolos de co-
municación, la seguridad tiene un papel incluso más relevante, ya que ne-
cesita dar, además, una protección contra posibles amenazas, como son las
manipulaciones desautorizadas de los datos o las falsificaciones.
Al conjunto de acciones bien definidas y coordinadas descritas por un cierto
algoritmo, que permiten una interacción entre dos, o más, usuarios para llevar
a cabo un intercambio de datos o de información, se le llama protocolo.
Los protocolos criptográficos son aquellos que, para llevar a cabo esta in-
teracción, usan funciones criptográficas para poder asegurar los requisitos de
seguridad en las comunicaciones entre los usuarios que intervienen en el in-
tercambio: la confidencialidad, la integridad, la autenticidad y el no repudio.
Vamos a encontrar ejemplos de uso de los protocolos criptográficos en ámbi-
tos tan diversos cómo: en comercio electrónico, donde tienen que utilizarse
firmas compartidas; en correo electrónico seguro, donde se necesitará algo
más que un acuse de recibo; en la implementación de sistemas electrónicos de
pagos con la utilización de firmas ciegas o en sistemas de votación electrónica.
En muchos casos se necesitará, también, el arbitraje de una tercera parte de
confianza para garantizar todos los requisitos de seguridad en estas transac-
ciones electrónicas.
La diversidad de ámbitos hace que exista también una amplia variedad de
protocolos criptográficos para dar respuesta a los diferentes objetivos, pero
todos ellos se usan, generalmente, para eliminar desconfianzas.
Podemos dar la siguiente clasificación, según los objetivos que se quieran
lograr:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 6 Protocolos criptográficos
• Gestión y distribución de claves. Permiten y garantizan la generación,
almacenamiento, mantenimiento y distribución de claves de un sistema
criptográfico de clave privada. En algunos casos, esta distribución se hará
utilizando criptosistemas de clave pública.
• Autenticación de usuario. Permiten garantizar que el remitente de un
mensaje, con quien se establece comunicación, es realmente quien preten-
de ser.
• Transacciones electrónicas seguras. Permiten realizar las operaciones ban-
carias habituales, en particular, implementar sistemas de pago electrónicos
sustitutivos de las tarjetas de crédito y de débito en las transacciones eco-
nómicas en el comercio electrónico, con una utilización muy especial en
el caso de micropagos (menos de 10 e).
• Transferencias inconscientes o transcordadas. Permiten a un usuario en-
viar un mensaje o un secreto, entre dos posibles, a otro usuario. El usuario
emisor no conoce cuál de los dos ha recibido el receptor. Estos protocolos
permiten la firma electrónica de contratos.
• Compromiso de bit. Permiten a un usuario de una red comprometerse
con la elección de un bit (o más, generalmente con una serie de bits) sin
revelar tal elección hasta un momento posterior. El protocolo garantiza a
la otra parte que el usuario no cambia su elección.
• Compartición de secretos. Permiten distribuir un cierto secreto entre un
conjunto de participantes de manera que ciertos subconjuntos prefijados
entre los participantes puedan, uniendo sus participaciones, recuperar el
secreto.
• Pruebas de conocimiento nulo. Permiten a un usuario de una red con-
vencer a otro que el primero posee una cierta información, sin revelar nada
sobre el contenido de la misma.
• Votaciones electrónicas. Permiten realizar un proceso electoral electróni-
camente, garantizando la privacidad de cada votante y la imposibilidad de
fraude.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 7 Protocolos criptográficos
Objetivos
En los materiales didácticos de este módulo el estudiante encontrará los con-
tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer los protocolos más importantes de gestión y distribución de claves.
2. Conocer los protocolos más importantes de autenticación.
3. Conocer los protocolos más importantes de transacciones electrónicas se-
guras y sistemas de pago electrónico.
4. Conocer los protocolos más importantes para implementar la firma de con-
tratos y el correo electrónico certificado.
5. Conocer los fundamentos de los esquemas de umbral.
6. Conocer los fundamentos de las votaciones electrónicas.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 9 Protocolos criptográficos
1. Protocolos de gestión y distribución de claves.
Uno de los problemas de la criptografía de clave privada está en la distribución
de las claves entre los usuarios de una red de comunicaciones, en la que cada
pareja de usuarios A, B necesita compartir una clave KAB, para crear un canal
privado virtual entre ambos.
Esta clave no puede ser enviada por la propia red de comunicaciones (que
consideraremos insegura) y que, además, por motivos de seguridad, debe ser
cambiada periódicamente. Muchas veces, KAB es desechable y se la llama clave
de sesión.
Por lo que hace a la gestión de claves, ésta comporta interrogantes, como ase-
gurar quiénes asumen la responsabilidad de la creación de las claves (con di-
ferentes alternativas: autoridad central o sistema totalmente descentralizado),
construir diferentes tipos de claves (de comunicaciones, maestras, de sesión),
definir los requisitos de seguridad en el almacenamiento de las mismas, etc.
En este apartado pondremos énfasis en los protocolos de distribución:
Notación
A lo largo de este módulo,cuando nos referimos a unsistema criptográfico de clavepública, la notación queusaremos, asociada a unusuario U, será:
• IdU : Identidad usuario.• EU (m): Proceso de cifrar
un mensaje m, con laclave pública de U.
• DU (c): Proceso de descifrar un criptograma c,con la clave privada de U.
1) Gestión de claves en los sistemas criptográficos de clave pública. En un
sistema criptográfico de clave pública, donde cada usuario U dispone de su pa-
reja de claves: EU para cifrar y DU para descifrar, no es necesaria la distribución
de las clave para cifrar; al contrario, han de estar accesibles para cualquiera que
desee utilizarlas y poder comunicarse con el propietario de las mismas. Existe,
sin embargo, el riesgo de la impersonación, es decir, un adversario C puede
hacer creer que su clave pública EC es la clave pública de otro usuario.
Consideramos cuatro esquemas posibles de gestión de claves públicas:
• Anuncio público: cada participante difunde su clave pública al resto de
usuarios. El riesgo de impersonación es grande.
• Directorio público: mantenido por una cierta autoridad, una tercera parte
de confianza, con acceso directo y libre (para lectura) por parte de cual-
quier usuario al directorio de claves TPD (trusted public directory). Cualquier
usuario U registra en el TPD su identidad; IdU ; y su clave pública, EU , en
persona o mediante comunicación autorizada, lo cual, en principio, elimi-
na el riesgo de la impersonación.
• Autoridad pública: similar al anterior, pero los usuarios no tienen acceso
directo al directorio de claves, sino que interaccionan con un centro de
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 10 Protocolos criptográficos
distribución de claves KDC (key directory centre). Si el usuario A desea cono-
cer la clave pública del usuario B, debe formular una petición expresa a la
autoridad que mantiene el directorio.
*Ver el subapartado 2.6 del
módulo “Elementos de
criptografía”.
• Autoridad certificadora: es una tercera parte de confianza, T, que expide
a cada usuario U un certificado de su clave pública, ligada a su identidad
IdU , junto con otros datos. Este certificado va firmado con la clave privada
de T. Así, un usuario A puede enviar a otro usuario B este certificado y éste
puede comprobar, utilizando la clave pública de la autoridad ET , la validez
de la clave, la identidad del emisor, así como los otros datos incluidas, entre
ellos el periodo de vigencia del certificado, etc.*
2) Distribución de claves en los sistemas criptográficos de clave privada.
En los sistemas criptográficos de clave privada, las claves se deben distribuir de
forma centralizada puesto que en otro caso, el administrador de una red ten-
dría que proporcionar claves a cada pareja de usuarios que quieran intercam-
biarse información secreta. Esto querría decir que el administrador necesitaría
tener almacenadas`n
2
´
=n(n – 1)
2= O(n2) claves, y cada usuario (n – 1) claves.
En un sistema criptográfico de clave privada, dos usuarios A y B pueden esta-
blecer una clave KAB, compartida por ambos, por dos métodos:
• Transporte de claves: un usuario crea una clave y la transfiere, con segu-
ridad, al otro usuario (alternativamente, puede ser una tercera parte quien
la crea y transfiere a ambos).
• Acuerdo de claves (key agreement): la clave es calculada por los usuarios
como una cierta función de la información suministrada por ambos usua-
rios. En principio ningún usuario, por sí mismo, puede predeterminar el
valor de esta clave.
Un problema adicional que puede plantearse es el de la autenticación de las
claves y de los usuarios que las acuerdan o envían. Tal autenticación será re-
suelta con los protocolos de distribución, en la mayoría de casos utilizando
sistemas criptográficos de clave pública para distribuir una clave privada.
1.1. Protocolo de transporte de una clave privada
Este protocolo permite transferir una clave KA, elegida por el usuario A, a otro
usuario B, mediante un algoritmo de un solo paso.
Supondremos que el usuario A tiene acceso a una copia autenticada de EB y
que usa un parámetro temporal, TP.
Protocolo
• A→ B. El usuario A envía a B: EB(IdA,KA,TP)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 11 Protocolos criptográficos
Ahora, el usuario B puede descifrar lo que ha recibido, con su clave privada DB
y, de este modo, verificar la identidad del emisor, el parámetro temporal TP y
asociar la clave KA al usuario A.
Resumen de las transacciones del protocolo:
A B
→ EB(IdA,KA,TP)) →
1.2. Protocolo de intercambio de dos claves de Needham-Schroeder
Este protocolo permite intercambiar dos claves secretas entre dos usuarios A
y B, respectivamente, KA y KB, con solo 3 pasos, al mismo tiempo que los
usuarios se autentican mutuamente.
Autenticaciones
• Autenticación de B porparte de A: el usuario Acomprueba que RA escorrecto, con lo cualautentica a B y confirmaque ha recibido KB.
• Autenticación de A porparte de B: el usuario Bcomprueba que RB escorrecto, con lo cualautentica a A y confirmaque ha recibido KA.
Protocolo
• A→ B. El usuario A elige un número aleatorio RA y envía a B: EB(IdA,KA,RA).
• B → A. El usuario B descifra lo que ha recibido, con su clave privada DB,
y obtiene RA, además de la clave pública y la identidad de A. Ahora B elige
otro número aleatorio RB y envía a A: EA(KB,RA,RB).
• A → B. El usuario A descifra lo que ha recibido, con su clave privada DA,
y obtiene RB, además de la clave pública y la identidad de B, y envía a B:
EB(RB).
Resumen de las transacciones del protocolo:
A B
→ EB(IdA,KA,RA) →
← EA(KB,RA,RB) ←
→ EB(RB) →
1.3. Protocolo de distribución de claves centralizado
Este protocolo permite la distribución de una clave de sesión a dos usuarios A
y B, para utilizar en un sistema criptográfico de clave privada.
Caso práctico
Se puede pensar en unprotocolo donde se quierausar una clave de sesión parautilizar con el sistema AES,mientras que la distribuciónse hace con un sistemaElGamal.
Supongamos que A y B disponen de un sistema criptográfico de clave pública y
que, en este caso, interviene una autoridad pública, T, que gestiona un centro
de distribución de claves KDC.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 12 Protocolos criptográficos
Para iniciar el protocolo, el usuario A comunica a la autoridad pública T, que
se quiere comunicar con B y, para ello, solicita la identidad de B y una clave
de sesión KAB para compartir. Además, se utilizará un parámetro temporal TP,
para controlar el plazo de vigencia.
Protocolo
• T → A. La autoridad pública T envía a A: EA(IdB,KAB,TP,EB(IdA,KAB,TP)).
El usuario A descifra lo que ha recibido, con su clave privada DA, y obtiene:
IdB, KAB, el parámetro TP y EB(IdA,KAB,TP).
• A→ B. El usuario A envía a B: EB(IdA,KAB,TP).
El usuario B descifra lo que ha recibido, con su clave privada DB, y obtiene:
IdA, KAB y TP.
Finalmente, para iniciar la transmisión con total garantía, haría falta un acuse
de recibo por parte de B a A, contrastando la validez del valor TP.
Resumen de las transacciones del protocolo:
T A
→ EA(IdB,KAB,TP,EB(IdA,KAB,TP)) →
A B
→ EB(IdA,KAB,TP) →
1.4. Protocolo de acuerdo de claves de Diffie-Hellman
Este protocolo se basa en la función exponencial y el logaritmo discreto, en
un cuerpo finito Zp, y no necesita ninguna otra intervención más que la de
los propios usuarios. La seguridad del protocolo se basa, precisamente, en la
intractabiliddad del cálculo del logaritmo discreto.
Todos los usuarios conocen el valor del primo p y el de un elemento primitivo
α ∈ Zp.
Cada usuario U busca al azar xU ∈ Z∗p , que guarda secreto, y hace público el
valor de yU = αxU (mod p). Así, cada usuario U coloca (IdU ,yU) en el directorio
público TPD.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 13 Protocolos criptográficos
Para compartir una clave de sesión, KAB, entre dos usuarios A y B, éstos harán
lo siguiente.
Protocolo
• El usuario A obtiene yB del TDP, calcula KA = yxA
B (mod p) = αxB·xA (mod p).
• El usuario B obtiene yA del TDP, calcula KB = yxB
A (mod p) = αxA·xB (mod p).
Ahora A y B ya pueden compartir una misma clave KAB = KA = KB (efectiva-
mente: αxA·xB (mod p) = αxB·xA (mod p)) para intercambiarse mensajes, en un
sistema criptográfico de clave privada, sin que A necesite del valor secreto xB,
ni B necesite del valor secreto xA.
Resumen del protocolo:
A B
KA = yxA
B (mod p) KB = yxB
A (mod p)
Simulador de cálculosen Zp
Para comprobar los cálculos
de este ejemplo, podéis usar
aplicativos de uso libre,
como SAGE
(http://www.sagemath.org).
Ejemplo 1.1.
A y B quieren intercambiar una clave de sesión KAB, usando el cuerpo Zp, con p = 1999 y
el elemento primitivo α = 33. En realidad, este valor de p debería ser muy grande.
Supongamos que A escoge xA = 47 y B escoge xB = 117. Entonces, ambos usuarios harán
los siguientes cálculos:
El usuario A calcula yA = αxA (mod p) = 3347 (mod 1999) = 1343;
El usuario B calcula yB = αxB (mod p) = 33117 (mod 1999) = 1991;
Así, (IdA,yA = 1343), (IdB,yB = 1991) figurarán en el TPD.
Protocolo
• El usuario A calcula KAB = yxAB (mod p) = 199147 (mod 1999) = 1506.
• El usuario B calcula KBA = yxBA (mod p) = 1343117 (mod 1999) = 1506.
La clave secreta compartida por A y B será KAB = KBA = 1506.
Nota
El protocolo de acuerdo de claves de Diffie-Hellman es vulnerable, frente a ataques de
impersonación.
Puede haber un espía activo-pasivo, C, que envíe mensajes a B, a partir de los que recibe
de A. Los usuarios A y B creen que están interconectados cuando en realidad sus mensajes
son filtrados y/o manipulados por C, puesto que es C quien realmente está conectado con
A y con B.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 14 Protocolos criptográficos
Protocolo para impedir la impersonación
Este problema de autenticación de A por parte de B, o de B por parte de A, se
puede resolver con la intervención de una autoridad pública T.
El usuario A envía a T la petición que quiere conectarse con B.
• T → A. La autoridad pública T envía a A los siguientes certificados:
CA = DT(IdA,EA,TP) i CB = DT(IdB,EB,TP)
donde TP es un parámetro temporal.
• A→ B. El usuario A calcula una clave de sesión KAB y la envía a B, debida-
mente firmada y cifrada EB(CA,CB,X = DA(KAB)).
El usuario B comprueba, aplicando su clave privada, DB, a lo que acaba de
recibir; el certificado de A, CA, su certificado, CB, y la clave pública de A, EA,
con la cual puede calcular la clave de sesión: KAB = EA(X).
A partir de ahora, los usuarios A y B, ya pueden empezar la transmisión segura
con la clave de sesión KAB.
Resumen de las transacciones para evitar el ataque de impersonación:
T A
→ CA = DT(IdA,EA,TP); CB = DT(IdB,EB,TP) →
A B
→ EB(CA,CB,X = DA(KAB)) →
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 15 Protocolos criptográficos
2. Protocolos de autenticación.
Los protocolos de autenticación permiten verificar la identidad de un usuario
A, ante un usuario B, de forma que B pueda confirmar que es el usuario A
quien le ha envíado un cierto mensaje.
Son protocolos que demuestran la identidad de A a B (en este apartado, lla-
maremos a verificador al usuario B). A veces, la identificación consiste en
demostrar la posesión de un cierto secreto (que puede ser una clave), sin ne-
cesidad de revelarlo.
En general, el usuario A deberá proporcionar una respuesta a un cierto desafío
planteado por el verificador (normalmente, dentro de un plazo de tiempo
determinado). Por esto, a veces, a estos protocolos se los denomina de desafío-
respuesta.
Para la implementación, un protocolo de autenticación debería satisfacer los
requisitos siguientes:
• Tendría que implementar conjuntamente con un protocolo de intercambio
de claves. Es este último el que demuestra que no solo todos los participan-
tes son quienes dicen ser, sino que, además, puede haber un intercambio
de información.
• Tendrían que encadenarse los mensajes que se van cruzando dentro de una
ejecución concreta de forma que no pudieran ser sacados de contexto.
• Tendría que evitarse la utilización de sellados de tiempo, lo que se conoce
como timestamps, como herramienta de seguridad, aun cuando son útiles
desde un punto de vista administrativo y documental.
• Tendría que evitarse que la revelación de las claves intercambiadas en una
sesión comprometiera el secreto de las claves intercambiadas previamente.
• Tendría que poderse añadir a los datos a cifrar, en cada paso, algún otro
dato seleccionado aleatoriamente por los participantes lo que se conoce
como add your own salt, de manera que se impedirá que la otra parte dis-
ponga de cálculos que de otra manera no podría efectuar.
.
Definición 2.1 (Protocolo de autenticación seguro).
Diremos que un protocolo de autenticación es seguro si, en el momento
en que un usuario acepta la identidad del otro, los registros que ambos
han guardado de la sesión de autenticación coinciden. Y, además, no
debe ser computacionalmente eficiente que un tercer usuario pueda re-
cuperar el desafío aceptado.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 16 Protocolos criptográficos
.
Definición 2.2 (Protocolo de autenticación directo).
Diremos que el protocolo es de autenticación directa si acaba inter-
cambiando mensajes entre los participantes usando las claves generadas
previamente.
Ejemplo 2.1.
Veremos dos protocolos de desafío-respuesta y, en ambos casos, usaremos un sistema
criptográfico de clave pública.
Protocolo 1:
Supongamos que A, para identificarse, quiere demostrar a B que posee la clave de desci-
frado DA, de un sistema criptográfico de clave pública.
• B → A. El verificador B, envía a A: (IdB,d = (EA(RB)), donde d es el desafío y RB un
número aleatorio escogido por B.
• A→ B. El usuario A, dentro del plazo establecido, con su clave privada DA, recupera
RB = DA(d), y lo envía a B.
El verificador B, aceptará la identificación de A si el valor recibido coincide con RB que él
mismo había enviado.
Resumen de las transacciones del protocolo:
A B
← IdB,d = (EA(RB) ←
→ RB = DA(d) →
Protocolo 2:
• B→ A. El verificador B, envía a A: (IdB,RB), donde RB es un número escogido por B.
• A→ B. El usuario A, dentro del plazo establecido, usando su clave privada DA envía:
(RA,IdB,DA(RA,RB,IdB)), donde RA es un número escogido por A, y lo envía a B.
El verificador B, aplicará, con la clave pública de A, EA a la última componente del vector
recibido y comprobará la coincidencia de IdB y RA con las dos primeras componentes del
vector recibido y, además, que RB coincide con el que él mismo le había enviado.
Resumen de las transacciones del protocolo:
A B
← IdB,RB ←
→ RA,IdB,DA(RA,RB,IdB) →
2.1. Protocolo de tres pasos de Shamir
Este protocolo permite el envío de información secreta de A a B, sin intercam-
bio previo de claves, a la vez que B tendrá la certeza de que el emisor es A.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 17 Protocolos criptográficos
Para llevar a cabo este protocolo necesitamos una función criptográfica que
sea conmutativa para cada pareja de usuarios, EA · EB = EB · EA.
Protocolo
• A → B. El usuario A cifra con su clave pública el mensaje m: EA(m), y lo
envía a B.
El usuario B no puede calcular m, puesto que no conoce DA.
• B → A. El usuario B cifra con su clave pública lo que acaba de recibir:
EB(EA(m)), y lo envía a A.
• A→ B. El usuario A, debido a la propiedad conmutativa presupuesta, pue-
de descifrar con su clave privada lo que ha recibido y recuperar EB(m), que
envía a B. Efectivamente: DA(EB(EA(m)) = DA(EA(EB(m)) = EB(m)
Ahora B puede conocer m, descifrando con su clave privada lo que ha obteni-
do: m = DB(EB(m))) y, al mismo tiempo, estará seguro de que este mensaje lo
ha enviado A.
Resumen de las transacciones del protocolo:
A B
→ EA(m) →
← EB(EA(m)) ←
→ EB(m) →
Nota
Este esquema no asegura la autenticación ni, en general, el secreto como se puede ver en
el siguiente ejemplo.
Ejemplo 2.2.
Usaremos el sistema criptográfico de clave pública, de Pohlig-Hellman que, basando su
seguridad en el problema del logaritmo discreto, consiste en:
• Escoger un grupo multiplicativo Z∗p , donde p es un número primo grande.
• Cada usuario elige un valor eU , relativamente primo con φ(p) = p–1 y calcula dU = e–1U
(mod φ(p)). La clave secreta de cada usuario será el valor dU .
• Para un mensaje m y un criptograma c:
Cifrado: EA(m) = meA (mod p) y
Descifrado: DA(c) = cdA (mod p)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 18 Protocolos criptográficos
Evidentemente, este sistema criptográfico de clave pública cumple la condición mencio-
nada EA · EB = EB · EA.
Por lo tanto, es seguro respecto al secreto, pero no desde el punto de vista de la autenti-
cación, como veremos en el ataque de impersonación de Massey-Omura.
Empecemos con un ejemplo numérico de este protocolo:
Tomando p = 103; si el usuario A escoge eA = 19 (dA = e–1A (mod φ(p)) = 19–1 (mod 102) =
43) y el usuario B escoge eB = 23 (dB = e–1B (mod φ(p)) = 23–1 (mod 102) = 71);
suponiendo que el mensaje que A quiere enviar a B es m = 10, el protocolo de tres pasos
de Shamir sería el siguiente:
• A→ B. El usuario A envía a B: EA(m) = 1019 (mod 103) = 3.
El usuario B no puede calcular m = 10, puesto que no conoce DA.
• B→ A. El usuario B calcula EB(EA(m)) = EB(3) = 323 (mod 103) = 95.
• A→ B. El usuario A puede calcular el valor de EB(m), mediante su clave privada DA:
EB(m) = DA(EB(EA(m) = DA(95) = 9543 (mod 103) = 27. El usuario A envía el valor 27
a B.
Este valor coincide, efectivamente, con EB(10) = 1023 (mod 103) = 27.
Ataque de impersonación de Massey-Omura
Veamos ahora, como en el ejemplo anterior, que un espía C se puede interpo-
ner entre los dos usuarios A y B violando el secreto de la transmisión.
Este tipo de ataques, también son conocidos como man-in-the-middle.
Protocolo
Si el usuario A quiere enviar un mensaje m, cifrado, al usuario B, calcula
EA(m) = meA (mod p).
• A→ B. El usuario A envía EA(m) a B
Si un espía C intercepta este mensaje cifrado puede retornar a A:
EC(EA(m)) = (meA)eC (mod p)
• A← C. el espía C envía EC(EA(m)) a A.
El usuario A no té ningún mecanismo para comprobar que lo que recibe sea
de B.
Si A no desconfía, sigue con el tercer paso del protocolo de tres pasos de Sha-
mir:
DA((meA)eC) (mod p) = ((meA)eC)dA (mod p) = meC (mod p).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 19 Protocolos criptográficos
• A → B. El usuario A piensa que envía EB(m) y, en cambio, está enviando
EC(m) = meC (mod p).
El espía C al recibir este valor, y dado que él conoce DC, puede calcular: (meC)dC
(mod p) = m.
De este modo el espía C ha podido conocer el mensaje m que A quería enviar
a B.
Resumen de las transacciones del ataque de impersonación
A C
← EC(EA(m))) ←
→ EC(m) →
Ejemplo 2.3.
Usaremos el mismo sistema criptográfico de clave pública, de Pohlig-Hellman que en el
ejemplo anterior.
Tomemos p = 103; ya conocemos las claves públicas y privadas de A y B, respectivamente:
{eA = 19,dA = 43} y {eB = 23,dB = 71}.
Suponiendo que los parámetros del espía C sean {eC = 5, dC = 41} el ataque de autenticación
seguiría los siguientes pasos. Supongamos que el mensaje que se quiere enviar es m = 10:
• A→ B. El usuario A calcula EA(m) = 1019 (mod 103) = 3 y lo envía a B.
El espía C intercepta este mensaje y calcula:
EC(EA(m)) = (meA )eC (mod p) = 35 (mod 103) = 37.
• A← C. El espía C envía a A: EC(EA(m)) = 37.
El usuario A no tiene ningún mecanismo para comprobar que lo que recibe es de B y, al no
desconfiar, descifra el mensaje recibido, mediante su clave privada dA:
DA(EC(EA(m)) = DA(37) = 3743 (mod 103) = 90
• A → B. El usuario A piensa que envía a B el valor 90 = DA(EB(EA(m)) = meB (mod p),
pero en realidad está enviando DA(EC(EA(m)) = EC(m).
El espía C recibe este valor y dado que él posee dC puede calcular: (meC )dC (mod p) = m. Para
ello calcula: DC(90) = 9041 (mod 103) = 10; y, por tanto, C conoce el mensaje m = 10 que Aenviaba a B.
2.2. Protocolo de Omura
Este es un protocolo semejante al de Diffie-Hellman de acuerdo de claves,
que permite la autenticación de dos usuarios, sin que nadie más que ellos
intervenga.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 20 Protocolos criptográficos
Sea α ∈ Zp un elemento primitivo y supongamos que cada usuario U tiene una
clave secreta xU y una clave pública yU = αxU (mod p).
Protocolo
Una vez que A ha informado a B que él es A y que lo quiere probar, el protocolo
consiste en los dos pasos siguientes:
• B→ A. El usuario B escoge al azar un valor x, calcula y = αx (mod p) y envía
y a A.
• A→ B. El usuario A calcula yxA (mod p) y envía el resultado a B.
El usuario B verifica la igualdad entre lo que acaba de recibir (yxA (mod p) y
el cálculo a partir de la clave pública de A y el valor x por él escogido ((yA)x
(mod p)). En caso de igualdad, acepta la autenticación de A y, de lo contrario,
la rechaza.
Resumen de las transacciones del protocolo
A B
← y = αx (mod p) ←
→ yxA (mod p) →
Ejemplo 2.4.
Utilizamos los parámetros del ejemplo 1.1.
Sea el cuerpo Zp, con p = 1999 y el elemento primitivo α = 33.
Supongamos las claves públicas y privadas de A y B, respectivamente:
{xA = 47, yA = αxA (mod p) = 1343, xB = 117, yB = αxB (mod p) = 1991}
Los pasos del protocolo son (suponiendo que el usuario B ha sido avisado de que el
usuario A quería autenticarse):
• B→ A. B escoge el valor x = 13, calcula y = α13 (mod 1999) = 319 y lo envía a A.
• A→ B. A calcula yxA (mod p) = 31947 (mod 1999) = 1465 y envía el resultado a B.
El usuario B verifica si el valor recibido coincide con = (yA)x (mod p). Efectivamente:
134313 (mod 1999) = 1465 y el usuario B da por autenticado al usuario A.
2.3. Protocolo de Needham-Schroeder
Este es un protocolo de autenticación e intercambio de claves, usando un
sistema criptográfico de clave pública y mediante un centro de distribución de
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 21 Protocolos criptográficos
claves, KDC, gestionado por la autoridad pública T, que sigue los siguientes
pasos.
Protocolo
• A → T. El usuario A envía a T: DA(IdA,IdB,RA), donde RA es un número
aleatorio escogido por A.
• T → A. La autoridad T devuelve a A: EA(RA,IdB,KAB,EB(KAB,IdA)), donde KAB
es la clave de sesión, generada por el KDC, que han de utilizar A y B en su
intercambio.
• A→ B. El usuario A envía EB(KAB,IdA) a B.
• B → A. El usuario B envía, cifrando con la clave de sesión: EKAB(RB) a A,
donde RB es un número aleatorio escogido por B.
• A→ B. El usuario A devuelve EKAB(RB – 1) a B.
Cuando el usuario B, descifrando con la clave de sesión, KAB, recibe el valor de
RB – 1, da por autenticado al usuario A.
Resumen de las transacciones del protocolo:
A T
→ DA(IdA,IdB,RA) →
← EA(RA,IdB,KAB,EB(KAB,IdA)) ←
A B
→ EB(KAB,IdA) →
← EKAB(RB) ←
→ EKAB(RB – 1) →
2.4. Protocolo de Kerberos
Este es un protocolo de distribución de claves de sesión, mediante un centro
de distribución de claves, KDC, que proporciona autenticación del usuario
y establece la clave de sesión entre dos usuarios A y B, usando un sistema
criptográfico de clave privada y terceras partes de confianza.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 22 Protocolos criptográficos
Hay otras versiones del protocolo para poder utilizar sistemas criptográficos
de clave pública.
Consideramos T, el servidor de autenticación Kerberos, como tercera parte de
confianza.
El protocolo de Kerberos se basa en el protocolo que acabamos de ver de
Needham-Schroeder. Se usan vales y sellado de tiempo para asegurar la iden-
tidad de los usuarios.
La utilización de los vales y del periodo de validez de la clave KAB evita que
pueda haber ataques usando claves de sesión utilizadas previamente.
Autenticación Kerberos
Kerberos permite laautenticación de A ante B.Incluye sellado de tiempo yuna autoridad decertificación on-line, quecomparte una clave privadacon cada usuario para hacerlas operaciones de cifradoEAT ,EBT . El valeB vaacompañado delautenticador.
Protocolo
• A→ T. El usuario A envía T: (IdA,IdB,RA,TSA), donde RA es un valor aleato-
rio escogido por A y TSA es un sellado de tiempo de A.
• T → A. El servidor de autenticación envía a A: (valeB,EAT(KAB,RA,L,IdB),
donde EAT es la operación de cifrar con la clave privada que comparten A y
T, L indica el periodo de validez de la clave KAB y el valeB = EBT(KAB,IdA,L).
• A → B. El usuario A envía a B: (valeB,autenticador), donde autenticador =
EKAB(IdA,TSA), creado por A y que contiene el sellado de tiempo, TSA cifrado
con la clave de sesión KAB.
• B→ A. El usuario B envía a A: EKAB(IdA,TSA)
A partir de aquí, los usuarios A y B comparten una clave de sesión KAB y están
mutuamente autenticados.
Resumen de las transacciones del protocolo:
A T
→ IdA,IdB,RA,TSA →
← valeB,EAT(k,NA,L,IdB) ←
A B
→ valeB,autenticador →
← EKAB(TSA) ←
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 23 Protocolos criptográficos
2.5. Protocolo STS
Este protocolo responde al acrónimo (station-to-station) y fue creado por Diffie,
Oorschot, Wiener como una propuesta de protocolo seguro para la autentica-
ción y el intercambio de claves, basado en un sistema criptográfico de clave
pública.
Consideraciones dediseño
Los valores p y α los escogecada usuario y mejor si sondiferentes, puesto que losataques más eficientes allogaritmo discreto se basanen la construcción de tablas apartir del conocimiento de p.En el segundo paso B envía aA su certificadoCertB = (IdB,EB,DT (B,EB)). Deeste modo A podrá calcularEB y comprobar que yB secorresponde con el hashfirmado DB{yB,yA}. Esto daautenticidad a B.El usuario B tiene que utilizarlos parámetros pasados por Aen el primer paso, en lugarde buscarlos en un directoriopúblico. En el tercer paso elcertificado de A asegura a Bque estos parámetros soncorrectos.
Supondremos que, al igual que en el protocolo de Diffie-Hellman, todos los
usuarios conocen el valor del número primo p y del elemento primitivo α ∈ Zp
y que cada usuario U sube (IdU ,yU) al directorio público TPD (recordar que cada
usuario había escogido un valor xU ∈ Z∗p , que guardaba secreto, y calculaba el
valor público yU = αxU (mod).
Protocolo
• A → B. El usuario A escoge un valor xA y calcula yA = αxA (mod p). Enton-
ces, envía a B: (α,p,yA).
• B→ A. El usuario B escoge un valor xB y calcula yB = αxB (mod p) así como
también calcula la clave de sesión KAB = yxB
A (mod p).
Entonces, envía a A: (yB,CertB,EKAB(DB{yB,yA}),
donde {yB,yA} significa el resultado de aplicar una función de hash a los
parámetros yB,yA.
• A → B. El usuario A también puede calcular la clave de sesión KAB = yxA
B
(mod p) y envía a A: (CertA,EKAB(DA{yA,yB})
En este protocolo, CertA = (IdA,EA,α,p,DT(IdA,EA,α,p)), donde DT(IdA,EA,α,p) es
la firma de una autoridad de certificación T sobre estos parámetros.
En el último paso del protocolo, el usuario A queda autenticado ante el usua-
rio B.
Resumen de las transacciones del protocolo:
A B
→ (α,p,yA) →
← yB,CertB,EKAB(DB{yB,yA}) ←
→ CertA,EKAB(DA{yA,yB}) →
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 24 Protocolos criptográficos
2.6. Otros protocolos: ISO, CCITT X.509, SSL
Para acabar este apartado, veamos otros protocolos que se pueden considerar
estándares:
1) ISO (CD 9798-3. 1991). Es equivalente al protocolo STS en el cual susti-
tuimos las exponenciales αx,αy por valores aleatorios RA,RB. Sin embargo, de
este modo obtenemos un protocolo de autenticación pero sin intercambio de
claves.
Protocolo
• A→ B. El usuario A envía RA a B.
• B→ A. El usuario B envía RA, junto con (CertB,DB({RB,RA})), a A.
• A→ B. El usuario A envía B: CertA,DA({RB,RA})
Resumen de las transacciones del protocolo:
A B
→ RA →
← RA,CertB,DB({RB,RA}) ←
→ CertA,DA{RB,RA} →
2) CCITT X.509. Es un algoritmo de intercambio de claves, con autenticación,
de tres pasos y se basa en un sistema criptográfico de clave pública.
El usuario A que quiere intercambiar una clave KAB, con B, tiene una copia
autenticada de EB.
Protocolo
• A→ B. El usuario A envía a B: (SA,CertA,DA(SA)), donde
SA = (RA,IdA,EB(KAB)), y RA es un número aleatorio escogido por A.
• B→ A. El usuario B envía a A: (SB,CertB,DB(SB)), donde
SB = (RB,IdB,EA(KAB)), y RB es un número aleatorio escogido por B.
• A→ B. El usuario A envía a B: (RB,IdB,DA(SB,IdB)).
Evidentemente, B ha podido autenticar A y descifrando: DB(EB(KAB) = KAB,
obtiene la clave de sesión KAB que empleará para comunicarse con A.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 25 Protocolos criptográficos
Resumen de las transacciones del protocolo:
A B
→ SA,CertA,DA(SA) →
← SB,CertB,DB(SB) ←
→ RB,IdB,DA(SB,IdB) →
3) SSL (Secure Socket Layer). Es un protocolo abierto creado por Netscape y
ha llegado a ser un estándar para Internet. Se implementa entre la capa de
aplicación (HTTP, Telnet, FTP,...) y la capa de transporte (TCP).
El SSL es transparente para la aplicación que lo utiliza y añade los siguientes
servicios seguros a una conexión TCP/IP:
• Cifrado de datos usando los sistemas criptográficos de clave privada: DES,
RC4.
• Autenticación, usando los sistemas criptográficos de clave pública: RSA,
DSA. Implementa tanto la autenticación mutua emisor/receptor como la
de servidor/cliente.
• Integridad de los datos mediante funciones hash MAC (message authentica-
tion code): SHA, MD5.
Fases del SSL
• Fragmentación delmensaje en bloques demedida menor que 214bytes. TCP añadefiabilidad.
• Posibilidad decompresión (opcional).
• Cálculo de un MAC.• Cifrado de los datos y del
MAC (messageauthentication code).
• Transmisión por TCP.
El protocolo SSL sigue los siguientes pasos:
1) A→ B. El usuario A envía un valor aleatorio RA a B.
2) B→ A. El usuario B envía a A: (RB,CertB,DB(RB,RA)).
3) A→ B. El usuario A envía, opcionalmente, a B: (CertA,DA(RA,RB)).
4) B→ A. El usuario B escoge una clave de sesión KAB y envía a A: (EA(KAB),R′A).
5) A→ B. El usuario A envía a B: EKAB(R′
A).
En este último paso, el usuario B cifra con la clave KAB, el valor aleatorio R′A
que le había enviado A en el paso anterior.
Resumen de las transacciones del protocolo:
Observaciones
• El paso tercero esopcional.
• En el cuarto paso, B haescogido la clave desesión, KAB.
• En el quinto paso, A, cifracon la clave KAB, el valoraleatorio RA que le habíaenviado B, en el pasoanterior.
A B
→ RA →
← RB,CertB,DB(RB,RA) ←
→ CertA,DA(RA,RB) →
← EA(KAB),R′A ←
→ EKAB(R′
A) →
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 26 Protocolos criptográficos
2.7. Protocolos de identificación de conocimiento nulo
En los protocolos de desafío-respuesta, vistos anteriormente, aunque el usua-
rio A no revele el secreto, el usuario B puede conseguir alguna información
durante el proceso.
Condiciones de unaprueba de conocimientonulo
1) Si A posee el secreto,siempre podrá convencer a Bque acepte su demostración.
2) Si A no posee el secreto,la probabilidad que engañe aB puede hacerse tan pequeñacomo se quiera, repitiendo elprocedimiento el suficientenúmero de veces.
.
Definición 2.3 (Prueba de conocimiento nulo).
Una prueba de conocimiento nulo es un proceso interactivo donde el
candidato convence al verificador, hasta un nivel aceptable, que cono-
ce, o tiene algún secreto, sin que el verificador pueda extraer ninguna
información de la prueba que no pudiera haber extraído por cualquier
otro procedimiento, con o sin la participación del candidato o, incluso,
si este miente en la prueba.
Las pruebas de conocimiento nulo adoptan la forma de una demostración
interactiva, implicando un cierto número de etapas y, en cada una de ellas, se
seguirá el siguiente protocolo:
Protocolo básico
• A → B. El usuario A quiere probar algo al verificador B y le envía algún
elemento para su identificación.
• B→ A. El verificador B presenta un desafío a A.
• A→ B. El usuario A tiene que efectuar unos cálculos privadamente y enviar
al verificador B una respuesta al desafío planteado.
Si alguna de las respuestas es incorrecta, B deduce que A no dispone del secreto
y rechaza su identidad. Por el contrario, si en todas las etapas la respuesta es
correcta, entonces B acepta que A conoce (o tiene) el secreto.
Protocolo de Fiat-Shamir
Sea n = p1 · p2, que todo el mundo puede conocer, generado por una terce-
ra parte de confianza T y que mantiene secretos los valores de los números
primos p1 y p2.
Cada usuario U elige un elemento xU ∈ Z∗n y calcula yU = x2
U (mod n). Así, la
clave secreta de A será xA y la clave pública yA, que se registra en el directorio
público de T.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 27 Protocolos criptográficos
Protocolo
• A→ B. El usuario A genera al azar un valor r ∈ Z∗n, calcula y1 = r2 (mod n)
y lo envía a B, junto con un mensaje diciendo que quiere probar su iden-
tidad.
• B→ A. El verificador B envía a A un bit, al azar: y2 ∈ {0,1}.
• A→ B El usuario A calcula y3 de la siguiente manera:
si y2 = 0, entonces y3 = r (mod n)
si y2 = 1, entonces y3 = r · xA (mod n)
y envía a B el valor y3.
Finalmente, la verificación la lleva a cabo el usuario B que comprueba que
si y2 = 0, entonces y23 = r2 (mod n) = y1
si y2 = 1, entonces y23 = r2 · yA (mod n) = y1 · yA (mod n)
Si no se cumple la verificación, B rechaza la identidad de A.
Impersonación
Un usuario C impersonando a
A puede enviar a B y1 = r2
yA
(mod n). Entonces, podríaresponder correctamentey3 = r, solo en el supuesto deque y2 = 1. Si y2 = 0 nopodrá efectuar los cálculos.Por lo tanto, solo tiene unaprobabilidad de acierto de0,5 en cada ronda.
Este protocolo tiene que llevarse a cabo unas cuantas veces. Si se repite k veces,
la probabilidad que alguien impersone a A es 2–k, y puede ser tan pequeña
como queramos, dependiente del valor de k.
Resumen de las transacciones del protocolo:
A B
→ y1 = r2 (mod n) →
← y2 ∈ {0,1} ←
→ y3 →
Ejemplo 2.5. Supongamos los valores, n = p1 · p2 = 5 · 11 = 55; la clave secreta de A,
xA = 13, y la clave pública de A, yA = x2A (mod n) = 132 (mod 55) = 4
Con estas premisas, el protocolo sigue los siguientes pasos:
• A→ B. El usuario A toma el valor r = 30 y calcula y1 = r2 (mod n) = 302 (mod 55) =
20 y lo envía a B, junto con un mensaje diciendo que quiere probar su identidad.
• B→ A. El verificador B envía a A un bit, al azar: y2 ∈ {0,1}. Supongamos y2 = 1.
• A→ B. El usuario A calcula y3.
Como que y2 = 1, entonces y3 = r · xA (mod n) = 30 · 13 (mod 55) = 5 y lo envía a B.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 28 Protocolos criptográficos
Finalmente, la verificación la lleva a cabo el usuario B, que comprueba: puesto que y2 = 1,
si y23 = r2 · yA (mod n) = y1 · yA (mod n).
Efectivamente: 20 · 4 (mod 55) = 25 = 52, y da por buena la identidad de A.
Protocolo de Schnorr
Este protocolo de identificación se basa en el problema del logaritmo discreto
y hace intervenir a una tercera parte de confianza que desempeña las siguien-
tes acciones:
Escoge dos primos p y q, de unos 1024 bits y 160 bits respectivamente, tales
que q | p – 1. También escoge un valor β, tal que 1 ≤ β ≤ p – 1, de orden q, y un
parámetro de seguridad t, tal que: t ≥ 40 y 2t ≤ q.
La autoridad T envía a cada participante, firmada mediante su clave privada,
DT(p,q,β).
Por otra parte, el usuario que se quiere identificar, A, dispone de su identifica-
ción IdA, su clave privada, que consiste en un número a tal que 0 ≤ a ≤ q – 1
y la correspondiente clave pública es v = β–a (mod p); así como también del
certificado emitido por T: CertA = (IdA,v,DT(IdA,v)).
Protocolo
A→ B. El usuario A escoge aleatoriamente un valor r, tal que 1 ≤ r ≤ (p – 1) y
envía a B el CertA y x = βr (mod p)
B→ A. Después de que B ha verificado la clave pública de A, le envía el valor
e tal que 1 ≤ e ≤ 2t .
A→ B. El usuario A envía al verificador B: y = (a · e + r) (mod q).
El verificador B acepta la identidad de A si βy · ve (mod p) = x.
Efectivamente, como β es de orden q, entonces:
βy · ve (mod p) = βa·e+r · ve (mod p) = βa·e · βr · β–a·e (mod p) = βr (mod p) = x
Resumen de las transacciones del protocolo:
A B
→ CertA,x = βr (mod p) →
← e : 1 ≤ e ≤ 2t ←
→ y = (a · e + r) (mod q) →
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 29 Protocolos criptográficos
Ejemplo 2.6.
Supongamos que una tercera parte de confianza T ha escogido:
• Los valores de los primos p = 103 y q = 17. Obsérvese que 10217
= 6.
• Para encontrar el valor de β busca un elemento primitivo en Zp; por ejemplo α = 6
y toma β = α6 (mod 103) = 100. Efectivamente, de la construcción se deriva que el
orden de β es 17.
• Para simplificar el ejemplo, omitiremos sin perder rigor el parámetro de seguridad t,t ≥ 40 y 2t ≤ q.
La autoridad T envía a cada participante copia autenticada de (p = 103,q = 17,β = 100).
Los parámetros de A, aparte del identificador IdA, son su clave privada que suponemos
a = 11 y su correspondiente clave pública v = 100–11 (mod 103) = 8. Así, el certificado
emitido por T es: CertA = (IdA,8,DT (IdA,8)).
Protocolo
A→ B. El usuario A escoge aleatoriamente un valor r = 5 y envía a B el CertA y x = 1005
(mod 103) = 66.
B → A. Después de que B ha verificado la clave pública de A, le envía el valor que ha
escogido: e = 13.
A→ B. El usuario A envía al verificador B: y = 11 · 13 + 5 (mod 17) = 12.
El verificador B acepta la identidad de A puesto que βy · ve (mod p) = 10012 · 813
(mod 103) = 64 · 30 (mod 103) = 66 que coincide con el valor de x = 66 previamen-
te calculado.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 30 Protocolos criptográficos
3. Transacciones electrónicas seguras:dinero electrónico
.
Un problema usual en el mundo de las transacciones es que un usuario A
quiera hacer una transacción con un banco, B, de forma que, de una parte, B
debe poder autenticar a A y, por otra parte, A debe tener un certificado de B
que le asegure que este no negará la transacción ya realizada.
El problema es fácil de resolver si utilizamos las firmas electrónicas como sus-
titutos del dinero, como propone David Chaum (a finales de los ochenta).
3.1. Protocolo de Chaum
Supongamos un comprador, A, que quiere interactuar con B, que ahora consi-
deraremos que es el banco, para pedirle poner disponer de una cierta cantidad
de dinero que, posiblemente más tarde, querrá utilizar para poder pagar algu-
na compra.
Protocolo
• A → B. El usuario A genera, al azar, un número m grande y crea un docu-
mento personalizado, docAB, en el cual explica al banco que quiere dispo-
ner de X e. Firma el número escogido, calculando DA(m) y usando la clave
pública de B le envía: (IdA,EB(DA(m)),docAB)
• B → A. El banco recibe los mensajes, identifica A y lee docAB. Con la clave
pública de A, y con su clave privada, puede recuperar el número m. Ahora
ya puede descontar los X e de la cuenta de A. El banco firmará el número
m, añadiendo un documento docBA firmado, DB(docBA). Enviará a A estas
dos firmas, cifradas con la clave pública de A: (EA(DB(m)),EA(DB(docBA))).
Al usuario A le interesa tener (DB(docBA), y no solo docBA, para poder demostrar
ante terceros, en caso necesario, que el banco le ha descontado X e de su
cuenta y que estos corresponden a su número m.
Si ahora hacemos intervenir a un vendedor V, cuando A va a comprar a V, el
correspondiente protocolo seguirá los siguientes pasos:
• A → V. El comprador A envía a V: (IdA,DB(m),DB(docBA)). El vendedor
podrá autenticar los mensajes firmados por B y conocer la identidad del
comprador A y el hecho de que dispone de un valor de X e.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 31 Protocolos criptográficos
Nota
El comprador A podría enviar estos valores cifrados, con EV , y firmados con DA:
DA(EV (DB(m))) y DA(EV (DB(docBA))).
• V → B. El vendedor V envía al banco: DV(DB(m)). El banco comprueba que
el mensaje es correcto (correspondiente a un número firmado previamente
por el propio banco); deposita en la cuenta de V los X e y escribe en una
lista de números caducados el número m, para evitar que le vuelva a ser
presentado otra vez.
• B→ V. El banco envía firmado un docBV de la transacción hecha al vende-
dor V: DB(docBV).
A partir de este momento, V ya puede dar la mercancía a A, junto con un
documento firmado, DV(docVA) de haber cobrado del banco.
Resumen de las transacciones del protocolo:
A B
→ IdA,EB(DA(m)),docAB →
← EA(DB(m)),EA(DB(docBA)) ←
A V
→ IdA,DB(m),DB(docBA) →
B V
← DV(DB(m)),DV(DB(docBA)) ←
→ DB(docBV) →
Ejemplo 3.1.
Utilizemos como parámetros de los criptosistemas RSA del usuario A, del banco B y del
vendedor V, respectivamente:
• nA = 7 · 17 = 119 y eA = 5; entonces φ(nA) = 6 · 16 = 96 y dA= 5–1 (mod 96) = 77.
Por lo tanto: clave pública (eA,nA) = (5,119) y clave secreta(dA,nA) = (77,119).
• nB = 5 · 11 = 55 y eB = 3; entonces φ(nB) = 4 · 10 = 40 y dB= 3–1 (mod 40) = 27.
Por lo tanto: clave pública (eB,nB) = (3,55) y clave secreta (dB,nB) = (27,55).
• nV = 3 · 19 = 57 y eV = 7; entonces φ(nV ) = 2 · 18 = 36 y dV= 7–1 (mod 36) = 31.
Por lo tanto: clave pública (eV ,nV ) = (7,57) y clave secreta (dV ,nV ) = (31,57).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 32 Protocolos criptográficos
El protocolo de Chaum seguirá los siguientes pasos:
Protocolo
El usuario A hará:
Generar al azar m = 8.
Calcular DA(m) = mdA (mod nA) = 877 (mod 119) = 43.
Generar un documento personalizado, docAB en el que explica al banco que quiere dis-
poner de 300 e.
• A→ B. El comprador A enviará al banco: (IdA,EB(DA(m)),docAB).
Es decir: su identidad, EB(DA(m)) = EB(43) = 433 (mod 55) = 32 y el documento
docAB.
El banco, B, una vez recibido EB(DA(m)) = 32, hará:
Aplicar DB(EB(DA(m))) = DB(32) = 3227 (mod 55) = 43(= DA(m)).
Aplicar EA(DA(m)) = EA(43) = 435 (mod 119) = 8(= m).
Descontar 300 e de la cuenta de A y firmar el número m:
DB(m) = DB(8) = 827 (mod 55) = 2.
Además, el banco redacta un documento, docBA y lo envía firmado a A: DB(docBA).
• B→ A. El banco envía a A:
EA(DB(m)) = EA(2) = 25 (mod 119) = 32.
EA(DB(docBA)).
Supongamos ahora la intervención del vendedor V, con cuentas en el mismo ban-
co B.
Si A hace un pedido al vendedor por el valor de 300 e, le entrega DB(m) = 2 y
DB(docBA).
• V → B. El vendedor entrega al banco:
DV (DB(m)) = DV (2) = 231 (mod 57) = 41 y DV (DB(docBA)).
El banco hará:
Comprobar que el mensaje es correcto EV (DV (DB(m))) = DB(m) y que también lo es
el documento docVB.
Depositar en la cuenta del vendedor 300 e.
Escribir en una lista de números caducados el número m para evitar que se pueda
volver a usar.
• B → V. El banco envía firmado un docBV de la transacción hecha al vendedor V:
DB(docBV )
A partir de este momento, V ya puede dar la mercancía a A, junto con un documento
firmado, DV (docVA) de haber cobrado del banco.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 33 Protocolos criptográficos
3.2. Transacciones sin rastro. Firmas digitales ciegas de Chaum
En el protocolo que acabamos de describir hay autenticidad pero no privacidad.
El banco sabe (por el número m del billete) que A ha comprado a V y, en
general, podrá seguir el rastro de las operaciones comerciales de A.
Para obviar este problema, D. Chaum (1992) propone una variante del proto-
colo usando firmas digitales ciegas, que consiste en hacer firmar al banco un
documento que contiene un número escondido.
De este modo, el usuario A sacará a la luz el número y lo hará servir junto
con el documento firmado por el banco, cuando le convenga. Por otra parte,
el banco no sabrá a quién corresponden los números de los billetes que se
utilizan.
Nivel de seguridad de lasfirmas ciegas
Las firmas ciegas garantizanla integridad,confidencialidad yautenticidad de los datos, almismo tiempo que segarantiza el anonimato delcomprador.El comprador está protegidoante posibles actuacionesfraudulentas de falta deentrega de mercancías oservicios por parte devendedores, puesto que encualquier momento elcomprador puede revelar suidentidad y, en este caso,seguir la traza del flujo deldinero.
El método de Chaum es válido para cualquier sistema criptográfico de clave
pública (como RSA) que cumpla: EU(xy) = EU(x)EU(y) y DU(xy) = DU(x)DU (y)
para cualquier usuario U.
Vamos a desarrollar este protocolo suponiendo que estamos usando el cripto-
sistema RSA.
Protocolo
• A → B. El usuario A, antes de dar el número m al banco, selecciona otro
número grande, k, escogido al azar y del cual puede calcular k–1 (mod nB).
El usuario A calcula EB(k) y envía: m · EB(k) (mod nB), firmado y secreto a
B. Es decir, envía a B: EB(DA(m · EB(k)).
• B→ A. El banco descifra y autentica el mensaje recibido y obtiene m ·EB(k)
(mod nB). A continuación firma este mensaje calculando DB(m · EB(k)) =
k · DB(m) (mod nB). (Observar que el banco no conoce el número m que
acaba de firmar, solo conoce k ·DB(m) (mod nB)).
Ahora el banco devuelve, como en el caso general, un documento a A,
docBA, y también el número firmado k ·DB(m) (mod n).
El usuario A calcula k · DB(m) · k–1 (mod nB) = DB(m) y obtiene un número
firmado por el banco que, cuando el vendedor lo presente al banco, será hecho
efectivo y, además, el banco desconocerá al propietario del número del billete.
Resumen de las transacciones del protocolo:
A B
→ EB(DA(m · EB(k))) →
← k ·DB(m) (mod nB),docBA ←
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 34 Protocolos criptográficos
Simplificación
Para más claridad en lospasos del protocolo, noshemos ahorrado firmarlo ycifrarlo.
El banco no conoce elnúmero que firma
Con esta operación, el bancoha firmado el mensajeoriginal m = 65, sin conocersu valor. Observar que 21 esel mismo valor que obtendríael banco si hubiera firmadocon su clave privada elmensaje m = 65: Es decir:6561 (mod 851) = 21.
Ejemplo 3.2. (Firma ciega de Chaum)
A desea que el Banco, B, le firme el mensaje m = 65.
Supongamos que las claves pública y privada de B son: nB = 851, eB = 13, dB = 61.
(Los parámetros de B son: pB = 23, qB = 37, φ(nB)= 792, todos ellos guardados en un lugar
seguro, junto con dB).
Supongamos que A escoge k = 51, y calcula 51–1 (mod 851) = 267.
• A→ B. El usuario A calcula:
M = m · keB (mod nB) = 65 · 5113 (mod 851) = 65 · 458 (mod 851) = 836 y envía M al
Banco.
• B→ A. El Banco hace:
firma este mensaje recibido, M, con su clave privada:
MdB (mod n)B = 83661 (mod 851) = 220,
y lo envía a A, junto con un documento docBA.
El usuario A, como conoce k–1 (mod nB) = 267, puede calcular: 276·220 (mod 851) = 21,
que es la firma del banco de m, sin que el banco conozca m.
3.3. Sistemas de pago electrónicos
Con la aparición y generalización del comercio electrónico se ha hecho nece-
saria la creación de sistemas electrónicos de pago adaptados a la situación no
presencial de los usuarios involucrados.
Los sistemas de pago electrónico todavía utilizan, mayoritariamente, dinero
asociado a una tarjeta emitida por una entidad financiera, pero hoy ya pode-
mos hablar de dinero electrónico, en el sentido que acabamos de ver, que lo
hace un sistema de pago más adecuado, y más seguro, en las transacciones
electrónicas.
Los sistemas de pago electrónico en la actualidad son, básicamente:
• Cheques electrónicos. Sustitutos de los cheques de papel, consisten en un
mensaje con una firma digital, representando un valor monetario, que se
hace efectivo a través de una tercera parte de confianza y hace uso de las
redes interbancarias existentes.
• Moneda electrónica. Sustituta de la moneda física que debe preservar el
anonimato del comprador, permitiendo realizar pagos que no queden re-
gistrados y no vinculen a los usuarios con sus compras. Cuando la transfe-
rencia se hace off-line, se deberá garantizar la que sea posible la transferen-
cia y la seguridad frente a la falsificación o del uso de la misma moneda en
más de un pago.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 35 Protocolos criptográficos
• Tarjeta de crédito. Aun cuando todavía es el sistema de pago más utiliza-
do, los receptores se pueden poner en contacto con el banco para verificar
la disponibilidad de fondo, aunque, normalmente, no se realiza la verifi-
cación de la identidad del usuario. A diferencia de la moneda electrónica,
las tarjetas de crédito identifican a su propietario y, además, los pagos se
pueden vincular entre ellos.
• Micropagagos. Diseñados especialmente para reducir los costes de comu-
nicación, almacenamiento y procesamiento relacionados con el pago cuan-
do las cantidades a transferir son pequeñas. De este modo se permite un
cierto relajamiento de las medidas de seguridad, puesto que los riesgos es-
tán más controlados, y en la mayoría de casos el anonimato del usuario
que realiza el pago se sacrifica para reducir costes.
Los sistemas de pago vienen definidos por las reglas mediante las cuales los
participantes en una operación de compra/venta (comprador, bancos emisor
y adquirente, comercio, pasarela de pago y autoridad certificadora) intercam-
bian dinero y productos o servicios.
Los procedimientos, o pasos, en los sistemas de pago con moneda electrónica
son, básicamente:
1) Establecimiento de la cuenta. Es una operación que se realiza una sola
vez, en la cual se vincula la identidad o el seudónimo del comprador a la
nueva cuenta. El comprador dispondrá de un par de claves correspondientes a
un sistema criptográfico de clave pública y de un certificado autenticando su
clave pública.
2) Retirada de fondo: obtención de la moneda electrónica. La entidad fi-
nanciera emisora carga en la cuenta del comprador el valor solicitado pre-
viamente para llevar a cabo una compra o el valor de la moneda electrónica
solicitada. La moneda electrónica puede ser de débito si se extrae su valor de
la cuenta del usuario antes del pago (este procedimiento requiere la autenti-
cación del usuario), o de crédito si el pago se hace posteriormente y, en este
caso, la identificación de la cuenta del pagador se realiza durante el depósito.
3) Pago. El comprador entrega la información necesaria y suficiente al comer-
cio para hacer el pago de los bienes que quiere comprar. También puede dar
esta información a la pasarela de pago.
4) Depósito. La entidad financiera adquirente recibe la información y cobra
de la entidad emisora, a través de la red financiera una vez ha comprobado
que no se ha depositado dos veces la misma moneda. Finalmente, ingresa el
valor de la compra, o de las monedas electrónicas implicadas, en la cuenta del
comercio. En sistemas que permiten la transferencia de las monedas electró-
nicas también puede optar por transferir la moneda a un tercero.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 36 Protocolos criptográficos
Una primera clasificación de los sistemas de pago puede venir marcada por
el importe a transferir. Así hablaremos de micropagos, cuando el importe de
la operación es inferior a los 10 e. Por encima de esta cantidad se hablará
de macropagos. Aunque todo sistema de pago debe satisfacer una serie de
requisitos de seguridad, es obvio que en el caso de micropagos estos serán
más laxos para que el coste de la seguridad sea proporcionado al valor que
se transfiere. No es lo mismo proteger un pago de 10 e, que proteger uno de
100.000 e.
Una segunda clasificación es la de sistemas on-line y sistemas off-line. Los pro-
tocolos on-line exigen el acceso a un servidor para cada transacción.
Para los sistemas de pago on-line, el concepto de dinero electrónico, propuesto
por D. Chaum, permite conjugar las prestaciones que ofrecen las redes tele-
máticas con las propiedades intrínsecas de los sistemas de pago tradicional:
anonimato, privacidad y dificultad de falsificación. La diferencia entre el di-
nero electrónico y el de curso legal actual es su soporte, que pasa de ser físico
a una cadena de bits.
La no falsificación, o evitar el doble uso, del dinero electrónico exige una
verificación, contra una cierta base de datos, para asegurarse de que no haya
sido utilizado previamente. Si la verificación se hace off-line necesita mayor
protección del anonimato, es decir, que no se pueda establecer ningún vínculo
entre el dinero electrónico y la identidad del propietario, que si se hace on-line.
Tal como hemos visto antes, estos sistemas se basan en firmas ciegas.
En general, el dinero electrónico está pensado para ser utilizado en Internet
o, actualmente, en sistemas basados en terminales móviles. Se trata de reem-
plazar las monedas y billetes de curso legal por un sistema informacional,
manteniendo las prestaciones de anonimato y no trazabilidad utilizando crip-
tografía de clave pública. Los billetes y monedas electrónicas se almacenan
localmente, pero se requiere que el usuario tenga una cuenta bancaria asocia-
da, a partir de la que se descontará la cantidad que corresponda al billete o
moneda electrónica.
El funcionamiento general de este sistema es parecido al que se ha descrito en
el protocolo de Chaum:
1) El comprador solicita monedas electrónicas. Estas se identifican con un nú-
mero de serie. Este número permite garantizar la unicidad puesto que permite
detectar duplicidades. El anonimato del propietario de las monedas electróni-
cas se protege mediante firmas ciegas.
2) Una vez el banco ha descontado el valor correspondiente de las monedas
electrónicas entregadas al comprador, estas se almacenan en el terminal del
comprador.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 37 Protocolos criptográficos
3) Cuando el comprador hace el pedido de bienes o servicios al vendedor, le
entrega las monedas electrónicas correspondientes al valor de la compra.
4) El vendedor, antes de servir el pedido, entrega las monedas electrónicas al
banco y le solicita su validación.
5) El servidor del banco accede a una base de datos donde consta el número
de serie de todas las monedas que han sido utilizadas. Con esta operación se
detecta si ha habido doble uso. Si no hay duplicidad, se responde al vendedor
sobre la autenticidad de las monedas electrónicas y, si se realiza la operación
de compra, automáticamente se ingresa el importe en su cuenta y se añade el
número de serie correspondiente a la base de datos correspondiente.
6) El vendedor entrega los productos al comprador.
A nivel de seguridad, se garantiza la integridad, confidencialidad y autenti-
cidad, al mismo tiempo que se facilita el anonimato del comprador. El com-
prador está protegido ante posibles actuaciones deshonestas de vendedores en
cuanto a no entregas de productos se refiere, puesto que en un momento da-
do el comprador puede desvelar su identidad y en este caso se podría trazar el
flujo del dinero.
Resumen de las transacciones del protocolo:
Comprador Banco
→ solicita monedas electrónicas →
← descuento del valor de las monedas ←
Comprador Comercio
→ pedido de bienes o servicios →
Comercio Banco
→ validación de las monedas electrónicas →
← valída o rechaza ←
Comercio Comprador
→ si el banco valída, sirve bienes o servicios →
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 38 Protocolos criptográficos
4. Protocolos de transferencia inconsciente.
La transferencia inconsciente o transcordada (oblivius transfer) consiste en la
transferencia de un secreto entre dos usuarios A y B de forma que la proba-
bilidad de que B lo obtenga es de un 50 %, sin que A pueda saber si B lo ha
obtenido, o no.
Estos tipos de protocolos dan lugar a otros protocolos más complejos, como
los de compromiso de bits o los de prueba de conocimiento nulo y, en
general, a los protocolos que permiten la firma electrónica de contratos.
4.1. Protocolo de Rabin
El secreto consiste en la factorizació del valor nA de la clave pública del sistema
RSA de A.
Protocolo
• B → A. El usuario B escoge un valor x, 1 ≤ x ≤ nA – 1, y envía a A: z = x2
(mod nA)
• A→ B. El usuario A calcula las cuatro raíces cuadradas de:
z (mod nA) = {x,nA – x,y,nA – y}
y envía una de ellas a B (esto solo lo puede hacer A, porque conoce los
valores pA y qA, con los cuales ha calculado nA).
Sea v la raíz enviada a B.
El usuario B comprueba si v coincide con y, o con nA – y. Si coincide, se podrá
factorizar nA; de lo contrario no se podrá.
Resumen de las transacciones del protocolo
A B
← z = x2 (mod nA) ←
→ v = z–1/2 (mod nA) →
Nota
Hay una equivalencia computacional entre factorizar nA = pA · qA y calcular raíces cua-
dradas en ZnA , como queda justificado en el cuadro y en el teorema siguientes.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 39 Protocolos criptográficos
.
Cuadrados y raíces cuadradas en Zp, donde p es un número primo
Si β ∈ Zp puede pasar que exista, o no, x ∈ Zp tal que x2 = β.
En el primer caso se dice que β es un residuo cuadrático En el segundo,
se dice que β es un residuo no-cuadrático.
A excepción de 0 ∈ Zp, hay exactamente p–12 residuos cuadráticos (QR)
y p–12 residuos no cuadráticos (QNR) en Zp.
Si β ∈ Zp, es βp–12 =
8
>
>
<
>
>
:
1 si β es QR
–1 si β es QNR
• Es computacionalmente eficiente (hay un algoritmo determinista-
polinomial) saber si β ∈ Zp es QR o QNR.
• No es computacionalmente eficiente encontrar un elemento QNR.
De todos modos, sí hay algoritmos no deterministas de complejidad
polinómica que resuelven el problema de manera sencilla.
• Es computacionalmente eficiente calcular la raíz cuadrada de un ele-
mento QR.
Cuadrados y raícescuadradas en Zn, donden = p1 · p2
Hay exactamente n–14
elementos QR en Zn y cadauno de ellos tiene,exactamente, cuatro raícescuadradas.Ejemplo: En Z15, el elemento4 ∈ Z15 es un QR y tienecuatro raíces, que son:{2,13,7,8}.Los QR en Zn, son aquelloselementos en los que elmódulo p1 y, también, elmódulo p2, son QR.
.
Teorema 4.1. Si n = p1 · p2, donde p1 y p2 son números primos diferen-
tes e impares, y si α y γ son raíces cuadradas, esencialmente diferentes,
(es decir α 6= ±γ), de un cierto QR, entonces:
mcd(α + γ,n) = p1, o mcd(α + γ,n) = p2
Probabilidad de que B
conozca nA es 1/2
Del teorema también sededuce que la probabilidadde que B conozca nA = p1 · p2
es 1/2 puesto que el espaciode muestras tiene 4
resultados posibles (las 4
raíces cuadradas de z), de lascuales solo 2 sirven parafactorizar nA (y y nA – y). Así,si cada bit de un secreto setransmite mediantetransferencia inconsciente, laprobabilidad de que B puedaconocer el secreto es de 2–t ,si t es el número de bits delsecreto.
Ejemplo 4.1.
Supongamos nA = 5 · 11 = 55.
• B→ A. El usuario B escoge un valor x = 13 y envía a A: z = 132 (mod 55) = 4.
• A → B. El usuario A calcula las cuatro raíces cuadradas de 4 (mod 55) = {13,55 –
13,2,55 – 2} = {13,42,2,53} y envía una de ellas a B.
Sea v = 2 la raíz enviada.
El usuario B comprueba si v = 2 coincide con y, o con 55 – y. Como coincide, se podrá
factorizar nA = 55 puesto que mcd(13 + 2,55) = mcd(15,55) = 5.
Igual hubiera pasado si v = 53, puesto que mcd(13 + 53,55) = mcd(66,55) = 11, que es un
factor de nA = 55.
Si se hubiera enviado v = 42 no se hubiera podido factorizar nA, puesto que mcd(13 +
42,55) = mcd(55,55) = 55.
Igualmente para v = 13, puesto que mcd(13 + 13,55) = mcd(26,55) = 1.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 40 Protocolos criptográficos
4.2. Protocolos de compromiso de bits
En este protocolo, un usuario A se compromete frente a otro usuario B con
un valor, de tal manera que A no lo pueda cambiar y B no lo pueda descubrir
hasta que el propio A no haya abierto el compromiso.
Es un protocolo útil en otros protocolos, como el de lanzamiento de monedas
o el de pruebas de conocimiento nulo, y debe cumplir las siguientes propie-
dades:
• Se debe poder comprometer cualquiera de los dos valores posibles para
cada bit.
• De la apertura del compromiso, B solo obtendrá el valor del bit compro-
metido.
• No se debe poder modificar el valor comprometido, aunque se cambie la
manera de abrir el compromiso.
• El usuario B no debe poder conocer nada sobre la manera de abrir los com-
promisos aunque haya visto abrir algunos.
Otros protocolos decompromiso de bits
En la literatura hay otrasimplementaciones deprotocolos de compromisode bits, usando sistemascriptográficos de clavesecreta, logaritmos discretos,funciones de hash, residuoscuadráticos o, incluso, grafosno isomorfos.
1) Protocolo: Usando transferencia inconsciente
Para comprometer un bit b, el usuario A escoge n bits aleatorios bi, tales que
b1 ⊕ b2 ⊕ · · · ⊕ bn = b, y se siguen los tres pasos siguientes, donde ⊕ es la
operación XOR.
Protocolo
1) Compromiso: El usuario A envía a B cada bit bi por orden, mediante trans-
ferencia inconsciente.
2) Apertura: El usuario A envía a B todos los bits bi.
3) Verificación: El usuario B compara los bits bi, recibidos dentro del plazo
del compromiso, con los correspondientes de la apertura.
Nota
La probabilidad de fraude, por parte de A, es menor que 12
. Si se ejecuta el protocolo k
veces, la probabilidad de fraude será menor que 2–k.
2) Protocolo: Lanzamiento de moneda por teléfono
El protocolo de Rabin puede ser utilizado para el problema de tirar una mone-
da al aire, y resolver una apuesta entre dos usuarios A y B de manera telemá-
tica.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 41 Protocolos criptográficos
Apuesta
Cara ⇐⇒ B puede factorizar n
Cruz ⇐⇒ B no puede factorizar n
Protocolo
A→ B: El usuario A construye, al azar, dos números primos, diferentes y gran-
des: p1,p2 y calcula n = p1 · p2. Envía n al usuario B.
B → A: El usuario B escoge, al azar, un elemento primitivo, α ∈ Zn, calcula
β = α2 (mod n) y envía β al usuario A.
A → B: El usuario A calcula las cuatro raíces cuadradas de β y envía una al
usuario B. Sea γ la raíz enviada.
B→ A: El usuario B le dice a A si ha salido CARA o CRUZ.
Tal como hemos visto antes, si γ 6= ±α, el usuario B podrá factorizar n. De lo
contrario, si γ = ±α, no podrá factorizar n.
Resumen de las transacciones del protocolo:
A B
→ n →
← β = α2 (mod n) ←
→ γ = β–1/2 (mod n) →
← CARA o CRUZ ←
Este protocolo fue propuesto por Mario Blum (1982) y se trata, tal como he-
mos visto antes, de resolver una apuesta entre dos usuarios A y B, distantes
entre sí, mediante el lanzamiento de una moneda a cara o cruz. Si uno de los
dos hace trampa, sin necesidad de un tercero el otro lo puede detectar.
Puede haber dos casos posibles de trampa:
trampa de A
• El usuario A lanza la moneda y anota el resultado.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 42 Protocolos criptográficos
• El usuario B hace su apuesta y se la dice a A.
• El usuario A le dice a B, que justamente ha salido lo contrario.
trampa de B
• El usuario A lanza la moneda y anota el resultado.
• El usuario B hace su apuesta y se la dice a A.
• El usuario A le dice a B, que justamente no ha salido lo que él había dicho.
• El usuario B niega su primera apuesta y replica a A diciéndole que precisa-
mente lo que ha salido era lo que él había apostado.
¿Cómo resolver el problema de manera que si uno hace trampa el otro lo
detecte? Las soluciones pasan por el protocolo de transferencia inconsciente
de Rabin que hemos visto, o el protocolo propuesto por Blum, basado en una
función unidireccional sobre un conjunto de números tal que la mitad de
ellos son pares y la otra mitad impares.
Números de Blum
Son los números n = p1 · p2
tales que ambos primos p1 yp2 son congruentes con 3 delmódulo 4.En este caso, aparte del ceroy de p1 y p2, la mitad de losresiduos cuadráticos en Zn
son pares y la otra mitad sonimpares. Además, el valor dez identifica y, ya que de lascuatro raíces cuadradas de z,únicamente hay una que, asu vez, sea un residuocuadrático.
El esquema general del protocolo, una vez el usuario A ha escogido un número
de Blum: n = p1 · p2 es:
Protocolo
• A→ B. El usuario A escoge un valor x ∈ Zn y calcula y = x2 (mod n) y z = y2
(mod n). El usuario A envía z a B.
• B → A. El usuario B, una vez recibido z, apuesta por la paridad de y (es
decir, si es o no un número par).
• A→ B. El usuario A le informa si ha acertado o no. Además le muestra los
valores de x y y, al mismo tiempo que le demuestra que n es un número de
Blum.
El usuario B comprueba que y = x2 (mod n) y z = y2 (mod n).
Ambos usuarios A y B han actuado con un 50 % de probabilidad de engaño en
el primero y el segundo paso del protocolo.
Resumen de las transacciones del protocolo:
A B
→ z →
← paridad(y) ←
→ {Sí o No},x,y,p1,p2 →
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 43 Protocolos criptográficos
Ejemplo 4.2.
El usuario A escoge un número de Blum, por ejemplo: n = 7 · 11 = 77.
• A→ B. El usuario A escoge un valor x = 13 y calcula:
y = x2 (mod n) = 132 (mod 77) = 15 y
z = y2 (mod n) = 152 (mod 77) = 71.
A envía z a B.
• B→ A. El usuario B, una vez recibido z, apuesta por la paridad de y.
Suponemos que apuesta por y par.
• A→ B. El usuario A le informa de que no ha acertado en la apuesta.
Para demostrarlo, le envía los valores de x = 13, y = 15 y n = 7 · 11 = 77.
El usuario A le demuestra que n es un número de Blum y B puede verificar el valor de
z, a partir de los valores de x y y recibos.
En este caso, B comprueba que se había equivocado en su apuesta.
4.3. Firma electrónica de contratos: Protocolo de Even
Se trata de permitir la firma electrónica de un documento entre dos usuarios
A y B, sin intermediarios, de forma que se cumplan estas dos condiciones:
• Que ambos usuarios queden obligados a culminar la firma, solo a partir de
un punto del protocolo.
• Que la firma no pueda falsificarse y, además, pueda ser comprobada por el
otro usuario.
1) Protocolo básico
Suponemos que el usuario A dispone de dos claves secretas y las correspon-
dientes claves públicas de un sistema criptográfico de clave pública: (EA1,DA1);
(EA2,DA2).
Suponemos que el usuario B elige una clave secreta KB.
Transferenciainconsciente
Los pasos de este protocolose corresponden básicamentecon una transferenciainconsciente.
• A→ B. El usuario A envía a B sus dos claves públicas EA1 y EA2.
• B → A. El usuario B escoge una de las dos claves y cifra su clave KB, en-
viando el resultado a A.
• A→ B. El usuario A escoge una de sus dos claves privadas y descifra lo que
ha recibido de B.
• A→ B. El usuario A cifra el primer bloque del mensaje a firmar, usando la
supuesta clave encontrada en el paso anterior, y lo envía a B.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 44 Protocolos criptográficos
El usuario B descifrará con la clave KB el bloque de firma recibido.
El usuario A repetirá el tercero y cuarto paso para cada bloque de firma y B
siempre descifrará con la clave KB el bloque de firma recibido.
Cuando se hayan acabado todos los bloques de firma, el usuario A repetirá el
cuarto paso, utilizando ahora la otra clave privada, y B descifrará con la clave
KB el bloque de firma recibido.
.
Si A y B han escogido al azar la misma clave (con una probabilidad del
50 %), B descifrará un mensaje con sentido en la primera ronda. Si no,
recibirá un mensaje sin sentido y tendrá que esperar hasta recibir el
último bloque de la segunda ronda para obtener el texto en claro.
Sin embargo, A no tiene ninguna manera de saber cuándo B ha podi-
do descifrar correctamente el criptograma, lo cual le fuerza a acabar el
protocolo.
2) Protocolo de Even
Este protocolo se basa en sistemas criptográficos de clave privada y sigue los
siguientes pasos:
Inicialmente, tanto el usuario A como el usuario B escogen entre un conjunto
de 2n claves de un sistema criptográfico de clave privada:
El usuario A escoge el conjunto {K1,K2, · · · ,Kn,Kn+1, · · · ,K2n}, tomadas en pare-
jas: {(K1,Kn+1),(K2,Kn+2), · · · ,(Kn,K2n)}.
El usuario B escoge el conjunto {K∗1 ,K∗
2 , · · · ,K∗n ,K∗
n+1, · · · ,K∗2n}, tomadas en pa-
rejas {(K∗1 ,K∗
n+1),(K∗2 ,K∗
n+2), · · · ,(K∗n ,K∗
2n)}.
Protocolo
• A→ B. El usuario A cifra un mensaje MA, conocido por B, con las 2n claves:
EK1(MA),EK2
(MA),...,EK2n(MA) y envía los 2n criptogramas ordenados a B.
El usuario A se comprometerá, más adelante, a firmar el contrato si B puede
presentarle algún par de claves (Ki,Kn+i).
• B→ A. El usuario B cifra un mensaje MB, conocido por A, con las 2n claves:
E∗K1
(MB),E∗K2
(MB),...,E∗K2n
(MB) y envía los 2n criptogramas ordenados a A.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 45 Protocolos criptográficos
El usuario B se comprometerá, más adelante, a firmar el contrato si A puede
presentarle algún par de claves (K∗i,K∗n+i).
• A → B. El usuario A envía a B cada par (Ki,Kn+i) ordenados mediante una
transferencia inconsciente; es decir, enviando Ki o Kn+i con igual probabi-
lidad.
• B → A. El usuario B hará lo mismo, enviando a A, ordenadamente, los
pares (K∗i,K∗n+i)
Nota
En este punto A y B tienen la mitad de las claves uno del otro.
Si la longitud de cada clave es de L bits, entonces los usuarios A y B realizan el
siguiente bucle, 1 ≤ i ≤ 2n, para las claves Ki y K∗i que no se han usado en los
pasos anteriores:
.
Algoritmo 4.2
for 1 ≤ j ≤ L
begin
A envía a B el bit j-ésimo de todas estas claves Ki
B envía a A el bit j-ésimo de todas estas claves K∗i
end
Observar que el algoritmo es parecido al del protocolo de compromiso bit a
bit. Al realizar este bucle completo, A y B tienen las 2n claves uno del otro y
se supone que pueden firmar el contrato.
Resumen de las transacciones del protocolo:
A B
→ EK1(MA),EK2
(MA),...,EK2n(MA) →
← E∗K1
(MB),E∗K2
(MB),...,E∗K2n
(MB) ←
→ {Ki o Kn+i} →
← {K∗i o K∗
n+i} ←
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 46 Protocolos criptográficos
4.4. Protocolo de correo electrónico certificado
Pese a que los sistemas actuales de correo electrónico permiten el acuse de
recibo por parte del receptor (el emisor pide al receptor que le comunique que
ha recibido el correo que le ha enviado, sin que esto implique la aceptación
de su contenido); cuando enviamos un correo electrónico, ¿cómo podemos
estar seguros de que el mensaje enviado ha llegado al destinatario autorizado
y solo él conoce el contenido?
La propuesta de este protocolo es la implementación del correo electrónico
certificado.
Así, si un usuario A desea enviar un mensaje electrónico como correo certi-
ficado a un usuario B, le descubrirá el mensaje, es decir, le enviará la clave,
solo después de que el usuario B le haya enviado el acuse de recibo correspon-
diente.
Esto es tal como sucede con el correo regular certificado; antes de ver el men-
saje hemos firmado que hemos recibido el sobre que lo contiene.
El protocolo que sigue es muy parecido al que hemos visto de Even para la
firma de contratos.
Protocolo
El usuario A escoge aleatoriamente n + 1 claves {a0,a1, · · · ,an} de un sistema
criptográfico de clave privada. Las claves {a1, · · · ,an} serán la parte izquierda
de la clave KEAi, y la parte derecha, KDAi
será {an+1,an+2, · · · ,a2n}, donde an+i =
a0 ⊕ ai, para 1 ≤ i ≤ n.
Los usuarios A y B se ponen de acuerdo en un mensaje de validación V.
El usuario A, con la clave a0 cifra el documento M: C0 = Ea0(M) y después
cifra el mensaje de validación V con las 2n claves secretas; {KEAi, KDAi
} para
1 ≤ i ≤ n:
Cifrado de validación de la parte izquierda: VEAi= EKEAi
(V).
Cifrado de validación de la parte derecha: VDAi= EKDAi
(V).
• A→ B. El usuario A envía a B, el valor C0 y los pares ordenados (VEAi,VDAi
),
para 1 ≤ y ≤ n.
De forma similar, el usuario B genera n pares de claves KEBiy KDBi
. También
generará n pares de mensajes acuse de recibo de la parte izquierda: REi y
acuse de recibo de la parte derecha: RDi y cifra las parejas (REi,RDi) en el
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 47 Protocolos criptográficos
sistema criptográfico de clave privada, con las claves (KEBi,KDBi
) obteniendo
(EBi,DBi
).
• B→ A. El usuario B envía a A las parejas ordenadas (EBi,DBi
).
• A → B. Mediante una transferencia inconsciente, el usuario A envía a B
una de las dos claves secretas: KEAio KDAi
.
• B → A. Mediante una transferencia inconsciente, el usuario B envía a A:
KEBio KDBi
.
Este proceso se repite hasta haber enviado los n valores de las claves de cada
usuario.
Resumen de las transacciones del protocolo:
A B
→ C0,{VEAi,VDAi
} →
← {(EBi,DBi
)} ←
→ {KEAio KDAi
} →
← {KEBio KDBi
} ←
Comprobación:
• El usuario B usa las claves enviadas por A, KEA1 o KDA1, para comprobar
que al descifrar DKEAi(V) o DKDAi
(V) obtiene el mensaje de validación V.
• El usuario A usa las claves enviadas por B, KEBio KDBi
, para comprobar que
al descifrar DKEBi(EBi
) o DKDBi(DBi
) obtiene siempre REi o RDi.
Estos pasos son en realidad un protocolo de compromiso de bit entre los
usuarios A y B.
Verificación:
• El usuario A ha obtenido todas las claves de B y comprueba todas las parejas
de acuse de recibo; es decir, comprueba la parte izquierda y la parte derecha
del acuse de recibo.
• El usuario B ha obtenido todas las claves de A y comprueba que todos los
envíos de A contienen el mensaje de validación V.
Realmente, el usuario A habrá debido mostrar todas las claves a B, para que
B pueda comprobar que A ha usado el cálculo an+i = a0 ⊕ ai.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 48 Protocolos criptográficos
• Dado que el usuario B dispone de todas las claves de A, puede calcular:
a0 = KEAi⊕ KDAi
.
Observar que para el cálculo anterior cualquiera de las parejas de acuse de
recibo es válida.
• El usuario B descifra el criptograma C0, enviado en el segundo paso, recu-
perando, así el documento M: Da0(C0) = M.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 49 Protocolos criptográficos
5. Esquemas umbral y reparto de secretos.
Los protocolos para compartir secretos tratan de resolver el siguiente proble-
ma: dado un secreto, repartir unos fragmentos de información entre varias
personas, de forma que ciertas agrupaciones de estas personas puedan recupe-
rar el secreto, pero las restantes agrupaciones no sean capaces de obtenerlo.
Por ejemplo, un banco tiene una cámara acorazada que tiene que abrirse cada
mañana con una cierta clave (el secreto), que comparten 5 cajeros encargados
de tal apertura. El banco puede estar interesado en que, para abrirla, al menos
hagan falta 3 de los 5 cajeros.
Así, formalmente, un secreto se divide en n participaciones, que se reparten
entre n participantes. La finalidad es que la presencia de k de estos participan-
tes (k ≤ n) sea necesaria y suficiente para reconstruir el secreto.
.
Definición 5.1 (Esquema umbral).
Para un par de valores k y n, k < n, un (k,n)-esquema umbral consiste en
n participaciones D1,D2, . . . ,Dn ∈ Zp y un valor secreto D ∈ Zp tal que:
1) El conocimiento de k, o más, participaciones Di es suficiente para
calcular la clave secreta D.
2) El conocimiento de k – 1, o menos participaciones, deja la clave D
completamente indeterminada.
5.1. Esquema de Shamir
Este esquema trabaja con polinomios en un cuerpo finito, donde el valor secre-
to será el término independiente de un cierto polinomio. La idea del esquema
se basa en el hecho de que un polinomio de grado k – 1 se puede caracterizar
por sus k coeficientes (la clave) o bien dando valores en k puntos diferentes
(las participaciones).
Sea Zp un cuerpo finito. Supongamos que el valor que queremos guardar
secreto es D = a0 ∈ Zp y que a1,a2, . . . ,ak–1 ∈ Zp son valores escogidos al
azar, los cuales vamos a considerar que son los coeficientes del polinomio
A(x) = a0 + a1x + . . . + ak–1xk–1 ∈ Zp[x].
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 50 Protocolos criptográficos
Consideramos n elementos diferentes x1,x2, . . . ,xn ∈ Zp y calculamos, para cada
uno de ellos A(xi) = Di.
La participación que se dará al i-ésimo participante es Di.
Cualquier grupo de k o más participantes permite reconstruir, gracias al teore-
ma de interpolación de Lagrange, el polinomio A(x) y, por lo tanto, calcular la
clave D = a0.
Interpolación deLagrange
El teorema de interpolaciónde Lagrange nos permitecalcular los coeficientes ai demanera computacionalmentemás sencilla que resolviendoel sistema de ecuacionescorrespondiente.
En efecto, sean {i1, · · · ,ik} los k participantes, entonces:
A(x) =Pik
ij=i1Dij · qij(x), donde:
qij(x) =Qik
it 6=ij
(x–xit)
(xij–xit
) ,
de donde podremos encontrar el secreto D = a0.
Mentirosos en el esquemaumbral de Shamir
Supongamos que unparticipante, por ejemplo elnúmero 1, es un mentiroso yda el valor D∗
1 (D∗1 = D1 + ǫ)
como su participación.En este caso la clave que elgrupo de k participantesencontrará, es:
a0∗ = –ϕ(0)D∗
1ψ′(x1)
–
ϕ(0)P
i 6=1Di
ψ′(xi)= a0 –ǫ ϕ(0)
ψ′(x1).
El mentiroso conoce D1,D∗1 y,
además, ǫ y a0∗.A partir de la ecuaciónanterior puede calcular elvalor correcto a0.Los otros participantes nopueden calcular el valorcorrecto a0.Para evitar a los mentirososen un esquema umbral, J.Rifà (How to avoid the
Cheaters succeed in the Key
Sharing Scheme. Desings,
Codes and Cryptography
(1993)) propone un esquema(2k – 1,2n) en el cual se dandos participaciones a cadauno de los n participantes, demodo que para calcular laclave se necesita un mínimode k participantes.
Ejemplo 5.1.
Para más claridad en las operaciones, trabajaremos en R.
Supongamos que el secreto es D = 15 en un (3,5)-esquema umbral. Escogeremos un
polinomio A(x), de grado 2, que tenga por término independiente a0 = D = 15.
Sea, por ejemplo, A(x) = 16x2 + 2x + 15 y los cinco valores xi = {1,3,4,7,10} con los cuales
calcularemos Di = A(xi).
Así tendremos los cinco puntos {(1,33),(3,165),(4,279),(7,813),(10,1635)}.
Supongamos que los usuarios 1,2,4 se agrupan para obtener el secreto.
q1(x) = (x–x2)(x1–x2)
· (x–x4)(x1–x4)
= (x–3)–2· (x–7)
–6= 1
12(x2 – 10x + 21)
q2(x) = (x–x1)(x2–x1)
· (x–x4)(x2–x4)
= (x–1)2· (x–7)
–4= –1
8(x2 – 8x + 7)
q4(x) = (x–x1)(x4–x1)
· (x–x2)(x4–x2)
= (x–1)6· (x–3)
4= 1
24(x2 – 4x + 3), y
A(x) = 33 · q1(x) + 165 · q2(x) + 813 · q4(x) = 16x2 + 2x + 15,
con lo cual hemos recuperado el secreto D = a0 = 15.
Nota
También podemos calcular el valor a0, del esquema umbral, resolviendo el sistema de
ecuaciones, para i = j1, . . . ,jk:
a0 + a1xi + . . . + ak–1xk–1i = Di
El determinante de este sistema es de tipo Vandermonde y todos los valores xi son dife-
rentes, por lo tanto, el sistema tiene solución única.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 51 Protocolos criptográficos
Llamemos ϕ(x) = (x – x1) . . . (x – xk) y ψ(x) = xϕ(x), entonces:
a0 =Det.(Di,xi,x
2i , . . . ,xk–1
i )
Det.(1,xi,x2i , . . . ,xk–1
i )=
P
i(–1)i+1DiQ
j 6=i xjQ
s>t 6=i(xs – xt)Q
s>t(xs – xt)=
X
i
Di
Q
j 6=i –xj
ϕ′(xi)= –
X
i
Di
Q
xj
xiϕ′(xi)
= –X
i
Diϕ(0)
ψ′(xi)= –ϕ(0)
X
i
Di
ψ′(xi).
El valor de ψ′(xi) no depende de Di, pero el cálculo de la clave a0 = D necesita de estos
valores Di.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 52 Protocolos criptográficos
6. Votaciones electrónicas.
Una votación realizada electrónicamente necesita garantizar una serie de con-
diciones formalmente análogas a las de una votación tradicional:
Agradecimiento
Los autores agradecen lacolaboración en esteapartado de Jordi Puiggalí, VPResearch and Developmentde SCYTL(http://www.scytl.com).
• Democracia: Solo las personas registradas en el censo pueden emitir su
voto y solamente pueden hacerlo una vez.
• Transparencia: Ningún voto puede ser eliminado ni alterado.
• Privacidad: No se puede establecer ninguna relación entre un voto y un
votante.
• No coercibilidad: Para evitar coacciones el votante no puede demostrar
cuál ha sido el sentido de su voto.
• Verificabilidad: Cada votante, y eventualmente un auditor, puede com-
probar que el voto ha sido correctamente contabilizado.
En una votación presencial, estas condiciones quedan garantizadas por una
urna transparente, la cabina de votación y el escrutinio público. En el caso
electrónico, el proceso electoral se lleva a cabo en una dimensión lógica (por
ejemplo, mediante un conjunto de programas que se ejecutan en un ordena-
dor), y por lo tanto, no auditable por observadores o por el propio votante.
Por esto, para asegurar que los procesos electorales se llevan a cabo de for-
ma totalmente honesta y privada, existen diferentes propuestas basadas en la
utilización de protocolos criptográficos.
Los protocolos criptográficos por voto electrónico se basan sobre todo al con-
seguir dos objetivos principalmente:
• Garantizar la privacidad de los votantes y la corrección de los resulta-
dos: asegurando que todos los votos que se han utilizado para obtener los
resultados pertenecen a votantes válidos (por ejemplo, que forman parte
de la lista del censo y no han sido suplantados), verificando que un vo-
tante no emita más de un voto, y haciendo que no pueda correlacionar en
ningún momento la papeleta del voto y la identidad del votante.
• Facilitar la auditoría de la elección: permitiendo tanto a votantes como a
observadores verificar que los votos emitidos contienen la opción del voto
original seleccionado por el votante y, por lo tanto, que el resultado refleja
totalmente la intención de voto de los votantes.
Para poder lograr estos objetivos los esquemas criptográficos propuestos com-
binan otros protocolos o algoritmos criptográficos más básicos: autenticación,
firmas ciegas, pruebas de conocimiento nulo, reparto de secretos, etc.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 53 Protocolos criptográficos
6.1. Garantizar la privacidad y la corrección de los resultados
Desde el punto de vista de la privacidad de los votantes y la corrección de los
resultados, los protocolos criptográficos parten de la base del cifrado y poste-
rior firma digital de los votos. El cifrado se utiliza por evitar que la intención
de voto sea visible para cualquier administrador o persona que disponga de
privilegios sobre el sistema de voto. En este sentido, se utilizan como base al-
goritmos de clave pública (como por ejemplo RSA), dejando la clave privada
en manos del equivalente a una mesa electoral para realizar el descifrado de
los votos. De este modo, los votos se cifrarían con una clave pública de la
mesa electoral en el mismo terminal desde el que el votante ha realizado la
selección de voto, para evitar que su contenido se sepa antes de guardar el
voto en la urna (que en este caso sería electrónica). Los votos solo se podrían
descifrar cuando lo decidiera la mesa electoral, que es la que tiene acceso a la
clave privada que los descifra.
Para evitar que los votos se puedan manipular una vez emitidos, los votos
cifrados se firmarían digitalmente, preferentemente con la clave de identidad
del elector (por ejemplo, DNI electrónico). De este modo, cualquier intento de
manipulación del voto se detectaría, puesto que invalidaría la firma digital del
mismo. Además, la firma digital permite verificar si el votante que ha emitido
el voto pertenece realmente al censo electoral. De este modo se puede asegurar
que los resultados se han obtenido de votos de ciudadanos que realmente
podían participar.
Este mecanismo de cifrado y firma se conoce con el nombre de “doble sobre”,
pues es equivalente al mecanismo de dos sobres utilizados en el voto postal.
El sobre de dentro es el que protege la privacidad del voto y por lo tanto
sería el que se obtiene al cifrar el voto. El sobre de fuera es el que contiene
el sobre de dentro y la identidad del votante, para poder verificar que el voto
proviene de un votante válido antes de introducirlo en la urna. En el caso del
voto electrónico, sería la firma digital que se hace sobre el voto. Del mismo
modo que en el voto postal el sobre externo de los votantes válidos se separa
del sobre interno antes de hacer el recuento, en el voto electrónico se podría
separar la firma digital del voto cifrado antes de descifrar el voto y hacer el
recuento.
Aun cuando estas medidas podrían parecer suficientes para garantizar la in-
tegridad y privacidad, no se considera que lo sean en un entorno de voto
electrónico. Por ejemplo, si se hace un descifrado directo de los votos, sería
fácil correlacionar los votos en claro con los votantes: solo haría falta verificar
el orden en el que han votado los votantes y el que se obtiene al descifrar los
votos. Por esta razón, los protocolos criptográficos hacen propuestas de me-
canismos de descifrado de voto que rompen cualquier correlación entre los
votos descifrados y el orden en el que han sido emitidos. En este sentido se
pueden destacar dos familias de propuestas que implementan un proceso de
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 54 Protocolos criptográficos
descifrado que rompe esta correlación: la de los protocolos de recuento ho-
momórfico y la de los protocolos de mezcla.
Los protocolos de recuento homomórfico se fundamentan en la obtención de
los resultados sin descifrar los votos individuales. Parar conseguir este objeti-
vo, las operaciones de recuento se realizan directamente sobre los votos cifra-
dos y solo se descifran los resultados de estas operaciones. Para poder operar
con los votos cifrados sin tenerlos que descifrar, utilizan, para el cifrado de los
votos, algoritmos criptográficos con propiedades homomórficas (por ejemplo,
ElGamal). Estas propiedades permiten hacer operaciones directamente con la
información cifrada sin necesidad de descifrarla. Un ejemplo sería multiplicar
dos datos cifrados para obtener el cifrado del producto de los valores de estos
datos: E(x)·E(y) = E(x·y). De este modo solo haría falta descifrar el resultado de
multiplicar los datos cifrados (por ejemplo, E(x·y)) para obtener el producto de
los valores (por ejemplo, x·y). También existen algoritmos criptográficos en los
que el resultado de multiplicar los datos cifrados es el cifrado de la suma de
los contenidos: E(x)··E(y) = E(x + y). Estos son normalmente los utilizados por
los protocolos homomórficos, ya que los votos se representan como un vector
de valores binarios con tantas posiciones como opciones de voto disponibles.
Si una opción ha sido seleccionada, el valor de su posición será 1, mientras
que si no lo ha sido será 0. Por ejemplo, si hay cuatro opciones y la segunda
y la tercera han sido seleccionadas el voto se representaría formalmente de
forma simplificada como: (1,1,1,0). De este modo, al multiplicar los votos ci-
frados lo que estamos haciendo es sumar las veces que las opciones han sido
escogidas y solo haría falta descifrar el resultado de multiplicar todos los votos
cifrados para obtener los resultados. Por ejemplo:
E((1,0,0,1))·E((1,0,0,0))·E((0,1,0,0)) = E((2,1,0,1))
Por lo tanto, al descifrar, obtendríamos que la primera opción es la ganadora
con dos votos, mientras que la segunda y tercera habrían obtenido un solo
voto. Aun cuando estos protocolos son bastante eficientes, tienen algunas li-
mitaciones, como el hecho de que solo funcionan en elecciones en las que
los votos se pueden representar de forma numérica o que son poco escala-
bles en elecciones de muchos candidatos. Estas limitaciones no existen en los
protocolos basados en la mezcla.
Los protocolos de mezcla utilizan el mismo concepto que en las elecciones
tradicionales: mezclar la urna antes de abrirla para garantizar que los votos
no se encuentran en el mismo orden que se han introducido (por ejemplo,
evitar que el voto de encima sea el que ha emitido el último votante). Esta
mezcla sería equivalente a aplicar una permutación a los votos de la urna.
El problema es que aplicar solamente una permutación no garantiza que el
voto no se pueda rastrear, pues solo hace falta buscar dónde se encontraba
un voto con el mismo cifrado antes de aplicarle la permutación. Por lo tanto,
estos protocolos, además de permutar las posiciones de los votos, también
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 55 Protocolos criptográficos
deben hacer un decifrado parcial o recifrado del voto. De este modo, no se
posible correlacionar los votos una vez permutados y redescifrados con los
votos cifrados originales, ya que serán todos diferentes.
En el caso del descifrado parcial, implica que el votante, además de cifrar el
voto con la clave pública de la mesa electoral, también lo debe cifrar con la
clave pública de la entidad que hace la mezcla. La entidad que ejecuta la mez-
cla dispone de una clave privada para hacer un primer descifrado parcial del
voto una vez permutado. En algunas implementaciones, hay más de una en-
tidad realizando el proceso de mezcla y descifrado parcial, con lo cual resulta
que el votante debe hacer tantos cifrados como entidades participen.
En el caso de mezcla con recifrado, es necesario utilizar un algoritmo con
propiedades homomórficas para poder utilizar la misma clave pública para
recifrar el voto. De este modo, no hace falta descifrar el voto tantas veces
como ha sido recifrado. Por lo tanto, este proceso es totalmente transparente
al votante, que solo debe cifrar el voto una vez con la clave pública de la mesa
electoral. El proceso de mezcla y recifrado se puede hacer tantas veces como
entidades intervengan en el proceso. En cualquier caso, la última entidad es
la que acaba constituyendo la mesa electoral y descifra los votos.
6.2. Garantizar la auditoría de la votación
Los procesos descritos anteriormente garantizan principalmente la privacidad
del voto, pero ¿qué pasa si la entidad que hace el descifrado total presenta un
resultado que no se corresponde con la intención de voto?
Para detectar esta situación, se utilizan los mecanismos de auditoría de los
procesos de descifrado. Estos procesos utilizan mecanismos criptográficos co-
mo pruebas de conocimiento nulo para demostrar que el proceso de desci-
frado o recifrado no ha modificado el voto cuando estos se llevan a término.
En este sentido destacamos dos tipos de pruebas de conocimiento nulo im-
portantes: las de correcto descifrado y las de correcto recifrado. En el primer
caso, se permite demostrar matemáticamente de forma irrefutable que el tex-
to descifrado estaba contenido en el voto cifrado. En el caso de recifrado, la
prueba demuestra que el valor del recifrado se ha obtenido al recifrar el texto
previamente cifrado por el votante. En cualquier caso, no hace falta entregar
la clave privada para demostrar que el valor descifrado es correcto, sino una
prueba matemática irrefutable sobre el contenido descifrado que puede ser va-
lidada de forma universal (por ejemplo, por cualquier auditor o votante). De
este modo se puede garantizar que los resultados reflejan de forma irrefutable
los contenidos de los votos cifrados. De lo contrario, se pueden aislar los votos
conflictivos para una auditoría posterior.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 56 Protocolos criptográficos
Ejercicios de autoevaluación
1. Considerar n = 917641387, producto de dos números primos p = 12347 i q = 74323. Nos
dan r = 10000 que es un QR (residuo cuadrático) en Zn. Calcular les cuatro raíces cuadradas
de r.
2. En el protocolo de lanzamiento de una moneda el usuario A escoge el número de Blum
n = 713 = 31·23. El número n es conocido por B, pero no su descomposición en factores!
a) Haced el seguimiento de todos los pasos del protocolo, suponiendo que A escoge el valor
x = 220 y B contesta diciendo que y es par. Al final del protocolo, tras la respuesta de
A enviando x,y,31,23 a B, explicar el porqué B está convencido de que no se ha hecho
trampa.
b) Haced el seguimiento del protocolo, suponiendo ahora que A escoge x = 15 y B ha cono-
cido, antes de contestar, el valor de los primos 31,23, factores de n. Qué debe contestar
sobre la paridad de y para ganar?
3. En una red de comunicaciones cada usuario U tiene su propio algoritmo público de cifrar
EU y su algoritmo privado de descifrar DU .
En esta red todos los mensajes que van de un usuario A a un usuario B deben ser enviados
bajo el formato (EB(m),A). La identificación A se envía de forma que el receptor B sepa quién
es el emisor.
El receptor B, tras leer el mensaje m que ha recibido, automáticamente tiene que devolver
(EA(m),B) a la red para que el emisor A lo lea y sepa que su primer mensaje ha sido recibido
correctamente.
a) Demostrar que un tercer usuario C de la red puede calcular el mensaje m que A había
enviado a B.b) Demostrar que las comunicaciones tampoco son seguras si cambiamos el protocolo
inicial por el siguiente:
• A envía EB(EB(M),A) a B• B, automáticamente devuelve EA(EA(m),B) a A.
4. Un sistema público, basado en el logaritmo discreto para distribuir claves entre usuarios
de una red, podría ser el siguiente:
a) Es conocido de todos los usuarios un cuerpo finito Fps y un elemento primitivo α de
este cuerpo.b) El usuario U escoge aleatoriamente 1 < mU < qs–1 y escribe en el fichero público su
clave cU = αmU , (el valor mU lo mantiene secreto).c) Cuando el usuario A quiere contactar con el usuario B, usa como clave (cB)mA.
Demostrar que el sistema anterior es seguro y auténtico. Y, en el caso concreto Fps = F210 =
Z2[x] / x10 + x3 + 1, el usuario A, del que conocemos su clave privada mA = 2, quiere contactar
con el usuario B, del que sabemos su clave cB = α + α5 + α7, escrita en el fichero público.
¿Cuál es la clave para sus comunicaciones comunes?
5. Demostrar que la siguiente variación del protocolo de autenticación de la ISO es inseguro.
A B
→ RA →
← RB,CertB,DB{RB,RA} ←
→ R′A,CertA,DA{R
′A,RB} →
CertX = (X,EX,DS{X,EX}), S es la autoridad central de certificaciones, {x} significa un hashsobre x y R′
A es un valor aleatorio diferente de RA.
6. Demostrar que la siguiente variación del protocolo de autenticación de la ISO es inseguro.
A B
→ RA →
← RB,CertB,DB(RA) ←
→ CertA,DA(RB) →
CertX = (X,EX,DS{X,EX}), S es la autoridad central de certificaciones y {x} significa un hashsobre x.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 57 Protocolos criptográficos
Solucionario
1. Primero calcularemos las raíces cuadradas de r = 10000 a Zp i Zq, respectivamente, donde
p = 12347 i q = 74323. Es fácil ver que s1 = 100 (mod p) y s2 = –100 = 12247 (mod p) son las
raíces en Zp y r1 = 100 (mod q) i r2 = –100 = 74223 (mod q) son las raíces en Zq.
Como que p y q son primos entre sí, su máximo común divisor valdrá 1 y con el algoritmo
extendido de Euclides hallaremos dos números A,B tales que Ap + Bq = 1.
Notar que los cuatro valores mij = riAp+sjBq, donde i,j ∈ {1,2}, cumplen que m2ij ≡ r (mod n),
o sea que se trata de las raíces buscadas.
En nuestro caso: 1 = 30531·p – 5072·q, o sea A = 30531 y B = –5072.
Por lo tanto, las cuatro raíces cuadradas de r son:
A·p·100 + B·q·100 = 100
A·p·100 + B·q·12247 = 144632658
A·p·74223 + B·q·100 = 773033423
A·p·74223 + B·q·12247 = 917665981
2.
a) En el primer paso A envía z = y2 = (x2)2 = 639 (mod n). En el segundo paso B contesta
diciendo que apuesta a que y es par. El usuario B pierde la apuesta, puesto que y = x2 =
629 (mod n) es impar. Al enviarle A el valor de x y la descomposición de n en factores,
puede comprobar que n es un entero de Blum y que y es impar.
b) En el primer paso A envía z = y2 = (152)2 = 2 (mod n). En este caso, al conocer B la
descomposición de n en factores puede calcular las cuatro raíces cuadradas de z. Estas
son 225,271,442,488 y la única que es QR es 255. Con esto sabe que y = 255 es impar y,
por lo tanto, debe contestar impar si quiere ganar la apuesta.
3. Efectivamente, el usuario C puede tomar EB(m), que está en la red bajo el formato (EB(m),A),
y reenviar a la red (EB(m),C). La respuesta de B también sería automática y respondería con
(EC(m),B). Por lo tanto, el usuario C solo tiene que descifrar EC(m) con su clave privada y
encontrará m.
En el segundo supuesto, la red tampoco es segura. En este caso, el usuario C puede recu-
perar EB(EB(m),A)) y enviar a B lo siguiente (que cumple con los requisitos para ser acep-
tado para la transmisión): EB
`
EB(EB(m),A),C)´
. El usuario B contesta automáticamente con:
EC
`
EC(EB(m),A),C)´
. A partir de aquí, el usuario C puede calcular EB(m) y enviar a la red
EB(EB(m),C). Ahora, la respuesta automática de B es EC(EC(m),B) y el usuario C puede calcu-
lar m.
4. La clave que usan conjuntamente A y B es: αmA·mB , que solo puede ser calculada por A y
B. La seguridad y autenticidad se basa en que, para los otros usuarios, el problema es el de
calcular el logaritmo discreto en el cuerpo Fps .
En el caso específico de F210 tenemos que la clave común es αmA·mB = CmAB = (α + α5 + α7)2 =
α428.
El cálculo anterior lo hemos hecho utilizando SAGE:
Primero definimos el anillo de polinomios en la indeterminada X:
sage: P.<X> = GF(2)[]%
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 58 Protocolos criptográficos
Después definimos el cuerpo finito F210 a través del polinomio X10 + X3 + 1 y llamamos
alpha = [X].
sage: F.<alpha>=GF(2^10,’alpha’,modulus=X^10+X^3+1)
Finalmente, calculamos (α + α5 + α7)2.
sage: (alpha +alpha^5+alpha^7)^2.
alpha^7 + alpha^4 + alpha^3 + alpha^2 + 1.
sage: log((alpha +alpha^5+alpha^7)^2,alpha)
428
5. Es un caso claro de utilización del interleaving attack o ataque del jugador de ajedrez.
El segundo paso del protocolo autentica B ante A. Aquí no hay ningún problema. El proble-
ma está en el tercer paso del protocolo. Un usuario C podría aprovechar el segundo paso del
intercambio entre A y B para enviar RB a A y esperar su contestación, que entonces C enviaría
a B haciéndose pasar por A.
6. También es un caso claro del interleaving attack o ataque del jugador de ajedrez. El segundo
paso del protocolo tendría que autenticar B ante A, pero no lo hace puesto que un impostor
C puede tomar RA del primer paso y empezar otro protocolo con B, con el que conseguirá lo
necesario para impersonar a B.
El tercer paso del protocolo tampoco autentica a A frente a B, puesto que el mismo impostor
con el valor RB del segundo paso del protocolo anterior puede empezar otro protocolo con
A y conseguir la firma DA(RB).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200954 59 Protocolos criptográficos
Bibliografía
Menezes, A. J.; Dorschot, P. C.; Vanstone, S. A. (2001). Handbook of applied cryptography(5a. ed.). Boca Ratón: CRC Press.
Rifà, J. (1995). Seguretat computacional. Cerdanyola del Vallès: Servei de publicacions de la
UAB.
Schneier, B. (1996). Applied cryptography: protocols, algorithms and source code in C (2a. ed.).
Nueva York: John Wiley & Sons.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Criptografía concurvas elípticasLlorenç Huguet Rotger
Josep Rifà Coma
Juan Gabriel Tena Ayuso
PID_00200952
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España deCreative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéisel autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un usocomercial y no hagáis una obra derivada. La licencia completa se puede consultar enhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 Criptografía con curvas elípticas
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. Curvas y puntos racionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1. Definiciones previas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Plano proyectivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Curvas afines y proyectivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Puntos racionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1. Puntos racionales de una curva de grado 1 . . . . . . . . . . . 17
1.4.2. Puntos racionales de una curva de grado 2 . . . . . . . . . . . 17
1.4.3. Puntos racionales de una curva de grado 3 . . . . . . . . . . . 18
1.4.4. Puntos racionales de una curva de grado 4 . . . . . . . . . . . 19
2. Geometría de las curvas elípticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1. Ecuación de Weierstrass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2. La ley de grupo de una curva elíptica . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1. Ley de grupo en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2. Ecuación general de P + Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3. Curvas elípticas sobre cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1. Número de puntos de una curva elíptica . . . . . . . . . . . . . . . . . . . . . . 34
3.2. Extensión de una curva sobre un cuerpo a una curva sobre un
cuerpo extendido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4. El uso de las curvas elípticas en criptografía . . . . . . . . . . . . . . . . . 40
4.1. El problema del logaritmo elíptico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2. Elección de la curva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3. Asignación de mensajes a puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.1. Creación de una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2. Método de curvas entrelazadas . . . . . . . . . . . . . . . . . . . . . . . 44
5. Criptografía y protocolos criptográficos basados en curvas
elípticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1. Protocolos criptográficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.1. Protocolo de Diffie-Helman . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.2. Protocolo de tres-pasos de Shamir . . . . . . . . . . . . . . . . . . . . 49
5.2. Criptosistema ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3. Criptosistema RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4. Firma digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5. Comparación de los sistemas de clave pública . . . . . . . . . . . . . . . . 53
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 Criptografía con curvas elípticas
5.5.1. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5.2. Eficiencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6. ECC estándares y aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.1. ECC estándares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.1.1. Estándares principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.1.2. Estándares de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.2. Aplicaciones de la ECC. Tarjetas inteligentes . . . . . . . . . . . . . . . . . . 59
6.2.1. Restricciones de las tarjetas inteligentes . . . . . . . . . . . . . . 60
6.2.2. Ventajas de la ECC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.2.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 5 Criptografía con curvas elípticas
Introducción
La teoría de curvas elípticas sobre cuerpos finitos encuentra aplicaciones en
diversas disciplinas, como por ejemplo la teoría de números o la criptografía.
Resultan sorprendentes sus relaciones con problemas tan diversos como la
realización de tests de primalidad, la factorización de números enteros o la
demostración del último teorema de Fermat, entre otras.
Veamos unas pinceladas de estas relaciones para centrarnos después en la apli-
cación de las curvas elípticas a la criptografía. En un principio podemos pensar
en una curva elíptica como el conjunto de soluciones de una ecuación de la
forma:
y2 = x3 + ax + b.
Relacionadas con la teoría de números podemos destacar dos aplicaciones:
El problema de losnúmeros congruentes
Fue enunciado por primeravez por el matemático persaal-Karaji (hacia el siglo X a.C.). Actualmente, la solucióndel problema depende de laconjetura deBirch-Swinnerton-Dyer sobrecurvas elípticas. El problemaes uno de los siete problemasdel milenio que el ClayMathematics Institute dotó,en el año 2000, con unpremio de un millón dedólares para quien aportara lasolución de cualquiera deellos.
• Números congruentes. Un número racional N se dice que es congruente
si existe un triángulo con aristas racionales cuya área es N. Durante mucho
tiempo el problema ha permanecido sin que se conociese ningún algorit-
mo capaz de resolverlo, es decir, de comprobar si un número dado N era
congruente o no. Actualmente, está demostrado que N es un número con-
gruente si y solo si la curva elíptica y2 = x3 – N2x = x(x – N)(x + N) tiene
algún punto racional diferente de (0,0), (±N,0) y del punto del infinito de
la curva.
• Teorema de Fermat. En 1985 Gerhard Frey observó que si An + Bn = Cn era
un contraejemplo al último teorema de Fermat, entonces la curva elíptica
y2 = x(x–An)(x+Bn) tenía por discriminante –(AnBn(An +Bn))2 = –(ABC)2n.
Discriminante
El discriminante de una curvaelíptica y2 = x3 + ax + b vienedado por ∆ = 4a3 + 27b2 y esnulo si y solo si la curva tienepuntos singulares (puntos enlos que las dos derivadasparciales se anulan).
Tal curva contradecía la denominada conjetura de Taniyama. Posterior-
mente, A. Wiles probó que ninguna curva podía contradecir esta conjetura
y, por lo tanto, quedó probado que no existe ningún contraejemplo al úl-
timo teorema de Fermat.
En el campo de la criptografía, la aplicación de estas curvas la podemos en-
contrar en la descomposición de un número en factores, en los sistemas crip-
tográficos y en los tests de primalidad, estos últimos desarrollados por Bosma,
Goldwasser-Killian, Atkin y Lenstra entre otros.
H.W. Lenstra ha obtenido un nuevo método de factorización que es, en mu-
chos aspectos, mejor que los conocidos anteriormente. La mejora y eficiencia
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 6 Criptografía con curvas elípticas
de este nuevo método todavía no es significativo en la práctica (el tiempo para
factorizar continúa siendo el mismo) pero, aún así, el hecho de haber encon-
trado un mecanismo diferente hace que los sistemas criptográficos basados en
el problema de la factorización no resulten, al fin y al cabo, tan seguros co-
mo parecían. El algoritmo de factorización con curvas elípticas de Lenstra es
análogo al método clásico denominado p – 1 de Pollard.
Los avances en estos métodos así como en las prestaciones de los ordenado-
res exigen números cada vez mayores a fin de poder garantizar la seguridad
de los sistemas criptográficos, lo que representa un grave inconveniente a la
hora de implementar los procesos de generación y distribución de las claves
secretas. Este problema se soluciona, en parte, usando sistemas de cifrado con
curvas elípticas. Estos sistemas ofrecen un nivel de seguridad equivalente al
de los métodos tradicionales (RSA, ELGamal,...) pero utilizando un número
menor de dígitos. El resultado son claves más pequeñas, característica que re-
sulta especialmente útil para la seguridad en aplicaciones basadas en circuitos
integrados y tarjetas inteligentes.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 7 Criptografía con curvas elípticas
Objetivos
En los materiales didácticos de este módulo el estudiante encontrará los con-
tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer el concepto de curva en el espacio proyectivo y en el espacio afín.
2. Conocer el concepto de curva elíptica sobre un cuerpo finito y los paráme-
tros que la definen.
3. Conocer el uso de las curvas elípticas en criptografía y los principales pro-
blemas que hay que tener en cuenta en su utilización.
4. Conocer los principales algoritmos y protocolos basados en curvas elípticas
(Diffie-Helman, Shamir, ElGamal, firma digital).
5. Conocer los estándares y las aplicaciones más corrientes que utilizan las
curvas elípticas.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 9 Criptografía con curvas elípticas
1. Curvas y puntos racionales.
1.1. Definiciones previas
Ver también
En el módulo “Cuerposfinitos”de esta asignaturaencontraréis de formadetallada algunos de losconceptos que tambiénusaremos en este módulo.
Ya hemos estudiado de forma detallada algunos de los conceptos que también
usaremos en este módulo. Vamos a recordar solo algunos:
• La característica de un cuerpo K es el mínimo número p tal que para todo
x ∈ K se cumple que 1 + 1 + · · · + 1| {z }
p
= 0, donde 0 es el elemento neutro de la
suma y 1 es el elemento neutro del producto en el cuerpo K. Escribiremos
char(K) = p.
Si para todo n ∈ N, 1 + 1 + · · · + 1| {z }
n
6= 0 decimos que char(K) = 0.
Por ejemplo, si K = Fq donde q = pm, p primo, entonces char(K) = p. Para los cuerpos
Q de los números racionales, R de los números reales y C de los números complejos
se tiene, char(Q) = char(R) = char(C) = 0.
• Sea K un cuerpo y x ∈ K∗ = K – {0}. El orden de x es el mínimo número
r > 0 tal que xr = 1.
• Sea K un cuerpo. La clausura algebraica de K es el cuerpo más pequeño
que contiene a K y tal que cualquier polinomio con coeficientes en K tiene
todas las raíces en este cuerpo.
1.2. Plano proyectivo
.
Definición 1.1 (Plano afín y plano proyectivo).
Sea K un cuerpo. El plano afín sobre K, que denominaremos A2 (o A2(K))
es el conjunto de puntos de K2. El plano proyectivo sobre K, P2 (o P2(K)),
es el conjunto de puntos (x,y,z) ∈ K3 – {(0,0,0)} con la relación de equi-
valencia ∼ tal que:
(x,y,z) ∼ (x′,y′,z′) si, y solo si, ∃λ ∈ K∗ = K – {0} tal que x = λx′, y = λy′,
z = λz′.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 10 Criptografía con curvas elípticas
Así definimos P2 = K3 – {0}/ ∼. Cada una de las clases de equivalencia se llama
punto proyectivo y lo denotaremos por (x : y : z). Para todo λ ∈ K∗, diremos
que (x,y,z) y (λx,λy,λz) son dos representantes de la misma clase (x : y : z).
Nota
Análogamente se define elespacio proyectivo
n-dimensional
Pn = Kn+1 – {0}/ ∼, cuyasclases de equivalencia sedenominan puntos y sedenotan por(x0 : x1 : · · · : xn).
Dado un punto proyectivo (x0 : x1 : x2) sabemos que para algún i = 0,1,2 xi 6= 0.
Definimos el conjunto abierto Ui = {(x0 : x1 : x2)|xi 6= 0}
Sea (x : y : z) ∈ U3. Existe un único representante de este punto de la forma
( xz , y
z ,1). De este modo, dado que z 6= 0, podemos identificar puntos proyectivos
con puntos afines:
.
Algoritmo 1.2.
P2 ∩ U3 –→ K2
(x : y : z) –→ ( xz , y
z )
Los puntos proyectivos con z = 0 forman lo que se denomina recta del infinito.
Observación
El paso del plano proyectivoal plano afín se podría hacercon cualquiera de las trescoordenadas. En general, loharemos con la z o con la x0
si escribimos los puntos conla notación (x0 : x1 : · · · : xn).
.
Definición 1.3 (Polinomio homogéneo).
Un polinomio F(z0, . . . ,zn) ∈ K[z0, . . . ,zn] diremos que es un polinomio
homogéneo si todos sus monomios tienen el mismo grado. Denotare-
mos por F[z0, . . . ,zn] un tal polinomio.
Ejemplo 1.1.
• z0z3 – z22 es un polinomio homogéneo de grado 2.
• z1 – z3 es un polinomio homogéneo de grado 1.
• z23 es un polinomio homogéneo de grado 3.
Dado F[x,y,z], un polinomio homogéneo de grado r, no tiene sentido dar valo-
res a F en el plano proyectivo. Por ejemplo, si F[x,y,z] = x3 + 3y2z + z3, entonces
(1 : 1 : 1) = (2 : 2 : 2), pero F[1,1,1] = 5 6= 40 = F[2,2,2].
Ahora bien, sí que tiene sentido decir que F[x,y,z]=0 puesto que si λ 6= 0,
F[λx,λy,λz] = λrF[x,y,z]; en consecuencia, si F es un polinomio homogéneo de
grado r, entonces F[λx,λy,λz] = 0 si y solo si F[x,y,z] = 0.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 11 Criptografía con curvas elípticas
Relación afín-proyectivo
Consideremos como antes el conjunto Ui := {(x0 : · · · : xn) ∈ Pn|xi 6= 0} ⊂ Pn.
Relación de coordenadas entre los puntos considerados en el espacio afín y
en el espacio proyectivo.
.
Algoritmo 1.4.
An –→ Ui ⊂ Pn
(a1, . . . ,an) –→ (a1; . . . ; ai–1; 1; ai+1; . . . ; an)
( z0
zi, . . . , zi–1
zi,
zi+1
zi, . . . , zn
zi)←– (z0; . . . ; zn)
Relación de polinomios. Dado f (x1, . . . ,xn) ∈ K[x1, . . . ,xn] en el espacio afín, se
tiene F[x0, . . . ,xn] ∈ K[x0, . . . ,xn], su homogeneizado en el espacio proyectivo,
el cual se obtiene a partir de f multiplicando por potencias de x0 cada mo-
nomio hasta conseguir un polinomio homogéneo de grado gr(f ). Recíproca-
mente, para pasar de un polinomio del espacio proyectivo a uno en el espacio
afín, daremos valor 1 a la coordenada x0 (o a la coordenada que previamente
hayamos fijado).
Ejemplo 1.2.
• Coordenadas:
A2 –→ U2 ⊂ P2
(1,2) –→ (x : y : z) = (1 : 2 : 1)
(2, 12
)←– (x : y : z) = (4 : 1 : 2)
• Polinomios:
K[x,y] –→ K[x,y,z]
x2 + x3 + xy –→ x2z + x3 + xyzx + x2y + 1←– xz2 + x2y + z3
1.3. Curvas afines y proyectivas
Recordar
Un cuerpo K′ es la clausuraalgebraica de un cuerpo K siK ⊆ K′ y K′ mínimo, con lapropiedad de que cualquierpolinomio de K′[x] sedescompone en factores degrado uno.
.
Definición 1.5 (Curva afín y curva proyectiva).
Sean f (x,y) ∈ K[x,y] y F[x,y,z] ∈ K[x,y,z] no constantes. Entonces el con-
junto Cf (K) = {(x,y)|f (x,y) = 0} se denomina curva afín y CF(K) = {(x :
y : z)|F[x,y,z] = 0} curva proyectiva.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 12 Criptografía con curvas elípticas
.
Definición 1.6 (Componentes irreducibles de una curva).
Sea f ∈ K[x,y]. Podemos descomponer f en producto de factores irredu-
cibles f = f e1
1 . . . f ess . (Del mismo modo para F ∈ K[x,y,z]).
Con esta descomposición, podemos escribir la curva como unión de sus
componentes irreducibles: Cf (K) = Cf1(K) ∪ · · · ∪ Cfs
(K).
.
Definición 1.7 (Punto singular).
Sea C = Cf (K) ⊆ A2 una curva afín y p = (a,b) ∈ C. Decimos que p es un
punto múltiple o punto singular de C si satisface las ecuaciones:
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x(p) = 0
∂f
∂y(p) = 0
Recordar
La notación∂f
∂x(p) significa
calcular la derivada parcial def (x) respecto a la variable x ydar valores en el punto p.
.
Definición 1.8 (Curva no singular).
Una curva es no singular si todos sus puntos son simples (o sea, no
singulares).
.
Definición 1.9 (Recta tangente).
Sea p = (a,b) ∈ C = Cf (K) un punto simple. Definimos la recta tangente
a C en el punto p como la recta dada por la ecuación:
∂f
∂x(p)(x – a) +
∂f
∂y(p)(y – b) = 0
Sea C = Cf (K), p = (a,b). Podemos escribir f como suma de componentes ho-
mogéneas:
f (x – a,y – b) = f0(x – a,y – b) + · · · + fm(x – a,y – b),
donde gr(fi(x – a,y – b)) = i.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 13 Criptografía con curvas elípticas
Observación
• mp(C) = 0 ⇐⇒ p 6∈ C.• mp(C) = 1 ⇐⇒ p es un
punto simple de C.• Si mp(C) = 2, decimos
que p es un punto doble.
.
Definición 1.10 (Multiplicidad en un punto).
Definimos la multiplicidad de C, en el punto p = (a,b), como el mínimo
k tal que fk(x–a,y–b) 6= 0 (como polinomio) y la denotaremos por mp(C).
Observación
Nótese que los factores α y βen la Definición1.11 notienen por qué tener loscoeficientes en el cuerpo K,sino que pueden tenerlos enalguna extensión cuadráticade K.En el caso de un nododistinguiremos un nodo
racional (si α y β tienencoeficientes en K), de unnodo irracional (en casocontrario).
.
Definición 1.11 (Nodos y cúspides).
Si mp(C) = 2, entonces f2(x – a,y – b) se puede descomponer en producto
de 2 factores: f2(x – a,y – b) = αβ.
• Si α 6= β, diremos que p es un nodo.
• Si α = β, diremos que p es una cúspide.
Donde la anterior igualdad o desigualdad de α y β se entiende salvo un
factor constante.
Ejemplo 1.3.
Supongamos que char(K) 6= 2,3. Consideramos la curva C : y2 = x3 + ax2. De otro modo,
sea f (x,y) = x3 + ax2 – y2, donde a es un valor constante a ∈ K.
La curva C, ¿tiene puntos singulares? Y, en caso afirmativo, ¿qué multiplicidad tienen?
• Para responder la primera cuestión, tal y como hemos dicho en la definición 1.7,
calcularemos las derivadas parciales teniendo en cuenta que, además, el valor de la
función f (x,y) debe ser cero en todos los puntos de la curva:
8
>
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
>
:
∂f
∂x= 3x2 + 2ax = 0
∂f
∂y= –2y = 0
f = x3 + ax2 – y2 = 0
Resolviendo este sistema encontramos y = 0, x(3x + 2a) = 0, x3 + ax2 – y2 = 0.
Finalmente, y = 0, x = 0. Por lo tanto, (0,0) es un punto singular.
• Para estudiar la multiplicidad del punto singular (0,0) utilizaremos la definición1.10,
pero antes descompongamos f (x,y) en suma de funciones homogéneas f0(x – 0,y – 0),
f1(x – 0,y – 0), f2(x – 0,y – 0), f3(x – 0,y – 0), de grados 0,1,2,3, respectivamente.
Vemos que f (x – 0,y – 0) = f (x,y) = 0 + 0 + (ax2 – y2) + x3.
Por lo tanto, f0(x,y) = f1(x,y) = 0, f2(x,y) = ax2 – y2 = (√
ax + y)(√
ax – y), f3(x,y) = x3.
Así, de acuerdo con la definición 1.10, vemos que mp(C) = 2 y, por lo tanto, p = (0,0)
es un punto doble. Ahora, de acuerdo con la Definición 1.11 vemos que para a = 0 el
punto p = (0,0) es una cúspide y para todos los valores a 6= 0, el punto p = (0,0) es un
nodo. Dependiendo de si√
a ∈ K o no el nodo será racional o irracional.
Las figuras siguientes corresponden a la curva y2 = x3 + ax2 para a = 1 y a = 0,
respectivamente.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 14 Criptografía con curvas elípticas
Nodo racional en el punto (0,0) de la curva y2 = x3 + x2
y
x
1
0,5
0
–0,5
–1
–1 –0,8 –0,6 –0,4 –0,2 0,2 0,4 0,6
Cúspide en el punto (0,0) de la curva y2 = x3
y
x
1
0,5
0
–0,5
1
–1
0,80,2 0,4 0,6
Una pregunta que quizás nos hayamos hecho a estas alturas es: ¿por qué nos
interesará mirar las curvas en el plano proyectivo?
Supongamos la misma curva que en el ejemplo anterior para el caso a = 2. La
podemos ver como una curva proyectiva dada por un polinomio homogéneo,
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 15 Criptografía con curvas elípticas
F[x,y,z] = x3 + 2x2z – y2z = 0. Podemos pasar la curva proyectiva al plano afín
dando el valor z = 1; así, obtenemos la curva f (x,y) = x3 + 2x2 – y2 = 0, que está
dada por la misma ecuación que ya habíamos visto en el ejemplo anterior y
de la que ya sabemos que el punto (x = 0,y = 0) es un punto singular. Para
evitar este punto singular podríamos pasar al afín usando otra coordenada;
por ejemplo, y = 1, obteniendo una “nueva curva”: g(x,z) = x3 + 2x2z – z = 0, en
la que el punto (x = 0,z = 0) pertenece a la curva y no es singular.
Observación
El uso de coordenadasproyectivas también permiterealizar cálculos en curvaselípticas sobre cuerpos finitossin necesidad de haceroperaciones de división en elcuerpo. Esto es importante,puesto que las operacionesde dividir soncomputacionalmentecostosas.
Estas dos curvas afines (las dadas por f y g) son curvas asociadas a la mis-
ma curva proyectiva. Así, aunque una de las curvas afines contenga un punto
singular podríamos encontrar otra curva afín asociada a la misma curva pro-
yectiva que no tenga ninguno.
.
Teorema 1.12 (Teorema de Bezout).
Sean C = {(x : y : z) ∈ P2|F[x,y,z] = 0} y D = {(x : y : z) ∈ P2|G[x,y,z] = 0}dos curvas proyectivas de grados m y n respectivamente (m = gr(F),
n = gr(G)). Si C y D no tienen componentes irreducibles en común,
entonces C y D tienen mn puntos en común contando sus multiplici-
dades.
Ejemplo 1.4.
• Dos rectas diferentes (curvas proyectivas de grado 1) se cortan siempre en un punto.
En efecto, si las consideramos en el plano afín, sabemos que dos rectas diferentes o
bien se cortan en un punto o bien son paralelas y, en este caso, se cortan en un punto
de la recta del infinito del plano proyectivo.
• Dos cónicas diferentes (curvas proyectivas de grado 2) se cortan exactamente en 4
puntos.
.
Corolario 1.13.
Una cónica definida por un polinomio irreducible F de grado 2, no
tiene puntos singulares.
Demostración: Una cónica es una curva proyectiva de grado 2. Suponemos
que esta cónica tiene un punto singular. Tomemos otro punto de la cónica y
consideramos la recta que pasa por estos dos puntos; esta recta es una curva
proyectiva de grado 1.
Nuestra cónica es una curva proyectiva de grado 2; por lo tanto, por el teorema
de Bezout, la recta y la cónica tienen 2 puntos en común, pero como el punto
singular tiene multiplicidad más grande o igual que 2, el número de puntos en
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 16 Criptografía con curvas elípticas
común será de 3 o más. Ello contradice el teorema de Bezout, a menos que la
recta y la cónica tengan una componente irreducible en común, componente
que debería ser la propia recta. Pero dado que F es irreducible, la cónica solo
tiene una componente irreducible
1.4. Puntos racionales
El cuerpo de los números racionales lo representaremos por Q.
.
Definición 1.14 (Sucesión fundamental).
Una sucesión de números an, con ai ∈ Q decimos que es una sucesión
fundamental si ∀ε > 0 ∃nε ∈ N tal que |an – am| < ε, ∀m,n > nε, donde la
norma es la norma euclídea.
Observación
El cuerpo R de los númerosreales se puede definir comoel conjunto de todas lassucesiones fundamentales,módulo una cierta relaciónde equivalencia.
.
Definición 1.15 (Cuerpo p-ádico).
Sea p primo. Todo número a ∈ Q se puede escribir de la forma a =
pr m
n, donde mcd(m,p) = 1 y mcd(n,p) = 1. Entonces, definimos la norma
p-ádica de a como: |a|p =1
pr.
Definimos el cuerpo p-ádico Qp como el conjunto de todas las suce-
siones fundamentales con esta norma, módulo una cierta relación de
equivalencia.
.
Definición 1.16 (Puntos racionales de una curva).
Sea K un cuerpo, y C = Cf (K) una curva. Decimos que p = (p1,p2) es un
punto racional de la curva si f (p) = 0 y p ∈ K2.
.
Teorema 1.17 (Teorema de Legendre).
Una cónica (con coeficientes en Q) tiene un punto racional si y solo
si tiene un punto racional sobre R y sobre los cuerpos Qp para todo
primo p.
Observación
El Teorema1.17 es falso paracurvas de grado mayor que2. Para curvas de grado 2, escierto para cualquier númerode variables, es decir, curvasplanas o no, definidas poruna forma cuadrática(Hasse-Minkowski).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 17 Criptografía con curvas elípticas
1.4.1. Puntos racionales de una curva de grado 1
Una curva de grado 1 es una recta. La ecuación de una tal recta se puede
escribir como Ax + By + C = 0.
Consideremos una parametrización de la recta o sea, expresaremos los puntos
de la recta en función de un parámetro. Una manera de hacerlo sería:
.
Algoritmo 1.18.
t –→ (t, C–AtB )
Ahora, dando a t valores en el cuerpo obtenemos puntos racionales de nuestra
recta. En particular si el cuerpo base es infinito, como Q, R,..., las rectas tienen
infinitos puntos racionales.
1.4.2. Puntos racionales de una curva de grado 2
Una curva de grado 2 es una cónica. En el caso K = Q,R,..., (cuerpos ordena-
dos) la ecuación de una cónica, tras cambios apropiados de coordenadas, se
puede escribir de una de las formas siguientes:
1) x2 + y2 = c < 0 =⇒ ∅.
2) x2 + y2 = 0 =⇒ un punto.
3) x2 = 0 =⇒ recta doble.
4) xy = 0 =⇒ dos rectas.
5) y = x2 =⇒ parábola.
6) xy = 1 =⇒ hipérbole.
7) x2 + y2 = c > 0 =⇒ elipse.
Los casos 2, 3 y 4 son curvas degeneradas o no irreducibles y, por lo tanto, no
las trataremos.
Los casos 5, 6, 7 son proyectivamente equivalentes; es decir, en el plano pro-
yectivo, podemos pasar de unos a otros vía un cambio de variables.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 18 Criptografía con curvas elípticas
Ejemplo 1.5. Cálculo de puntos racionales en una cónica
Consideremos, como ejemplo, la cónica afín x2 + y2 = 1 y calculemos sus puntos racio-
nales. En primer lugar, se ve fácilmente que el punto p = (0,1) es un punto racional de la
curva. Ahora, vamos a ver si podemos calcular los restantes.
Los puntos de la cónica los podemos pensar como intersecciones de la cónica con rectas
que pasan por este punto fijado p = (0,1).
Consideramos las rectas r : Ax + By + C = 0, del haz de rectas que pasan por el punto p.
Como p = (0,1) pertenece a la recta, se tiene que B + C = 0, o sea C = –B.
Podemos, por tanto, escribir la ecuación de la recta r como Ax + By – B = 0 o, también,AB
x + y – 1 = 0.
Hagamos A′ =A
By, entonces la recta será, A′x + y – 1 = 0.
Así, el haz de rectas que pasan por p = (0,1) es {A′x + y – 1 = 0}A′ (o sea, variando los
valores del parámetro A′, encontramos todas las rectas del haz).
Hagamos ahora la intersección de las rectas del haz con la cónica. O sea, resolvamos el
sistema de ecuaciones:
8
<
:
A′x + y – 1 = 0
x2 + y2 = 1
Haciendo operaciones, y = 1 – A′x
x2+(1–A′x)2 = 1→ x2+1–2A′x+A′2x2 = 1 → x2(1+A′2)–2A′x = 0 → x(x(1+A′2)–2A′) = 0.
Posibilidades:
8
>
<
>
:
x = 0→ punto (0,1)
x(1 + A′2) – 2A′ = 0, x =2A′
1 + A′2→ punto
„
2A′
1 + A′2,
1 – A′2
1 + A′2
«
Así, escogiendo como punto fijo p = (0,1), parametrizamos la cónica inicial de la siguiente
manera:
Algoritmo 1.19.
t –→“
2t1+t2 , 1–t2
1+t2
”
Para cada t del cuerpo base, el punto de la curva
„
2t
1 + t2,1 – t2
1 + t2
«
también lo es; en
particular si el cuerpo es infinito, la curva dada por f (x,y) = x2 + y2 – 1 tiene infinitos
puntos racionales.
1.4.3. Puntos racionales de una curva de grado 3
Observación
Hemos demostrado que, enel caso de un cuerpo infinito,si una cónica tiene un puntoracional, posee infinitos. Conesto no podemos decir quetoda cónica tiene infinitospuntos racionales porqueexisten curvas sin ningúnpunto racional; por ejemplo,x2 + y2 = –1 sobre Q.
Una curva de grado 3 es una cúbica.
.
Proposición 1.20.
Si F[x,y,z] = 0 es una curva proyectiva irreducible de grado 3 con un
punto singular, entonces este es único. Además, este único punto sin-
gular tiene multiplicidad 2.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 19 Criptografía con curvas elípticas
Demostración: Suponemos que tenemos una cúbica con dos puntos singu-
lares. Consideramos la recta que pasa por estos dos puntos. La curva y la recta
tienen, como mínimo, 4 puntos en común contando multiplicidades; pero,
teniendo en cuenta el teorema de Bezout, solo podrían tener 3, a menos que
tuviesen una componente irreducible en común, lo que como en el corolario
1.13 no puede ocurrir. Por tanto, la cúbica solo puede tener un punto singular
a lo sumo.
Supongamos ahora que este punto singular tiene multiplicidad mayor que
dos. Entonces una recta que pase por este punto y otro punto cualquiera de
la cúbica tendría, al menos, 4 puntos en común con la curva y esto, por el
teorema de Bezout, no puede ocurrir.
.
Proposición 1.21.
Un punto singular es siempre racional.
Resumiendo, una curva de grado 3 o no tiene puntos singulares o tiene exacta-
mente un punto singular que es un nodo o una cúspide y, además, es racional.
Si tenemos una curva de grado 3 no singular, sabemos que una recta que pasa
por dos de sus puntos corta a la curva en un tercer punto. Además, si dos de
estos punto son racionales, entonces el tercero también lo es. (Diofantes, siglo
III a. C.).
.
Teorema 1.22 (Teorema de la base finita de Mordell. (1923)).
Si C es una cúbica no singular sobre Q, existe un conjunto finito de
puntos racionales sobre C tal que todos los otros puntos racionales de
la curva se pueden encontrar haciendo construcciones de tangentes y
secantes a partir de estos.
1.4.4. Puntos racionales de una curva de grado 4
.
Teorema 1.23 (Teorema de Faltings (1983)).
Las curvas irreducibles de grado ≥ 4 tienen un número finito de puntos
racionales sobre el cuerpo Q.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 20 Criptografía con curvas elípticas
Resumimos lo que hemos dicho hasta ahora sobre los puntos racionales so-
bre Q:
• Curvas de grado 1: hay infinitos puntos racionales.
• Curvas de grado 2: si hay un punto racional, hay infinitos. Hilbert y Hur-
witz (1890) lo demuestran para las curvas de género cero (las de grado 1 y
2 lo son).
• Curvas de grado 3: hay un conjunto infinito de puntos racionales, conjun-
to que es finitamente generado. Mordell, 1923.
• Curvas de grado 4: hay un número finito de puntos racionales. Conjetura-
do por Mordell y demostrado por Faltings, 1983.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 21 Criptografía con curvas elípticas
2. Geometría de las curvas elípticas.
Comencemos dando una definición más formalizada de curva elíptica.
.
Definición 2.1 (Curva elíptica).
Una curva elíptica es una curva plana no singular de grado 3 junto con
un punto racional prefijado, que denominaremos punto base.
2.1. Ecuación de Weierstrass
Cualquier curva elíptica puede ser escrita en P2 como una ecuación cúbica de
la siguiente forma:
Ax3 + Bx2y + Cx2z + Dxyz + Ey2z + Fy2x + Gy3 + Hz3 + Iz2x + Jz2y = 0
Tomando un sistema de referencia adecuado, tales curvas se pueden expresar
en la forma de Weierstrass:
y2z + a1xyz + a3yz2 = x3 + a2x2z + a4xz2 + a6z3 (1)
con a1, . . . ,a6 ∈ K
O en el plano afín, curvas de grado 3 de la forma:
y2 + a1xy + a3y = x3 + a2x2 + a4x + a6 (2)
Si char(K) 6= 2, entonces
(y +1
2a1x +
1
2a3)2 = y2 + a1xy + a3y +
1
4a1x2 +
1
4a2
3 +1
2a1a3x
(y +1
2a1x +
1
2a3)2 – (
1
4a1x2 +
1
4a2
3 +1
2a1a3x) = x3 + a2x2 + a4x + a6
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 22 Criptografía con curvas elípticas
Podemos pues simplificar la ecuación (1) haciendo el cambio
y := y +1
2a1x +
1
2a3
y nos queda:
y2 = x3 + (a2 +1
4a1)x2 + (a4 +
1
2a1a3)x + (a6 +
1
4a2
3)
Por tanto, si char(K) 6= 2, la ecuación de Weierstrass se puede escribir:
y2 = x3 +b2
4x2 +
b4
2x +
b6
4(3)
Suponemos ahora que además la característica del cuerpo es diferente de 3 ,
(x +b2
3 · 4)3 = x3 +b2
4x2 +
b22
42 · 3x +b3
2
(3 · 4)3
y2 = (x +b2
3 · 4)3 – 3xb2
2
(3 · 4)2– (
b2
3 · 4)3 + 2b4x + b6
Hagamos ahora el cambio,
x := x +b2
3 · 4
y nos queda la ecuación:
y2 = x3 + 27c4x – 54c6
Hemos simplificado más todavía la ecuación puesto que hemos eliminado el
coeficiente de x2.
Finalmente si char(K) 6= 2,3, la ecuación (1) se puede escribir de manera más
simple cómo:
y2 = x3 + Ax + B (4)
De manera similar, cuando tenemos un cuerpo de característica 2 o 3, también
se puede simplificar la ecuación (1).
Si char(K) = 2, entonces la ecuación de la curva elíptica tiene una de las dos
formas siguientes:
Si a1 6= 0 en la ecuación (1) : y2 + xy = x3 + b2x2 + b6, donde b6 6= 0
Si a1 = 0 en la ecuación (1) : y2 + b3y = x3 + b4x + b6, donde b3 6= 0(5)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 23 Criptografía con curvas elípticas
Si char(K) = 3, entonces tenemos:
y2 = x3 + a2x2 + a6 (6)
Las dos primeras curvas y2 = x3 – 10x + 9 y y2 = x3 – 2x + 3 definidas sobrelos números reales. La última, y2 = x3 + 10x + 9 sobre F1031
y
x
8
6
4
2
–2
–4
–6
–8
0
54321–3 –2 –1
y
x
0
4321–1
10
5
–10
–5
0
1.000
800
600
400
200
0 1.000800600400200
.
Proposición 2.2.
Sea K un cuerpo con char(K) 6= 2,3, sea C una curva sobre K, C : y2 =
x3+Ax+B. Sea∆ = 4A3+27B2 el discriminante de la curva. Entonces:
• ∆ 6= 0 ⇔ C no tiene puntos singulares.
• ∆ = 0 y A = 0 =⇒ C tiene una cúspide.
• ∆ = 0 y A 6= 0 =⇒ C tiene un nodo.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 24 Criptografía con curvas elípticas
Demostración: Sea C : y2 = x3 + Ax + B, f (x,y) = x3 + Ax + B – y2. C tiene puntos
singulares si, y solo si,∂f
∂x(p) = 0,
∂f
∂y(p) = 0.
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x= 3x2 + A
∂f
∂y= –2y
Puntos singulares:
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x= 0 ⇐⇒ x = ±
r
–A
3,
∂f
∂y= 0 ⇐⇒ y = 0
x3 + Ax + B – y2 = 0→ –A
3x + Ax + B = 0→ x =
3B
2A
entonces
x2 =9B2
4A2=
–A
3→ 4A3 + 27B2 = 0
1) C no tiene puntos singulares si, y solo si, 4A3 + 27B2 6= 0.
2) Sea 4A3 + 27B2 = 0 y A = 0, entonces B = 0 y f (x,y) = x3 – y2. El punto (0,0)
es un punto singular, además, según la definición1.11, sabemos que es una
cúspide.
3) Sea 4A3 + 27B2 = 0 y A 6= 0. El punto“3B
2A,0”
es un punto singular. f (x,y) =
x3 +Ax+B–y2 se puede escribir como f (x,y) =“
x–3B
2A
”3+
9B
2A
“
x–3B
2A
”2–(y–0)2,
entonces f2
“
x –3B
2A,y – 0
”
=9B
2Ax2 – y2 =
“
r
9B
2Ax – y
”“
r
9B
2Ax + y
”
. Así, el punto“3B
2A,0”
es un punto doble y, según la definición1.11, sabemos que es un nodo.
2.2. La ley de grupo de una curva elíptica
Sea C ⊂ P2 una curva elíptica dada por la ecuación de Weierstrass. Denotemos
O al punto base de la curva. Sea L ⊂ P2 una recta. Como la ecuación de la curva
tiene grado 3, L y C se intersecan en, exactamente, 3 puntos, digamos L ∩ C =
{P,Q,R}. Observemos, sin embargo, que si L es tangente a C, entonces P,Q,R
no serán tres puntos diferentes; habrá uno doble (el punto de tangencia). El
hecho de que L ∩ C, contando multiplicidades, dé tres puntos se deduce del
teorema de Bezout (teorema 1.12).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 25 Criptografía con curvas elípticas
2.2.1. Ley de grupo en C
Sean P,Q ∈ C y L la recta que pasa por estos dos puntos (la tangente en el caso
P = Q), y R el tercer punto de intersección de L y C. Sea L′ la recta que une R y
O. Entonces L′∩C = {R,O,P+Q}; es decir P+Q es el tercer punto de intersección
de la curva y la recta que pasa por R y O.
Definimos así una operación sobre los puntos de la curva elíptica de forma
que P + Q sea el punto calculado a partir de P y Q tal y como acabamos de
describir en el párrafo anterior. La operación que hemos definido dota a C de
estructura de grupo abeliano.
.
Proposición 2.3.
La ley de grupo en C tiene las siguientes propiedades:
• Si L ∩ C = {P,Q,R} (puntos no necesariamente diferentes), entonces
(P + Q) + R = O.
• P + O = P, ∀P ∈ C.
• P + Q = Q + P, ∀P,Q ∈ C.
• ∀P ∈ C ∃(–P) ∈ C tal que P + (–P) = O.
• (P + Q) + R = P + (Q + R), ∀P,Q,R ∈ C
Notación
Para n ∈ Z, P ∈ Cescribiremos:• nP = P + · · · + P n veces, si
n > 0.• nP = (–P) + · · · + (–P) |n|
veces, si n < 0
• 0P = O
Para facilitar los cálculos, tomaremos como punto base el punto del infinito
de la curva, O = (0 : 1 : 0). Dados dos puntos de la curva, P y Q calculemos
R (en la figura siguiente, R es el tercer punto donde la recta que pasa por P y
Q corta a la curva). Si ahora queremos calcular la intersección de la recta que
pasa por R y O con la curva elíptica, basta encontrar el simétrico de R respecto
al eje de las x.
Suma de dos puntos
P + Q
P
Q
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 26 Criptografía con curvas elípticas
Finalmente, detallamos un algoritmo, análogo al algoritmo de multiplicar y
elevar al cuadrado, para calcular nP con el mínimo número posible de opera-
ciones.
Antes que nada calcularemos la expansión binaria de n: n ↔ b1b2 . . . br, bi ∈{0,1} (br es el bit menos significativo, o sea, las unidades).
.
Algoritmo 2.4.
function Suma(n)
begin
for j← 1 to n
if bj = 1 then parcial← parcial + P endif
if j < r then parcial← 2·parcial endif
endfor
return(parcial)
end
Ejemplo 2.1.
Calcular 19P.
El número 19 escrito en binario es 10011. Entonces, de acuerdo con el algoritmo anterior
19P = 2
„
2“
2`
2(0 + P)´
”
+ P
«
+ P.
Ejemplo 2.2.
Sea K = F23, C : y2 = x3 + x + 1, P1 = (3,10), P2 = (9,7).
• Calcular P1 + P2.
• Calcular 10·P1
Empezaremos calculando la recta que pasa por P1 y P2, que denominaremos L : y = αx+β
α =7 – 10
9 – 3= –
1
2= –12 = 11
10 = 11 · 3 + β =⇒ β = 10 – 10 = 0
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 27 Criptografía con curvas elípticas
Por lo tanto L : y = 11x.
Ahora calcularemos la intersección de esta recta con la curva, o sea L ∩ C:
8
>
<
>
:
y = 11x
y2 = x3 + x + 1
Sustituyendo la y en la ecuación de la curva obtenemos
6x2 = x3 + x + 1
luego
0 = x3 + 17x2 + x + 1 = (x – 3)(x – 9)(x – x3)
puesto que sabemos que pasa por los puntos P1 y P2.
Recordar
De acuerdo con el teoremade Bezout, una recta corta auna curva elíptica en trespuntos P,Q,R. Si dos de estospuntos son iguales, digamosP = Q, entonces la recta estangente a la curva en elpunto P.
Igualamos los coeficientes de grado 2:
17 = –3 – 9 – x3 =⇒ x3 = –12 – 17 = 17
y3 = 11 · 17 = 3
El tercer punto de intersección es pues (17,3).
Finalmente, calcularemos el punto simétrico, sobre F23, respecto al eje de abscisas: P1 +
P2 = (17,20)
Para calcular 10P1 empezaremos escribiendo en binario 10↔ 1010. Aplicando el algorit-
mo análogo al de multiplicar y elevar, tenemos: 10P1 = 2(2(2P1) + P1)
Cálculo de la tangente que pasa por P1:
La ecuación de la tangente por un punto P es:
∂f
∂x(P)(x – x1) +
∂f
∂y(P)(y – y1) = 0
Tenemos f (x,y) = y2 – x3 – x – 1
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x(P1) = –4 – 1 = 18
∂f
∂y(P1) = 20
Por lo tanto 18(x – 3) + 20(y – 10) = 18x + 20y + 22 = 0→ 10y = 14x + 12→ 5y = 7x + 6→y = 6x + 15, (5–1 = 14).
LP1: y = 6x + 15 recta tangente por P1.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 28 Criptografía con curvas elípticas
Ahora calcularemos la intersección LP1∩ C
8
>
<
>
:
y = 6x + 15
y2 = x3 + x + 1
Sustituyendo y en la ecuación de la curva tenemos
(6x + 15)2 = x3 + x + 1
entonces
0 = x3 – 13x2 + 5x + 6 = (x – 3)2(x – x3)
ya que el punto de tangencia P1 = (3,10) es una solución doble del sistema de ecuaciones.
Miramos el coeficiente de grado 2:
–13 = –3 – 3 – x3 =⇒ x3 = –6 + 13 = 7
y3 = 6 · 7 + 15 = 11
El punto de intersección es pues (7,11) y su simétrico sobre F23 es (7,12).
Por lo tanto: Q = 2P1 = (7,12)
Seguimos..., calculamos ahora la tangente a la curva que pasa por Q:
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x(Q) = 13
∂f
∂y(Q) = 1
Por lo tanto 13(x – 7) + (y – 12) = 13x + y + 11 = 0→ y = 10x + 11.
LQ : y = 10x + 11 recta tangente por Q.
La intersección de esta tangente con la curva LQ ∩ C
8
>
<
>
:
y = 10x + 11
y2 = x3 + x + 1
0 = x3 – 8x2 – 12x – 5 = (x – 7)2(x – x3)
Miramos el coeficiente de grado 2:
–8 = –7 – 7 – x3 =⇒ x3 = 17
y3 = 10 · 17 + 11 = 20
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 29 Criptografía con curvas elípticas
El punto de intersección es (17,20) y, el simétrico sobre F23, es (17,3).
O sea: R = 2Q = (17,3)
Ahora, la recta que pasa por P1 y R, LP1,R : y = αx + β
α =3 – 10
17 – 3= –
8
7= 8 · 10 = 11
10 = 11 · 3 + β =⇒ β = 10 – 10 = 0
Por lo tanto LP1,R : y = 11x.
Calculemos ahora la intersección con la curva: LP1,R ∩ C:
8
>
<
>
:
y = 11x
y2 = x3 + x + 1
El punto de intersección es (9,7) y el simétrico sobre F23, es S = R + P1 = (9,16).
Calcularemos la tangente que pasa por S:
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x(Q) = 9
∂f
∂y(Q) = 9
Por lo tanto 9(x – 9) + 9(y – 16) = 0→ x – 9 + y – 16 = 0→ y = 22x + 2.
LS : y = 22x + 2 recta tangente por S.
Ahora corresponde calcular la intersección de esta recta LS con la curva: LS ∩ C
8
>
<
>
:
y = 22x + 2
y2 = x3 + x + 1
0 = x3 – x2 + 3x – 3 = (x – 9)2(x – x3)
Miramos el coeficiente de grado 2:
–1 = –9 – 9 – x3 =⇒ x3 = 6
y3 = –6 · +2 = 19
El punto de intersección es (6,19) y el simétrico a F23, es 2S = (6,4). Esta es la solución
que buscábamos:
10P1 = (6,4)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 30 Criptografía con curvas elípticas
Ejemplo 2.3.
Sea K = F16, C : y2 + xy = x3 + α4x2 + 1, P1 = (α6,α8), P2 = (α3,α13).
• Construir el cuerpo F16 (utilizando el polinomio primitivo x4 + x + 1)
• Calcular P1 + P2
• Calcular 2·P1
En primer lugar construiremos el cuerpo finito F16 = Z2[x]‹
x4 + x + 1 .
Sea α = [x], la lista de los elementos en forma exponencial y su equivalente forma poli-
nomial es entonces:
α = [x]
α2 = [x]2 = [x2]
α3 = [x]3 = [x3]
α4 = [x]4 = [x4] = [x + 1] = [x] + 1 = α + 1
α5 = α · α4 = α2 + α
α6 = α3 + α2
α7 = α4 + α3 = α3 + α + 1
α8 = α2 + 1
α9 = α3 + α
α10 = α2 + α + 1
α11 = α3 + α2 + α
α12 = α3 + α2 + α + 1
α13 = α3 + α2 + 1
α14 = α3 + 1
α15 = 1
Ahora calcularemos P1 + P2 =
• Recta que pasa por P1 y P2, LP1,P2: y = ax + b
a =α13 – α8
α3 – α6=α3 + α2 + 1 + α2 + 1
α3 + α3 + α2=α3
α2= α
Por lo tanto, y = αx + b. El punto P1 pertenece a LP1,P2:
α8 = α · α6 + b =⇒ b = α8 + α7 = α11
LP1,P2: y = αx + α11
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 31 Criptografía con curvas elípticas
• LP1,P2∩ C
8
>
<
>
:
y = αx + α11
y2 + xy = x3 + α4x2 + 1
Sustituyendo el valor de y en la segunda ecuación, tenemos:
α2x2 + α10 + αx2 + α11x = x3 + α4x2 + 1
0 = x3 + α8x2 + α12x + α10 + 1 = (x – α6)(x – α3)(x – x3)
Miramos el coeficiente de grado 2:
α8 = α6 + α3 + x3 =⇒ x3 = α8 + α6 + α3 = α2 + 1 + α3 + α2 + α3 = 1
y3 = α + α11 = α6
Sobre F4, el simétrico de un punto es él mismo.
Solución:
P1 + P2 = (1,α6)
En segundo lugar, vamos a calcular 2P1
– Tangente que pasa por P1:
8
>
>
>
>
<
>
>
>
>
:
∂f
∂x(P1) = α9
∂f
∂y(P1) = α6
α9(x – α6) + α6(y – α8) = 0→ α3x + α9 + y + α8 = 0
LP1: y = α3x + α12
– LP1∩ C
8
>
<
>
:
y = α3x + α12
y2 + xy = x3 + α4x2 + 1
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 32 Criptografía con curvas elípticas
Sustituyendo el valor de y en la segunda ecuación, tenemos:
α6x2 + α9 + α3x2 + α12x = x3 + α4x2 + 1
0 = x3 + α10x2 + α12x + α7 = (x – α6)2(x – x3)
Miramos el coeficiente de grado 2:
α10 = α6 + α6 + x3 = x3
y3 = α13 + α12 = α
Solución:
2P1 = (α10,α)
2.2.2. Ecuación general de P + Q
Dada una curva elíptica, para calcular el resultado de hacer operaciones de
acuerdo con la ley de grupo definida en el subapartado 2.2.1, podemos usar
una fórmula que resume los cálculos que acabamos de hacer en los ejercicios
anteriores.
Observación
Verificar, si se desea, que elpunto base O = (0,1,0)
pertenece a la curvaC : y2 = x3 + Ax + B.
Consideramos la curva elíptica C sobre K con char(K) 6= 2,3, con ecuación
C : y2 = x3 + Ax + B. El punto base (en la recta del infinito) es O = (0 : 1 : 0)
de forma que el simétrico –P de un punto P = (x,y) se puede tomar como –P =
(x, – y). Sean P = (x1,y1), Q = (x2,y2), P + Q = (x3,y3), con P,Q ∈ C, –P = (x1, – y1).
Suponemos que Q 6= –P. Entonces:
a)P 6= Q
8
>
>
>
>
>
<
>
>
>
>
>
:
x3 =
„
y2 – y1
x2 – x1
«2
– x1 – x2
y3 =
„
y2 – y1
x2 – x1
«
(x1 – x3) – y1
b)P = Q
8
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
:
x3 =
3x21 + A
2y1
!2
– x1 – x1
y3 =
3x21 + A
2y1
!
(x1 – x3) – y1
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 33 Criptografía con curvas elípticas
Si Q = –P, P + Q = O (punto base de C).
Si char(K) = 2, tenemos dos casos (ver ecuación 5):
• E : y2 + cy = x3 + ax + b, c 6= 0
–P = (x1,y1 + c)
a) P 6= Q
8
>
>
>
>
>
<
>
>
>
>
>
:
x3 =
„
y1 + y2
x1 + x2
«2
+ x1 + x2
y3 =
„
y1 + y2
x1 + x2
«
(x1 + x3) + y1 + c
b) P = Q
8
>
>
>
>
>
<
>
>
>
>
>
:
x3 =x4
1 + a2
c2
y3 =
x21 + a
c
!
(x1 + x3) + y1 + c
• E : y2 + xy = x3 + ax + b, b 6= 0
–P = (x1,y1 + x1)
a) P 6= Q
8
>
>
>
>
>
<
>
>
>
>
>
:
x3 =
„
y1 + y2
x1 + x2
«2
+y1 + y2
x1 + x2+ x1 + x2 + a
y3 =
„
y1 + y2
x1 + x2
«
(x1 + x3) + x3 + y1
b) P = Q
8
>
>
>
>
>
<
>
>
>
>
>
:
x3 = x21 +
b
x21
y3 = x21 +
„
x1 +y1
x1
«
x3 + x3
Ejemplo 2.4.
Dada la curva y2 = x3 + 10x + 13 sobre F23 y los puntos de la misma P = (7,9), Q = (17,6),
calcular P + Q.
Usando las fórmulas anteriores, si hacemos P + Q = (x3,y3), resulta:
x3 =` 6 – 9
17 – 7
´2– 7 – 17 =
9
8– 1 = 3,
y3 =6 – 9
17 – 7(7 – 3) – 9 =
–3
44 – 9 = 22.
Fijémonos en que hemos hecho sumas y multiplicaciones en el cuerpo finito F23 pero,
también, divisiones. O, de otro modo, hemos tenido que calcular inversos en F23.
El cálculo de inversos en un cuerpo finito es una operación costosa que se puede obviar
usando coordenadas proyectivas en lugar de coordenadas afines.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 34 Criptografía con curvas elípticas
3. Curvas elípticas sobre cuerpos finitos.
3.1. Número de puntos de una curva elíptica
En todo este apartado K = Fq representará un cuerpo finito, con q = pm ele-
mentos, para un cierto m ∈ N y p primo. Si E es una curva elíptica sobre K
escribiremos E o E(q) para designarla.
Recordar
Zn representa el anillo de losenteros módulo n.
Notación
Escribiremos N = #E(q) paraindicar el número de puntosracionales de E.
.
Teorema 3.1.
`
E(q), +´
, donde + representa la ley de grupo definida en el subapartado
2.2.1, es un grupo cíclico, que puede ser generado por un solo elemen-
to, o bien se puede descomponer como suma directa de dos subgrupos
cíclicos con órdenes n1 y n2, respectivamente, de forma que
E(q) ∼= Zn1 ⊕ Zn2
donde n2 divide n1 y N = n1n2.
.
Definición 3.2 (Residuos cuadráticos).
Sea x ∈ Fq. Si existe z ∈ Fq tal que x = z2, diremos que x es un resi-
duo cuadrático (QR). En caso contrario, diremos que x es un no-residuo
cuadrático (QNR).
.
Definición 3.3 (Símbolo de Legendre).
Sea p un número primo y sea n ∈ Fp. Definimos el símbolo de Legendre
de n respecto p, y lo denotaremos por
„
n
p
«
, cómo:
„
n
p
«
=
8
>
>
<
>
>
:
1 si n es QR (mod p)
–1 si n es QNR (mod p)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 35 Criptografía con curvas elípticas
Suponemos que char(K) 6= 2,3, E : y2 = x3 + Ax + B. La curva E contiene el punto
del infinito (0 : 1 : 0), por lo tanto, el número de puntos de la curva es N ≥ 1.
Tomemos ahora x ∈ Fq (x puede tomar q valores diferentes), si ∃y ∈ Fq tal
que y2 = x3 + Ax + B, entonces –y también cumple esta ecuación. Por lo tanto,
podemos decir que N ≤ 1 + 2q.
Definimos ahora el carácter cuadrático χ:
.
Algoritmo 3.4.
F∗q –→ {1, – 1}
x –→ 1, si x es QR
x –→ –1, si x es QNR
Recordar
Un carácter cuadrático χ esun homomorfismo del grupomultiplicativo del cuerpofinito Fq (que escribiremosF∗
q ) en el grupo multiplicativo{1, – 1}.
Si q es un número primo,
entonces χ(x) =
„
x
q
«
.
Sea f (x) = x3 + Ax + B. Fijado x ∈ Fq, si f (x) es QR, entonces tenemos 2 puntos
de la curva; en cambio, si es QNR no tenemos ninguno. Así, podemos escribir
N en función de f (x):
N = 1 +X
x∈Fq
(χ(f (x)) + 1) = 1 + q +X
x∈Fq
χ(f (x))
Vemos el caso particular q = p , Fq = Z/p.
∀x ∈ Z/p, xp–1 = 1 (mod p) =⇒ xp–12 =
8
>
>
<
>
>
:
+1, si x es QR
–1, si x es QNR
.
Lema 3.5.
Sea p un número primo.
X
x∈(Z/p)∗
xi =
8
>
>
<
>
>
:
p – 1, si i = 0 o i = p – 1
0, si i 6= 0,p – 1
Demostración: Si i = 0, es claro queX
x∈(Z/p)∗
x = p – 1. Con i = p – 1 nos
encontramos en la misma situación puesto que xp–1 = 1 (mod p).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 36 Criptografía con curvas elípticas
Consideramos el caso i 6= 0,p – 1:
∀x ∈ (Z/p)∗ tenemos que xp – x = 0. Por lo tanto, podemos escribir xp – x =
(x – x1) · · · (x – xp), donde Z/p = {x1, . . . ,xp}.
Mirando el coeficiente de xp–1 en la ecuación xp –x = 0, tenemos 0 = x1 + · · ·+xp.
También, mirando el coeficiente de xp–2 tenemosX
i,j
xixj = 0. PeroP
x2i =
(P
xi)2 – 2
P
xixj = 0. Haciendo lo mismo para cada exponente i encontraría-
mos:X
x∈(Z/p)∗
xi = 0, ∀i /∈ {0,p – 1}.
Usaremos este lema para encontrar el valor de N:
N =1 + p +X
x∈Fp
χ(f (x)) = 1 + p +X
x∈Fp
(f (x))p–12
= 1 + p +X
x∈Fp
(x3 + Ax + B)p–12 = 1 + p +
X
x∈Fp
3·p–12
X
i=0
fixi
= 1 + p +
3·p–12
X
i=0
fi
X
x∈Fp
xi = 1 + p +
3·p–12
X
i=0
fi
X
x∈F∗
p
xi + f0
= 1 + p + (p – 1)f0 + (p – 1)fp–1 + f0.
Por lo tanto, N = 1 – fp–1 (mod p).
Casos especiales:
• Si fp–1 = 0 (mod p) y, más concretamente, si N = 1 + p, E se denomina
curva supersingular. Este tipo de curvas es importante, puesto que existe
un algoritmo para romper el logaritmo elíptico definido sobre ellas.
• Si fp–1 = 1 (mod p) y, concretamente, si N = p, E se denomina curva anóma-
la. En este caso también es sencillo romper el logaritmo elíptico (Semaev-
Smart-Satoh-Araki).
.
Definición 3.6 (Curvas supersingulares y anómalas).
Dado el cuerpo K = Fq, con q = pm, p primo, entonces:
• Si N = 1+q± t, donde p | t, diremos que E es una curva supersingular.
• Si N = 0 (mod p), diremos que E es una curva anómala.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 37 Criptografía con curvas elípticas
Observación
El teorema de Hasse nos daun intervalo bastanteajustado para el valor N:1+q–2
√q ≤ N ≤ 1+q+2
√q.
.
Teorema 3.7 (Teorema de Hasse, 1930).
Consideramos la curva elíptica E(q) y sea N el número de puntos racio-
nales de E(q). Se cumple:
|N – (1 + q)| ≤ 2√
q
Para la demostración de este teorema, se necesita la hipótesis de Riemann.
Hipótesis de Riemann
Es uno de los problemasabiertos más importantes yfamosos de la matemáticacontemporánea. Es el cuartoproblema del milenio que elClay Mathematics Institutedotó con un premio de unmillón de dólares para laprimera persona que aporteuna demostración correctade la conjetura.
.
Definición 3.8 (La función de Riemann).
La función de Riemann viene dada por:
ζ(s) =Y
p primo
1
1 –1
ps
!
=X
n∈N
1
ns
Para valores reales de s tenemos:
ζ(s) =
8
>
>
>
>
>
>
<
>
>
>
>
>
>
:
1 + 12 + 1
3 + 14 + · · · =∞, si s = 1
tiene solución, si s > 1
diverge, si s < 1.
La hipótesis de Riemann dice que, sobre el cuerpo de los números com-
plejos, los ceros no triviales de ζ(s) se encuentran todos sobre la recta
Re(s) = 12 .
Ahora nos planteamos el problema inverso. Dado un valor N, ¿existe una
curva elíptica que tenga este número de puntos?
.
Teorema 3.9.
Sobre el cuerpo finito Fq, donde q = pm y p primo, si t es cualquier valor
tal que:
8
>
>
<
>
>
:
|t| ≤ 2√
q
si p|t → pn|t, donde n =jm + 1
2
k
entonces, podemos encontrar una curva elíptica con N = 1+q+t puntos.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 38 Criptografía con curvas elípticas
Ejemplo 3.1.
Las curvas elípticas sobre Z2 se pueden escribir cómo:
y2 + xy = x3 + b2x2 + b6, si ∆ = b6 6= 0
y2 + b3y = x3 + b4x + b6, si ∆ = b43 6= 0
Por el teorema de Hasse, 3 – 2√
2 ≤ N ≤ 3 + 2√
2→ 1 ≤ N ≤ 5.
• E : y2 + y = x3 + x + 1, N = 1 (solo tiene el punto del infinito).
• E : y2 + y = x3 + x, N = 5.
• E : y2 + xy = x3 + x2 + 1, N = 2.
• E : y2 + xy = x2 + 1, N = 4.
• E : y2 + y = x3 + 1, N = 3.
• E : y2 + y = x3, N = 3.
Las dos últimas curvas son curvas supersingulares, puesto que N = 1 + p y la tercera es
una curva anómala.
¿Cómo podemos calcular el número de puntos N de una curva elíptica? Hay
diferentes métodos:
1) Por fuerza bruta, probando toda pareja de puntos (x,y) ∈ F2q .
2) A partir de P = (x,y) ∈ E, y 6= 0, calculamos 2P, 3P, · · · hasta obtener el
subgrupo 〈P〉 ⊂ E. Si E fuera cíclico (n1 = N,n2 = 1) y P fuera un generador
de E, obtendríamos 〈P〉 = E. En el supuesto de que N fuese un número primo,
tendríamos que todos los P 6= O son generadores.
3) Algoritmo de Schoof (1985). Calcula el número de puntos de una curva
con una complejidad O(log82(q)).
Hay casos particulares algo más sencillos; por ejemplo, curvas del tipo y2 =
x3 +Ax o y2 = x3 +B. En estos casos se usa el algoritmo de Munuera-Tena (1993)
con complejidad del orden de O(log32(p)).
3.2. Extensión de una curva sobre un cuerpo a una curva sobre un
cuerpo extendido
Una curva elíptica definida sobre Fp puede considerarse también definida so-
bre Fq donde q = pm. Denotemos N = #E(p) = p + 1 – t y Nm = #E(q).
Conjetura de Weil: (de hecho, es un teorema de Schmidt de 1925, previo a
Weil). Sean α,β ∈ C las raíces conjugadas de la ecuación x2+tx+p = 0. Entonces:
Nm = 1 + pm – αm – βm
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 39 Criptografía con curvas elípticas
Ejemplo 3.2.
Consideramos la curva E : y2 + y = x3. Sabemos que E tiene 3 puntos sobre Z/2. Vamos a
calcular cuántos puntos tiene la curva definida por la misma función, sobre F2m .
Calculamos α y β, haciendo t =`
N – (p + 1)´
en la ecuación anterior:
x2 + (3 – 3)x + 2 = 0→
8
<
:
α =√
2y
β = –√
2y
• Si m = 0 (mod 4), entonces Nm = 1 + 2m – 2√
2m
• Si m = 2 (mod 4), entonces Nm = 1 + 2m + 2√
2m
• Si m = 1,3 (mod 4), entonces Nm = 1 + 2m
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 40 Criptografía con curvas elípticas
4. El uso de las curvas elípticas en criptografía.
En 1985, Koblitz y Miller propusieron, de manera independiente, la utiliza-
ción del grupo de puntos de una curva elíptica definida sobre un cuerpo finito
como base para criptosistemas basados en la dificultad de romper el logaritmo
discreto.
4.1. El problema del logaritmo elíptico
Como hemos visto en el apartado anterior, los puntos de una curva elíptica
forman un grupo respecto de la suma. Dado un punto P de una curva elíptica
E, podemos calcular Q = sP, s ∈ Z, donde Q vuelve a ser un punto de la curva E.
.
Definición 4.1 (Problema del logaritmo elíptico).
Sea E una curva elíptica sobre el cuerpo finito Fq, con q = pm, p primo,
m ∈ N, y sea P ∈ E de orden n. El problema del logaritmo elíptico en E
(respecto de la base P) dado Q ∈ E, se basa en encontrar s ∈ Z tal que
Q = sP, en caso de que exista.
En este subapartado veremos algunos métodos y algoritmos conocidos para
romper el logaritmo elíptico.
El algoritmo de Silver -Pohlig-Hellman para romper el logaritmo discreto en
el cuerpo Fp tiene una complejidad de O(p
N1), donde p – 1 = N1 · . . . ·Nr es la
factorización de (p – 1) en primos y N1 es el más grande de estos primos. En
el caso del logaritmo elíptico tenemos que N = N1 · . . . · Nr, es la factorización
de N en primos y N1 es el primo más grande y, del mismo modo,romper este
logaritmo tiene una complejidad de O(p
N1). Observación
Si K = Z/p, p primo grande yN = p, entonces tenemos queN = N1(= p) es un primogrande y además, cualquierpunto diferente del neutro esgenerador con orden N. Porotro lado, hemos visto que siN = p, entonces E es unacurva anómala y el logaritmoes fácil de romper en estoscasos. También es fácil deromper en el caso N = p + 1,que corresponde a las curvassupersingulares.
Supongamos que K = Fq, donde q = pm y p primo pequeño. Sea N = #E(q) y
N1 = #E(p). Sabemos que los puntos que pertenecen a la curva sobre el cuerpo
base, también son puntos de la curva en un cuerpo mayor y el grupo de puntos
de la curva sobre el cuerpo base es un subgrupo del grupo de puntos de la
curva sobre el cuerpo mayor. Así, N1|N y existe un entero d tal que N = N1 · d.
Querríamos N = N1 · . . . · Nr, con algún Ni primo grande; así, si N1 es primo
grande, ya hemos acabado. Si N1 es pequeño, entonces d es grande, si además
d es primo ya tenemos una buena descomposición. En el supuesto de que
N = N1 · d con d primo, se dice que que E es quasiprima.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 41 Criptografía con curvas elípticas
.
Teorema 4.2 (Tena, 1994).
Sea K = Fq, donde q = pm y p primo pequeño, E curva elíptica sobre K.
Una condición necesaria para que E sea cuasiprima es que m sea primo.
El mejor algoritmo conocido para romper el logaritmo elíptico es el método ρ
de Pollard, que necesita
√πn
2pasos (sumas de puntos en curvas elípticas). Este
método se puede paralelizar con r procesadores y conseguir rebajar el número
de pasos necesarios a
√πn
2r.
.
Teorema 4.3 (MOV -Menezes, Okamoto y Vanstone-, 1993).
El cálculo del logaritmo elíptico sobre Z/p es equivalente al cálculo del
logaritmo discreto sobre Fpk para algún entero k.
Para k = 6 cuando p ≃ O(160)
bits, entonces pk≃ O(2000)
bits.
Esta equivalencia se obtiene haciendo la inmersión del grupo de puntos de
la curva definida sobre el cuerpo base dentro del grupo multiplicativo F∗
pk , lo
que solo es posible si N divide pk – 1. En F∗
pk se puede usar el algoritmo index-
calculus o el algoritmo NFS (number field sieve) para romper el logaritmo, lo
que proporciona un algoritmo subexponancial del orden de
exph“
c + o(s)”
·“
log(pk)”
13 ·“
log`
log(pk)´
”
23i
Observación
En la equivalencia dada por elalgoritmo MOV,normalmente, el valor delparámetro k será muy grandey, por lo tanto, no ganaremosnada haciendo la conversióndel logaritmo elíptico enlogaritmo discreto clásico.Pero, en algunos casos, sí quepodremos romper ellogaritmo elíptico a través delos algoritmos para romper ellogaritmo discreto (esto es elque pasa para las curvassupersingulares donde esconocido que k ≤ 6).
El método xedni-calculus (Silverman) es la idea inversa del index-calculus. Da-
da E(Z/p) se proyectan r combinaciones lineales en el plano sobre el cuerpo Q
y se considera la curva E(Q) que contiene estos r puntos. En el supuesto de que
estos r puntos obtenidos sean linealmente dependientes, se soluciona el pro-
blema elíptico. Actualmente se usa este método con r ≤ 9 y la probabilidad de
que los puntos obtenidos sean linealmente dependientes es muy pequeña. La
importancia del xedni-calculus es que es fácilmente adaptable tanto al proble-
ma del logaritmo discreto como a la factorización, por tanto permitiría atacar
todos los criptosistemas de clave pública en caso de que se encontrara algún
algoritmo eficiente para resolverlo.
4.2. Elección de la curva
La elección de la curva elíptica se debe hacer teniendo en cuenta los ataques
comentados en el subapartado anterior:
• Para resistir el ataque por el método ρ de Pollard, el número de puntos de
la curva debe ser divisible por un número primo lo suficientemente grande
(> 2160).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 42 Criptografía con curvas elípticas
• Para resistir el ataque de Semaev-Smart-Araki, el número de puntos de la
curva no debe ser múltiple de p.
• Para resistir la reducción MOV n (orden del punto escogido) no debe dividir
pk – 1, k pequeño.
• Para resistir los ataques contra curvas elípticas supersingulares, el número
de puntos de la curva no debe ser igual a 1 módulo p.
Veamos ahora diferentes métodos conocidos para escoger una curva adecuada.
1) El Teorema de Hasse y la Conjetura de Weil nos proporcionan una técni-
ca para elegir curvas sobre F2m , donde m es divisible por un entero l pequeño.
De hecho, como estos resultados son válidos para cualquier Fpm , podríamos
extender esta técnica a todos estos cuerpos.
Recordemos que dada una curva elíptica E, definida sobre Fp, podemos consi-
derarla también como una curva elíptica sobre cualquier extensión Fpm de Fp.
Además, sabemos calcular el número de puntos de la curva sobre el cuerpo
extendido, a partir del número de puntos de la curva sobre el cuerpo base.
Para elegir una curva adecuada sobre F2m , primero tomaremos una curva so-
bre F2l , con l dividiendo m y calcularemos el número de puntos de la curva
sobre F2l (que se puede hacer de forma exhaustiva puesto que hemos elegido
l de forma que el cuerpo F2l sea pequeño). Entonces calcularemos el número
de puntos de la curva sobre el cuerpo extendido y comprobaremos si es resis-
tente a los ataques anteriores. En caso de que no resista alguno de los ataques
anteriores repetimos el proceso hasta encontrar una curva adecuada.
El principal problema que presenta esta técnica es que el número de curvas
sobre F2l será relativamente pequeño, y por lo tanto, es posible que dados m y
l no consigamos encontrar ninguna curva adecuada usando este método.
2) Método global. Esta manera de elegir la curva está basada en tomar una
curva sobre los racionales y reducirla módulo un primo para tener la curva
sobre un cuerpo finito y comprobar si resiste los ataques anteriores.
Por ejemplo, si empezamos con E : y2 = x3 + Ax + B, donde A,B son números
racionales podemos considerar la misma ecuación módulo un primo p. En-
tonces, tendremos la curva sobre Fp con Np puntos. Hay resultados teóricos
que aseguran que para p lo suficientemente grande Np es múltiplo del número
de puntos de orden finito de la curva original sobre los racionales. Así, cono-
ciendo el número de puntos de orden finito sobre el cuerpo inicial tendremos
una cota inferior para el número de puntos de la curva sobre Fp.
3) Método de la multiplicación compleja. Este método permite la elección
del orden de la curva antes de construirla. Se debe comprobar que el orden que
queremos supere los ataques mencionados. Este método es eficiente cuando
el cardinal q del cuerpo y el valor t tal que #E = 1+q– t son escogidos de forma
que el cuerpo Q(p
t2 – 4q) tiene un número pequeño de clases de ideales. Para
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 43 Criptografía con curvas elípticas
curvas elípticas sobre Fp este método se denomina método de Atkin-Morain y,
sobre F2m , método de Lay-Zimmerman.
4) Método de elección aleatoria. Como su nombre indica, en este método se
elige la curva de manera aleatoria. Fijado un cuerpo finito Fq, suponemos que
char(K) 6= 2,3 y la curva E : y2 = x3 + Ax + B. Seleccionamos A,B ∈ Fq de forma
aleatoria, pero satisfaciendo 4A3 + 27B2 6= 0. Calculamos entonces el número
de puntos de la curva sobre Fq y lo factorizamos. Este proceso se repetirá hasta
encontrar una curva que pueda resistir los ataques anteriores.
Este método es especialmente usado en el caso de trabajar con curvas elípticas
sobre Fp, puesto que resultados de Lenstra demuestran su funcionalidad. Para
curvas elípticas sobre F2m hay resultados similares en los trabajos de Water-
house y Schoof.
4.3. Asignación de mensajes a puntos
Uno de los problemas prácticos que se plantean a la hora de usar este tipo
de criptografía es el de definir una correspondencia entre los mensajes que se
quieren transmitir y los puntos de la curva. Existen diferentes procedimientos
para hacerlo; veamos dos de ellos. Suponemos que char(K) 6= 2,3. E : y2 = f (x) =
x3 + Ax + B.
4.3.1. Creación de una tabla
Sea m el mensaje que queremos transmitir, 0 < m < C, donde C es una cota
superior del número de mensajes diferentes. Tomamos k arbitrario (que llama-
remos grado de fiabilidad), escogemos p primo tal que p > Ck, p con al menos
160 bits para asegurar la fortaleza del sistema. Podemos suponer los elementos
1, . . . ,Ck contenidos en Z/p usando la siguiente tabla:
2
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
4
1 2 . . . k – 1
k k + 1 k + 2 . . . 2k – 1
......
... . . ....
mk mk + 1 mk + 2 . . . (m + 1)k – 1
......
... . . ....
(C – 1)k · · · · · · . . . Ck – 1
3
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
5
donde cada fila representa una clase.
Dado m, tomamos x = mk y calculamos y2 = f (x). Si f (x) no tiene raíz cuadrada,
entonces necesitamos otro valor de x, tomamos x = mk + 1 y repetimos el
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 44 Criptografía con curvas elípticas
mismo proceso hasta encontrar x tal que f (x) tiene raíz cuadrada, tomando
entonces y =p
f (x).
Ahora nos podríamos preguntar: ¿este valor x se encuentra en la clase de m?
Sabemos que la mitad de los elementos de Z/p tienen raíz cuadrada y están
repartidos aleatoriamente. La probabilidad que en una fila no haya un cua-
drado es pues 12k . Por lo tanto, la probabilidad de que en una fila no haya una
x válida se puede hacer tan pequeña como queramos, aumentando el valor
de k.
Así pues, dado m, existe un valor j ∈ {1, . . . ,k – 1} tal que el punto P = (mk + j,y)
pertenece a la curva. Tenemos entonces la correspondencia:
.
Algoritmo 4.4.
Curva –→ Z/p
m –→ (mk + j,y)jα
k
k
←– (α,β)
4.3.2. Método de curvas entrelazadas
.
Definición 4.5 (Curvas entrelazadas).
Sea E : y2 = x3 + Ax + B una curva elíptica sobre Z/p, p primo. Sea E′ :
y2 = x3 + Aβ2x + Bβ3, con β ∈ Z/p, β NQR. Diremos que E y E′ son curvas
entrelazadas.
Observación
Fijada una curva E, existe unagran cantidad de parejas(E,E′) de curvas entrelazadas.
.
Teorema 4.6.
Sean E y E′ curvas entrelazadas. Entonces
#E + #E′ = 2(p + 1)
El concepto de par de curvas entrelazadas permite definir una aplicación bi-
yectiva entre el conjunto de valores {0,1, . . . ,2p + 1} y el conjunto de puntos
de las dos curvas. Así, a cada punto P = (x,y) que puede pertenecer bien a E
o bien a E′, le asignamos un valor de m ∈ {0,1, . . . ,2(p + 1)} de la siguiente
manera:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 45 Criptografía con curvas elípticas
m =
8
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
:
2x, sí P ∈ E, 0 ≤ y ≤ p – 1
2
2x + 1, sí P ∈ E,p – 1
2< y ≤ p
2p, sí P = (∞,∞) ∈ E
2x
β, sí P ∈ E′, 0 ≤ y ≤ p – 1
2
2x
β+ 1, sí P ∈ E′,
p – 1
2< y ≤ p
2x
β+ 1, sí P = (x,0) ∈ E′
2p + 1, sí P = (∞,∞) ∈ E′
donde2x
βse ha de reducir módulo 2p.
Supongamos ahora que tenemos el mensaje m. El punto asociado es:
P =
8
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
:
(m
2,√ω) ∈ E, si m es par y ω 6= 0 es QR (mod p)
(βm
2,q
β3ω) ∈ E′, si m es par y ω 6= 0 es NQR (mod p)
(m
2,0) ∈ E, si m es par,
m
26= p y ω = 0
(∞,∞) ∈ E, si m es par,m
2= p
(m – 1
2, –√ω) ∈ E, si m es impar y ω 6= 0 es QR (mod p)
(βm – 1
2, –q
β3ω) ∈ E′, si m es impar y ω 6= 0 es NQR (mod p)
(βm – 1
2,0) ∈ E′, si m es impar,
(m – 1)
26= p y ω = 0
(∞,∞) ∈ E′, si m es impar,(m – 1)
2= p
donde ω ≡ x3 + Ax + B (mod p) y√α, –
√α son las raíces cuadradas de un
elemento α.
Ejemplo 4.1.
Sea p = 31 y la pareja de curvas entrelazadas (hemos escogido β = 13):
E : y2 = x3 + 3x + 1
E′ : y2 = x3 + 3 · 132 + 1 · 133 = x3 + 11x + 27
E tiene 39 puntos y E′ tiene 25:
Puntos de E:
8
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
:
(0,1) (0,30) (1,6) (1,25) (6,7) (6,24)
(8,14) (8,17) (10,15) (10,16) (11,1) (11,30)
(13,6) (13,25) (14,11) (14,20) (17,6) (17,25)
(18,11) (18,20) (19,2) (19,29) (20,1) (20,30)
(21,5) (21,26) (22,12) (22,19) (24,3) (24,28)
(26,4) (26,27) (27,7) (27,24) (29,7) (29,24)
(30,11) (30,20) (∞,∞)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 46 Criptografía con curvas elípticas
Puntos de E′:
8
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
:
(1,15) (1,16) (3,5) (3,26) (8,10) (8,21)
(9,7) (9,24) (15,8) (15,23) (20,1) (20,30)
(21,8) (21,23) (22,6) (22,25) (23,4) (23,27)
(24,14) (24,17) (26,8) (26,23) (29,11) (29,20)
(∞,∞)
Entre las dos curvas tenemos pues 64 puntos. La correspondencia entre mensajes y pun-
tos viene dada por la tabla siguiente.
punto de E mensaje punto de E’ mensaje
(0,1) 0 (1,15) 24
(0,30) 1 (1,16) 25
(1,6) 2 (3,5) 10
(1,25) 3 (3,26) 11
(6,7) 12 (8,10) 6
(6,24) 13 (8,21) 7
(8,14) 16 (9,7) 30
(8,17) 17 (9,24) 31
(10,15) 20 (15,8) 50
(10,16) 21 (15,23) 51
(11,1) 22 (20,1) 46
(11,30) 23 (20,30) 47
(13,6) 26 (21,8) 8
(13,25) 27 (21,23) 9
(14,11) 28 (22,6) 32
(14,20) 29 (22,25) 33
(17,6) 34 (23,4) 56
(15,25) 35 (23,27) 57
(18,11) 36 (24,14) 18
(18,20) 37 (24,17) 19
(19,2) 38 (26,8) 4
(19,29) 39 (26,23) 5
(20,1) 40 (29,11) 14
(20,30) 41 (29,30) 15
(21,5) 42 (∞,∞) 63
(21,26) 43 - -
(22,12) 44 - -
(22,19) 45 - -
(24,3) 48 - -
(24,28) 49 - -
(26,4) 52 - -
(26,27) 53 - -
(27,7) 54 - -
(27,24) 55 - -
(29,7) 58 - -
(29,24) 59 - -
(30,10) 60 - -
(30,20) 61 - -
(∞,∞) 62 - -
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 47 Criptografía con curvas elípticas
5. Criptografía y protocolos criptográficos basadosen curvas elípticas
.
5.1. Protocolos criptográficos
Escribiremos EU(m) cuando hablamos de cifrar el mensaje m usando la clave
pública del usuario U y DU(c) cuando hablamos de descifrar el mensaje c.
5.1.1. Protocolo de Diffie-Helman
Versión clásica. Sea p un número primo, α ∈ Zp un elemento primitivo. Cada
usuario U elige al azar un número secreto nU ∈ Z∗p y hace público el valor αnU .
Los usuarios A y B desean compartir una clave secreta:
.
Algoritmo 5.1.
AαnA
–→ B
AαnB←– B
La clave secreta será K = αnA·nB , que solo es conocida por A y B.
Versión con curvas elípticas. Sea E una curva elíptica sobre Fp y P ∈ E punto
públicamente conocido. Cada usuario U elige al azar un número secreto nU ∈Fp y hace público el valor nUP. Para compartir una clave secreta, A y B deben
hacer:
.
Algoritmo 5.2.
AnAP–→ B
AnBP←– B
La clave secreta será K = (nA · nB)P que solo es conocida por A y B.
Ejemplo 5.1. Acuerdo de claves de Diffie-Helman usando curvas elípticas
En primer lugar, los usuarios A y B eligen una curva elíptica E sobre un cuerpo finito Zp.
También eligen un punto P de la curva de forma que su orden sea un número primo
grande.
Suponemos que la curva elíptica es E : y2 = x3 + 5x + 7 sobre Z113. El número de puntos
racionales de esta curva es 127 que es un número primo y, por lo tanto, los puntos de la
curva elíptica constituyen un grupo isomorfo a Z127.
Tomemos P = (16,51) que tiene orden ord(P) = 127, o sea P es un generador de la curva E.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 48 Criptografía con curvas elípticas
Protocolo
• A→ B. El usuario A elige un entero grande nA, calcula KA = nA · P y envía KA a B.
Si A toma, por ejemplo, nA = 98, entonces, KA = nA · P = (24,74).
• B→ A. El usuario B elige un entero grande nB, calcula KB = nB · P y envía KB a A.
Si B toma, por ejemplo, nB = 101; entonces, KB = nB · P = (3,7).
• A→ B. El usuario A calcula K = nA · KB = nA · nB · P = 98·(3,7) = (5,48).
• B→ A. El usuario B calcula K = nB · KA = nB · nA · P = 101·(24,74) = (5,48).
Al finalizar el algoritmo, tanto A como B disponen del mismo punto que tomarán como
clave de sesión: K = (5,48).
Simulador de cálculosen curvas elípticas
Para comprobar los cálculos
de este ejemplo podéis usar
el programa SAGE, que
encontraréis en la dirección
http:www.sagemath.org/.
Utilización del software SAGE
En este ejemplo podemos seguir los cálculos numéricos haciendo uso del software SAGE.
Se puede utilizar instrucción a instrucción, pero también se puede utilizar un script que
nos calcule directamente el resultado que queremos.
Antes que nada definiremos el cuerpo finito F113, que denominaremos F, con la orden:
sage: F = FiniteField(113)
A continuación definiremos la curva elíptica y2 = x3 + 5 ∗ x + 7. En general, la curva
definida por los parámetros [a,b,c,d,e] es y2 + axy + cy = x3 + bx2 + dx + e.
sage: E = EllipticCurve(F,[0,0,0,5,7])Elliptic Curve defined by y^2 = x^3 + 5*x + 7 over Finite Field of size 113
Si queremos conocer el orden de la curva elíptica:
sage: print(E.cardinality())127
A continuación, para indicarle el punto P = (16,51) escribiremos lo siguientes (y calcula-
remos, también, su orden):
sage: P = E.point((16,51))sage: P.order()
donde estamos explicando que se toma el punto P = (16,51) dentro del dominio de
puntos de la curva E.
El usuario A calcula KA := 98P y el usuario B KB := 101 ∗ P:
sage: K_A = 98*Psage: K_B = 101*P
Finalmente, podemos comprobar que los dos usuarios pueden utilizar la misma clave
común: K = nA ∗ KB = nB ∗ KA:
print 101*K_A,98*K_B
Tras esta última instrucción SAGE contesta con los dos valores que le hemos pedido
imprimir:
(5 : 48 : 1) (5 : 48 : 1)
Observar que SAGE está realizando las operaciones en coordenadas proyectivas.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 49 Criptografía con curvas elípticas
5.1.2. Protocolo de tres-pasos de Shamir
Versión clásica. Este protocolo pretende enviar el mensaje m de A a B.
.
Algoritmo 5.3.
AEA(m)–→ B
AEB(EA(m))←– B
AEB(m)–→ B
Es fundamental suponer que la función criptográfica utilizada cumple, para
cada pareja de usuarios, EA · EB = EB · EA. Un ejemplo de función criptográfica
con esta característica es EA(x) = xnA en Z/p, con p primo y nA clave privada
del usuario A. En este caso concreto, el protocolo se denomina protocolo de
Massey-Omura:
.
Algoritmo 5.4.
AmnA
–→ B
A(mnA )nB
←– B
AmnB
–→ B
Versión con curvas elípticas. Veamos la traducción del protocolo de Massey-
Omura. Sea E una curva elíptica sobre Fq, N = #E(q). Sea P ∈ E el mensaje que
el usuario A quiere enviar a B. Cada usuario U tiene una clave privada nU tal
que mcd(nU ,N) = 1.
.
Algoritmo 5.5.
AnAP–→ B
AnB(nAP)←– B
AnBP–→ B
5.2. Criptosistema ElGamal
Versión clásica. Se basa en el problema del logaritmo discreto sobre un cuerpo
finito Z/p, con p primo. Sea α ∈ Z/p un elemento primitivo el cual se hace
público. Cada usuario U tiene una clave privada nU ∈ Z/p – {0,1,p – 1} y hace
pública la clave pública αU = αnU . Suponemos que el usuario A quiere enviar
el mensaje m al usuario B. A debe seguir los siguientes pasos:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 50 Criptografía con curvas elípticas
• A escoge un número k ∈ Z/p – {0,1,p – 1} al azar y calcula αk,
• cifra m como c = EB(m) = m · (αB)k,
• envía a B el par (c,αk).
B para descifrar el mensaje deberá hacer:
• calcula β = (αk)nB ,
• m = c · β–1.
Versión con curvas elípticas. Sea E una curva elíptica sobre Z/p, sea P un
punto de la curva de orden grande N (sería deseable que 〈P〉 = E), N|#E(p).
Para cada usuario U, sea nU su clave privada, 1 < nU < N; (bastaría tomar
nU < p + 1 – 2√
p). La clave pública de U será PU = nUP. Suponemos que el
usuario A quiere enviar el mensaje m cifrado al usuario B:
• A escoge al azar un número k ∈ Z/p,
• calcula Pm el punto de la curva asociado al mensaje m,
• cifra Pm como C = EB(Pm) = Pm + k · PB,
• envía a B (C,kP).
B para descifrar el mensaje deberá hacer:
• Pm = C – nB(kP),
• encuentra el mensaje m asociado con el punto Pm.
5.3. Criptosistema RSA
Recordar
La función de Euler ϕ(n)
proporciona el cardinal de losnúmeros entre 1 y n que sonprimos con n. En el supuestode que n sea un númeroprimo n = p, tenemosϕ(p) = p – 1. En el supuestode que n = p·q es el productode dos primos tenemosϕ(n) = (p – 1)·(q – 1).
Versión clásica. Se basa en la función de una vía o unidireccional de la po-
tenciación: E(e,n)(x) = xe (mod n) donde 1 < x < n = pq, 1 < e < ϕ(n) con
mcd(e,ϕ(n)) = 1 y d = e–1 (mod ϕ(n)). La fortaleza del criptosistema se basa
en que p y q sean números primos grandes y, por lo tanto, n sea difícilmente
factorizable, lo que imposibilita calcular ϕ(n).
Observación
Actualmente no se conoceningún algoritmo defactorización de complejidadmenor que lasub-exponencial.
Supongamos que un usuario A quiere enviar un mensaje m a B. Los paráme-
tros públicos de B son (e,n), y los privados (p,q,ϕ(n),d). A deberá seguir los
siguientes pasos:
• El usuario A cifra m calculando c = E(e,n)(x) = xe (mod n) (con el método de
multiplicar y elevar al cuadrado, por ejemplo),
• El usuario A envía c a B.
El usuario B para descifrar el mensaje c deberá hacer:
• m = D(d,n)(c) = cd (mod n)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 51 Criptografía con curvas elípticas
Versión con curvas elípticas (esquema de KMOV. 1991). En este esquema se
representan los puntos de una curva elíptica de la forma y2 = x3 + b sobre Zn
como En(b). Para generar la clave pública el usuario B escogerá dos números
primos grandes (p,q) tales que p = q = 2 (mod 3) y, como en el esquema clásico,
calculará y publicará (e,n), donde n = p·q y mantendrá en secreto las claves
privadas (p,q,ϕ(n),d).
Observación
El esquema de KMOV(Koyama, Maurer, Okamoto,Vanstone) usa curvas elípticasdefinidas sobre Zn, donden = p·q es el producto de dosnúmeros primos que semantienen en secreto. Laseguridad de KMOV es lamisma que la del esquemaRSA. No obstante, el cifradoen el esquema KMOV es másflexible que en el RSA, porejemplo, la curva elíptica nose fija, sino que se construyepara cada nuevo mensaje.Para solucionar esteinconveniente hay otrosesquemas como el deDemytko (1993), Meyer yMüller ( 1996), Paillier(1999), etc.
Cada vez que A quiere enviar un mensaje m a B deberá seguir los siguientes
pasos:
• El usuario A divide su mensaje m en dos partes m = (m1,m2) donde m1,m2 ∈Zn.
• El usuario A determina el valor b de la curva de forma que m ∈ En(b).
Específicamente, calcula b = m22 – m3
1 (mod n).
• cifra el punto m calculando c = E(m) = e·m sobre En(b),
• envía el texto cifrado c = (c1,c2) a B.
El usuario B para descifrar el mensaje c deberá hacer:
• a partir del mensaje cifrado c = (c1,c2) el usuario B puede determinar el valor
de b puesto que este no cambia en el proceso de cifrado. Específicamente,
calcula b = c22 – c3
1 (mod n) y construye la curva y2 = x3 + b.
• a partir de la clave privada calcula m = D(c) = d·c sobre En(0,b).
5.4. Firma digital
En 1991 el NIST (National Institute of Standards and Technology) propuso el
DSS (digital signature standard), basado en el DSA (digital signature algorithm),
como estándar de firma digital. El DSS se basa en el criptosistema ElGamal.
Aun cuando podemos hacer la traducción de este sistema de firma a las curvas
elípticas, el que veremos es la versión análoga al DSA denominada ECDSA
(elliptic curve digital signature algorithm) puesto que este se ha convertido en el
estándar de firma digital con curvas elípticas.
Ver también
El criptosistema ElGamal seestudia en el módulo“Elementos de criptografía”de esta asignatura.
Versión clásica: DSS. Usaremos la misma nomenclatura que en el criptosiste-
ma ElGamal que ya hemos visto anteriormente.
El usuario A quiere firmar un mensaje m:
• A escoge un número k ∈ Z/p – {0,1,p – 1} al azar, tal que mcd(k,p – 1) = 1 y
calcula αk,
• calcula h(m), donde h(.) es una función hash,
• calcula s ∈ Z/(p – 1) verificando,
h(m) = nA · αk + k · s (mod (p – 1)).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 52 Criptografía con curvas elípticas
• La firma de m es la pareja (αk,s).
Un usuario que quiera verificar la firma del mensaje m deberá hacer:
• calcular el hash de m, h(m),
• obtener del directorio público la clave pública de A: αnA ,
• validar la firma comprobando la siguiente igualdad:
αh(m) = (αnA)αk
· (αk)s (mod p).
Versión clásica: DSA. Sea q un número primo de unos 160 bits y p otro nú-
mero primo de unos 500 bits tal que p = 1 (mod q). Sea α un generador del
subgrupo cíclico de orden q de (Z/p)∗. Para cada usuario U, su clave privada es
nU , un número escogido al azar, 0 < nU < q y la clave pública es αU = αnU .
El usuario A quiere firmar un mensaje m:
• A escoge un número 0 < k < q al azar y calcula r = (αk (mod p)) (mod q)
• calcula el hash de m, 0 < h(m) < q,
• calcula s que verifica
h(m) + nA · r = k · s (mod q),
• La firma de m es la pareja (r,s).
Un usuario que quiera verificar la firma del mensaje m deberá hacer:
• calcular el hash de m, h(m),
• obtener del directorio público la clave pública de A: αA = αnA ,
• calcular u1 = s–1h(m), u2 = s–1r (mod q),
• validar la firma si, y solo si, r = αu1 · αu2
A (mod p).
Versión con curvas elípticas: ECDSA. Sea E una curva elíptica sobre Z/p, sea
P un punto de la curva de orden primo n. Cada usuario U toma al azar un
número nU ∈ [1,n – 1] que será su clave privada, la clave pública de U será
PU = nUP. El usuario A quiere firmar un mensaje m:
• A escoge un número k ∈ [1,n – 1] al azar,
• calcula h(m), donde h(.) es el algoritmo SHA-1 (secure hash algorithm),
• calcula kP = (x1,y1) y r = x1 (mod n). Si r = 0, entonces volvemos a escoger
otro k y repetimos el mismo proceso.
• calcula k–1 (mod n)
• calcula s = k–1{h(m) + nAr} (mod n). Si s = 0, volvemos a escoger otro k y
repetimos el mismo proceso.
• La firma de m es la pareja (r,s).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 53 Criptografía con curvas elípticas
Un usuario que quiera verificar la firma del mensaje m deberá hacer:
• obtener del directorio público la clave pública de A: PA = nAP,
• verificar que r,s ∈ [1,n – 1],
• calcular w = s–1 (mod n) y el hash de m: h(m),
• calcular u1 = h(m) ·w (mod n) y u2 = r ·w (mod n),
• calcular (x0,y0) = u1P + u2PA y v = x0 (mod n),
• validar la firma si, y solo si, v = r.
Siguiendo las recomendaciones del NIST (National Institute of Standards and
Technology, Digital Signature Standard, FIPS, PUB 186-2. 2000) se debería ve-
rificar que el orden de la curva elíptica sobre Fp sea de la forma a·q donde
q es primo y a es un entero pequeño, de esta forma la curva no es vulnera-
ble al ataque de Pohlig-Hellman. También es conveniente que la curva no sea
supersingular ni anómala.
Dada una curva elíptica, deberemos calcular su cardinal y ver si satisface las
condiciones anteriores. Aunque hay un algoritmo polinomial (Schoof 1985)
para hacer este cálculo, su complejidad es del orden de log8(p), que para valo-
res demasiado grandes de p no es práctico.
5.5. Comparación de los sistemas de clave pública
5.5.1. Seguridad
Para llegar a un grado aceptable de seguridad el RSA y el DSA deberían usar
claves de 1024 bits, mientras que para la ECC sería suficiente con 160.
A medida que la clave crece, aumenta la distancia entre la seguridad de cada
propuesta. Por ejemplo, el ECC con 380 bits es mucho más seguro que el
RSA o el DSA con 2000 bits (de hecho, para esta longitud de clave, el ECC es
comparable al RSA de 7600 bits).
5.5.2. Eficiencia
Para comparar los niveles de eficiencia, deberemos tener en cuenta:
1) Costes computacionales, o sea la cantidad de computación requerida para
cifrar y descifrar.
Cada uno de los tres sistemas, ECC, RSA, DSA, exige un gran esfuerzo compu-
tacional. En el RSA se puede usar un exponente público pequeño (aun cuando
se deberían discutir los riesgos en los que se puede incurrir) para mejorar la
rapidez en la verificación de firmas y en el cifrado, pero no en la generación
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 54 Criptografía con curvas elípticas
de la firma y el descifrado. Tanto en el DSA como en el ECC se pueden pre-
calcular varias tablas para mejorar el rendimiento. También se pueden utilizar
bases normales y óptimas para trabajar en cuerpos finitos de la forma F2m .
Ver también
Las bases normales seestudian en el módulo“Cuerpos finitos”.Teniendo en cuenta el estado actual del arte en las implementaciones resulta
que la ECC es un orden de magnitud más rápido que el RSA y, también, que
el DSA.
2) Tamaño de la clave, o sea, la cantidad de bits necesarios para guardar la
pareja de claves y los otros parámetros del sistema.
La tabla siguiente compara la medida de los parámetros del sistema y de las
claves (pública y privada) para los diferentes sistemas.
Medida de los parámetros y claves
Sistema de parámetros (bits) Clave pública (bits) Clave privada (bits)
RSA 2208 1088 2048
DSA 2208 1024 160
ECC 481 161 160
3) Anchura de banda, o sea, la cantidad de bits que se deben transmitir para
comunicar un mensaje cifrado o una firma digital.
Los tres tipos de criptosistemas requieren la misma anchura de banda cuando
se usan para cifrar o firmar mensajes largos. De todos modos cuando los men-
sajes no son largos se ha de observar con más atención (y, de hecho, este tipo
de mensajes son los que usualmente son utilizados en la criptografía de clave
pública).
Por poder hacer comparaciones, suponemos que queremos firmar un mensaje
de 2000 bits o cifrar un mensaje de 100 bits. Las dos siguientes tablas compa-
ran las longitudes de las firmas y de los mensajes cifrados, respectivamente.
Medida de las firmas en mensajes de 2000 bits
Tamaño de la firma (bits)
RSA 1024
DSA 320
ECC 320
Medida de los mensajes de 100 bits, cifrados
Mensaje cifrado (bits)
RSA 1024
ElGamal 2048
ECC 321
En resumen, el sistema ECC tiene una gran eficiencia y, en las implementacio-
nes, esto significa rapidez, bajo consumo y reducción de la medida del código
transmitido.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 55 Criptografía con curvas elípticas
6. ECC estándares y aplicaciones.
6.1. ECC estándares
Los progresos realizados en la criptografía con curvas elípticas desde su apa-
rición en la década de los ochenta, hasta la actualidad, lo han transformado
en algo más práctico que los esquemas propuestos inicialmente. Las mejoras
introducidas han permitido la creación de implementaciones que ofrecen la
posibilidad de comenzar a extender el uso de este tipo de criptografía.
* http://www.certicom.com
Para promover la difusión de las mejores técnicas conocidas así como la in-
teroperatibidad entre aplicaciones, han ido surgiendo esfuerzos por estanda-
rizar la criptografía elíptica. Este esfuerzo ha sido liderado por la corporación
Certicom*, haciendo las mayores aportaciones en materia de criptografía con
curvas elípticas a los principales estándares de clave pública existentes.
A continuación detallamos algunos de los estándares más importantes, así
como otros más específicos, basados en aquellos.
6.1.1. Estándares principales
Los primeros frutos importantes del esfuerzo por estandarizar la criptografía
elíptica se traducen en la adopción de sus principales algoritmos dentro de
algunos de los estándares más importantes de criptografía de clave pública.
ANSI X9.62, X9.63
El American National Standards Institute’s ha sido una de las organizaciones
de más peso al adoptar las curvas elípticas dentro de sus estándares de cripto-
grafía. Los estándares de esta organización son referencia directa para servicios
financieros y la industria en general.
La primera aparición de la criptografía con curvas elípticas fue en el estándar
X9.62, con la adopción del esquema de firma digital ECDSA (elliptic curve digi-
tal signature algorithm) en enero de 1999 Algunas de las características iniciales
que se adoptaron fueron una longitud mínima para las claves de 80 bits, y el
uso de bases normales y polinomiales sobre F2m .
Posteriormente (2000) se amplió este estándar con el X9.63. El núcleo de
este estándar está basado en el anterior, pero se adoptan algunos esquemas
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 56 Criptografía con curvas elípticas
para el intercambio de claves como la ECDH (elliptic curve Diffie-Hellman),
ECMQV (elliptic curve Menezes-Qu-Vastone) o ECUM (elliptic curve unified model
Key Agreement). Aparte de estos también se introduce el esquema de cifrado
ECAES (Bellare-Rogaway).
IEEE P1363 y P1363A
La IEEE incluyó la criptografía con curvas elípticas en su estándar de cripto-
grafía de clave pública P1363 en febrero del 2000. El estándar es muy general
y fue desarrollado principalmente por investigadores de Certicom (Vanstone
y Menezes). En él se describen algoritmos típicos de criptografía de clave pú-
blica sobre curvas elípticas. Algunas de las características de este estándar son
las siguientes:
• Soporta curvas elípticas sobre Fp y F2m
• Apoyo para esquemas de firmado ECDSA (elliptic curve digital signature al-
gorithm) y ECNR (Elliptic Curve Nyberg-Rueppel) signature scheme.
• Apoyo para algoritmos de intercambio de claves ECDH (elliptic curve Diffie-
Hellman) key agreement y ECMQV (elliptic curve Menezes-Qu-Vastone) key
agreement.
Ver también
Los pairings se estudian en elmódulo “Pairings y susaplicaciones” .
Posteriormente, en un draft que complementa este estándar llamado P1363A
(standard specifications for public key cryptography: additional techniques) se in-
troduce la posibilidad de utilizar el esquema de cifrado ECIES. También, en
el draft P1363.3, se introducen los esquemas basados en la identidad usando
pairings.
ISO 14888, 9796-4, 15946
La International Organization for Standarizatcion (ISO) fue otra de las prin-
cipales organizaciones para la estandarización que apuesta por añadir la crip-
tografía con curvas elípticas en sus estándares criptograficos. La descripción
principal del uso de estas técnicas se hace en el estándar 15946 (cryptographic
techniques based on elliptic curves). Mientras que la primera parte del estándar
hace una descripción general de los métodos basados en curvas elípticas, la se-
gunda y tercera parte ya introducen el uso del esquema ECDSA para las firmas
digitales, y algunos algoritmos de intercambio de claves (ECDH, ECMQV).
Esta no es la única repercusión de la criptografía de curva elíptica sobre los es-
tándares de la ISO. También podemos encontrar modificaciones a otros están-
dares de firma digital, concretamente al 14888 (digital signature with appendix
part 3: certificate-based mechanisms) y al 9796-4 (digital signature with message
recovery, discrete logarithm-based mechanisms).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 57 Criptografía con curvas elípticas
FIPS 186-2
Uno de los primeros éxitos de la estandarización de los algoritmos cripto-
gráficos basados en curvas elípticas fue la adopción de esta tecnología por el
National Institute of Standards and Technology (NIST). El estándar FIPS (fe-
deral information processing standard) 186-2 fue extendido en febrero del 2000
ampliando el apartado dedicado al DSS (digital signature standard) para incluir
la versión del ECDSA especificada en el estándar de ANSI X9.62.
Este estándar es un punto de referencia para la comercialización de productos
que contengan criptografía de curva elíptica, puesto que desde su creación,
las agencias gubernamentales americanas pueden comprar productos basados
en este tipo de criptografía sin pedir permisos especiales. El NIST ha incluido
también especificaciones para algoritmos de criptografía de curva elíptica en
su documento MISPC (minimum interoperability specification).
SEC 1, SEC 2, SEC 3 y SEC 4
El SECG (standards for efficient cryptography group) fue creado por la empresa
Certicom, para promover estándares de curva elíptica así como la difusión de
los mejores métodos para implementar este tipo de criptografía. Su principal
objetivo es crear un estándar, basado en los principales que existen, pero ha-
ciendo restricciones sobre los parámetros que estos exigen sobre cada uno de
los esquemas de firmado, cifrado o intercambio de claves que usan. El objetivo
de estas restricciones es hacer posible la interoperatividad de las aplicaciones
basadas en este estándar, con las basadas en cualquiera de los otros estándares
principales.
Los frutos de esta organización quedan reflejados en dos estándares. El pri-
mero de ellos, recogido en el 2009 en el documento SET 1 (elliptic curve cry-
ptography) hace una descripción de los esquemas permitidos (ECDSA, ECDH,
ECMQV y ECIES). Además, se describen todas las primitivas criptográficas que
se usan en estos esquemas y la notación ASN1 (abstract syntax notation one)
para representar las estructuras necesarias (claves, certificados, contenidos ci-
frados, etc) que se utilizan.
El esquema de cifrado ECIES tiene una larga historia en su nomenclatura y
ha ido sufriendo a la vez pequeñas modificaciones. Lo podemos encontrar en
la literatura como ECAES (elliptic curve augmented encryption scheme) o simple-
mente como ECES (elliptic curve encryption scheme). La versión definida en el
documento SET 1 es la más extensa y actualizada. Este esquema se basa en
utilizar criptografía simétrica para cifrar el mensaje deseado a partir de una
clave generada en el proceso de inicialización del método. Una vez se ha ci-
frado el mensaje se transmite el contenido cifrado y se envia la clave generada
utilizando el esquema ECDH.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 58 Criptografía con curvas elípticas
El segundo documento, SET 2 (recommended elliptic curve domain parameters),
hace una propuesta sobre los parámetros a utilizar sobre los esquemas defi-
nidos en SET 1, así como en otros estándares como el ANSI X9.63 o el IEEE
P1363. El uso de estas recomendaciones aumentan en gran medida la inter-
operatividad de las aplicaciones que los usen.
SET 3 trata sobre esquemas de firma basados en curvas elípticas con recons-
trucción parcial del mensaje (ECPVS y ECAOS).
SET 4 incorpora el esquema de certificación de Qu-Vanstone.
RSA
Laboratorios RSA publica dos documentos PKCS11 y PKCS13 para la estanda-
rización del uso de las curvas elípticas (generación de claves, firmas digitales,
cifrado con clave pública, etc.). El objetivo de ambos documentos era crear
un nuevo estándar criptográfico al estilo de otras PKCS (public key cryptography
standard) desarrollados por los Laboratorios RSA. La línea de la propuesta ini-
cial realizada en enero de 1998 tenía los mismos objetivos que los del grupo
SECG creado por Certicom. Hasta hoy no se ha adelantado más allá de la
propuesta inicial de 1998 y aparentemente el desarrollo de este estándar está
congelado.
NSA
NSA (National Security Agency) de USA anuncia, en el 2005, la suite B Crypto-
graphy la cual incluye la criptografía basada en curvas elípticas en la seguridad
de los sistemas de datos USA. Esta suite B incorpora la colección de algoritmos:
SHA256 y SHA384 (FIPS 180-3); AES128 y AES256 (FIPS 197); ECDH (ANSI
X9.63) y ECDSA (ANSI X9.62, SET 1).
Posteriormente se ha propuesto la suite E para sistemas restringidos (con códi-
gos de tamaño pequeño y requerimientos particulares de hardware, potencia
y ancho de banda).
6.1.2. Estándares de aplicación
Los estándares descritos en el subapartado anterior han sido los principales
promotores del esfuerzo por estandarizar la criptografía con curvas elípticas.
Aun así existen otros más específicos que se basan en el trabajo aportado por
los anteriores. La mayoría de estas iniciativas suelen definir protocolos crip-
tográficos basados en la criptografía de clave pública, pero están expresados
de forma que el algoritmo de cifrado a utilizar pueda ser cambiado siempre
que cumpla ciertas propiedades. Muchos de estos trabajos han incluido los
esquemas de criptografía con curvas elípticas propuestos en el apartado ante-
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 59 Criptografía con curvas elípticas
rior como nuevas soluciones para optimizar estos protocolos, sobre todo en
entornos donde el tamaño de la clave no puede ser demasiado grande. A con-
tinuación enumeraremos algunos.
IETF (IPSec, TLS, S/MIME, SSH, DNSSEC)
El Working Group de la IETF (Internet Engineering Task Force) ha adoptado
también la criptografía con curvas elípticas en sus estándares. Las especifica-
ciones más importantes hacen referencia a los protocolos IPSec, TLS, S/MIME,
SSH, DNSSEC.
El protocolo de intercambio de claves OAKLEY (RFC 2412), basado en el algo-
ritmo de Diffie-Hellman, ha sido modificado para soportar la variante ECDH
sobre curvas elípticas. Las curvas por defecto que se utilizan en este protocolo
están definidas sobre F2155 y F2185 .
WAP WTLS
WTLS (wireless transporte security layer) es la capa de seguridad para WAP (wi-
reless application protocol). Esta especificación se ha convertido en el estándar
de facto para proveer seguridad, integridad y autenticidad para aplicaciones de
teléfonos móviles y otros dispositivos pequeños. Los esquemas de firma (DSA)
y de intercambio de claves (DH) descritos en esta especificación han sido am-
pliados para soportar ECDSA para las firmas y ECDH para el intercambio de
claves. Los parámetros utilizados para estos dos algoritmos siguen los del es-
tándar del IEEE P1363 descrito en el apartado anterior. Esta especificación,
junto con el estándar FIPS del NIST demuestran la voluntad por parte de la
industria de adoptar este tipo de criptografía
ATM
El Security specification draft para redes ATM (asyncronous transfer Mode) es
el documento que especifica los mecanismos de seguridad que pueden ser
aplicados sobre este tipo de redes. Entre estos mecanismos hay sistemas para
garantizar la confidencialidad, la autenticidad, la integridad o el control de
acceso. Algunos de los mecanismos se basan en criptografía de clave pública
y, en ellos, se ha incluido la criptografía con curvas elípticas como posible
candidata a utilizar.
6.2. Aplicaciones de la ECC. Tarjetas inteligentes
Actualmente donde más se utilizan las nuevas tecnologías basadas en curvas
elípticas es en:
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 60 Criptografía con curvas elípticas
1) Aplicaciones que requieren operaciones de clave pública de tipo intensivo.
Por ejemplo, el comercio electrónico basado en Internet, etc.
2) Aplicaciones que requieren la utilización de canales con restricciones. Por
ejemplo, redes wireless, etc.
3) Aplicaciones que requieren el uso de tarjetas inteligentes.
Todas estas aplicaciones comparten un escenario implicando unas restriccio-
nes más severas en el uso del procesador. Comentaremos, básicamente, las
aplicaciones basadas en tarjetas inteligentes, aun cuando son fácilmente ex-
trapolables a las otras aplicaciones mencionadas.
En el 2001, Europay, Mastercard y VISA dan a conocer un informe técnico
sobre curvas elípticas, el EMV40. En él se introduce el uso de curvas elípticas
como sustituto del RSA para la autentificación y el cifrado.
La implementación de aplicaciones seguras para tarjetas inteligentes presen-
ta una serie de inconvenientes debido a las restricciones existentes en estos
dispositivos. Estas limitaciones son debidas principalmente a sus disponibili-
dades de memoria, de ancho de banda y de potencia de cálculo.
Las tarjetas inteligentes son pequeños dispositivos portátiles, que ofrecen al
usuario integridad de la información almacenada en su interior y capacidad
de procesamiento. Esta capacidad de procesamiento hace que las tarjetas in-
teligentes sean de gran utilidad para la implementación de un gran número
de aplicaciones relacionadas con el comercio electrónico, la identificación de
personas...
Para la mayor parte de estas aplicaciones, es necesario el uso de servicios crip-
tográficos que no encarezcan el producto final. Tales servicios criptográficos
son necesarios por varias razones. En primer lugar, la tarjeta requiere una serie
de características de seguridad que permitan la protección de la información
sensible almacenada a su interior. En segundo lugar, deben proporcionar un
entorno de procesamiento.
La generación de una clave pública y privada en el interior de una tarjeta
inteligente, así como la protección de la clave privada en su interior, es crí-
tica. Para poder proporcionar servicios criptográficos, la clave almacenada en
la tarjeta nunca ha de ser revelada. Por este motivo, la propia tarjeta deberá
autoprotegerse haciendo uso de sus servicios criptográficos.
6.2.1. Restricciones de las tarjetas inteligentes
Implementar criptografía de clave pública en aplicaciones basadas en tarjetas
inteligentes representa un gran reto, en parte por las restricciones de imple-
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 61 Criptografía con curvas elípticas
mentación que estos dispositivos requieren (memoria muy reducida y capaci-
dad de cálculo muy limitada).
La mayor parte de tarjetas inteligentes disponibles hoy en día en el merca-
do disponen de una memoria RAM de alrededor de 1.024 bytes, de unos 16
kilobytes de memoria EPROM y de unos 24 kilobytes de memoria ROM. Su
capacidad de procesamiento es también muy reducida. Normalmente, tienen
CPU de 32 bits a una frecuencia de unos 5 megaherzios.
Por último, la velocidad de transmisión de estas tarjetas es también muy li-
mitada. Para conseguir velocidades de aplicación aceptables, la información
transmitida por la tarjeta habría de ser la mínima necesaria.
6.2.2. Ventajas de la ECC
Las ventajas de la utilización de la ECC para la construcción de los servi-
cios criptográficos necesarios para tarjetas inteligentes son básicamente los
siguientes:
• Mínimos requerimientos de memoria y de tasa de transmisión. La utili-
zación de la ECC permite reducir el tamaño de las claves y los certificados.
Esto se traduce en una reducción de la memoria necesaria por parte de la
tarjeta inteligentes. Por otro parte, también permite una reducción de los
datos a transmitir entre tarjeta y aplicación. Por este motivo, la tasa de
transmisión necesaria se reduce considerablemente.
• Escalabilidad. Las aplicaciones basadas en tarjetas inteligentes requieren
un nivel de seguridad bastante elevado (con lo cual, la longitud de las cla-
ves aumenta considerablemente). La criptografía de curvas elípticas puede
proporcionar el nivel de seguridad parecido destinando menos recursos pa-
ra conseguirlo. Esto significa que con el uso de la ECC, las tarjetas inteligen-
tes pueden proporcionar un nivel de seguridad muy elevado sin necesidad
de incrementar su coste de producción.
• No requiere coprocesador. La mayor parte de dispositivos que ofrecen
criptografía de clave pública requieren un componente hardware conocido
como cripto coprocesador para apoyar los intensos cálculos que el sistema
debe realizar. Este componente hardware adicional no solo reduce el espa-
cio disponible en la tarjeta sino que incrementará su coste de un 20 a un
30 por ciento.
La naturaleza de los cálculos necesarios para implementar la ECC, con unos
tiempos de procesamiento bastante reducidos, no requieren este coproce-
sador. Por lo tanto, los algoritmos necesarios pueden ser implementados
en la ROM de la tarjeta, sin necesidad de hardware adicional.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 62 Criptografía con curvas elípticas
• Generación interna de claves. La clave privada asociada a una clave públi-
ca debe permanecer almacenada de forma secreta. Además, para garantizar
el no repudio, la clave privada habría de ser completamente inaccesible
por terceras partes.
Con la utilización de otros algoritmos, la introducción de claves dentro
de la tarjeta se debe hacer de forma personalizada en un entorno seguro.
Debido a la complejidad de los cálculos necesarios, la generación de claves
dentro de la propia tarjeta es ineficiente y generalmente impracticable.
Utilizando ECC se consigue que el tiempo necesario para generar una pare-
ja de claves sea tan reducido que incluso dispositivos de características de
cálculo tan modestas como las tarjetas inteligentes pueden generar tal pa-
reja. Esto significa que el proceso de personalización puede ser evitado en
aquellas aplicaciones donde la no repudiación sea realmente importante.
6.2.3. Conclusiones
Las tarjetas inteligentes tienen unas restricciones de implementación muy rí-
gidas debido a sus limitaciones de cálculo, parámetros de almacenamiento y
tasas de transferencia. Como resultado de estas restricciones, implementar un
sistema de clave pública con tarjetas inteligentes requiere el uso de tarjetas de
más alto nivel, con mayor capacidad de almacenamiento y con coprocesador
criptográfico.
La reducción del tamaño de las clave y los certificados que permite la ECC
para construir sistemas de clave pública, ofrece unas ventajas incuestionables
para la implementación de aplicaciones seguras en tarjetas inteligentes.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 63 Criptografía con curvas elípticas
Ejercicios de autoevaluación
1. Dada la cónica x2 + xy + y2 sobre F2, calcular sus puntos racionales.
2. Dada la cónica x2 + xy + y2 sobre F8, calcular sus puntos racionales.
3. Dada la curva y2 = x3 +3x+2 sobre F23 y los dos puntos de la misma P = (16,11),Q = (8,20),
calcular P + Q, 2P, 4P.
4. Dada la curva y2 + xy = x3 + αx2 + 1 sobre F4.
a) Comprobar que no tiene puntos singulares.
b) Dar un punto P de la curva. Por ejemplo, fijar un valor de x (por ejemplo x = 0) y resolver
la ecuación cuadrática resultante para ver si encontramos un valor válido para y (en
nuestro ejemplo, y2 = 1).
5. Dada la curva y2 + xy = x3 + αx2 + α sobre F4.
a) Comprobar que no tiene puntos singulares.
b) Dar un punto P de la curva.
c) Calcular el orden del punto P. Es decir, calcular el mínimo a, tal que aP = 0, donde 0 es el
punto del infinito.
d) ¿Podemos saber cuántos puntos tiene la curva, utilizando los teoremas conocidos?
6. Implementar usando SAGE el sistema criptográfico ElGamal sobre curvas elípticas. Usar
un número primo de más de 10 cifras y cifrar el texto
’Cifrar con ElGamal elíptico hace difícil el descifrado.’
Mostrar el texto en claro y el texto cifrado.
El método de codificación será una variante, debida a Menezes y Vanstone conocida como
MV-ElGamal. Un punto P de orden grande y la curva E son información pública. La clave
privada es un entero nU más pequeño que el orden de P y la clave pública es PU = nUP. El
mensaje m lo dividiremos en dos bloques módulo p, o sea (m1,m2) ∈ Fp × Fp. La función de
cifrado viene dada por
EU (m) = (rP,c1,c2) ∈ E× P × P
donde r es un número aleatorio, (x,y) = rPU y c1 = xm1 (mod p), c2 = ym2 (mod p). Supon-
dremos que x,y 6= 0, de lo contrario buscaremos otro valor de r.La correspondiente función de descifrado es:
DU (C,c1,c2) = (c1x–1,c2y–1), donde (x,y) = nUC.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 64 Criptografía con curvas elípticas
Soluciones
1. Los únicos puntos posible de la curva son (0,0),(0,1),(1,0),(1,1). Solo hace falta probar qué
valores satisfacen la ecuación y ver que los puntos racionales son (0,1),(1,0),(1,1).
2. El problema, ahora, no es tan sencillo como el anterior. Si en el cuerpo hay muchos ele-
mentos no podemos irlos probando todos de uno en uno. Podemos hacer como en el ejem-
plo 1.5.
Supongamos que el cuerpo finito lo hemos construido utilizando el polinomio primitivo
x3 + x + 1. Ya sabemos por el ejercicio anterior que (0,1) es un punto de la curva. El haz de
rectas que pasan por este punto es Ax+By+C = 0. Dando valores en el punto (0,1) obtenemos
B+C = 0, o sea B = C 6= 0 (si B y C fueran cero la recta sería x = 0 y no pasaría por otros puntos
que ya conocemos (los (1,0) y (1,1)). Si cortamos esta recta con la curva inicial obtenemos
los puntos que buscamos, o sea, las soluciones del sistema de ecuaciones:
8
<
:
Dx + y + 1 = 0
x2 + xy + y2 + 1 = 0
Resolviendo este sistema obtenemos: x = 1D2+D+1
; y = D2+1D2+D+1
y, al ir dando valores a D ∈ F8
obtenemos las ocho soluciones (1,0); (1,1); (α2,α); (α,α2); (α4,α); (α,α4); (α2,α4); (α4,α2) que,
junto con la solución inicial (0,1), da los nueve puntos racionales que buscábamos.
3. 2P = (20,14), 4P = (19,15), P + Q = (15,8).
4.
a) Efectivamente, el único punto singular sería (0,0) que no pertenece a la curva.
b) Fijamos x = α. Entonces obtenemos y2 +αy + 1 = 0 que no tiene solución. Esto quiere decir
que no hay ningún punto de la curva del tipo P = (α,?).
Si vamos buscando otros posibles puntos, llegaremos a la conclusión de que solo hay
soluciones cuando x = 0, valor que tiene dos soluciones. En el plano proyectivo escribi-
ríamos las soluciones como (0,1,0) y (0,1,1).
5.
a) Efectivamente, el único punto singular sería (0,0) el cual no pertenece a la curva.
b) Fijamos x = α2 y obtenemos y2 +α2y = 0, que proporciona dos soluciones (α2,0) y (α2,α2).
c) Empezamos con el punto P = (α2,0) y calculamos 2P = (α2,α2), 3P = 0. El orden del punto
P es 3 .
d) Según el teorema de Hasse el número de puntos de la curva es 1 ≤ N ≤ 9. Por el teorema
3.1, como el orden del punto P es 3, 3|N. O sea que N puede ser 3, 6 o 9. Pero conocemos
más puntos aparte de P, 2P, 3P (por ejemplo (α2,α2)). Es decir que N ∈ {6,9}. Para
terminar de precisar el valor de N necesitariamos calcular algún otro punto.
6. Empezaremos por buscar un número primo de más de 10 dígitos y definir una curva
elíptica sobre el cuerpo finito Fp. También escogeremos un punto P (fácil de calcular) sobre
esta curva.
sage: p= nextprime(10^10+10^8+10^5+1)sage: E = EllipticCurve(GF(p),[1975,4])sage: P = E([0,2])sage: print psage: print(E.cardinality())sage: print P.additiveorder()10100100007101001378081262517226
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 65 Criptografía con curvas elípticas
La curva es E : y2 = x3 + 1975x + 4 y el orden del punto P es lo suficientemente grande.
Las funciones de cifrado y descifrado las podríamos definir cómo:
def cipher(PU ,m1 ,m2):x=0,y=0while ((x==0) oro (y==0)):
r = floor(p*random())x = (r* Kpub)[0]y = (r* Kpub)[1]
return r*P, m1*x, m2*y
def uncipher(NU ,ciph):x = (NU*ciph[0])[0]y = (NU*ciph[0])[1]return ciph[1]*x^(-1), ciph[2]*y^(-1)
Para ver su funcionamiento tomemos por ejemplo, como clave privada nU = 10000:
sage: privatekey = 10000sage: publickey = privatekey*Psage: cipher(publickey,999,1999)((5871087149 : 8478284639 : 1), 571107865, 7072444218)
sage: uncipher(privatekey,cipher(publickey,999,1999))(999,1999)
Podemos convertir un texto de caracteres en enteros:
def codificar(texto):valornumerico = 0for c in texto:
valornumerico = 256*valornumerico + ord(c)return valornumerico
Y, a la inversa, para convertir un número en un texto alfabético:
def descodificar(numero):numero = Integer(numero)texto = ’’for y in numero.digits(256):
texto = chr(y) + textoreturn texto
Finalmente, como estamos codificando/descodificando utilizando el código ASCII, para la
tabla que nos piden, debemos hacer bloques en el texto que no superen log256p caracteres.
texto = ’Cifrar con ElGamal eliptico hace dificil el descifrado’L=len(texto)k = floor(log(p,256))NU = 10000for y in range(0,L,2*k):
t1 = texto[y:y+k]m1 = codificar(t1)t2 = texto[y+k:y+2*k]m2 = codificar(t2)textciph = cipher(NU*P,m1,m2)d1 = descodificar(uncipher(NU,textciph)[0])d2 = descodificar(uncipher(NU,textciph)[1])print d1+d2 , m1 ,m2, textciph, t1+t2
Este es el resultado. La primera columna es el texto a cifrar. La segunda y tercera columnas
el texto codificado (m1,m2). La cuarta columna los valores cifrados. Y la quinta columna el
resultado de descifrar.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 66 Criptografía con curvas elípticas
Cifrar c 1130980978 1634869347 ((3670548167 : 8041465163 : 1),6186249921, 6388942806) Cifrar c
on ElGam 1869488197 1816617325 ((9491602649 : 7910460644 : 1),8350385062, 7689324084) on ElGam
al elipt 1634476133 1818849396 ((1257214778 : 421866546 : 1), 524846611,5065905920) al elipt
ico hace 1768124192 1751212901 ((2068088083 : 6284606394 : 1),4999183562, 850702920) ico hace
dificil 543451494 1768122732 ((6466692567 : 5666762513 : 1),3325032242, 7746857338) dificil
el desc 543517728 1684370275 ((5844556383 : 4258913833 : 1),6783579288, 8248646216) el desc
ifrado 1768321633 25711 ((3083653805 : 3609902653 : 1), 4465267786,7374582335) ifrado
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200952 67 Criptografía con curvas elípticas
Bibliografía
Blake, I.; Seroussi, G.; Smart, N. (2000). “Elliptic Curves in Cryptography”. London Mat-hematical Society Lecture Note Series (núm. 265). Cambridge: Cambridge U. Press.
Fulton, W. (1969). Algebraic Curves. An Introduction to Algebraic Geometry. Nueva York: Ben-
jamin Inc. (Versión en castellano: Curvas algebraicas (1972). Barcelona: Ed. Reverte.)
Hankerson, D.; Menezes, A.; Vanstone, S. (2004). Guide to Elliptic Curve Cryptography.
Nueva York: Springer-Verlag.
Koblitz, N. (2004). “Algebraic Aspects of Cryptography”. Algorithms and computations inMathematics (vol. 3). Berlín, Heidelberg, Nueva York: Springer-Verlag.
Menezes, A. (1993). Elliptic Curve Public Key Cryptosystems. Massachusetts: Kluwer Academic
Publishers, Norwell.
Silverman, J. H. (1986). “The Arithmetic of Elliptic Curves”. Graduate Texts in Mathematics(núm. 106). Nueva York: Springer-Verlag.
Washington, L. C. (2008). “Elliptic Curves: Number Theory and Cryptography”. DiscreteMathematics and its Applications. Nueva York: Chapman & Hall/CRC.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Pairings y susaplicacionesLlorenç Huguet Rotger
Josep Rifà Coma
Juan Gabriel Tena Ayuso
PID_00200950
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España deCreative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéisel autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un usocomercial y no hagáis una obra derivada. La licencia completa se puede consultar enhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Pairings en curvas elípticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1. Aplicaciones bilineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. El pairing de Weil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3. Pairing modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.1. Construcción explícita de el . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2. El algoritmo de Miller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4. Grado de inmersión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2. Ataques basados en pairings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3. Criptografía basada en la identidad . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1. Intercambio de claves en criptografía basada en la identidad . 22
3.1.1. Acuerdo bipartito de claves . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2. Acuerdo tripartito de claves . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2. Cifrado basado en la identidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3. Esquemas de firma basados en la identidad . . . . . . . . . . . . . . . . . . . 27
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 5 Pairings y sus aplicaciones
Introducción
Una de las herramientas de la geometría de las curvas elípticas que se han
demostrado más fructíferas en criptografía son los denominados pairings. Los
pairings son aplicaciones bilineales definidas sobre los puntos de una curva
elíptica y con valores en un grupo cíclico de raíces de la unidad, grupo conte-
nido en un cierto cuerpo finito.
Existen diversos tipos de pairings, siendo los fundamentales el pairing de Weil
y el de Tate. Recientemente han sido propuestos otros tipos de pairings: eta
pairings, ate, omega pairings, etc, los cuales tienen en realidad solo un carácter
auxiliar y algunos solo son aplicables a tipos particulares de curvas.
El pairing de Tate es más general que el de Weil (puede aplicarse a curvas más
generales que las elípticas) y ofrece ciertas ventajas computacionales, sin em-
bargo, es más difícil de describir por lo que, en lo que sigue, consideramos
solo el segundo. En cualquier caso, no estando interesados en la computación
explícita de tales pairings, sino en el papel que juegan en criptografía, ello es
en realidad irrelevante y la elección del pairing de Weil está motivada exclusi-
vamente por la claridad en la exposición.
Las aplicaciones criptográficas de los pairings son de dos tipos. Por una parte se
han utilizado con un propósito destructivo, para diseñar ataques al problema
del logaritmo discreto elíptico, y de otra, desde un punto de vista constructivo,
constituyen una herramienta básica de un nuevo paradigma, el de la cripto-
grafía basada en la identidad. El ataque basado en pairings tiene como con-
secuencia que ciertas curvas elípticas, las denominadas supersingulares, no se
consideren actualmente seguras para implementar criptosistemas y protoco-
los criptográficos basados en el logaritmo discreto elíptico, pero curiosamente
tales curvas supersingulares son idóneas para la criptografía basada en la Iden-
tidad.
Describiremos en lo que sigue los pairings y los dos tipos de aplicaciones crip-
tográficas mencionadas.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 6 Pairings y sus aplicaciones
Objetivos
En los materiales didácticos de este módulo el estudiante encontrará los con-
tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer el concepto de “pairing” en curvas elípticas, específicamente el
pairing de Weil.
2. Conocer las aplicaciones criptográficas de los pairings, sobre todo las enfo-
cadas al cálculo del logaritmo discreto elíptico y las enfocadas a la cripto-
grafía basada en la identidad.
3. Conocer algún protocolo específico de criptografía basada en la identidad
(acuerdo de claves, cifrado y firma).
4. Saber escribir software para implementar los protocolos anteriores.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 7 Pairings y sus aplicaciones
1. Pairings en curvas elípticas.
En este apartado se describen los pairings definidos sobre una curva elíptica y
se estudian sus propiedades. Se muestra asimismo cómo el grupo de llegada
de un pairing está contenido en un cuerpo finito, extensión del cuerpo base de
definición de la curva, se define el grado de inmersión y se discute el valor del
mismo.
1.1. Aplicaciones bilineales
Los pairings son aplicaciones bilineales entre ciertos grupos abelianos. Comen-
cemos considerando las aplicaciones bilineales entre espacios vectoriales, sin
duda más familiares al lector y cuya definición y propiedades se trasladarán
inmediatamente al lenguaje de pairings.
Sea K un cuerpo conmutativo y V1,V2,W, tres espacios vectoriales sobre K.
.
Definición 1.1. Una aplicación f : V1 ×V2 → W se denomina bilineal
si es aplicación lineal de espacios vectoriales en cada una de las varia-
bles, es decir, si para todo a,a′ ∈ V1, b,b′ ∈ V2, λ ∈ K, se verifican las
cuatro propiedades siguientes:
1) f (a + a′,b) = f (a,b) + f (a′,b)
2) f (λa,b) = λf (a,b)
3) f (a,b + b′) = f (a,b) + f (a,b′)
4) f (a,λb) = λf (a,b)
Si W = K una aplicación bilineal se denomina forma bilineal.
Supongamos que se tiene V1 = V2 = V, entonces podemos dar la siguiente
definición.
.
Definición 1.2. Una aplicación bilineal f : V × V → W se denomina:
1) Simétrica si ∀a,b ∈ V se verifica: f (a,b) = f (b,a).
2) Antisimétrica si ∀a,b ∈ V se verifica: f (a,b) = –f (b,a).
3) Alternada si ∀a ∈ V se verifica: f (a,a) = 0.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 8 Pairings y sus aplicaciones
Formas cuadráticas
Si f : V × V → K es unaforma bilineal simétrica laaplicaciónq : V → K, q(a) = f (a,a) sedenomina forma cuadrática.La teoría de las formascuadráticas, estrechamenterelacionada con la de formasbilineales simétricas, es unarama importante del Álgebra,y sin duda es familiar al lectora propósito del estudio de lascónicas y cuádricas.
.
Lema 1.3.
Toda forma bilineal alternada es antisimétrica. Si la característica del
cuerpo K es diferente de 2 se verifica el recíproco.
Demostración:
1) Supongamos f alternada; para a,b ∈ V se tendrá:
0 = f (a + b,a + b) = f (a,a) + f (a,b) + f (b,a) + f (b,b) = 0 + f (a,b) + f (b,a) + 0 (1)
luego f (a,b) = –f (b,a), es decir f es antisimétrica.
2) Supongamos f antisimétrica, en particular para a = b, se tiene
f (a,a) = –f (a,a) ⇒ 2f (a,a) = 0. (2)
Puesto que la característica de K es diferente de 2, debe ser f (a,a) = 0, es decir
f es alternada.
Ejemplo 1.1. Sean K = R y V = R2. Los elementos a ∈ V serán vectores con dos
coordenadas reales, a = (x,y). Sean las siguientes formas bilineales f : V × V → R:
1) f ((x,y),(x′,y′)) = axx′ + b(xy′ + x′y) + cyy′, a,b,c ∈ R: Forma simétrica
2) f ((x,y),(x′,y′)) = xy′ – yx′: Forma antisimétrica y alternada
3) f ((x,y),(x′,y′)) = axx′ + bxy′ + b′x′y + cyy′, a,b,b′,c ∈ R, b 6= ±b′: Ni simétrica ni antisimé-
trica
Observación
La forma cuadrática asociadaa la forma bilineal simétricaf ((x,y),(x′,y′)) =
axx′ + b(xy′ + x′y) + cyy′ es laq((x,y)) = ax2 + 2bxy + cy2.
.
Definición 1.4. Sea f : V1 ×V2 → W una forma bilineal. Se denomina
núcleo por la izquierda de f al conjunto Kerizq = {a ∈ V1; f (a,b) =
0, ∀b ∈ V2}. Análogamente se denomina núcleo por la derecha de f al
conjunto Kerder = {b ∈ V2; f (a,b) = 0, ∀a ∈ V1}.
.
Lema 1.5. El elemento 0 ∈ V1 pertenece a Kerizq y el elemento 0 ∈ V2
pertenece a Kerder
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 9 Pairings y sus aplicaciones
Demostración: Para cualquier a ∈ V1, b ∈ V2 se tiene,
f (a,b) = f (0 + a,b) = f (0,b) + f (a,b) ⇒ f (0,b) = 0 ⇒ 0 ∈ Kerizq. (3)
El resultado para 0 ∈ Kerder es análogo.
.
Definición 1.6. La aplicación f se denomina no degenerada por la
izquierda si Kerizq = {0} y no degenerada por la derecha si Kerder = {0}.
Es evidente que si f es simétrica o antisimétrica se verifica Kerizq = Kerder.
.
Definición 1.7. f : V × V → W aplicación bilineal simétrica o antisi-
métrica se denomina no degenerada si verifica las condiciones equiva-
lentes siguientes:
1) f es no degenerada por la izquierda.
2) f es no degenerada por la derecha.
3) Para todo a ∈ V existe un b ∈ V tal que f (a,b) 6= 0 (y también
f (b,a) 6= 0).
Caso contrario se denomina degenerada.
Ejemplo 1.2.
Sean K = R y V = R2.
La aplicación bilineal simétrica, f : V×V → K, f ((x,y),(x′,y′)) = xx′+yy′, es no degenerada.
La aplicación bilineal simétrica, f : V × V → K, f ((x,y),(x′,y′)) = xx′, es degenerada: todo
elemento (0,y) pertenece al núcleo por la izquierda (o por la derecha).
Como se ha indicado, la definición de aplicación bilineal puede formularse
para grupos abelianos. Para adaptarnos a la notación posteriormente utilizada
para pairings, supongamos dos grupos abelianos A,B con notación aditiva y C
un grupo abeliano con notación multiplicativa.
.
Definición 1.8. Una aplicación f : A × B → C se denomina bilineal si
verifica:
1) f (a + a′,b) = f (a,b) · f (a′,b)
2) f (a,b + b′) = f (a,b) · f (a,b′)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 10 Pairings y sus aplicaciones
Las definiciones y propiedades antes enunciadas (simétrica, antisimétrica, al-
ternada, no degenerada) siguen siendo válidas en este caso, con los cambios
de notación pertinentes (en particular el elemento neutro de C debe escribirse
ahora 1).
1.2. El pairing de Weil
Sea E una curva elíptica definida sobre un cuerpo conmutativo K (en el con-
texto de las aplicaciones criptográfícas K será un cuerpo finito). Los pairings
son aplicaciones bilineales que aplican un par de puntos de E en un elemento
de un grupo cíclico finito, cuyos elementos pueden identificarse con raíces de
la unidad, grupo que en el caso K = Fq, cuerpo finito con q elementos, vere-
mos que puede considerarse contenido en un cuerpo Fqk con qk elementos,
para un cierto valor k.
* Ver, por ejemplo, A. Menezes
(1993). Elliptic Curves Public Key
Cryptography. Kluwer.
Tomaremos como modelo el pairing de Weil, el primer tipo de pairing pro-
puesto*. Para cada entero l, primo con la característica del cuerpo, se tiene
un pairing de Weil el, el cual está definido en los puntos del subgrupo E[l]
de l-torsión de E (subgrupo que definimos a continuación) y a valores en un
grupo cíclico µl con l elementos, cuya ley de grupo escribiremos con nota-
ción multiplicativa. Puesto que todo elemento x ∈ µl verifica xl = 1, puede
interpretarse µl como el grupo de las raíces l-simas de 1. A un generador de
este grupo cíclico le llamaremos, en este contexto, raíz primitiva l-sima de la
unidad.
Observación
En las aplicacionescriptográficas basadas en ellogaritmo discreto elíptico, setrabaja en el grupo cíclicogenerado por un puntoP ∈ E. Si l es el orden de P(usualmente primo) esentonces el pairing el el quese considera
.
Definición 1.9. Los puntos de l-torsión de una curva elíptica son los
elementos del conjunto E[l] = {P ∈ E; l · P = 0}, donde como habitual-
mente l · P indica el producto escalar de l por el punto P.
Referencia bibliográfica
J. H. Silverman (1986). TheArithmetic of Elliptic Curves.Springer-Verlag.
Es evidente que el conjunto E[l] es un subgrupo del grupo E(K) de puntos de
E racionales sobre K. Si K es una clausura algebraica de K podemos definir
análogamente el grupo E[l](K) de puntos de l-torsión racionales sobre K. El
grupo E[l](K) tiene cardinal l2 y la siguiente estructura (Silverman, 1986).
.
Lema 1.10.
E[l](K) ≃ Z/lZ × Z/lZ (4)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 11 Pairings y sus aplicaciones
Sin embargo, estos l2 puntos de E[l](K) no están todos necesariamente defi-
nidos sobre el cuerpo K y en general E[l] será solo una parte (un subgrupo)
de E[l](K). Nótese que dicho subgrupo siempre contiene al menos el elemento
neutro O ∈ E.
Ejemplo 1.3.
La curva elíptica E : y2 = x3 +x+8, sobre el cuerpo F11, posee solo dos puntos de 2-torsion
con coeficientes en el cuerpo base. Más precisamente, E[2] = {O,(8,0)} ≃ Z/2Z.
Ejemplo 1.4.
Para l = 3 la curva elíptica E : y2 = x3 + 7x, sobre el cuerpo F13 tiene sus 9 puntos de
3-torsión racionales, explícitamente
E[3] = {O,(3,3),(3,10),(4,1),(4,12),(9,5),(9,8),(10,2),(10,11)}
Estos puntos constituyen un subgrupo isomorfo al grupo Z/3Z × Z/3Z, el cual contiene
cuatro subgrupos de orden tres, los cuales tienen en común el elemento neutro.
• G1 = {O,(3,3),(3,10)}
• G2 = {O,(4,1),(4,12)}
• G3 = {O,(9,5),(9,8)}
• G4 = {O,(10,2),(10,11)}
El siguiente diagrama muestra estos cuatro subgrupos.
Grupos de 3-torsión
O
G1
G2
(9,5)(9,8)
G4
(10,2)(10,11)
(4,1)(4,12)
(3,3)(3,10)
G3
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 12 Pairings y sus aplicaciones
.
Definición 1.11. El pairing de Weil es una aplicación:
el : E[l] × E[l] –→ µl (5)
con las siguientes propiedades:
1) Bilineal, es decir el(P + P′,Q) = el(P,Q)el(P′,Q), el(P,Q + Q′) =
el(P,Q)el(P,Q′).
2) Alternada, es decir el(P,P) = 1, ∀P ∈ E. Por ser alternada es también
antisimétrica, luego el(P,Q) = el(Q,P)–1.
3) No-degenerada, es decir el(P,Q) = 1, ∀Q ⇔ P = O, el(P,Q) = 1, ∀P ⇔Q = O.
4) Existen puntos P,Q ∈ E[l] tales que el(P,Q) es una raíz primitiva l-
sima de la unidad, luego el es suprayectiva.
Raíces primitivas
Se denomina raíz primitiva deorden n de la unidad aquellacuyo orden es exactamenten. Por ejemplo, en el cuerpoC de los complejos elelemento e2πi/5 es una raízde orden 15 de la unidad(pues(e2πi/5)15 = (e2πi)3 = 13 = 1),pero no es una raíz primitivade orden 15, ya que su ordenes 5 (y por tanto, en realidades una raíz primitiva de orden5 de la unidad).
Nota
El pairing de Tate es más general que el de Weil al exigir solo que el primer punto P esté
en E[l], mientras que Q puede ser cualquier punto de la curva. Sin embargo, como se
ha mencionado, en las aplicaciones criptográficas los puntos considerados estarán en el
subgrupo 〈P〉 engendrado por un punto P de orden l, y por tanto, son todos de l torsión.
1.3. Pairing modificado
La propiedad alternada del pairing de Weil presenta un inconveniente en las
aplicaciones criptográficas. Puesto que en ellas se trabaja en el grupo engen-
drado por un punto P ∈ E, si el(P,P) = 1, para todo par de puntos R,S ∈ 〈P〉se tendría también el(R,S) = 1 (si R = rP, S = sP utilizando la propiedad de
bilinealidad el(R,S) = el(P,P)rs = 1) es decir el sería la aplicación trivial. Una so-
lución para solventar este problema es substituir el por un pairing modificado
el, utilizando lo que se denomina una aplicación distorsión.
.
Definición 1.12. Una aplicación distorsión para el punto P es un en-
domorfismo φ de la curva E tal que el(P,φ(P)) 6= 1. A veces se exige
también que el(P,φ(P)) sea una raíz primitiva de la unidad. Si l es pri-
mo, como es habitual, ambas condiciones son equivalentes.
Tener en cuenta las siguientes consideraciones:
1) En la definición anterior el punto φ(P) es, al igual que P, de l-torsion (pues lφ(P) =
φ(lP) = φ(O) = O ), y por tanto tiene sentido aplicar el pairing de Weil al par (P,φ(P)).
2) En general, el endomorfismo φ no está definido sobre el cuerpo Fq (y para nuestros
propósitos no debe estarlo). En particular φ(P) no tendrá coordenadas en Fq, sino
sobre un cuerpo extensión.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 13 Pairings y sus aplicaciones
3) Puede probarse que E posee una tal aplicación distorsión si y solamente si es super-
singular (Blake y otros, 2005). Ello hace que las curvas supersingulares sean especial-
mente útiles en criptografía basada en pairings.
.
Definición 1.13. Sea φ una aplicación distorsión. Se define e(R,S) =
e(R,φ(S)). La aplicación e se denomina pairing modificado.
Nótese que ahora tenemos e(P,P) 6= 1 y, por tanto, para R,S ∈ 〈P〉, R,S 6= O
también tenemos, por bilinealidad, e(R,S) 6= 1.
La definición 1.11 es obviamente incompleta, ya que lista las propiedades de el
pero no caracteriza quién es el elemento el(P,Q) correspondientes a P,Q ∈ E[l].
La definición de tal imagen involucra conceptos y resultados matemáticos que
no podemos desarrollar en detalle. Por otra parte, las aplicaciones criptográfi-
cas posteriores pueden comprenderse asumiendo únicamente las propiedades
de la definición 1.11.
Sin embargo, para el posible lector interesado, resumimos brevemente aquí la
definición explícita de el(P,Q) y damos un algoritmo eficiente de cómputo del
mismo.
1.3.1. Construcción explícita de el
Lectura recomendada
Ver J. H. Silverman (1986).
The Arithmetic of EllipticCurves. Springer-Verlag, para
detalles y demostraciones.
Comenzamos introduciendo (sin demostración) los conceptos y resultados
necesarios para la definición de el(P,Q).
.
Definición 1.14. Sea E una curva elíptica,
1) Un divisor es una suma formal finita de puntos de E: D =P
P∈E nP(P),
con coeficientes nP números enteros, positivos o negativos (y todos
nulos salvo un número finito). La notación anterior de suma es un
simple símbolo formal y no una operación, en particular no debe
confundirse con la operación adición de puntos de E. Tampoco de-
be confundirse el punto P ∈ E con el divisor (P) = 1(P).
2) Dados dos divisores D =P
P∈E nP(P), D′ =P
P∈E n′
P(P) , la adición: D+
D′ =P
P∈E(nP+n′
P)(P) confiere al conjunto de divisores una estructura
de grupo abeliano.
3) Se define el grado de D : gr(D) =P
nP ∈ Z.
4) Se define el soporte de D : sp(D) = {P; nP 6= 0}.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 14 Pairings y sus aplicaciones
Observación
Aunque la grafía es parecidaconviene no confundir elpunto neutro de la curvaelíptica, O (el único puntodel infinito de la curva) con 0
elemento neutro del cuerpoK sobre el que está definidala curva. Tampoco hay queconfundirlo con el elementoneutro (O) del grupo dedivisores.
.
Definición 1.15.
1) Función racional sobre E: Función del tipo f = F1(x,y)F2(x,y) con
F1,F2 polinomios definidos módulo la ecuación de la curva E.
2) Un punto P se dice cero de f si f (P) = 0 y polo de f si f no está
definido en P (porque F2(P) = 0) en cuyo caso se conviene en notar
f (P) = ∞.
3) Asociado con una función f se tiene un divisor div(f ) =P
ordP(f )(P)
donde
a) ordP(f ) = 0 si f (P) 6= 0,∞b) ordP(f ) = n ≥ 1 si tiene un cero con multiplicidad (u orden) n.
c) ordP(f ) = –n (n ≥ 1) si tiene un polo con multiplicidad n.
4) Los divisores de funciones racionales se denominan divisores prin-
cipales.
5) Dos divisores D,D′ se llaman equivalentes (y escribiremos D ∼ D′) si
se diferencian en un divisor principal, es decir: D = D′ + div(f ).
6) Sea f una función y D =P
P∈E nP(P) un divisor. Se define f (D) =Q
f (P)nP .
.
Proposición 1.16.
1) Un divisor principal tiene grado cero. Como consecuencia, dos divi-
sores equivalentes tienen igual grado.
2) Un divisor con grado 0 no es necesariamente principal, pero admite
una expresión en forma canónica: D = (P) – (O) + div(f ), con P único.
3) Dados Di = (Pi) – (O) + div(fi), i = 1,2, divisores de grado 0, pero no
principales (luego Pi 6= O) la forma canónica de su suma es
D = D1 + D2 = (P3) – (O) + div(f1f2f3) (6)
donde P3 = P1 + P2 y f3 = s/v con s ecuación de la recta secante
uniendo P1, P2 (tangente a la curva si P1 = P2) y v ecuación de la
recta vertical uniendo P3 con el punto del infinito O (si P3 = O
tomar v = 1).
4) Un divisor D =P
nP(P) es principal si y solamente siP
nP = 0 yP
nPP = 0 (en la última expresión la suma indica la suma de puntos
en la curva elíptica).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 15 Pairings y sus aplicaciones
Ver también
Las fórmulas de adición seestudian en el módulo“Criptografía con curvaselípticas” de esta asignatura.
Ejemplo 1.5.
Sea la curva elíptica E : y2 = x3 + x + 4 definida sobre el cuerpo finito F7.
1) Sea la recta r : y = 2x + 2. Determinemos el divisor principal div(r):
El divisor de r es la combinación lineal formal de los ceros y los polos de la recta en los
puntos de la curva elíptica, contados con sus multiplicidades.
Para determinar los ceros hagamos la intersección de E y r: sustituyendo y = 2x + 2 en
la ecuación de E se obtiene la ecuación x3 – 4x2 = 0. Esta ecuación tiene la raíz doble
x = 0 y la raíz simple x = 4. Los ceros son pues los puntos (0,2), con multiplicidad
2 (puede comprobarse que la recta es tangente a la curva en este punto) y (4,3) con
multiplicidad 1.
En virtud de la Proposición 1.16, div(r) debe tener grado 0. Puesto que hay 3 ceros (con-
tados con sus multiplicidades) deben existir tres polos. Como, en los puntos afines de E,
la recta r no tiene polos, estos deben estar en el punto del infinito O = (0 : 1 : 0) de la
curva, punto que será pues un polo de orden 3.
Nótese que si se escribe la ecuación de E en coordenadas proyectivas: y2z = x3 + xz2 + 4z3,
haciendo z = 0, se tiene x3, polinomio de grado 3.
Por tanto,
div(r) = 2(0,2) + 1(4,3) – 3(O)
2) Sea el divisor: D = 1(0,2) + 1(0,5) + (–2)(6,3). Este divisor tiene grado 1+1-2=0. Sin
embargo, no es un divisor principal: en efecto, de acuerdo con la Proposición 1.16 si
lo fuese debería tener grado 0, condición que verifica, pero además la suma en E de
los puntos del divisor debería ser el punto del infinito O. Sin embargo, utilizando las
fórmulas de adición.
(0,2) + (0,5) – 2(6,3) = O – 2(6,3) = 2(6,4) = (4,4).
Estamos ya en disposición de definir el elemento el(P,Q).
.
Definición 1.17. Dados P,Q ∈ E[l] elijamos A,B divisores de grado
cero con soportes disjuntos y tales que:
A ∼ (P) – (0), B ∼ (Q) – (O)
Sean fA,fB funciones sobre E tales que,
div(fA) = lA, div(fB) = lB.
Se define entonces:
el(P,Q) = fA(B)/fB(A) (7)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 16 Pairings y sus aplicaciones
* Para la demostración, podéis
ver J. H. Silverman (1986). The
Arithmetic of Elliptic Curves.
Springer-Verlag.
A partir de esta definición se deducen las propiedades del pairing enunciadas
en 1.11*.
Observar que los divisores A,B deben ser disjuntos para que fA(B),fB(A) estén
bien definidos. Una forma de obtenerlos es tomar un punto S ∈ E con S 6=O,P, – Q,P – Q y A = (P + S) – (S); B = (Q – S) – (–S). Entonces
el(P,Q) = fA((Q – S) – (–S))/fB((P + S) – (S)) =fA(Q – S)fB(S)
fA(–S)fB(P + S)(8)
* Ver A. Menezes (1993). Elliptic
Curves Public Key Cryptography.
Kluwer
El cálculo del pairing se reduce pues a evaluar ciertas funciones en ciertos di-
visores. El problema es el computo de tales funciones fA,fB. Tal cómputo pue-
de realizarse eficientemente utilizando el siguiente algoritmo*. Este algoritmo
permite también el cómputo del pairing de Tate.
1.3.2. El algoritmo de Miller
.
Algoritmo 1.18 (Algoritmo de Miller). Input: D =Pr
i=1 ni(Pi) un
divisor principal. Output: una función f tal que D = div(f )
1) Puesto que D tiene grado 0 puede escribirse: D =Pr
i=1 ni((Pi) – (O))
2) Para cada i obtenemos la forma canónica (P′
i ) – (O) + div(fi), del
divisor ni((Pi) – (O)) como sigue:
i) Sean bd–1bd–2 · · · b1b0 la expresión binaria de ni (donde b0 son las
unidades y bd–1 = 1), R := Pi; fi := 1.
ii) El método para sumar divisores canónicos especificado en la ecua-
ción 6 proporciona para i = bd–2, . . . ,0:
a) fi := f 2i gRR; R := 2R
b) Si bi = 1, fi := figRPi, R := R + Pi
c) Output fi.
donde, dados los dos puntos R,S, gRS es la función tal que
div(gRS) = (R) + (S) – (R + S) – (O).
3) Sumando los divisores canónicos anteriores se obtiene la función
buscada f .
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 17 Pairings y sus aplicaciones
El ejemplo 1.6 se debe a A.
Menezes, (1993). Elliptic Curves
Public Key Cryptography, Kluwer.
Ejemplo 1.6.
Para la curva elíptica del Ejemplo 1.4, E : y2 = x3 + 7x, definida sobre el cuerpo F13, sean
los puntos de E: P = (3,3), Q = (4,1) ambos puntos de 3-torsión. El algoritmo de Miller
permite obtener
fA =(8x + y)(x + y + 1)(x + 4)
(x + 3)(11x + y)(8x + y + 11), (9)
fB =(3x + y)(x + y + 10)
(10x + y)(12x + y + 3)(10)
y finalmente e3(P,Q) = 9.
1.4. Grado de inmersión
Supongamos K = Fq, un cuerpo finito con q elementos. Veamos que el grupo
de llegada µl del pairing el puede considerarse contenido en una extensión Fqk
para algún valor (mínimo) k.
.
Lema 1.19. Existe un número natural k (de hecho puede tomarse 1 ≤k ≤ l – 1), tal que el grupo multiplicativo (Fqk )∗ contiene un subgrupo
isomorfo a µl.
Observación
El cardinal del grupo (Z/lZ)∗,igual al número de elementosno nulos en Z/lZ coprimoscon l, se denomina la funciónde Euler ϕ(l). En particular si les primo tenemos queϕ(l) = l – 1. El ordenmultiplicativo k del cardinal qdel cuerpo Fq es siempre undivisor de ϕ(l).
Demostración: El grupo (Fqk )∗ es cíclico, con cardinal qk – 1. Tal grupo con-
tendrá un subgrupo de cardinal l si, y solamente si, l|(qk – 1) es decir qk ≡ 1
mod l. Ahora bien, por hipótesis, mcd(q,l) = 1 y por tanto q ∈ (Z/lZ)∗, sub-
grupo de elementos invertibles de Z/lZ. El orden k de q en tal grupo será una
solución del problema.
Ver también
La función de Euler se estudiaen el módulo “Cuerposfinitos” de esta asignatura.
.
Definición 1.20. El mínimo valor k verificando el lema 1.19 se deno-
mina grado de inmersión.
Ver también
El teorema de Hasse seestudia en el módulo“Criptografía con curvaselípticas”.
El valor del grado de inmersión será crucial para los ataques al logaritmo
discreto elíptico, objeto del siguiente apartado. Recordemos que, en virtud
del teorema de Hasse, el cardinal de una curva elíptica E viene dado por
♯E = q + 1 – t, con |t| ≤ 2√
q. En las aplicaciones criptográficas basadas en
el logaritmo discreto elíptico se utiliza un subgrupo cíclico, del mayor orden
posible (y deseablemente primo), 〈P〉 ⊆ E, cuyo orden l será pues un divisor
de ♯E.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 18 Pairings y sus aplicaciones
* Ver A. Menezes (1993). Elliptic
Curves Public Key Cryptography.
Kluwer.
Para las curvas elípticas ordinarias, el grado de inmersión es en general muy
grande (exponencial en log(q), según demostraron Koblitz y Balasubramanian,
1998). Sin embargo, Menezes, Okamoto y Vanstone mostraron que para las
curvas supersingulares este grado es pequeño, de hecho k ≤ 6*.
Recordemos, tal como se ha visto en el módulo 4, que una curva elíptica con cardinal
q + 1 – t se llama supersingular si la característica p del cuerpo divide a t. En otro caso la
curva se denomina ordinaria.
Para mostrar este resultado Menezes, Okamoto y Vanstone dan el siguiente
resultado
.
Proposición 1.21. Las curvas elípticas supersingulares definidas sobre
el cuerpo finito Fq, q = pm y con cardinal q + 1 – t se clasifican en los seis
tipos siguientes:
• Tipo I) t = 0 y E(Fq) ≃ Z/(q + 1)Z
• Tipo II) q ≡ 3 (mod 4) , t = 0 y E(Fq) ≃ Z/((q + 1)/2)Z × Z/2Z
• Tipo III) m par, t2 = q, y E(Fq) cíclico.
• Tipo IV) p = 2 ,m impar, t2 = 2q y E(Fq) cíclico.
• Tipo V) p = 3 ,m impar, t2 = 3q y E(Fq) cíclico.
• Tipo VI) m par, t2 = 4q y E(Fq) ≃ Z/(√
q ∓ 1)Z × Z/(√
q ∓ 1)Z
A partir de la clasificación de la proposición 1.21 es un simple ejercicio obtener
los grados de inmersión k para cada uno de los tipos, si (como es habitual) se
toma l = n1 cardinal del subgrupo cíclico maximal de E. Así, por ejemplo, para
las curvas del tipo I, con q + 1 elementos, es obvio que q2 – 1 es múltiplo de
q + 1 luego el grado de inmersión de estas curvas es k = 2. Los resultados se
recogen en la siguiente tabla.
Tipo t n1 k
I 0 q + 1 2
II 0 (q + 1)/2 2
III ±√q q + 1 ∓√
q 3
IV ±p
2q q + 1 ∓p
2q 4
V ±p
3q q + 1 ∓p
3q 6
VI ±2√
q√
q ∓ 1 1
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 19 Pairings y sus aplicaciones
2. Ataques basados en pairings
.
Referencia bibliográfica
Menezes, Okamoto yVanstone (1993).
“Reducing elliptic curves
logarithms to a finite field”.
IEEE Trans. Info. Theory(vol. 39, pág. 1639-1646).
Los pairings permiten un tipo de ataque al logaritmo discreto elíptico, los de-
nominados algoritmos de reducción. Así Menezes, Okamoto y Vanstone (1993)
muestran cómo trasladar, utilizando el pairing de Weil, dicho logaritmo, defi-
nido sobre una curva elíptica sobre el cuerpo finito Fq al logaritmo discreto
sobre Fqk , con k el grado de inmersión.
Supongamos 〈P〉 ⊆ E(Fq) el grupo subyacente al logaritmo discreto elíptico,
subgrupo de orden l, primo con la característica p y denotemos µl ⊂ Fqk . El
ataque de Menezes, Okamoto y Vanstone (MOV) viene dado por el siguiente
algoritmo.
.
Algoritmo 2.1.
Input: P, R ∈ 〈P〉, R 6= 0.
Output: m, 0 < m < l, mP = R.
1) Encontrar el menor k tal que µl ⊂ Fqk .
2) Encontrar Q tal que α = el(P,Q) tenga orden l.
3) Calcular β = el(R,Q).
4) Calcular m, el logaritmo de β en la base α, en Fqk .
5) Retornar m.
Lectura recomendada
Ver los detalles del ejemplo
2.1 en A. Menezes, EllipticCurves Public KeyCryptography, Kluwer, 1993
y también uno de los
ejercicios al final del
módulo.
Ejemplo 2.1. Para la curva del Ejemplo 1.6 sobre Fq = 13 sea el punto R = (3,10) ∈ 〈P〉.Puesto que l = 3 y µ3 ⊂ F13 el grado de inmersión es 1.
El punto Q = (4,1) verifica que α = e3(P,Q) = 9, tiene orden 3 módulo 13. Se obtiene que
β = e3(R,Q) = 3. Como 92 ≡ 3 (mod 13) se tiene que logP(R) = 2, es decir R = 2P.
Ver también
El logaritmo discreto clásicosobre el grupo multiplicativose estudia en el módulo“Elementos de criptografía”.
La utilidad del algoritmo MOV depende fuertemente del valor de k: recorde-
mos que el logaritmo discreto clásico sobre el grupo multiplicativo (Fqk )∗ es
sensible al denominado Index Calculus, mientras que el logaritmo discreto
elíptico es inmune al mismo, lo que posibilita emplear claves mucho meno-
res. Así claves de 163 bits en el caso elíptico ofrecen la misma seguridad que
claves de 1024 bits en el caso clásico.
Ahora bien, lo que hace el algoritmo MOV es trasladar el problema en una cur-
va elíptica sobre el cuerpo Fq a un problema similar en Fqk . La longitud binaria
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 20 Pairings y sus aplicaciones
de qk es k veces la longitud binaria de q, por tanto para k grande el tamaño del
cuerpo Fqk hace ineficaz los ataques basados en el Index Calculus. Sin embar-
go, como hemos visto, para curvas supersingulares el valor de k es a lo sumo
6. En este caso, correspondiente a curvas del tipo V en la Proposición 1.21,
para cuerpos de longitud q = 163 bits, se tiene que q6 tiene longitud 978, por
lo que la seguridad es equiparable al caso clásico con longitud de clave 1024.
Y por supuesto para curvas del tipo VI en la proposición 1.21, la seguridad es
la misma que en el caso clásico sobre el cuerpo base, caso que, para longitud
163, se considera actualmente muy vulnerable al Index Calculus.
Como consecuencia, las curvas supersingulares no son adecuadas para cripto-
sistemas y protocolos basados en el logaritmo discreto elíptico.
Dos observaciones antes de acabar:
Lectura recomendada
Frey y Ruck (1994). “A
remark concerning
m-divisibility and the
discrete logarithm problem
in the divisor class group of
curves”. Mathematics ofComputation (vol. 62, pág.
865-874) .
• Frey y Ruck (1994) propusieron un ataque similar al de MOV utilizando el pairingde Weil. Kanayama, Kobayashi, Saito y Uchiyama (2000) probaron que si l no es un
divisor de q – 1, los algoritmos MOV y Frey-Ruck son equivalentes, sin embargo, para
curvas con cardinal q – 1, el algoritmo de Frey-Ruck es más eficiente.
• Para las denominadas curvas anómalas, curvas definidas sobre un cuerpo primo Fp y
con cardinal p existe otro algoritmo de reducción debido a Semaev, Smart, Satoh and
Araki (ver la obra de Blake y otros (2000)).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 21 Pairings y sus aplicaciones
3. Criptografía basada en la identidad.
Ver también
La criptografía de clavepública se estudia en elmódulo “Elementos decriptografía” de estaasignatura.
Una de las motivaciones de Diffie y Hellman para su introducción de la crip-
tografía de clave pública fué el problema de la distribución de claves (siendo
otra motivación la firma digital). El aumento del número de usuarios de la
criptografía, al sumarse nuevos actores a los clásicos, gubernamentales y mili-
tares, hizo que potencialmente cada dos de tales usuarios A,B necesitasen en
algún momento comunicarse de forma segura, lo que utilizando un sistema
de clave privada, exigía una clave compartida KAB. La forma de hacer llegar
tal clave a ambos usuarios planteaba un problema de Gestión y Distribución de
Claves.
La criptografía de clave pública proporcionó un sistema eficiente de resolver
tal distribución de llaves, ya que el envío de KAB puede hacerse de forma
segura, a través de un canal inseguro, utilizando las llaves públicas de A y B. De
hecho, actualmente los sistemas de clave pública se utilizan principalmente
para la distribución de claves de comunicaciones de un sistema privado.
Ver también
La infraestructura de clavepública (PKI) se estudia en elmódulo “Elementos decriptografía” de estaasignatura.
Sin embargo, pronto se hizo patente un nuevo problema: una clave pública
que se nos hace llegar como perteneciente a A puede en realidad pertenecer
a un atacante C. Ello obliga a garantizar la autenticidad de las claves públi-
cas mediante un sistema de certificados y autoridades de certificación, lo que
genera una engorrosa infraestructura de clave pública (PKI).
Referencia bibliográfica
A. Shamir (1994).
“Identity-Based
Cryptosystems and
Signature Schemes.
Advances in Cryptology.
Proceedings of Crypto’84”.
Lecture Notes in ComputerScience, núm. 7, págs. 47-53.
Un paradigma alternativo fué propuesto en 1984 por A. Shamir (1994). La idea
era poder utilizar, de forma segura, claves públicas derivadas de la propia iden-
tidad del usuario (de ahí el nombre de criptografía basada en la identidad). El
propio Shamir construyó un esquema de distribución de claves basado en esta
idea, sin embargo, una solución satisfactoria a la idea de criptosistemas basa-
dos en la identidad solo se consiguió con la utilización de pairings, de hecho
el método se conoce también criptografía basada en pairing.
La criptografía basada en la identidad implica la existencia de una cierta auto-
ridad de confianza (AC) que selecciona los parámetros comunes a todos los par-
ticipantes y les proporciona unas ciertas claves privadas (claves que pueden ser
generadas solo cuando el usuario las necesita, lo que evita su almacenamiento
y reduce el riesgo de fugas de seguridad). En lo que sigue supondremos que tal
AC ha seleccionado y hecho públicos al menos una curva elíptica E sobre un
cuerpo finito Fq, un punto P ∈ E de orden primo l, una aplicación distorsión
φ y el correspondiente pairing modificado el. Asimismo la AC ha elegido una
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 22 Pairings y sus aplicaciones
cierta clave secreta propia s, 1 < s < l, que le servirá tanto para generar su
clave pública, como claves privadas de los participantes.
Lectura recomendada
Para más detalles sobre la
criptografía basada en la
identidad, ver la obra de
Blake y otros (2005) y la de
Luther (2008).
En lo que sigue expondremos algunos de los métodos básicos de esta cripto-
grafía para el intercambio de claves, criptosistemas y firma digital.
3.1. Intercambio de claves en criptografía basada en la identidad
Como se ha dicho, una de las motivaciones para la introducción de la clave
pública fué el problema de la distribución de claves. De hecho, Diffie y Hell-
man proponen un sistema bipartito para acordar una clave común entre dos
participantes A,B : fijado un grupo cíclico conveniente 〈g〉 (por ejemplo F∗q , el
grupo cíclico multiplicativo de un cuerpo finito), A y B eligen separadamen-
te números aleatorios nA,nB; 1 < nA,nB < l, calculan los elementos del grupo
gnA , gnB y se intercambian estos valores.
Tanto A como B pueden entonces calcular la clave común KAB = gnAnB . La
seguridad del método radica en que un atacante, interceptando gnA , gnB , para
poder conocer la clave se vería enfrentado con el siguiente problema.
.
Definición 3.1 (Problema computacional de Diffie-Hellman).
Conocidos gnA ,gnB calcular gnAnB .
La dificultad del problema computacional de Diffie-Hellman se considera equi-
valente a la del logaritmo discreto en el mismo grupo. Desde luego si un ad-
versario pudiese resolver el problema del logaritmo discreto obtendría nA,nB y
podría calcular gnAnB .
Un esquema semejante puede formularse en criptografía basada en la identi-
dad utilizando pairings y la identidad IdA de cada usuario A (el nombre o cual-
quier otra información personal, como el e-mail, una foto digital, o cualquier
secuencia binaria seleccionada por A). Además, en este tipo de criptografía,
existe la posibilidad de un protocolo de acuerdo tripartito de claves. Veamos
estos dos algoritmos.
3.1.1. Acuerdo bipartito de claves
Ver también
La función resumen seestudia en el módulo 3 deesta asignatura.
En este esquema se supone que la AC ha elegido y hecho público, además
de los datos referidos a la curva elíptica y el pairing, una función resumen h
que transforma cualquier secuencia binaria en un punto de 〈P〉. El esquema de
acuerdo bipartito de claves viene dado por el siguiente algoritmo.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 23 Pairings y sus aplicaciones
.
Algoritmo 3.2.
• Claves privadas de A y B: solicitud previa de A y B a la AC, ésta
1) calcula y envía a A el punto SA = sPA ∈ 〈P〉, donde PA = h(IdA).
2) calcula y envía a B el punto SB = sPB ∈ 〈P〉, donde PB = h(IdB).
• Acuerdo de clave: Los participantes A y B calculan
1) A, utilizando su clave privada SA y PB (que puede calcular, ya que
tanto la identidad IdB como la función resumen h son públicas),
obtiene
el(SA,PB) = el(sPA,PB) = el(PA,PB)s ∈ µl. (11)
2) B, utilizando su su clave privada SB y PA obtiene
el(PA,SB) = el(PA,sPB) = el(PA,PB)s ∈ µl. (12)
3) La clave común es KAB = el(SA,PB) = el(PA,SB).
Acuerdo bipartito de claves
SB
Alicia Bernardo
Parámetrospúblicos
Generador de claves
êl(SA,PB) = KABC êl(PA,SB) = KABC
PAPB
SA
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 24 Pairings y sus aplicaciones
3.1.2. Acuerdo tripartito de claves
Lectura recomendada
A. Joux (2000). “A one
round protocol for tripartite
Diffie-Hellmann”, LNCS(vol. 1838, págs. 385-394.
El siguiente protocolo, propuesto por A. Joux (2000), permite el acuerdo de
una clave común entre tres entidades A,B,C. Este acuerdo que, a diferencia
del anterior, no necesita claves secretas de los participantes, viene dado por el
siguiente algoritmo.
.
Algoritmo 3.3.
• Intercambio de mensajes: Los participantes A,B,C
1) A toma un número aleatorio nA; 1 < nA < l y calcula PA = nAP
2) B toma un número aleatorio nB; 1 < nB < l y calcula PB = nBP
3) C toma un número aleatorio nC; 1 < nC < l y calcula PC = nCP
4) A,B,C intercambian los valores de PA,PB,PC
• Acuerdo de claves: Los participantes calculan la clave común,
1) el(PB,PC)nA = el(P,P)nAnBnC = KABC
2) el(PA,PC)nB = el(P,P)nAnBnC = KABC
3) el(PA,PB)nC = el(P,P)nAnBnC = KABC
Resumimos el protocolo de Joux en el diagrama siguiente.
Acuerdo tripartito de Joux
KABC
PB
Alicia Bernardo
Parámetrospúblicos
PA
PCPA
PC
Carlos
PB
PA
nA
KABC
PB nB
KABC
PC nC
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 25 Pairings y sus aplicaciones
Si la seguridad del esquema clásico de Diffie-Hellman se basa en el problema
computacional de Diffie-Hellman, el acuerdo tripartito descansa en la supues-
ta intractabilidad de la siguiente variante.
.
Definición 3.4 (Problema Bilineal de Diffie-Hellman). Conoci-
dos nAP,nBP,nCP calcular el(P,P)nAnBnC .
Lectura recomendada
El ejemplo 3.1 puede
encontrarse en J. Hoffstein;
J. Pipher; J. Silverman
(2008). An Introduction toMathematical Cryptography.
Springer.
* Ver los ejercicios al final del
módulo.
Ejemplo 3.1.
Sea q = 1303 y la curva elíptica E : y2 = x3 + x sobre Fq. El punto P = (334,920) ∈ E tiene
orden primo l = 163. La aplicación distorsión φ : (x,y) → (–x,iy) donde i ∈ Fq2 es tal que
i2 = –1, proporciona el pairing modificado e163.*
Sean las elecciones de A,B,C:
1) nA = 71. A calcula y hace público PA = (1279,1171).
2) nB = 3. B calcula y hace público PB = (872,515)
3) nC = 126. C calcula y hace público PC = (196,815)
Los tres participantes pueden calcular ahora la clave común (para los cálculos tener en
cuenta que i2 = –1 y reducir todas las operaciones módulo 1303):
1) el(PB,PC)71 = (172 + 256i)71 = 768 + 662i
2) el(PA,PC)3 = (1227 + 206i)3 = 768 + 662i
3) el(PA,PB)126 = (282 + 173i)126 = 768 + 662i
3.2. Cifrado basado en la identidad
Lectura recomendada
Boneh y Franklin (2001).
“Identity based encryption
from the Weil pairing”.
LNCS (vol. 2139,
pág. 213-229).
Un sistema criptográfico efectivo, basado en la idea de Shamir de emplear la
identidad de un usuario como su clave pública fue propuesto por Boneh y
Franklin (2001). En realidad estos autores proponen dos versiones. Veamos en
primer lugar la versión que denominan básica.
.
Algoritmo 3.5 (Esquema básico de Boneh y Franklin).
• Parámetros: Los mensajes en claro M serán elementos del conjunto
M de secuencias binarias de una longitud prefijada n, es decir M =
{0,1}n. Además de los parámetros antes mencionados con carácter
general, la AC,
1) crea y envía a los participantes su propia clave pública PAC = sP,
2) elige una función resumen h1 que permite asignar a la identidad de
cada usuario A una clave pública PA = h1(IdA) ∈ 〈P〉,
3) elige una función resumen h2 : µl → M,
4) calcula la clave privada de cada participante SA = sPA.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 26 Pairings y sus aplicaciones
.
• Cifrado: Si B desea enviar a A un mensaje M ∈ M.
1) calcula PA = h1(IdA) (tanto h1 como IdA son conocidos),
2) toma aleatoriamente r, 1 < r < l y calcula:
C1 = rP, C2 = M ⊕ h2(el(PA,PAC)r) (13)
(dondeL
indica la suma bit a bit o XOR de ambas secuencias bina-
rias).
3) B envía a A el par C = (C1,C2).
• Descifrado: Cuando A recibe el mensaje cifrado C = (C1,C2),
1) calcula
el(SA,C1) = el(sPA,rP) = el(PA,P)rs = el(PA,sP)r = el(PA,PAC)r, (14)
2) calcula
C2 ⊕ h2(el(SA,C1)) = M ⊕ h2(el(PA,PAC))r ⊕ h2(el(PA,PAC))r = M. (15)
Observación
Cabe señalar la similitudformal entre la versión básicadel criptosistema deBoneh-Franklin y elcriptosistema ElGamal: enambos el cifrado viene dadopor un par cuya primeracomponente es producto opotencia del generador y unnúmero aleatorio, mientrasque la segunda componenteincluye el mensaje en clarocomo sumando o factor.
El esquema siguiente ilustra el esquema básico de Boneh y Franklin.
Cifrado básico de Boneh-Franklin
M
PAC
Alicia Bernardo
Parámetrospúblicos
Generador de claves
C2, êl(SA,C1)
PA
C = (C1,C2)
SA
M,r C2
r C1
AC
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 27 Pairings y sus aplicaciones
Boneh y Franklin consideran que su esquema básico no reúne las garantías
suficientes de seguridad, por lo que proponen el siguiente esquema completo.
.
Algoritmo 3.6.
• Parámetros: Además de los parámetros del anterior esquema básico,
se consideran dos funciones resumen adicionales:
1) h3 : {0,1}2n → {r; 1 < r < l}
2) h4 : {0,1}n → {0,1}n
• Cifrado: Si B desea enviar a A un mensaje M ∈ M,
1) calcula PA = h1(IdA),
2) toma S ∈ {0,1}n aleatoriamente,
3) calcula r = h3(S,M),
4) calcula C = (C1,C2,C3) donde,
C1 = rP, C2 = S ⊕ h2(el(PA,PAC)r), C3 = M ⊕ h4(S). (16)
• Descifrado: Cuando A recibe el mensaje cifrado C = (C1,C2,C3),
1) calcula S′ = C2 ⊕ h2(el(SA,C1)),
2) calcula M′ = C3 ⊕ h4(S′),
3) calcula r′ = h3(S′,M′).
4) Si C1 = r′P, A acepta como válido M′ (= M). Caso contrario rechaza
el mensaje recibido.
Lectura recomendada
Para un análisis de la
seguridad del modelo
completo de Boneh y
Franklin, ver la obra de
Blake y otros (2005) y la de
Luther (2008).
La seguridad del modelo completo de Boneh y Franklin se considera equipa-
rable a la del problema bilineal de Diffie-Hellman.
3.3. Esquemas de firma basados en la identidad
Ver también
La firma digital de unmensaje se estudia en elmódulo “Elementos deCriptografía” de estaasignatura.
La infraestructura basada en la identidad del esquema de cifrado de Boneh-
Franklin puede adaptarse también al proceso de firma digital. Recordemos
que la firma digital de un mensaje M es el análogo electrónico de la firma
ordinaria (con la diferencia de que la firma electrónica depende del mensaje
concreto M), en cuanto permite demostrar, incluso con valor legal, la identi-
dad de quien ha producido la firma de M, siendo el intento de falsificar tal
firma por parte de un adversario computacionalmente imposible.
Un esquema de firma digital comporta siempre dos algoritmos.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 28 Pairings y sus aplicaciones
.
Definición 3.7.
1) Algoritmo de firma: Implica un cómputo en el que interviene el
mensaje M y la clave privada del firmante (la cual, en el caso de la
criptografía de clave pública clásica, habrá sido elegida por él mismo
y en el caso de la criptografía basada en la identidad le debe ser pro-
porcionada por la AC) y una cierta función resumen. Este computo
produce un resultado F(M).
2) Algoritmo de verificación: Recibido como input el mensaje M y
su firma F(M), tiene como output uno de los dos valores siguientes:
firma válida ó firma no válida
Observemos las siguientes características importantes:
1) Ciertos tipos de firmas, Firmas con recuperación del mensaje, recuperan M
durante el proceso de verificación. Sin embargo lo usual es que las firmas re-
quieran el mensaje original (quizás previamente cifrado si se desea preservar
su secreto) para la verificación: Firmas con Apéndice.
2) En las firmas con apéndice, el empleo de función resumen permite que el
texto a firmar sea pequeño. Además, juega un papel crucial en la seguridad de
la firma. (Hash-and-Sign Paradigm).
3) Dos firmas del mismo mensaje pueden producir el mismo resultado: firmas
deterministas, o bien,
Ver también
Los diferentes tipos de firmasse estudian en el módulo“Elementos de Criptografía”de esta asignatura.
4) La firma puede depender de un valor aleatorio: firmas aleatorias, (por ejem-
plo la firma ElGamal, el Digital Signature Standard, etc.).
El siguiente algoritmo esquematiza un ejemplo de firma digital (aleatoria, con
apéndice) similar a la firma de ELGamal.
.
Algoritmo 3.8.
• Parámetros: Los mensajes M ∈ M serán secuencias binarias de lon-
gitud arbitraria. Como siempre la AC habrá seleccionado una curva
elíptica E, el punto base P ∈ E, de orden primo l, una aplicación
distorsión φ y el correspondiente pairing modificado el, así como su
propia clave secreta s, 1 < s < l. Además la AC,
1) crea y envía a los participantes su propia clave pública PAC = sP,
2) elige una función resumen h1 que permite asignar a la identidad de
cada usuario A una clave pública PA = h1(IdA) ∈ 〈P〉,
3) elige una función resumen h2 : M× 〈P〉 → {r; 1 < r < l},
4) calcula la clave privada de cada participante SA = sPA.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 29 Pairings y sus aplicaciones
.
• Algoritmo de Firma: si A desea firmar el mensaje M entonces
1) elige aleatoriamente r; 1 < r < l y
2) calcula:
F1 = rPA; h = h2(M,F1); F2 = (r + h)SA. (17)
3) El par F = (F1,F2) es la firma de M.
• Algoritmo de Verificación: cuando el verificador recibe el par (M,F).
1) Calcula si se verifica la igualdad
el(PAC,F1 + hPA) = el(P,F2) (18)
2) En caso afirmativo acepta la firma como válida (un simple cálculo
muestra que, si el proceso se ha realizado correctamente, debe veri-
ficarse tal igualdad).
Resumimos el esquema de firma en el diagrama siguiente.
Firma basada en la identidad
PAC
Alicia
Bernardo
Verificador
Parámetrospúblicos
Generador de claves
PA
SA
F2
AC
PB
(M,F)r F1
F1,M,r F2
F = (F1, F2)
MF1
êl[] = êl[]
?
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 30 Pairings y sus aplicaciones
Modelos de seguridad
La seguridad de un esquemacriptográfico se demuestra enel contexto de un modelo de
seguridad. En el modeloestándar se trata de probarque romper el sistemaimplica resolver un problemamatemáticocomputacionalmenteintratable. El modelo RandomOracle demuestra laseguridad asumiendo que lasfunciones resumen utilizadasson realmente funcionesaleatorias.
Al igual que la firma ElGamal, puede probarse la seguridad existencial (un
atacante no es capaz de crear una firma que sea aceptable como válida para
ningún mensaje) de la firma descrita, en el modelo de seguridad denominado
Random Oracle Model.
Lectura recomendada
Boneh, Lynn y Shacham(2001). “Short signatures
from the Weil pairings”.
Asiacrypt 2001. LNCS (vol.
2248, págs. 514-532)
El siguiente esquema de firma de Boneh, Lynn y Shacham (2001), es especial-
mente eficiente y permite claves muy cortas.
.
Algoritmo 3.9.
• Parámetros: Los mensajes M ∈ M son secuencias binarias de lon-
gitud arbitraria. Como siempre, la AC habrá seleccionado una curva
elíptica E, el punto base P ∈ E, de orden primo l, una aplicación
distorsión φ y el correspondiente pairing modificado el. Además,
1) una función resumen h : M → 〈P〉,
2) una clave privada de cada participante nA; 1 < nA < l y pública
PA = nAP.
• Algoritmo de Firma: Si A desea firmar el mensaje M calcula F(M) =
nAh(M).
• Algoritmo de Verificación: Cuando el verificador recibe el par
(M,F), acepta la firma si, y solo si,
el(F(M),P) = el(h(M),PA).
Lectura recomendada
M. Barreto y otros (2002).
“Efficient algorithms for
pairing-based
cryptosystems”. CRYPTO
2002. LNCS (vol. 2442,
págs. 354-368)
En este esquema el proceso de firma solo requiere una función resumen y una
multiplicación escalar, mientras que la verificación solo necesita calcular dos
pairings. Por otra parte, es posible el uso de claves de longitud pequeña. Así,
Barreto y otros (2002) han realizado una implementación sobre el cuerpo F397
con longitud binaria log2(397) = 97log23 ≈ 154 bits, permitiendo el mismo
nivel de seguridad que el Digital Signature Algorithm, que utiliza claves de
320 bits.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 31 Pairings y sus aplicaciones
Ejercicios de autoevaluación
1. Sea Fq cuerpo finito con q = pn elementos y sea Tr : Fq → Fp la aplicación traza. Sea la
aplicación de dos variables: T : Fq × Fq → Fp, definida por: T(x,y) = Tr(xy).
a) T es una forma bilineal no degenerada (en el espacio vectorial Fq, de dimensión n sobre
el cuerpo Fp).
b) Supongamos que n no es múltiplo de la característica p. Probar que T es no degenerada.
Traza
En los ejercicios del módulo“Cuerpos finitos” se introdujola noción de aplicación traza,la cual asigna a un elementox ∈ Fq el elemento de Fp
traza de la multiplicación porx en el espacio vectorial Fq
sobre Fp.
2. Sea V un espacio vectorial de dimensión n sobre un cuerpo conmutativo K y B = {v1,v2,
. . . ,vn} una base de V. Si f : V×V → K es una forma bilineal simétrica, se denomina DisB(f ),
discriminante de f en la base B, al determinante de la matriz, n × n: (f (vi,vj)). Probar:
a) Si el discriminante de f es nulo (respectivamente no-nulo) en la base B, es nulo (respecti-
vamente no nulo) en otra base B′
b) La aplicación f es no degenerada si, y solamente si, el discriminante en cualquier base es
no nulo.
3. Sea la curva elíptica E : y2 = x3 + x definida sobre el cuerpo finito F7.
a) Sea la recta r : y = x. Determinar el divisor principal div(r).
b) Sean los dos divisores: D1 = 2(1,4) + (–1)(5,5); D2 = 1(1,3) + 2(5,5). Utilizando el pun-
to anterior encontrar divisores D′
1, D′
2 equivalentes a D1 y D2 y que tengan soportes
disjuntos.
4. Sea la curva elíptica E : y2 = x3 +1 definida sobre el cuerpo finito F11 y sea la recta r : x = 0.
Determinar el divisor div(r).
5. Sea φ un endomorfismo de la curva elíptica E, P ∈ E un punto de orden primo l y el el
pairing de Weil. Probar que el(P,φ(P)) 6= 1 si y solamente si ambos puntos son linealmente
independientes.
6. Sea la curva elíptica E : y2 = x3 + 7x definida sobre el cuerpo F13 y los puntos de 3-torsión
de E: P = (3,3), R = (3,10). En el ejemplo 2.1 se ha mostrado que R = 2P. Probar este resultado
sin utilizar el algoritmo de Miller.
Ver también
Las curvas elípticas seestudian en el módulo“Criptografía con curvaselípticas” de esta asignatura.
7. Sea p = 101 y la curva elíptica sobre F101, E : y2 = x3 + 1, con cardinal 102. El punto
P = (87,61) pertenece a la curva y tiene orden 17 (lo que puede comprobarse utilizando las
fórmulas de adición de puntos de una curva elíptica).
a) Calcular el grado de inmersión de e17.
b) Sea la aplicación φ : E → E; φ(x,y) = (x,ζy) donde ζ3 = 1. El elemento ζ no está en el
cuerpo F101, sino en su extensión de grado 2, F1012 , (en efecto ζ es raíz del polinomio
x2 + x + 1, irreducible sobre F101). Probar que φ es una aplicación distorsión para P.
8. Sea p = 547 y la curva elíptica sobre F547, E : y2 = x3 + x, con cardinal 548. El punto
P = (67,481) ∈ E tiene orden l = 137.
a) Calcular el grado de inmersión de e137.
b) Sea la aplicación φ : E → E; φ(x,y) = (–x,iy) donde i2 = –1, elemento en F5472 (raíz
del polinomio x2 + 1, irreducible sobre F547). Probar que φ es una aplicación distorsión
para P.
9. Sean los mismos datos del ejercicio anterior y sea e137 el pairing modificado correspon-
diente a P y φ. Tres participantes A,B,C desean acordar una clave común KABC mediante el
protocolo de acuerdo tripartito de Joux.
a) Los participantes eligen y guardan secretos los valores: nA = 4, nB = 10, nC = 5. Calcular
los puntos PA = 4P, PB = 10P, PC = 5P
b) Conocidos los puntos calculados en el apartado anterior y supuesto que nos dan como
datos los valores,
i) e137(PB,PC) = 151 + 135i.
ii) e137(PA,PC) = 74 + 514i.
iii) e137(PA,PB) = 11 + 39i.
Calcular la clave común del protocolo dado en el algoritmo 3.3.
10. Escribir un script en SAGE que permita calcular la clave común KABC del algoritmo de
Joux, sabiendo la clave privada nA de A y las claves públicas PB y PC de B y C, respectivamente.
Los datos públicos, o sea el cuerpo finito, la curva elíptica, el punto P y la distorsión que
permite definir el pairing de Weil modificado son los mismos que en el ejercicio 1-8.
Calcular la clave acordada entre los tres participantes en el caso en que nA = 7, PB = (97,151)
y PC = (497,498).
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 32 Pairings y sus aplicaciones
Soluciones
1) a) T es bilineal por ser lineal en cada variable. La simetría se deduce de la conmutatividad
del producto en Fq.
b) Sea x 6= 0 un elemento de Fq. Veamos que existe un y tal que T(x,y) 6= 0. Basta tomar
y = x–1: en efecto, T(x,x–1) = Tr(xx–1) = Tr(1) = n 6= 0 (pues n no es múltiplo de p).
2) a) Sean las ecuaciones del cambio de base v′i =P
j cijvj, o matricialmente B′ = CB donde
C es una matriz inversible y por tanto con determinante no nulo. Sustituyendo estas
ecuaciones en DisB′ (f ) y utilizando la propiedad de bilinealidad, se obtiene DisB′ (f ) =
|C|2DisB(f ) de donde el resultado.
b) Supongamos nulo el discriminante (en cualquier base B). Existirá pues una combinación
lineal no trivial λ1F1 + · · · + λnFn = 0 entre las filas Fi de la matriz (f (vi,vj)), luego para
todo j se tiene una relación: λ1f (v1,vj) + · · · + λnf (vn,vj) = 0. Denotando w = λ1v1 + · · · +
λnvn (w 6= 0, pues los λi no son todos nulos) y utilizando las propiedades de bilinealidad
de f se obtiene f (w,vj) = 0. Como ello es cierto para todos los vectores vj de la base
también f (w,v) = 0, ∀v ∈ V, luego w es un elemento del núcleo de f (por la derecha y
por la izquierda), luego f es degenerada.
El recíproco es análogo. Si f es degenerada existirá un vector no nulo w ∈ V tal que
f (w,v) = 0, ∀v ∈ V. Si w = λ1v1+· · ·λnvn, se deduce entonces una relación de dependencia
entre las filas Fi con coeficientes λi.
3) a) Para determinar el divisor de r hay que encontrar los ceros y los polos de la recta en los
puntos de la curva elíptica, contados con sus multiplicidades.
Para determinar los ceros hagamos la intersección de E y r: sustituyendo y = x en la
ecuación de E se obtiene la ecuación x3 – x2 + x = 0. Una raíz de esta ecuación de tercer
grado es x = 0. Resolviendo (en el cuerpo F7) la ecuación x2 – x + 1 se obtienen las otras
dos raíces: x = 5; x = 3. Los ceros son pues los puntos (0,0), (3,3), (5,5) los cuales tienen
multiplicidad 1 (puesto que son distintos).
Como en el ejemplo 1.5 se muestra que existe un polo de orden 3 en el punto del infinito
O = (0 : 1 : 0).
Por tanto,
div(r) = 1(0,0) + 1(3,3) + 1(5,5) – 3(O)
b) Los divisores D1,D2 tienen soportes con el punto común (5,5). Si se observa que este
punto aparece también en el soporte de div(r) resulta razonable tomar,
D′
1 = D1 + div(r) = 1(0,0) + 2(1,4) + 1(3,3) – 3(O).
D′
1 ya tiene soporte disjunto con D2, por tanto basta tomar D′
2 = D2.
4) Para encontrar los ceros, determinemos los puntos de corte de la curva elíptica y de la
recta. Haciendo x = 0 se obtienen los dos puntos (0,1) y (0,10) con multiplicidad 1. El tercer
punto de corte de r (el eje y) con la curva elíptica es el punto del infinito. Pero en este punto
la curva no tiene un cero sino un polo. Puesto que tenemos dos ceros, este polo debería ser
de orden 2. Sin embargo, tanto en el ejemplo 1.5 como en el ejercicio anterior dicho orden
era 3. ¿A qué obedece la diferencia?
Escribamos la ecuación de E en coordenadas proyectivas: y2z = x3 + z3 Pero ahora el corte
con z = 0 proporciona y2z = z3 y simplificando y2 = z3. Haciendo z = 0, se tiene la función
cuadrática y2 de donde la multiplicidad 2.
Por tanto: div(r) = 1(0,1) + 1(0,10) – (2)O.
5) Si los puntos fuesen dependientes, es decir, si φ(P) ∈ 〈P〉 se tendría φ(P) = mP, para algún
m luego el(P,φ(P)) = el(P,P)m = 1.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 33 Pairings y sus aplicaciones
Supongamos ambos puntos linealmente independientes, en particular debe ser φ(P) 6= O. En
virtud del Lema 1.10 el grupo de l-torsión E[l](K) es producto de dos grupos cíclicos de orden
l. Por hipótesis uno de ellos es 〈P〉, por tanto φ(P), por ser independiente de P debe estar en
el segundo grupo cíclico y por ser este de orden primo, φ(P) es un generador.
En definitiva, el par {P,φ(P)} es una base de E[l](K). Por tanto debe tenerse el(P,φ(P)) 6= 1,
pues en caso contrario el sería trivial en todo E[l](K), en contra de la no degeneración de el,
ver definición 1.11.
Ver también
Las fórmulas de adición depuntos en E se han dado enel módulo “Criptografía concurvas elípticas” de estaasignatura.
6) Dado que se sabe que R ∈ 〈P〉 y que 〈P〉 tiene cardinal 3, se tendrá que 〈P〉 = {P, 2P, 3P =
O}. Como R 6= P, O debe ser R = 2P, lo que también puede comprobarse utilizando las
fórmulas de adición de puntos en E.
Sin embargo, en las aplicaciones criptográficas l es enorme y el razonamiento anterior no es
aplicable.
7) a) El grado de inmersión es el menor k tal que 17 divide a 101k – 1. Fácilmente se com-
prueba que k = 2, lo que también se habría podido deducir del hecho de ser E curva
supersingular de tipo I (ver Proposición 1.21).
b) En primer lugar, es necesario mostrar que φ es realmente una aplicación de E en E, es
decir, que si (x,y) es un punto de la curva también lo es (x,ζy). Teniendo en cuenta la
ecuación de la curva y que ζ3 = 1, la comprobación es trivial. Es también inmediata la
linealidad de φ, por tanto φ es un endomorfismo de la curva.
Puesto que φ(P) no tiene coeficientes en F103, no puede ser un múltiplo de P es decir P y
φ(P) son linealmente independientes y por tanto (ver un problema anterior) e17(P,φ(P) 6=1, es decir φ es una aplicación distorsión.
8) De forma análoga al problema anterior se obtiene,
a) El grado de inmersión es 2 (E curva supersingular de tipo II, ver 1.4).
b) Si (x,y) ∈ E se comprueba que (–x,iy) lo es también. Asimismo, se comprueba la linealidad
de φ, por tanto φ es un endomorfismo de la curva.
El mismo razonamiento del problema anterior es aplicable para comprobar que φ es una
aplicación distorsión.
9) a) Utilizando las fórmulas de adición y doblado de puntos en una curva elíptica, se obtie-
ne:
i) PA = 4(67,481) = (391,472)
ii) PB = 10(67,481) = (157,5)
iii) PC = 5(67,481) = (395,379)
b) Aplicando el algoritmo 3.3 y realizando las operaciones correspondientes en el cuerpo
F5472 (es decir, reduciendo los cálculos módulo 547 y teniendo en cuenta que i2 = –1),
se obtiene:
i) A calcula (151 + 135i)4 = 137 + 289i.
ii) B calcula (74 + 514i)10 = 137 + 289i.
iii) C calcula (11 + 39i)5 = 137 + 289i.
10) La descripción del script la haremos directamente sobre cada uno de los comandos que
utilizamos.
sage: F=GF(547); E=EllipticCurve(F,[0,0,0,1,0]);E.order()# Construimos la curva elíptica que nos dan y comprobamos el orden de la misma.
sage: FX.<x>=F[]#Construimos el anillo de polinomios a coeficientes en F
sage: F2.<alpha> = GF(547^2, name=’alpha’, modulus=x^2+1)
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 34 Pairings y sus aplicaciones
#Construimos el cuerpo extensión cuadrática de F y llamamos alpha a su generador
sage: Ex=E.change_ring(F2)# Construimos la curva elíptica sobre el nuevo cuerpo finito
En este punto, definimos el pairing de Weil modificado. La definición la damos en función
del pairing de Weil, que ya está incluido en SAGE.
sage: def weil_pairing_modificat(P,Q,l):return P.weil_pairing(Ex(-Q[0],alpha * Q[1]),l)
Ahora solo nos queda entrar los datos del problema concreto que queremos resolver y en-
contrar el resultado:
sage: P=E(67,481)# Construimos el punto P y comprobamos su orden137
sage: Px=Ex(P)#El punto P sobre la curva elíptica calculada en el nuevo cuerpo extendido.
sage: PB = Ex(97,151), PC = Ex(497,498)# los puntos que nos da el enunciado
sage: nA = 47;# la clave privada de A
sage: W = weil_pairing_modificat(PB,PC,137); KABC = W ** nA; KABC54 + 198 alpha
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
CC-BY-NC-ND • PID_00200950 35 Pairings y sus aplicaciones
Bibliografía
Blake, I.; Seroussi, G.; Smart, N. (2000). “Elliptic Curves in Cryptography”. LondonMathematical Society Lecture Note Series (núm. 265). Cambridge: Cambridge U. Press.
Blake, I.; Seroussi, G.; Smart, N. (2005). “Advances in Elliptic Curves in Cryptography”.
London Mathematical Society Lecture Note Series (núm. 317). Cambridge: Cambridge U. Press.
Hoffstein, J.; Pipher, J.; Silverman, J. (2008). “An Introduction to Mathematical Cryp-
tography.” Undergraduate Texts in Mathematics. Nueva York: Springer.
Martin, L. (2008). “Introduction to Identity-based Encryption”. Artech House Inc. Massa-
chusetts: Norwood.
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf
Top Related