Narrative, SAT, UC, Scholarship, Descriptive essay examples

Clave privada de Bitcoin: una descripción general fácil de entender

Clave privada de Bitcoin: una descripción general fácil de entender
13 enero, 2021
Category: Cuenta Bancaria

Una clave privada de Bitcoin es un número inimaginablemente grande que se mantiene en secreto y se utiliza para acceder a BTC al realizar transacciones. Este artículo explicará qué son las claves privadas de Bitcoin y cómo se utilizan para otorgar acceso a los fondos. También detalla las diferencias entre varios formatos de clave privada, como hexadecimal, formato de importación de billetera (WIF) y formato de importación de billetera comprimido (WIF comprimido).

¿Qué es una clave privada de Bitcoin?

Como se señaló en la introducción, una clave privada de Bitcoin es simplemente un número enorme. En particular, es un número de 256 bits. Un bit es simplemente un “dígito binario”, lo que significa que un solo bit es un 0 o un 1. No hay otras posibilidades para el valor de un solo bit. También es importante tener en cuenta que un bit es la unidad de datos más pequeña que pueden procesar las computadoras.

Entonces, si una clave privada de Bitcoin es solo un número de 256 bits, ¿se puede expresar una clave privada en una cadena de 256 caracteres de unos y ceros? De hecho, puede. He aquí un ejemplo:

1101101001000110101101010101100111110010000 1101100111 1101001 0101

01011 01 1101100011001 0 0 1 00 1011100 1001011001001010110001011100001

110 1100111 1010 111001011111110000110111111 0 01 10111 0100 0111011010100 0

010000010010 110000 111001 1 1001110010110000000100111101101100101

Este es un ejemplo de una clave privada de Bitcoin en formato binario.

Si eres lo suficientemente fuerte y paciente, teóricamente podrías generar una clave privada aleatoria lanzando una moneda 256 veces y registrando el resultado cada vez. Simplemente elija qué lado corresponde a qué valor (o cara es igual a 0 y cruz es igual a 1 o viceversa) y voltee hacia afuera.

En la práctica, este método de elegir una clave aleatoria no debería utilizarse. En términos generales, los humanos no son muy buenos para generar entropía (aleatoriedad). Por ejemplo, quizás la forma en que se lanza la moneda no es exactamente la misma cada vez, lo que lleva a un resultado de cruz a un ritmo mayor que de cara. O tal vez la moneda tenga una ligera imperfección física que haga que aparezcan caras con mucha más frecuencia que cruces.

Es mejor generar una clave privada de Bitcoin utilizando una herramienta o programa que garantice un alto nivel de entropía para una máxima seguridad. Recuerde que las claves privadas de Bitcoin siempre deben mantenerse en secreto.

Por supuesto, el binario no es el único formato en el que se pueden expresar las claves privadas de Bitcoin. De hecho, existen varios otros formatos. Uno se llama decimal, que simplemente significa escribir el número en su forma completa. Por ejemplo, el número “trece millones” escrito en decimal es 13.000.000. Usando una herramienta de conversión simple, la clave privada de Bitcoin en formato binario anterior se puede expresar en formato decimal como este:

Como puede ver, es un número increíblemente grande. Dicho en términos muy simples, eso es lo que impulsa el poder de la seguridad de Bitcoin: números incomprensiblemente grandes.

Seguridad de clave privada de Bitcoin

Las billeteras de Bitcoin son un poco como cuentas bancarias bloqueadas con números muy, muy grandes como códigos de acceso. Si alguien adivinara correctamente el número de su clave privada de Bitcoin, tendría acceso a su BTC y fácilmente podría robar sus fondos. Sin embargo, debido a que se trata de números gigantescos, la probabilidad de que eso suceda es básicamente cero.

Piénselo de esta manera: si cada ser humano en la Tierra tuviera un programa de computadora que les permitiera adivinar su clave privada de Bitcoin mil millones de veces al día por persona, todos los días, durante 100 años seguidos, las posibilidades de que alguien adivine correctamente El número de clave privada todavía estaría en el estadio de béisbol de 1 en 3,512,469,265,893,923,428,170,004. Deje que eso se hunda por un momento.

