SECP256K1 Valor mínimo para clave privada

He estado investigando la criptografía de curva elíptica, en particular la especificación SECP256K1 que se usa en Bitcoin y Ethereum. Por lo tanto, entiendo que el punto G del generador se fija en función de la especificación y que una clave privada de 256 bits (clave privada) se selecciona (idealmente) de manera aleatoria de 1 a 1.157920892373162e+77. La clave pública (pubKey) se deriva de la clave privada, de modo que la clave pública es privKey*G, donde esto incluye las operaciones de adición y duplicación de puntos.

Ahora, lo que parece que aún no he descubierto es que hay un punto de entrada fijo G en el que cualquier adversario debería comenzar para intentar descifrar una clave privada de una clave pública (suponiendo que no se use una tabla de valores de arco iris parcial ).

Entonces, ¿no significaría eso que el valor más grande para la clave privada, que es la cantidad de pasos más alejada del cálculo (es decir, 1.157920892373162e+77), es el más seguro?

Por lo tanto, ¿no se considerarían comprometidas las claves privadas por debajo de un cierto umbral, por ejemplo, claves privadas en el rango de 0-1000, por ejemplo?

Siento que hay algo que me estoy perdiendo aquí, ¡cualquier ayuda es apreciada!

Respuestas (1)

Si la gente en general eligiera con mayor frecuencia números enteros más bajos como claves privadas que números enteros más grandes, entonces sería una buena estrategia para un atacante comenzar con números enteros más bajos.

Sin embargo, lo contrario también vale. Si la gente eligiera más a menudo números más grandes, lo ideal sería que los atacantes comenzaran por el final y trabajaran hacia atrás.

En la práctica, no existe tal sesgo. Siempre que las personas utilicen una generación de números aleatorios adecuada y decente, cada número entero es tan probable como cualquier otro, y no importa en qué orden intente un atacante las cosas. Tendrá que pasar por la mitad del rango de clave privada en promedio independientemente.

Entonces no, no hay un número mínimo para comenzar. Sí, tiene una probabilidad extremadamente pequeña de elegir un número entre 1 y 1000. Pero, de manera similar, tiene la misma oportunidad de elegir un número entre 76136428194729137 y 76136428194730136. Un atacante no tiene motivos para pensar que es más probable que elija algo entre 1 y 1000, entonces, ¿por qué un atacante comenzaría en?

Además, cada vez que el atacante tiene la clave pública, existen algoritmos mucho más rápidos (pero aún completamente inviables) para encontrar la clave privada. Estos algoritmos operan inherentemente en orden aleatorio, por lo que no importa.

gracias por la respuesta bien explicada, estúpidamente pensé que el punto Generador tenía que ser el punto de partida. En otras palabras, no reconocí cómo se podían hacer atajos a través del rango de valores usando el método de duplicar y agregar y, por lo tanto, un adversario podría comenzar fácilmente desde casi cualquier lugar en ese rango. Esto tenía sentido ya que solo poder usar la operación de suma de puntos haría que la generación de claves tomara una gran cantidad de tiempo. Tonto de mí, todavía estoy aprendiendo, supongo!
Solo una pregunta rápida, con la operación de duplicación de puntos puedo saltar el rango de múltiplos de la siguiente manera: 1*G -> 2*G -> 4*G -> 8*G -> 16*G ... y así en. ¿Estoy en lo cierto al decir esto?
Sí, absolutamente. En la práctica, la multiplicación de un punto por un número se realiza a través de una variante de un algoritmo de doble y suma que calcula potencias de 2 subsiguientes y suma las que tienen un 1 en la representación de bits del escalar.