Una mirada en profundidad a BIP38

Publicado originalmente aquí:

https://blog.balletcrypto.com/2021/04/12/bip38-una-mirada-en-profundidad-at-the-technological-cornerstone-of-ballet-wallets/

En el corazón de las billeteras de Ballet se encuentra un estándar de Bitcoin de clase que, lamentablemente, no se usa comúnmente en las billeteras de software actuales. Sin embargo, es un estándar que representa nuestra singularidad frente a otras billeteras de criptomonedas. Este estándar, que se refleja en nuestras preguntas frecuentes y en nuestro sitio web, es la Propuesta de Mejora de Bitcoin 38, o BIP38.

El estándar BIP38 es lo que da paso a nuestra innovadora patente pendiente. Proceso de fabricación de generación de claves de dos factores , donde los dos componentes críticos de la clave privada se generan en un proceso de producción multinacional de claves privadas geográficamente segregado. Este proceso de fabricación garantiza la máxima seguridad para nuestras billeteras de almacenamiento en frío.

Considerando que hemos dado nuestra respuesta a nuestros críticos con respecto a la seguridad de nuestras billeteras y las docenas de nuevas Preguntas frecuentes En nuestro sitio web, consideramos oportuno ofrecer una introducción detallada a BIP38 (para quienes deseen profundizar en el tema, esto es para ustedes). Hay una razón específica por la que se eligió BIP38 como base técnica de nuestras billeteras. Creemos que este artículo aclarará mejor el porqué.

Historia

Antes de sumergirnos en el confuso laberinto de la generación de claves privadas de BIP38, veamos cómo y dónde empezó. Un BIP, o La Propuesta de Mejora de Bitcoin es una propuesta de idea enviada por cualquier miembro de la comunidad a la lista de correo de desarrolladores de Bitcoin para mejorar la red Bitcoin en cualquier aspecto que no alcance un rendimiento óptimo. El número 38 simplemente indica qué BIP se presentó. Por lo tanto, la BIP38 es la 38.ª BIP propuesta de las 350 propuestas hasta la fecha.

BIP38 fue propuesto específicamente en noviembre de 2012 por Mike Caldwell y Aaron Voisine con la intención de mejorar el uso inicial de bitcoins físicos y billeteras de papel. En aquel entonces, tener bitcoins en formato físico era un experimento novedoso que permitía a los nuevos usuarios sentir y sostener un bitcoin. Muchos medios, startups y entusiastas adoptaron esta idea para vender bitcoins no solo mediante una transacción en cadena, sino también mediante la entrega de una clave privada y su dirección pública al receptor. BIP38 aumentó la confianza de los emisores de estos bitcoins físicos al estandarizar una metodología robusta para la creación de bitcoins físicos.

El dato interesante aquí es que el arquitecto principal de la propuesta BIP38 fue Mike Caldwell, quien es el creador del infame Los bitcoins Casascius fueron las primeras implementaciones comerciales de bitcoins físicos vendidos a inversores minoristas. Aunque la producción de estos bitcoins Casascius se detuvo a finales de 2013, la culminación de su popularidad y su temprana novedad los han convertido en un objeto de colección entre los bitcoineros más fieles.

Unos años después, en 2019, se crearon las billeteras Ballet de Bobby Lee con el único objetivo de hacer que las billeteras de criptomonedas fueran fáciles, seguras y fáciles de regalar. Bobby ha dejado claro que las billeteras Ballet son una adaptación avanzada de las monedas Casascius.

“Somos una gran evolución de aquellas monedas de Casascius” — Bobby Lee

La clave de la producción de las monedas Casascius residía en que eran fabricadas esencialmente por una sola persona, en un solo lugar. Las carteras Ballet han mejorado esto al separar la producción entre dos partes, en dos lugares diferentes del mundo (jurisdicciones gubernamentales distintas). Y, por supuesto, es justo rendir homenaje a estas monedas Casascius destacando los cimientos de nuestro innovador proceso de Generación de Dos Factores Clave, basado en el borrador del estándar BIP38 de Mike Caldwell.

