¿Por qué no es posible sacar la clave privada de la clave pública?

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.

  • ¿G es una constante? (por lo que leí, es una constante).
  • Si lo es, ¿cómo no es posible simplemente hacer K/G = k?
  • Si no es así, ¿cómo se crea a partir de la clave privada?

Respuestas (3)

Como lo entendí, la ecuación para la clave pública se define así, K = k * Gsiendo 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 * Glo 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 .

Esto me aclaró mucho. ¡Gracias por la explicación y los enlaces!

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 * Gno 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 * Gincluso 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.

"Otros grupos se escriben por analogía con la multiplicación, es decir, las curvas elípticas se escriben tradicionalmente por analogía con la suma". Probablemente se comieron algunas palabras allí. También sugiero usar el nombre completo "logaritmo discreto" en lugar del "registro discreto" abreviado, ya que no es necesariamente obvio para un profano lo que significa este "registro".

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.

Creo que esta explicación es más confusa para ser honesto. G^-1 no es algo que puedas calcular. ¿Cuál sería su tipo? No es un punto, porque entonces K G^-1 sería el punto^2, que no existe. Y no un escalar porque entonces K G^-1 sería un punto. Necesitaría introducir un concepto de "puntos invertidos", que AFAIK no existe, y tampoco está relacionado con la forma en que K / G se calcula realmente en algoritmos como el rho de Pollard ... que en realidad toman K y G como entradas - no solo G - y salida k.
@PieterWuille: está aplicando erróneamente la aritmética real al álgebra abstracta, tal como advirtió la acumulación. El "tipo" de un producto sobre un grupo abstracto tiene unidades que son el producto de las unidades de los dos insumos, pero la dimensión no es tan simple. Por ejemplo, un producto vectorial vectorial en 3D tiene 3D al igual que ambas entradas, y un producto escalar vectorial produce un escalar sin importar la dimensión de las entradas. Otro ejemplo: una matriz cuadrada tiene una inversa con la misma dimensión que ella misma, y ​​eso no plantea problemas al multiplicar la matriz invertida por vectores columna.
La respuesta dice literalmente "... pero siguen siendo tan o más difíciles que encontrar G^-1". Esta es, hasta donde yo sé, una declaración falsa, ya que no existe una forma conocida de calcular G ^ -1 (incluso ignorando la pregunta de cuál sería su tipo). Los algoritmos para calcular un logaritmo discreto (= división de dos elementos de grupo) toman dos elementos de grupo como entrada. No calculan el inverso de uno y luego lo multiplican por el otro. Ciertamente, podría definir "inverso de un elemento de grupo con multiplicación escalar" como un objeto abstracto, pero no es así como lo calcularía.
Hay más mal aquí. La inversa de la que estamos hablando es la multiplicación escalar inversa wrt (número por elemento de grupo), no la inversa wrt la operación de grupo en sí (elemento de grupo más elemento de grupo). Este último existe para cada elemento en cada grupo (incluidos los grupos no abelianos). Sin embargo, el primero, si desea definirlo, ciertamente no existe para todos los elementos de un grupo abeliano; lo hace para cada elemento distinto de cero en secp porque es cíclico con orden primo, pero en general no existirá para elementos con orden no máximo en el grupo.