Por lo que entiendo, la ecuación para la clave pública se define así:
K = k * G
Siendo K la clave pública, k la clave privada y G el punto generador.
Como lo entendí, la ecuación para la clave pública se define así,
K = k * G
siendo K la clave pública, k la clave privada y G el punto generador.
Eso es correcto.
Ahora mi primera pregunta, ¿es G una constante? (por lo que leí, es una constante)
Es. Es el punto con coordenadas (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424)
. Puede verificar que estas coordenadas satisfacen la ecuación de la curvaY^2 = X^3 + 7 (mod 115792089237316195423570985008687907853269984665640564039457584007908834671663)
: .
Y si lo es, ¿cómo no es posible simplemente hacer K/G = k?
La respuesta es simplemente que no conocemos una manera eficiente de hacer "divisiones" para curvas elípticas (que se llama el problema del logaritmo discreto ), y se supone que no se puede encontrar tal manera. El algoritmo más conocido para hacer esto para esta curva específica toma alrededor de 2 128 iteraciones, una cantidad imposiblemente grande.
Tienes que ser consciente de que, *
mientras k * G
lo escribes, no es una multiplicación ordinaria (¿qué significaría eso para los puntos?). Es una operación bastante complicada , y la gente ha descubierto propiedades útiles que son algo similares a la multiplicación (forma un grupo cíclico , por lo que se usa el mismo símbolo). Pero nadie nunca encontró una manera de realizar la operación inversa, y esto se convirtió en la base de la criptografía de curva elíptica .
A los matemáticos les gustan sus analogías, a veces esas analogías pueden ser útiles, pero igualmente pueden ser confusas, particularmente para aquellos que son nuevos en un campo.
En matemáticas, un "grupo" consta de un conjunto de elementos y un operador que satisface algunos requisitos. El operador debe ser asociativo, debe existir un elemento de identidad, y para cada elemento debe existir un elemento inverso bajo el operador.
Algunos grupos se escriben por analogía con la suma, es decir, el operador de grupo se representa con un signo "+" y el elemento de identidad se representa con un "0". Otros grupos se escriben por analogía con la multiplicación, es decir, el operador de grupo se escribe como una operación de multiplicación (p. ej., "*","." o nada en absoluto) y el elemento de identidad se representa con "1". Las curvas elípticas se escriben tradicionalmente por analogía con la suma.
Podemos concebir aplicar el operador de grupo repetidamente a k copias de G. Si el grupo se escribe por analogía con la suma, entonces esto es análogo a la multiplicación, si el grupo se escribe por analogía con la multiplicación, entonces esto es análogo a la exponenciación.
Así que k * G
no se refiere a la multiplicación regular sino a una operación que es en cierto modo análoga a la multiplicación.
Podrías pensar ingenuamente que esto llevaría un tiempo proporcional a k, pero gracias a la asociatividad podemos calcularlo en un tiempo proporcional al logaritmo de k. Entonces podemos calcular rápidamente k * G
incluso para k muy grande.
Sin embargo, revertir la operación no es tan fácil. El problema se conoce como el "problema del logaritmo discreto de la curva elíptica" y los métodos más conocidos tienen una complejidad proporcional a aproximadamente la raíz cuadrada del número de elementos en el grupo.
¿Por qué se llama el "problema del logaritmo discreto de la curva elíptica" cuando es más análogo a la división que a un logaritmo en la notación típicamente utilizada para las curvas elípticas? porque es una variante de un problema similar estudiado para un grupo que tradicionalmente se escribe por analogía con la multiplicación.
k = K/G es una notación algo engañosa. En muchos sentidos, es mejor escribir k = K * G^-1. Esto enfatiza que hay dos operaciones involucradas en la "división": multiplicación y tomando el inverso (Además, hace que sea más fácil reconocer que K * G^-1 y G^-1 * K son conceptos distintos y que la existencia de Es necesario demostrar que G^-1 existe. Esto no es tan importante aquí porque la multiplicación de curvas elípticas es abeliana y siempre tiene un inverso, pero esas son consideraciones que debe tener en cuenta cuando se trata de grupos y anillos en general. )
La matemática de la curva elíptica se lleva a cabo en un grupo abstracto, no dentro del sistema de números reales, y el uso de la notación de números reales fomenta la intuición engañosa (y en el álgebra abstracta, la barra inclinada se usa para grupos de cocientes, no para dividir elementos de un grupo). El hecho de que tomar el inverso en las matemáticas de la curva elíptica sea difícil es lo que lo convierte en un sistema criptográfico en primer lugar. De lo contrario, cualquiera que tuviera la clave pública podría invertir el cifrado de manera bastante trivial. "Sistema criptográfico" casi por definición se refiere a un sistema con alguna operación tal que encontrar a*b es significativamente más fácil que encontrar a^-1.
(Hay formas de calcular K * G^-1 sin calcular explícitamente G^-1, pero siguen siendo tan o más difíciles que encontrar G^-1).
Y si no lo es, ¿cómo se crea a partir de la clave privada?
¿Eh? Acabas de dar la ecuación para la clave pública: K = k * G.
Además, creo que debería incluir que está hablando de secp256k1 en el cuerpo de su texto, en lugar de solo como una etiqueta. Podría inferirse de que se trata de Bitcoin SE, pero es bueno que sea explícito.
pandilla morada