Si es así, ¿cuál es ese número y por qué no puedes dividir la clave pública por G para obtener la clave privada?
"G" sin comprimir es 0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
El "04" al principio simplemente se agrega (por qué razón no lo sé).
Los primeros 64 caracteres hexadecimales después de "04" supuestamente representan el valor "x" y los últimos 64 caracteres hexadecimales supuestamente representan el valor "y".
No sé los detalles de por qué no se puede revertir (también estoy buscando la respuesta a esa pregunta).
No se conoce ningún algoritmo suficientemente eficiente para la división. La multiplicación sobre un grupo cerrado es un proceso con pérdidas.
Para una analogía imperfecta, considere la multiplicación sobre el grupo de números de 100 dígitos donde solo mantiene los últimos 100 dígitos del resultado. Como no sabes qué dígitos se descartaron, no puedes revertir ingenuamente una multiplicación.
El algoritmo correspondiente en DSA es la exponenciación modular (G^X) mod n
, que también es, para fines prácticos con números grandes, irreversible incluso si se conocen G y n.
Tenga en cuenta que la "multiplicación" en cuestión no es una multiplicación de enteros ordinaria, sino una multiplicación de puntos de curva elíptica .
El objetivo de trabajar sobre una curva elíptica de esta manera es que la multiplicación es fácil, pero la división es difícil.
Nick ODell
José