Pero, ¿qué pasa con las claves públicas y las direcciones? Dado que se comparten públicamente, ¿alguien no puede descubrir su clave privada? Bueno, resulta que esto no es más probable que alguien adivine directamente su clave privada de Bitcoin.

Hay dos capas de seguridad para evitar que un atacante descubra su clave privada de Bitcoin, incluso si conocen su dirección BTC: criptografía de curva elíptica (ECC) y funciones de hash criptográfico.

Parte I: Criptografía de curva elíptica

El software de Bitcoin utiliza una forma avanzada de criptografía de clave pública llamada Criptografía de curva elíptica. En particular, Bitcoin utiliza la implementación secp256k1 del algoritmo de firma digital de curva elíptica (ECDSA). Esto suena muy complejo y, de hecho, las matemáticas detrás del ECDSA son extremadamente avanzadas. Afortunadamente, no es necesario que comprenda los detalles para comprender cómo la ECDSA mantiene seguras las claves privadas de Bitcoin.

Como se señaló al principio del artículo, una clave privada de Bitcoin es solo un número muy grande. Cuando este número muy grande se multiplica con el “punto generador” predeterminado en la curva elíptica secp256k1, se produce un nuevo punto en la misma curva. Este nuevo punto es la clave pública que corresponde a la clave privada en cuestión. Una clave privada produce exactamente una clave pública.

Entonces, desde un nivel muy alto, una clave pública es solo un punto en esta curva (y ^ 2 == x ^ 3 + 7). El punto tiene una coordenada xy una coordenada y. La clave pública es simplemente estos dos valores comparados entre sí (con un pequeño prefijo para indicar el formato).

Esto proporciona dos beneficios muy importantes. Primero, la clave pública se puede compartir con la red y aún es prácticamente imposible realizar ingeniería inversa de la clave privada. En segundo lugar, la clave privada puede proporcionar firmas digitales de modo que la red pueda demostrar matemáticamente con un 100% de certeza que una clave privada de Bitcoin en particular proporcionó la firma, sin necesidad de conocer la clave privada en sí. Así es como se realizan la mayoría de transacciones.

Algunos investigadores han notado que, en algún momento en el futuro, un ataque teórico de computadoras cuánticas podría hacer posible descifrar la criptografía ECDSA. Para un mayor nivel de seguridad, además de una UX más fácil y amigable, normalmente usamos direcciones al realizar transacciones, en lugar de claves públicas. Esto agrega una capa adicional de cifrado a la clave pública. Aprendamos más sobre lo que hace que una dirección sea diferente de una clave pública.

Parte II: Funciones hash criptográficas

Las funciones hash criptográficas son ecuaciones matemáticas que se utilizan para crear una huella digital de datos. Tienen algunas propiedades importantes que los hacen extremadamente útiles.

En primer lugar, las funciones de hash criptográficas son unidireccionales, lo que significa que la entrada entra y sale una salida, pero no hay absolutamente ninguna forma de determinar una entrada solo a partir de la salida.

En segundo lugar, no importa qué tipo de datos o qué longitud de datos ingrese, obtendrá a cambio una cadena de datos de aspecto aleatorio que es de longitud fija y no ofrece pistas sobre la entrada que la produjo. Si ingresa una entrada corta de, digamos, diez palabras, obtendrá una salida de 64 caracteres. Si ingresa una entrada de diez mil palabras, aún obtendrá una salida de 64 caracteres.

En tercer lugar, la misma entrada siempre producirá la misma salida. Si usa la misma entrada y la misma función hash diez millones de veces seguidas, recibirá la misma salida diez millones de veces.

Cuarto, la probabilidad de encontrar dos entradas que produzcan la misma salida es tan increíblemente pequeña que se puede suponer con seguridad que es imposible. Una vez que alguien descubre dos entradas que producen exactamente la misma salida, la función hash se considera rota e insegura.

Por último, las computadoras deben poder ejecutar la función hash de manera muy, muy rápida. Esto también significa que, una vez que tenga una entrada secreta, es trivial confirmar que la salida (llamada hash) coincide con un hash público previamente anunciado.