Desglose de BIP38

El estándar BIP38 contiene dos funciones de uso diferentes. Ambas reflejan esencialmente la misma idea: usar una frase de contraseña junto con una clave privada cifrada para revelar la clave privada descifrada. Sin embargo, la secuencia para obtener la clave privada inicial es ligeramente diferente.

Uso A: “Cifrado cuando no se utiliza el indicador de multiplicación EC”

  • Este primer uso permite al usuario cifrar una clave privada generada previamente (con formato WIF comprimido) con una frase de contraseña personalizada. La clave privada cifrada resultante es una cadena hexadecimal base58 que empieza por '6P'. La particularidad es que el usuario debe tener una clave privada pregenerada para el proceso de cifrado.
  • Esta función está realmente disponible en el popular bitaddress.org, pero primero deberás generar una clave privada con formato WIF.

Uso B: “Cifrado cuando se utiliza el modo de multiplicación EC”

  • Este segundo uso, en el que se basa nuestro 2FKG, permite que dos partes participen en la creación de las claves privadas. La primera parte comienza creando una frase de contraseña generada aleatoriamente y un poco de "sal" para añadir más entropía al proceso. Posteriormente, se deriva una cadena de frase de contraseña intermedia (intermediate_passphrase_string) y se entrega a la segunda parte para generar una dirección pública y una clave privada cifrada. Cabe destacar que la cadena de frase de contraseña intermedia (intermediate_passphrase_string) no revela la frase de contraseña original, que la primera parte conserva y es necesaria para descifrar la clave privada cifrada resultante.
  • A continuación se muestra un diagrama de flujo de todo el proceso, elaborado con gran maestría (para simplificar, se excluyeron los números de "lote" y "secuencia"). Cabe destacar que el " Propietario " es la primera parte descrita anteriormente y el " Impresor " es la segunda.

El desglose detallado del uso B

Como se muestra en el diagrama de flujo, el Dueño es quien posee la frase de contraseña (y la mantiene segura), que es necesaria para descifrar la clave privada cifrada. El Impresora es el que toma la cadena de contraseña intermedia para generar una dirección pública y una clave privada cifrada. Dueño y el Impresora Por lo tanto, no es necesario que estén en la misma ubicación, zona horaria ni que se conozcan. Así funciona nuestro innovador proceso 2FKG. Dueño está situada en los Estados Unidos mientras que nuestra Impresora Está situada en China.

Paso 1: Dueño (El equipo de Ballet de EE.UU.) crea una frase de contraseña secreta para generar un código intermedio (intermediate_passphrase_string)

  1. Dueño genera un 'ownersalt' aleatorio y una 'contraseña' aleatoria.
  2. Tanto el "ownersalt" como la "passphrase" se procesan mediante un algoritmo de derivación de claves llamado Scrypt. El resultado es una clave llamada "passfactor".
  3. Luego se utiliza la multiplicación de la curva elíptica para “multiplicar” el punto de la curva elíptica G y el “factor de paso”, dando como resultado un “punto de paso”.
  4. El 'ownersalt' y el 'passpoint' originales se comparten entonces con el Impresora (Equipo de Ballet en China) en un formato codificado en base58check conocido como cadena_de_frase_de_contraseña_intermedia, o "código intermedio" para abreviar. Esta cadena comienza con la palabra "frase de contraseña" para facilitar la lectura. (Este también es el código intermedio BIP38 que nuestros clientes generan si desean solicitar las billeteras de la Serie PRO). A continuación, se muestra un ejemplo de este código intermedio que nos enviarían:
  5. frase de contraseña q56ehW7gSRMgF6MttNx1bpsPffCe7cKSodv8AaUVKCYZbSLH35MYu6uhXq6KpJ
  6. Incluso si utiliza la misma frase de contraseña para ejecutar el algoritmo nuevamente, siempre obtendrá un 'código intermedio' diferente debido a la otra porción aleatoria que proviene de 'ownersalt'.

