Pairings y sus aplicaciones Llorenç Huguet Rotger Josep Rifà Coma Juan Gabriel Tena Ayuso PID_00200950 Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéis el autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), no hagáis un uso comercial y no hagáis una obra derivada. La licencia completa se puede consultar en http://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es 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 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 1.4. CC-BY-NC-ND • PID_00200950 5 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 contenido 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 embargo, 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 exclusivamente 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 criptografía basada en la identidad. El ataque basado en pairings tiene como consecuencia que ciertas curvas elípticas, las denominadas supersingulares, no se consideren actualmente seguras para implementar criptosistemas y protocolos criptográficos basados en el logaritmo discreto elíptico, pero curiosamente tales curvas supersingulares son idóneas para la criptografía basada en la Identidad. Describiremos en lo que sigue los pairings y los dos tipos de aplicaciones criptográficas mencionadas. Pairings y sus aplicaciones CC-BY-NC-ND • PID_00200950 6 Objetivos En los materiales didácticos de este módulo el estudiante encontrará los contenidos 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 enfocadas al cálculo del logaritmo discreto elíptico y las enfocadas a la criptografí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. Pairings y sus aplicaciones CC-BY-NC-ND • PID_00200950 7 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. Comencemos 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. Pairings y sus aplicaciones CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 8 . Formas cuadráticas Lema 1.3. Si f : V × V → K es una forma bilineal simétrica la aplicación q : V → K, q(a) = f (a,a) se denomina forma cuadrática. La teoría de las formas cuadráticas, estrechamente relacionada con la de formas bilineales simétricas, es una rama importante del Álgebra, y sin duda es familiar al lector a propósito del estudio de las cónicas y cuádricas. 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 . 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 Observación La forma cuadrática asociada a la forma bilineal simétrica f ((x,y),(x′ ,y′ )) = axx′ + b(xy′ + x′ y) + cyy′ es la q((x,y)) = ax2 + 2bxy + cy2 . CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 9 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 antisimétrica se denomina no degenerada si verifica las condiciones equivalentes 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′ ) CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 10 Las definiciones y propiedades antes enunciadas (simétrica, antisimétrica, alternada, 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 contexto 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, veremos que puede considerarse contenido en un cuerpo Fqk con qk elementos, para un cierto valor k. Tomaremos como modelo el pairing de Weil, el primer tipo de pairing propuesto*. 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] * Ver, por ejemplo, A. Menezes (1993). Elliptic Curves Public Key Cryptography. Kluwer. 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 notació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 . 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. Es evidente que el conjunto E[l] es un subgrupo del grupo E(K) de puntos de En las aplicaciones criptográficas basadas en el logaritmo discreto elíptico, se trabaja en el grupo cíclico generado por un punto P ∈ E. Si l es el orden de P (usualmente primo) es entonces el pairing el el que se considera 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). Referencia bibliográfica J. H. Silverman (1986). The Arithmetic of Elliptic Curves. Springer-Verlag. . Lema 1.10. E[l](K̄) ≃ Z/lZ × Z/lZ (4) CC-BY-NC-ND • PID_00200950 11 Sin embargo, estos l2 puntos de E[l](K̄) no están todos necesariamente definidos 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 G1 (3,3) (3,10) G2 G3 O (4,1) (4,12) (9,5) (9,8) (10,2) (10,11) G4 Pairings y sus aplicaciones CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 12 . 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 lsima de la unidad, luego el es suprayectiva. 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 hPi 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 engendrado por un punto P ∈ E, si el (P,P) = 1, para todo par de puntos R,S ∈ hPi 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 solución para solventar este problema es substituir el por un pairing modificado êl , 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 endomorfismo φ 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 primo, 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. Raíces primitivas Se denomina raíz primitiva de orden n de la unidad aquella cuyo orden es exactamente n. Por ejemplo, en el cuerpo C de los complejos el elemento e2πi/5 es una raíz de orden 15 de la unidad (pues (e2πi/5 )15 = (e2πi )3 = 13 = 1), pero no es una raíz primitiva de orden 15, ya que su orden es 5 (y por tanto, en realidad es una raíz primitiva de orden 5 de la unidad). CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 13 3) Puede probarse que E posee una tal aplicación distorsión si y solamente si es supersingular (Blake y otros, 2005). Ello hace que las curvas supersingulares sean especialmente útiles en criptografía basada en pairings. . Definición 1.13. Sea φ una aplicación distorsión. Se define ê(R,S) = e(R,φ (S)). La aplicación ê se denomina pairing modificado. Nótese que ahora tenemos ê(P,P) 6= 1 y, por tanto, para R,S ∈ hPi, R,S 6= O también tenemos, por bilinealidad, ê(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áficas 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 Comenzamos introduciendo (sin demostración) los conceptos y resultados Lectura recomendada necesarios para la definición de el (P,Q). Ver J. H. Silverman (1986). The Arithmetic of Elliptic Curves. Springer-Verlag, para detalles y demostraciones. . 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 debe confundirse el punto P ∈ E con el divisor (P) = 1(P). 2) Dados dos divisores D = D′ = P ′ P∈E (nP +nP )(P) P P∈E nP (P), D′ = P P∈E n′P (P) , la adición: D + 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}. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 14 . Observación 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 principales. 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 = Q P P∈E nP (P) un divisor. Se define f (D) = nP f (P) . . Proposición 1.16. 1) Un divisor principal tiene grado cero. Como consecuencia, dos divisores 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(f1 f2 f3 ) (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 P nP (P) es principal si y solamente si P nP = 0 y nP P = 0 (en la última expresión la suma indica la suma de puntos en la curva elíptica). Aunque la grafía es parecida conviene no confundir el punto neutro de la curva elíptica, O (el único punto del infinito de la curva) con 0 elemento neutro del cuerpo K sobre el que está definida la curva. Tampoco hay que confundirlo con el elemento neutro (O) del grupo de divisores. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 15 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 (contados 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: y2 z = 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) Ver también Las fórmulas de adición se estudian en el módulo “Criptografía con curvas elípticas” de esta asignatura. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 16 A partir de esta definición se deducen las propiedades del pairing enunciadas en 1.11*. * Para la demostración, podéis ver J. H. Silverman (1986). The Arithmetic of Elliptic Curves. Springer-Verlag. 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) El cálculo del pairing se reduce pues a evaluar ciertas funciones en ciertos divisores. El problema es el computo de tales funciones fA ,fB . Tal cómputo puede 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 (Pi′ ) – (O) + div(fi ), del divisor ni ((Pi ) – (O)) como sigue: i) Sean bd–1 bd–2 · · · b1 b0 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 ecuación 6 proporciona para i = bd–2 , . . . ,0: a) fi := fi2 gRR ; R := 2R b) Si bi = 1, fi := fi gRPi , 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 . * Ver A. Menezes (1993). Elliptic Curves Public Key Cryptography. Kluwer CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 17 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) (3x + y)(x + y + 10) (10x + y)(12x + y + 3) (10) fB = El ejemplo 1.6 se debe a A. Menezes, (1993). Elliptic Curves Public Key Cryptography, Kluwer. 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 . Demostración: El grupo (Fqk )∗ es cíclico, con cardinal qk – 1. Tal grupo contendrá 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)∗ , subgrupo de elementos invertibles de Z/lZ. El orden k de q en tal grupo será una solución del problema. . Definición 1.20. El mínimo valor k verificando el lema 1.19 se deno- Observación El cardinal del grupo (Z/lZ)∗ , igual al número de elementos no nulos en Z/lZ coprimos con l, se denomina la función de Euler ϕ (l). En particular si l es primo tenemos que ϕ (l) = l – 1. El orden multiplicativo k del cardinal q del cuerpo Fq es siempre un divisor de ϕ (l). mina grado de inmersión. Ver también 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 La función de Euler se estudia en el módulo “Cuerpos finitos” de esta asignatura. 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), hPi ⊆ E, cuyo orden l será pues un divisor de ♯E. Ver también El teorema de Hasse se estudia en el módulo “Criptografía con curvas elípticas”. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 18 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, t 2 = q, y E(Fq ) cíclico. • Tipo IV) p = 2 ,m impar, t 2 = 2q y E(Fq ) cíclico. • • • Tipo V) Tipo VI) p = 3 ,m impar, t 2 = 3q y E(Fq ) cíclico. √ √ m par, t 2 = 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 p ± 2q p ± 3q √ ±2 q (q + 1)/2 √ q+1∓ q p q + 1 ∓ 2q p q + 1 ∓ 3q √ q∓1 2 III IV V VI 3 4 6 1 * Ver A. Menezes (1993). Elliptic Curves Public Key Cryptography. Kluwer. CC-BY-NC-ND • PID_00200950 19 Pairings y sus aplicaciones 2. Ataques basados en pairings . Los pairings permiten un tipo de ataque al logaritmo discreto elíptico, los denominados algoritmos de reducción. Así Menezes, Okamoto y Vanstone (1993) muestran cómo trasladar, utilizando el pairing de Weil, dicho logaritmo, definido sobre una curva elíptica sobre el cuerpo finito Fq al logaritmo discreto sobre Fqk , con k el grado de inmersión. Referencia bibliográfica Menezes, Okamoto y Vanstone (1993). “Reducing elliptic curves logarithms to a finite field”. IEEE Trans. Info. Theory (vol. 39, pág. 1639-1646). Supongamos hPi ⊆ 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 ∈ hPi, 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. Ejemplo 2.1. Para la curva del Ejemplo 1.6 sobre Fq = 13 sea el punto R = (3,10) ∈ hPi. 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. La utilidad del algoritmo MOV depende fuertemente del valor de k: recordemos 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 menores. 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 curva elíptica sobre el cuerpo Fq a un problema similar en Fqk . La longitud binaria Lectura recomendada Ver los detalles del ejemplo 2.1 en A. Menezes, Elliptic Curves Public Key Cryptography, Kluwer, 1993 y también uno de los ejercicios al final del módulo. Ver también El logaritmo discreto clásico sobre el grupo multiplicativo se estudia en el módulo “Elementos de criptografía”. 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 embargo, 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 criptosistemas y protocolos basados en el logaritmo discreto elíptico. Dos observaciones antes de acabar: • • Frey y Ruck (1994) propusieron un ataque similar al de MOV utilizando el pairing de 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)). Lectura recomendada Frey y Ruck (1994). “A remark concerning m-divisibility and the discrete logarithm problem in the divisor class group of curves”. Mathematics of Computation (vol. 62, pág. 865-874) . CC-BY-NC-ND • PID_00200950 21 Pairings y sus aplicaciones 3. Criptografía basada en la identidad . Una de las motivaciones de Diffie y Hellman para su introducción de la criptografí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 militares, hizo que potencialmente cada dos de tales usuarios A,B necesitasen en Ver también La criptografía de clave pública se estudia en el módulo “Elementos de criptografía” de esta asignatura. 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. 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úblicas mediante un sistema de certificados y autoridades de certificación, lo que genera una engorrosa infraestructura de clave pública (PKI). Ver también La infraestructura de clave pública (PKI) se estudia en el módulo “Elementos de criptografía” de esta asignatura. 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 identidad 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 basados 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 autoridad de confianza (AC) que selecciona los parámetros comunes a todos los participantes 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 êl . Asimismo la AC ha elegido una Referencia bibliográfica A. Shamir (1994). “Identity-Based Cryptosystems and Signature Schemes. Advances in Cryptology. Proceedings of Crypto’84”. Lecture Notes in Computer Science, núm. 7, págs. 47-53. 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. En lo que sigue expondremos algunos de los métodos básicos de esta criptografía para el intercambio de claves, criptosistemas y firma digital. 3.1. Intercambio de claves en criptografía basada en la identidad 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). 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 Hellman proponen un sistema bipartito para acordar una clave común entre dos participantes A,B : fijado un grupo cíclico conveniente hg i (por ejemplo F∗q , el grupo cíclico multiplicativo de un cuerpo finito), A y B eligen separadamente números aleatorios nA ,nB ; 1 < nA ,nB < l, calculan los elementos del grupo g nA , g nB y se intercambian estos valores. Tanto A como B pueden entonces calcular la clave común KAB = g nA nB . La seguridad del método radica en que un atacante, interceptando g nA , g nB , para poder conocer la clave se vería enfrentado con el siguiente problema. . Definición 3.1 (Problema computacional de Diffie-Hellman). Conocidos g nA ,g nB calcular g nA nB . La dificultad del problema computacional de Diffie-Hellman se considera equivalente a la del logaritmo discreto en el mismo grupo. Desde luego si un adversario pudiese resolver el problema del logaritmo discreto obtendría nA ,nB y podría calcular g nA nB . Un esquema semejante puede formularse en criptografía basada en la identidad utilizando pairings y la identidad IdA de cada usuario A (el nombre o cualquier 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 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 hPi. El esquema de acuerdo bipartito de claves viene dado por el siguiente algoritmo. Ver también La función resumen se estudia en el módulo 3 de esta asignatura. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 23 . 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 ∈ hPi, donde PA = h(IdA ). 2) calcula y envía a B el punto SB = sPB ∈ hPi, 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 êl (SA ,PB ) = êl (sPA ,PB ) = êl (PA ,PB )s ∈ µl . (11) 2) B, utilizando su su clave privada SB y PA obtiene êl (PA ,SB ) = êl (PA ,sPB ) = êl (PA ,PB )s ∈ µl . (12) 3) La clave común es KAB = êl (SA ,PB ) = êl (PA ,SB ). Acuerdo bipartito de claves Alicia Bernardo êl(SA,PB) = KABC êl(PA,SB) = KABC PB PA Parámetros públicos SA SB Generador de claves CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 24 3.1.2. Acuerdo tripartito de claves 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 = nA P 2) B toma un número aleatorio nB ; 1 < nB < l y calcula PB = nB P 3) C toma un número aleatorio nC ; 1 < nC < l y calcula PC = nC P 4) A,B,C intercambian los valores de PA ,PB ,PC • Acuerdo de claves: Los participantes calculan la clave común, 1) êl (PB ,PC )nA = êl (P,P)nA nB nC = KABC 2) êl (PA ,PC )nB = êl (P,P)nA nB nC = KABC 3) êl (PA ,PB )nC = êl (P,P)nA nB nC = KABC Resumimos el protocolo de Joux en el diagrama siguiente. Acuerdo tripartito de Joux PA Bernardo Alicia PB nA PA KABC nB PB KABC Parámetros públicos PC PA PC PB nC PC KABC Carlos Lectura recomendada A. Joux (2000). “A one round protocol for tripartite Diffie-Hellmann”, LNCS (vol. 1838, págs. 385-394. 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 supuesta intractabilidad de la siguiente variante. . Definición 3.4 (Problema Bilineal de Diffie-Hellman). Conocidos nA P,nB P,nC P calcular êl (P,P)nA nB nC . Ejemplo 3.1. Lectura recomendada y2 x3 Sea q = 1303 y la curva elíptica E : = + 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 ê163 .* Sean las elecciones de A,B,C: El ejemplo 3.1 puede encontrarse en J. Hoffstein; J. Pipher; J. Silverman (2008). An Introduction to Mathematical Cryptography. Springer. 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) * Ver los ejercicios al final del módulo. 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) êl (PB ,PC )71 = (172 + 256i)71 = 768 + 662i 2) êl (PA ,PC )3 = (1227 + 206i)3 = 768 + 662i 3) êl (PA ,PB )126 = (282 + 173i)126 = 768 + 662i 3.2. Cifrado basado en la identidad 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 ) ∈ hPi, 3) elige una función resumen h2 : µl → M, 4) calcula la clave privada de cada participante SA = sPA . Lectura recomendada Boneh y Franklin (2001). “Identity based encryption from the Weil pairing”. LNCS (vol. 2139, pág. 213-229). CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 26 . • 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: C2 = M ⊕ h2 (êl (PA ,PAC )r ) C1 = rP, (donde L (13) 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 êl (SA ,C1 ) = êl (sPA ,rP) = êl (PA ,P)rs = êl (PA ,sP)r = êl (PA ,PAC )r , (14) 2) calcula C2 ⊕ h2 (êl (SA ,C1 )) = M ⊕ h2 (êl (PA ,PAC ))r ⊕ h2 (êl (PA ,PAC ))r = M. (15) El esquema siguiente ilustra el esquema básico de Boneh y Franklin. Observación Cifrado básico de Boneh-Franklin Alicia Bernardo C = (C1,C2) C2, êl(SA,C1) r M PA Parámetros públicos SA C2 M,r PAC AC Generador de claves C1 Cabe señalar la similitud formal entre la versión básica del criptosistema de Boneh-Franklin y el criptosistema ElGamal: en ambos el cifrado viene dado por un par cuya primera componente es producto o potencia del generador y un número aleatorio, mientras que la segunda componente incluye el mensaje en claro como sumando o factor. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 27 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 (êl (PA ,PAC )r ), C3 = M ⊕ h4 (S). (16) Descifrado: Cuando A recibe el mensaje cifrado C = (C1 ,C2 ,C3 ), 1) calcula S′ = C2 ⊕ h2 (eˆl (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. La seguridad del modelo completo de Boneh y Franklin se considera equiparable a la del problema bilineal de Diffie-Hellman. 3.3. Esquemas de firma basados en la identidad La infraestructura basada en la identidad del esquema de cifrado de Boneh- 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). 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 identidad 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. Ver también La firma digital de un mensaje se estudia en el módulo “Elementos de Criptografía” de esta asignatura. 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 proporcionada 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 requieran 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, 4) La firma puede depender de un valor aleatorio: firmas aleatorias, (por ejemplo 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 êl , 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 ) ∈ hPi, 3) elige una función resumen h2 : M × hPi → {r; 1 < r < l}, 4) calcula la clave privada de cada participante SA = sPA . Ver también Los diferentes tipos de firmas se estudian en el módulo “Elementos de Criptografía” de esta asignatura. CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 29 . • 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 êl (PAC ,F1 + hPA ) = êl (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 verificarse tal igualdad). Resumimos el esquema de firma en el diagrama siguiente. Firma basada en la identidad Bernardo Verificador Alicia (M,F) r F1 F1,M,r F2 F = (F1, F2) F1 M F2 ? êl[] = êl[] PB PA Parámetros públicos SA PAC AC Generador de claves CC-BY-NC-ND • PID_00200950 30 Al igual que la firma ElGamal, puede probarse la seguridad existencial (un Pairings y sus aplicaciones Modelos de seguridad 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. El siguiente esquema de firma de Boneh, Lynn y Shacham (2001), es especialmente eficiente y permite claves muy cortas. . Algoritmo 3.9. • Parámetros: Los mensajes M ∈ M son secuencias binarias de lon- La seguridad de un esquema criptográfico se demuestra en el contexto de un modelo de seguridad. En el modelo estándar se trata de probar que romper el sistema implica resolver un problema matemático computacionalmente intratable. El modelo Random Oracle demuestra la seguridad asumiendo que las funciones resumen utilizadas son realmente funciones aleatorias. 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 êl . Además, 1) una función resumen h : M → hPi, 2) una clave privada de cada participante nA ; 1 < nA < l y pública Lectura recomendada Boneh, Lynn y Shacham (2001). “Short signatures from the Weil pairings”. Asiacrypt 2001. LNCS (vol. 2248, págs. 514-532) PA = nA P. • Algoritmo de Firma: Si A desea firmar el mensaje M calcula F(M) = • Algoritmo de Verificación: Cuando el verificador recibe el par nA h(M). (M,F), acepta la firma si, y solo si, êl (F(M),P) = êl (h(M),PA ). 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 ) = 97log2 3 ≈ 154 bits, permitiendo el mismo nivel de seguridad que el Digital Signature Algorithm, que utiliza claves de 320 bits. Lectura recomendada M. Barreto y otros (2002). “Efficient algorithms for pairing-based cryptosystems”. CRYPTO 2002. LNCS (vol. 2442, págs. 354-368) CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 31 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. 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 (respectivamente 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 punto anterior encontrar divisores D′1 , D′2 equivalentes a D1 y D2 y que tengan soportes disjuntos. Traza En los ejercicios del módulo “Cuerpos finitos” se introdujo la noción de aplicación traza, la cual asigna a un elemento x ∈ Fq el elemento de Fp traza de la multiplicación por x en el espacio vectorial Fq sobre Fp . 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. 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 ê137 el pairing modificado correspondiente 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) ê137 (PB ,PC ) = 151 + 135i. ii) ê137 (PA ,PC ) = 74 + 514i. iii) ê137 (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). Ver también Las curvas elípticas se estudian en el módulo “Criptografía con curvas elípticas” de esta asignatura. CC-BY-NC-ND • PID_00200950 32 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). P 2) a) Sean las ecuaciones del cambio de base vi′ = j cij vj , 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|2 DisB (f ) de donde el resultado. b) Supongamos nulo el discriminante (en cualquier base B). Existirá pues una combinación lineal no trivial λ1 F1 + · · · + λn Fn = 0 entre las filas Fi de la matriz (f (vi ,vj )), luego para todo j se tiene una relación: λ1 f (v1 ,vj ) + · · · + λn f (vn ,vj ) = 0. Denotando w = λ1 v1 + · · · + λn vn (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 = λ1 v1 +· · · λn vn , 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: y2 z = x3 + z3 Pero ahora el corte con z = 0 proporciona y2 z = 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) ∈ hPi se tendría φ (P) = mP, para algún m luego el (P,φ (P)) = el (P,P)m = 1. Pairings y sus aplicaciones CC-BY-NC-ND • PID_00200950 Pairings y sus aplicaciones 33 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 hPi, 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. 6) Dado que se sabe que R ∈ hPi y que hPi tiene cardinal 3, se tendrá que hPi = {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. Ver también Las fórmulas de adición de puntos en E se han dado en el módulo “Criptografía con curvas elípticas” de esta asignatura. 7) a) El grado de inmersión es el menor k tal que 17 divide a 101k – 1. Fácilmente se comprueba 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 obtiene: 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) CC-BY-NC-ND • PID_00200950 34 #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 encontrar el resultado: sage: P=E(67,481) # Construimos el punto P y comprobamos su orden 137 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; KABC 54 + 198 alpha Pairings y sus aplicaciones CC-BY-NC-ND • PID_00200950 35 Bibliografía Blake, I.; Seroussi, G.; Smart, N. (2000). “Elliptic Curves in Cryptography”. London Mathematical 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 Cryptography.” Undergraduate Texts in Mathematics. Nueva York: Springer. Martin, L. (2008). “Introduction to Identity-based Encryption”. Artech House Inc. Massachusetts: Norwood. Pairings y sus aplicaciones