Entonces, para proporcionar a los usuarios una capa adicional de seguridad, a menudo usamos direcciones de Bitcoin, en lugar de claves públicas. Cuando se aplica un hash a una clave pública con el algoritmo de hash seguro 256 (SHA-256), y luego al hash resultante se le aplica el hash de nuevo con el resumen de mensajes de evaluación de primitivas de integridad de RACE 160 (RIPEMD-160), el resultado se conoce simplemente como una “clave pública”. picadillo.” Recuerde que las funciones hash no se pueden revertir, por lo que, si conoce el hash de clave pública de alguien, puede enviarle fondos pero no puede determinar cuál es su clave pública (y mucho menos su clave privada).

Una vez que se obtiene el hash de la clave pública, se requieren algunos pasos más para crear una dirección. Para obtener la dirección, agregue el byte de versión (normalmente 0x00 para el protocolo Bitcoin) al comienzo del hash de clave pública. Esa nueva cadena se vuelve a codificar con SHA-256. Los primeros cuatro bytes (32 bits) de ese hash (considerado la suma de comprobación) se agregan al final del hash RIPEMD-160 anterior, luego la cadena completa se convierte de una cadena de bytes a una cadena codificada en base58. Esta es la dirección.

Las direcciones de Bitcoin siempre comienzan con un “1”, “3” o “bc1”, lo que las hace fácilmente distinguibles de las claves públicas y privadas.

Podemos pensar en usar una dirección como asegurar de manera efectiva la clave pública, que técnicamente se puede compartir públicamente. Lo único que debe mantenerse en secreto es la clave privada de Bitcoin. Pero, si hay disponible una capa adicional de seguridad, tiene sentido usarla como un dispositivo a prueba de fallas. Además, las direcciones son mucho más cortas y fáciles de administrar que las claves públicas, por lo que brindan una mejor experiencia de usuario.

¿Cómo funciona una clave privada de Bitcoin?

Veamos un ejemplo básico de cómo se usa una clave privada en una transacción.

Supongamos que Alice quiere comprar un café con leche en Bob’s Coffee Shop. El precio de un café con leche es actualmente de 0.0005 BTC. Antes de que ocurra la transacción, los fondos de Alice están seguros en su billetera. Alice solo necesita proporcionar dos cosas a la red Bitcoin para completar la compra: su clave pública y una firma digital de su clave privada Bitcoin.

Recuerde que las firmas digitales son una forma segura de verificar públicamente la propiedad de la clave privada sin tener que revelar la clave privada. Se puede pensar en una firma digital como una contraseña de un solo uso generada para cada transacción única.

En nuestro ejemplo, siempre que Alice sea la única persona que conoce su clave privada de Bitcoin, también es la única persona que puede crear la firma digital necesaria para gastar fondos de su billetera. Digamos que Alice tiene 1 BTC en su billetera antes de comprar un café con leche. Alice crea una firma digital única para los 0.0005 BTC necesarios para comprar un café con leche. La transacción se transmite a la red de Bitcoin y es confirmada por los nodos de Bitcoin. Este 0.0005 BTC ya está disponible en la billetera perteneciente a Bob’s Coffee Shop. Nadie más, incluido Bob’s Coffee Shop, puede gastar los 0.9995 BTC restantes en la billetera de Alice.

Si Alice u otra persona intenta utilizar la misma firma digital para una segunda transacción, los nodos de Bitcoin siempre la rechazarán. Una segunda transacción requeriría una firma digital nueva y única.

Formatos de clave privada de Bitcoin

Como se discutió, existen múltiples formatos en los que se puede expresar la misma clave privada. Los dos formatos que cubrimos al principio del artículo, binario y decimal, casi nunca se usan. Son útiles para generar una clave privada de Bitcoin, pero la mayoría de las aplicaciones de billetera usan otros formatos. En particular, las carteras suelen utilizar formato hexadecimal, de importación de cartera (WIF) y / o formato de importación de cartera comprimido (WIF comprimido).

Echemos un vistazo a estos tres formatos de clave privada más comunes.

Hexadecimal

El hexadecimal es una notación que usa solo el 0—9 digital numérico y las letras A — F. Esto hace que los datos expresados ​​en hexadecimal sean más fáciles de leer. Las claves privadas de Bitcoin escritas en formato binario o decimal se pueden convertir fácilmente a hexadecimal.

Aquí está la misma clave privada de Bitcoin que expresamos en binario y decimal al comienzo del artículo convertida a hexadecimal.