Paso 2: El Dueño (El equipo de Ballet en los EE.UU.) envía el 'código intermedio' a la Impresora (Equipo de Ballet en China) a través de una red cifrada. El Impresora Luego calcula la dirección pública y la clave privada cifrada.

  1. El Impresora Establece un byte de bandera: 0x20 o 0x04, que indica cómo se formará la dirección de bitcoin.
  2. El Impresora luego genera un 'seedb' aleatorio, que luego se ejecuta a través de SHA256 dos veces para generar 'factorb'.
  3. El punto de acceso se multiplica por EC por factorb, lo que genera las claves públicas, que posteriormente se codifican para generar la dirección pública de Bitcoin. Durante este paso, Impresora También puede generar un código de confirmación que permite al usuario final, el Propietario de nuestra billetera Ballet para confirmar si la dirección de bitcoin proporcionada coincide con la 'frase de contraseña'.
  4. El "ownersalt" y un hash de la dirección pública se concatenan como una sal para cifrar "seedb". Se deriva otra clave del "passpoint" mediante Scrypt. El resultado se divide en dos mitades de 32 bytes llamadas "derivedhalf1" y "derivedhalf2".
  5. Luego se utiliza AES256Encrypt para producir dos resultados de 16 bytes llamados "encryptedpart1" y "encryptedpart2".
  6. La clave privada cifrada con código de verificación base58 se deriva entonces de la fórmula (que comienza con '6P'):
  7. 0x01 0x43 + byte de bandera + hash de dirección + sal del propietario + parte cifrada 1[0…7] + parte cifrada 2
  8. La clave privada cifrada con su dirección pública correspondiente se devuelve entonces al Dueño, ¿Quién tiene la contraseña secreta? Dueño ahora puede descifrar la clave privada cifrada con la frase de contraseña para revelar la clave privada descifrada (que se muestra como una clave formateada importada de Wallet).

Cierre

Gracias a la aleatoriedad de cada parte (tanto la 1 como la 2), si alguien vuelve a ejecutar la frase de contraseña inicial en el generador BIP38, siempre obtendrá un código intermedio diferente, así como una clave privada cifrada completamente distinta. Por lo tanto, una frase de contraseña solo generará una clave privada cifrada única una sola vez. Intentar generar la misma clave privada cifrada a partir de una frase de contraseña robada es estadísticamente casi imposible. Y tratar de adivinar una frase de contraseña a partir de una clave privada cifrada existente se vuelve exponencialmente más difícil de forzar si la frase de contraseña es larga y compleja.

Esperamos que este análisis de la funcionalidad principal de nuestro proceso de producción de Generación de Dos Factores Clave les brinde mayor seguridad con respecto a nuestras billeteras Ballet. Y para quienes aún dudan de la robusta seguridad criptográfica que ofrece el estándar BIP38, Bobby Lee tiene un desafío continuo para quienes quieran intentar hackear sus billeteras Ballet. Ha ofrecido 2 bitcoins como premio (con un valor de más de USD 120,000 al momento de la publicación de este blog) para que intenten hackear sus dos billeteras Ballet. Les proporciona la clave privada cifrada para una billetera y la contraseña de descifrado para la otra. Si logran hackear o forzar el otro componente crítico, podrán llevarse el premio.

Al utilizar la tecnología de cifrado BIP38, las billeteras Ballet son criptográficamente seguras y Bobby ha puesto su dinero en lo que dice.

Lea más sobre el desafío de hacking de Bobby:
https://www.bobbylee.com/blogs/news/21-000-to-hack-ballet-wallets

Aquí hay otro sitio web que también resume el desafío de hacking de Ballet, apropiadamente llamado Tome el Bitcoin de Bobby :
https://www.takebobbysbitcoin.com/

Fuentes: https://github.com/bitcoin/bips/blob/master/bip-0038.mediawiki

Dejar un comentario

Por favor tenga en cuenta que los comentarios deben ser aprobados antes de ser publicados