Carteras HD: ¿Por qué extender una clave privada con adición? (No endurecido)

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?

Respuestas (1)

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.

Tenemos ecuaciones como esta, donde hashestá la primera mitad del hash HMAC-SHA512 K, kson claves principales y K1son secundarias k1. K+hash = K1, k+hash = k1. ¿No hay una operación aritmética direccional que permita que lo mismo sea cierto?
No, esto es probablemente imposible con solo derivaciones basadas en curvas elípticas. Las construcciones que creará serán inseguras o imposibles de hacer sin las claves privadas.