Según tengo entendido actualmente, existen dos métodos para extender claves en una billetera determinista jerárquica: derivación regular y derivación reforzada. La derivación endurecida esencialmente "rompe la cadena", agregando seguridad porque a través de la derivación normal, una clave privada secundaria filtrada, junto con el código de cadena, podría usarse para derivar cualquier clave privada principal a través de la resta.
La derivación normal de la clave privada secundaria ocurriría así: tome el hash HMAC-SHA512 de la clave pública principal, el código de cadena principal y el número de índice. Los primeros 256 bits se agregan a la clave privada principal para derivar la clave privada secundaria, y los otros 256 bits son el código de la cadena secundaria. Usando esto, un adversario que posee una clave privada secundaria y el código de cadena podría usar la resta para encontrar la clave privada principal. Y la derivación reforzada es similar, pero la clave privada principal se usa como entrada para la función hash, por lo que no se puede revertir, incluso si se conoce el código de cadena. La desventaja es que se requiere una clave privada principal para generar claves públicas secundarias, lo que elimina la posibilidad de que una máquina de "solo recepción" tenga acceso solo a claves públicas.
Mi pregunta es, ¿por qué se usa la aritmética reversible (la adición de la clave privada principal y la salida de la función hash) en lugar de una función "unidireccional" como la adición de curvas elípticas u otras?
Mi pregunta es, ¿por qué se usa la aritmética reversible (la adición de la clave privada principal y la salida de la función hash) en lugar de una función "unidireccional" como la adición de curvas elípticas u otras?
Para permitir la derivación pública.
Esto significa que es posible darle a alguien una clave extendida principal (clave pública + código de cadena), y pueden derivar todas las claves públicas de la cadena.
Si la clave secreta final se calcula directamente mediante una función unidireccional, no existen operaciones equivalentes con claves públicas para calcular la versión pública del resultado.
ivan g
hash
está la primera mitad del hash HMAC-SHA512K
,k
son claves principales yK1
son secundariask1
.K+hash = K1
,k+hash = k1
. ¿No hay una operación aritmética direccional que permita que lo mismo sea cierto?pieter wuille