curvas elípticas - pralogycurvas elípticas en criptografía 4 3+27 2≠0 imagen tomada de...
TRANSCRIPT
Curvas Elípticaspralogy.com.co
Expertos en Seguridad de la Información
TOPICS
• Pros y Contras de el uso de ECC vs RSA vs DL
• Que es una curva elíptica y como es calculada
• Como construir un problema DL en curvas elípticas
• Protocolos aplicables a curvas elípticas
• Estimaciones de seguridad
DEFINICIÓN
Conjunto de soluciones de una ecuación de la forma (Weierstrass)
𝑦2 + 𝑎1𝑥𝑦 + 𝑎3 𝑦 = 𝑥3 + 𝑎2𝑥2 + 𝑎4𝑥 + 𝑏
Weierstrass(𝑎1, 𝑎2, 𝑎3, 𝑎4, 𝑏)
En Criptografía se usan las de la forma
𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏
Weierstrass(0,0,0, 𝑎, 𝑏)
Sage: show(EllipticCurve([0,1]).plot(xmin=-4, xmax=4, ymin=-3, ymax=3))show(EllipticCurve([0,0,0,0,1]).plot(xmin=-4, xmax=4, ymin=-3, ymax=3))
𝑦2 = 𝑥3 +1
Curvas Elípticas en Criptografía
4𝑎3 + 27𝑏2 ≠ 0
Imagen Tomada de Wikipedia
Las curvas elípticas aplicables en criptografía debe tener bien derivada este bien definida en todos los puntos de la curva (nonsingular; Geométricamente sin vértices o sin intersecciones a si misma)
Propiedades
𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏
• Para cada punto 𝑥 hay dos soluciones en 𝑦
𝑦 = ± 𝑥3 + 𝑎𝑥 + 𝑏
Por lo tanto estas curvas son simétricas sobre el eje 𝑥
• La curva intersecta al eje 𝑦 en 𝑏 (resolver ecuación para 𝑥 = 0)
• La curva intersecta intersecta al eje 𝑥 en 1 o 3 puntos reales (resolver ecuación para y = 0)
Componentes de ECC
• Una Curva definida E
• Conjunto de puntos E(a,b)
• Point at infinity o Zero Point: Punto en el infinito sobre el eje Y (donde todas las rectas paralelas se interceptan)
𝑂 = (0,∞)
• Grupo cíclico 𝐺 ;operación cerrada es la suma ‘+’ y el elemento de identidad es el punto 0
• Campo finito, generalmente sobre un numero primo 𝐺𝐹 (𝑝)
PROPIEDADES DE GRUPO
• ClausuraSi 𝑃 y 𝑄 ∈ (𝑎, 𝑏) entonces 𝑃 + 𝑄 ∈ 𝐸 𝑎, 𝑏
• Asociatividad 𝑃 + 𝑄 + 𝑅 = 𝑃 + 𝑄 + 𝑅
• Elemento de Identidad𝑃 + 0 = 0 + 𝑃 = 𝑃
• Elemento Inverso 𝑃 + −𝑃 = −𝑃 + 𝑃 = 0
• Conmutativo𝑃 + 𝑄 = 𝑄 + 𝑃
Addition
Se definen dos puntos sobre la curva𝑃 = (𝑥1, 𝑦1) 𝑄 = (𝑥2, 𝑦2)
La suma de estos puntos da como resultado otro punto sobre la curva𝑃 + 𝑄 = 𝑅 𝑥1, 𝑦1 + 𝑥2, 𝑦2 = 𝑥3, 𝑦3 = 𝑅
-𝑅 = 𝑥3,−𝑦3
𝑅 = 𝑥3, 𝑦3
CORDENADAS DEL PUNTO R
• Ejercicio Encuentre las coordenadas (𝑥3, 𝑦3) en términos de las variables conocidas
Hint: recuerde que un polinomio de grado 3 posee 3 soluciones de las cuales usted ya conoce 2
Addition
𝑋3 = 𝑠2 − 𝑥1 – 𝑥2
𝑦3 = 𝑠 𝑥1 − 𝑥3 − 𝑦1
𝑆 =𝑦2 − 𝑦1
𝑥2 − 𝑥1
Point Doubling
Si 𝑃 = 𝑄
Point Doubling
Si 𝑃 = 𝑄𝑋3 = 𝑠2 − 2𝑥1
𝑦3 = 𝑠 𝑥1 − 𝑥3 − 𝑦1
𝑆 =𝑑𝑦
𝑑𝑥
𝐷 𝑦2 = 2yD y = 2y ư𝑦
2y𝑑𝑦
𝑑𝑥= 3𝑥2 + 𝑎
𝑑𝑦
𝑑𝑥=3𝑥2 + 𝑎
2𝑦
𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏
Resta
¿Cuál es el punto 𝑃 − 𝑄?
Resta
𝑃 − 𝑃 = ?
Casos Especiales
Imagen Tomada de Wikipedia
Multiplicación Entera
• Encuentre 3P
Multiplicación Entera
3𝑃 + 𝑃 = 2𝑃 + 2𝑃 = 2 2𝑃 = 4𝑃
5 7𝑃 = 7(5𝑃)
¿En cuantas operaciones puede encontrar el punto: • 128 𝑃• 127 P• 101 P• 100 P
¿En cuantas operaciones puede encontrar el punto 𝑥𝑃?
El algoritmo mas eficiente es :Double-and-Add Algorithm for Point Multiplication 𝓞(𝒍𝒐𝒈𝟐 (𝒏))
Curvas Elípticas sobre Campos Finitos
• En criptografía se usan curvas con variables y coeficientes finitos, por lo que el numero de puntos que componen una curva son finitos, se le conoce como Cardinalidad de la curva
Tipos de curvas• Curvas Primas 𝐸𝑝 = 𝑎, 𝑏 estas curvas se definen sobre 𝐺𝐹(𝑝) Curvas Binarias
• Curvas Binarias 𝐸2𝑚 = 𝑎, 𝑏 estas curvas se definen sobre 𝐺𝐹(2𝑚) Curvas Binarias
𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏 𝑚𝑜𝑑 𝑝
𝑥3 = 𝑠2 − 𝑥1 − 𝑥2 𝑚𝑜𝑑 𝑝𝑦3 = 𝑠 𝑥1 − 𝑥3 − 𝑦1 𝑚𝑜𝑑 𝑝
Teorema 1
• Todos los puntos de una curva elíptica y el punto O poseen subgrupos cíclicos. Bajo ciertas condiciones todos los puntos de una curva elíptica forman un grupo cíclico.
Esto quiere decir existe un punto 𝐴 en la curva cuyo 𝑜𝑟𝑑 𝐴 = 𝐸 , se les conoce como elemento primitivos.
|𝐸| es la cardinalidad de la curva elíptica.
𝑜𝑟𝑑 𝐴 es el menor 𝑘 tal que cumpla 𝑘𝐴 = 𝐴 + 𝐴 +⋯+ 𝐴 = 𝑂
Recuerde que 𝑂 es elemento de identidad de la curva 𝐴 + 𝑂 = 𝐴
Esto implica que cada punto en la curva puede ser escrito de la forma 𝑘𝐴
Logaritmo Discreto ECDLP
• Dada la curva Elíptica 𝐸(𝑎, 𝑏), y los puntos 𝑃 y 𝑄 p, donde 𝑄 = 𝑛𝑃, El problema de logaritmo discreto es encontrar el entero 𝑛, donde 1 ≤ 𝑛 ≤ #𝐸, de tal forma que:
𝑃 + 𝑃 +⋯+ 𝑃 = 𝑛𝑃 = 𝑄
n es la clave privada del sistema y los puntos <P , Q> son la clave publica
Teorema 2
Sea un G un grupo finito Cíclico. se cumple:
1. El numero de elementos primitivos de G es Φ 𝐺
2. Si 𝐺 es primo, entonces todos los elementos son primitivos excepto el elemento de identidad
Teorema 3: Hasse’s
Dada una curva elíptica E modulo P, el numero de puntos de la curva se denota por #𝐸 y esta limitada por:
𝑃 + 1 – 2 𝑝 ≤ #𝐸 ≤ 𝑝 + 1 + 2 𝑝
Mediante este teorema sabemos que si queremos una curva con 2160
puntos, necesitamos un numero primo de longitud de 160 bits.
Ejercicio
• Dada la curva elíptica E(2,2) sobre GF(17) y el punto inicial 𝑃 = (5, 1), encuentre el punto −𝑃
Ejercicio
• Dada la curva elíptica E(2,2) sobre GF(17) y el punto inicial 𝑃 = (5, 1), encuentre el punto 2𝑃
• Verifique el punto encontrado si este sobre la curva
Ejercicio
• Dada la curva elíptica E(2,2) sobre GF(17) y el punto inicial 𝑃 = (5, 1), encuentre la clave privada usada para generar el punto (3,1)
Ejemplo
E: 𝑦2 ≡ 𝑥3 + 2𝑥 + 2 𝑚𝑜𝑑 17#𝐸 = 19
Si empezamos con el punto 𝑃 (5,1)2𝑃 = (5,1) + (5,1) = (6,3)3𝑃 = 2𝑃 + 𝑃 = (10,6)
4𝑃 = (3,1)5𝑃 = (9,16)6𝑃 = (16,13)7𝑃 = (0,6)8𝑃 = (13,7)9𝑃 = (7,6)10𝑃 = (7,11)
11𝑃 = (13,10)12𝑃 = (0,11)13𝑃 = (16,4)14𝑃 = (9,1)15𝑃 = (3,16)16𝑃 = (10,11)17𝑃 = (6,14)18𝑃 = (5,16)
19𝑃 = 𝑂
Calcule el punto 20𝑃 y 21𝑃
¿Que implica que 18𝑃 + 𝑃 = 0?Verifíquelo
Diffie-Hellman Key Exchange - ECDH
Preparación:
1. Escoger un numero (2𝑚 o primo) 𝑝 y la curva elíptica
𝐸: 𝑦2 ≡ 𝑥3 + 𝑎𝑥 + 𝑏 𝑚𝑜𝑑 𝑝
2. Escoga un elemento primitivo 𝑃 = 𝑥, 𝑦
< 𝑝, 𝑎, 𝑏, 𝑃 > son los parámetros de dominio.
Key Exchange - ECDH
Escoger 𝐾𝑝𝑟𝐴 = 𝑎 ∈ {2,3, … , #𝐸 − 1}𝐾𝑝𝑢𝑏𝐴 = 𝑎𝑃 = 𝐴 = (𝑥𝐴, 𝑦𝐴)
Escoger 𝐾𝑝𝑟𝐵 = 𝑏 ∈ {2,3, … , #𝐸 − 1}
𝐾𝑝𝑢𝑏𝐵 = 𝑏𝑃 = 𝐵 = (𝑥𝐵 , 𝑦𝐵)
𝑎𝐵 = 𝑇𝐴𝐵Calcular𝑏𝐴 = 𝑇𝐴𝐵Calcular
Se acordó el secreto entre Alice y Bob: 𝑇𝐴𝐵 = (𝑥𝐴𝐵, 𝑦𝐴𝐵)
𝑎𝐵 = 𝑎 𝑏𝑃 = 𝑎𝑏𝑃 𝑏𝐴 = 𝑏 𝑎𝑃 = 𝑎𝑏𝑃
Key Exchange - ECDH- EJEMPLO
Escoger 𝐾𝑝𝑟𝐴 = 𝑎 = 3𝐾𝑝𝑢𝑏𝐴 = 3𝑃 = (10, 6)
Escoger 𝐾𝑝𝑟𝐵 = 𝑏 = 10
𝐾𝑝𝑢𝑏𝐵 = 10𝑃 = (7, 11)
𝑎𝐵 = 3 7,11 = (13,10)Calcular𝑏𝐴 = 10 10,6 = 13,10Calcular
Típicamente se usa como clave acordada el hash de la coordenada en x: A partir de aquí se pude usar AES usando como clave AES(𝑆𝐻𝐴 𝑥𝐴𝐵 , 𝑀). Una coordenada en x típicamente tiene 160 bits en las curvas mas usadas
Cifrado y descifrado EC
1. Se eligen y se comparten los parámetros de dominio
2. Allice Convierte el mensaje m en un punto 𝑃𝑚 sobre la curva
3. Para cifrar con la llave Publica de Bob, genera 𝑘 aletorio y envia• 𝐶𝑚 = (𝑘𝑃, 𝑃𝑚 + 𝑘𝐵)
4. Para descifrar con la llave Privada de Bob1. 𝑃𝑚 + 𝑘𝐵 − 𝑏 𝑘𝑃 = 𝑃𝑚 + 𝑘 𝑏𝑃 − 𝑏 𝑘𝑃 = 𝑃𝑚
Digital Signature : ECDSAGeneración de Clave para ECDSA:
1. Esoger una Curva E con:• Modulo 𝑝
• E( 𝑎, 𝑏)
• Un punto 𝑃 que genera un grupo cilicio de orden 𝑞
2. Allice y Bob calculan sus claves privadas y publicas.
𝐾𝑝𝑢𝑏𝐴 = 𝑝, 𝐸, 𝑞, 𝑃, 𝑎𝑃
𝐾𝑝𝑟𝐴 = (𝑎)
𝐾𝑝𝑟𝐴 = 𝑎 ∈ {2,3, … , #𝐸 − 1 𝐾𝑝𝑟𝐵 = 𝑏 ∈ {2,3, … , #𝐸 − 1}
𝐾𝑝𝑢𝑏𝐵 = 𝑝, 𝐸, 𝑞, 𝑃, 𝑏𝑃
𝐾𝑝𝑟𝐵 = (𝑏)
Digital Signature : ECDSA
Alice quiere firmar el documento 𝑚 con la función de hash ℎ() y enviárselo a Bob
Escoger 𝑘𝐸 (Key Ephemeral) con 0 < 𝑘𝐸 < 𝑞
Calcular 𝐾 = 𝑘𝐸 ∙ 𝑃 = (𝑥𝐾, 𝑦𝐾) < 𝑚 , 𝑟 = 𝑥𝐾 , 𝑠 ≡ ℎ 𝑚 + 𝑎 ∙ 𝑟 𝐾𝐸−1 𝑚𝑜𝑑 𝑞 >
Calcular
𝑥𝐾 ቊ≡ 𝑟 𝑚𝑜𝑑 𝑞 ⟹ 𝑣á𝑙𝑖𝑑𝑜≢ 𝑟 𝑚𝑜𝑑 𝑞 ⟹ 𝑖𝑛𝑣á𝑙𝑖𝑑𝑜
𝑤 ≡ 𝑠−1𝑚𝑜𝑑 𝑞
𝑢1 ≡ 𝑤 ∙ ℎ 𝑚 𝑚𝑜𝑑 𝑞
𝑢2 ≡ 𝑤 ∙ 𝑟 𝑚𝑜𝑑 𝑞
Calcular K= 𝑢1𝑃 + 𝑢2𝐴
Seguridad
• Las curvas elípticas son buenas funciones one-way• Si un atacante quisiera romper ECDH tiene que conocer 𝐸, 𝑝, 𝑃, 𝐴 𝑦 𝐵
• Solo hay una forma de calcular 𝑇𝐴𝐵 = 𝑎𝑏𝑃:
𝑎 = 𝑙𝑜𝑔𝑃𝐴
𝑏 = 𝑙𝑜𝑔𝑃𝐵
• El mejor ataque conocido sobre ECDLP es mucho mas débil que los ataques sobre DLP y RSA.
• El mejor algoritmo de ataque a ECDLP requiere recorrer 2160 = 280 pasos
Seguridad
NIST Publication 800-57
Referencias
• Understanding Cryptography 1st Edition
• Elliptic Curves: Number Theory and Cryptography, Second Edition
• Modern Cryptography and Elliptic Curves: A Beginner’s Guide
• Wikipedia