WIF y WIF comprimido

El formato de importación de billetera (WIF) y el formato de importación de billetera comprimido comprimido (WIF comprimido) son los formatos más utilizados para las claves privadas de Bitcoin. Aportan dos ventajas principales sobre los formatos mencionados anteriormente. Primero, son mucho más cortos. Esto ayuda a reducir los errores de copiar / pegar. En segundo lugar, utilizan el código base58Check para comprobar posibles errores. Eso hace que los formatos WIF sean muy beneficiosos desde la perspectiva de los usuarios finales. Las claves privadas codificadas en Base58Check para WIF siempre comienzan con un “5”, y las claves privadas WIF comprimidas siempre comienzan con una “K” o “L”.

Es fundamental comprender que WIF comprimido no se refiere a la compresión de claves privadas. Las claves privadas de Bitcoin no están comprimidas ni descomprimidas. De hecho, es posible que observe que el formato WIF comprimido, como se ve en el siguiente ejemplo, es un byte más largo que WIF. Se llama “WIF comprimido” porque indica al software que derive la clave pública comprimida de él. De manera similar, el “wif sin comprimir” indica al software de la billetera que obtenga una clave pública sin comprimir.

Por supuesto, tanto la clave privada WIF como la clave privada WIF comprimida se pueden convertir fácilmente al otro formato. En ese sentido, tanto la clave pública comprimida como la clave pública no comprimida pueden derivarse del WIF o del WIF comprimido. Puede que solo requiera un paso adicional de conversión al principio.

Con una herramienta como esta, puede convertir fácilmente una clave privada de Bitcoin entre varios formatos. Usando la misma dirección anterior en formatos hexadecimales, obtenemos los siguientes resultados:

Clave privada WIF:

Clave privada WIF comprimida:

Otros formatos de claves privadas de Bitcoin

Si bien WIF y WIF comprimido son los formatos más comunes para las claves privadas de Bitcoin, hay varios otros formatos que están comenzando a ganar popularidad. Aprendamos más sobre ellos.

Mini clave privada

Similar a WIF, las mini claves privadas también están codificadas en Base58Check para evitar errores tipográficos y de copiar / pegar. Es importante tener en cuenta que las mini claves privadas solo se pueden crear desde cero, lo que significa que no puede convertir una clave privada de tamaño completo en una mini clave privada. Sin embargo, puede convertir una mini clave privada en una clave privada de tamaño completo.

Las mini claves privadas pueden tener tan solo 30 caracteres. Comienzan con una “S” y se ven así.

BIP38

El Protocolo de mejora de Bitcoin 38 (BIP38) proporciona una forma de cifrar una clave privada de Bitcoin con una frase de contraseña larga compuesta de palabras legibles por humanos. Con este paso adicional de cifrado, es posible compartir de forma segura la clave privada cifrada con un tercero. Sin la clave privada de Bitcoin y la frase de contraseña correcta, es imposible acceder a los fondos almacenados en esa billetera.

Por ejemplo, la dirección y la clave privada cifrada se pueden imprimir en un bitcoin físico, mientras que la frase de contraseña se almacena en una ubicación separada o se memoriza. Aunque otros puedan conocer la clave privada, los fondos siguen estando seguros.

En cualquier caso, el cifrado BIP38 requiere que el propietario de la billetera proporcione la clave privada de Bitcoin cifrada junto con una frase de contraseña adicional para acceder a una billetera BTC y gastar fondos. BIP38 se puede considerar como una forma de autenticación de dos factores en la que el propietario de la billetera establece una contraseña personalizada y reutilizable. Al igual que con las contraseñas tradicionales, debe elegir una frase que sea difícil de adivinar para los demás.

Las claves privadas BIP38 siempre comienzan con un “6P” y tienen un aspecto parecido a esto.

Obtenga más información sobre los fundamentos de Blockchain

Si desea obtener más información sobre la tecnología blockchain, consulte la serie Blockchain Fundamentals de Komodo. Estas publicaciones explican una amplia variedad de temas cruciales de blockchain, desde cosas como la minería de criptomonedas y el comercio de márgenes hasta la Prueba de trabajo y la Prueba de participación.

Comience su viaje de blockchain con Komodo hoy.