Una de las características más básicas de Bitcoin (y también más útiles) es la capacidad de firmar y verificar un mensaje usando las claves públicas y privadas de las direcciones Bitcoin, algo que te enseñaremos a utilizar en el siguiente artículo. 

Una de las funciones más interesantes de Bitcoin, y tal vez menos conocidas para quienes empiezan en el mundo cripto, es su capacidad de firmar un mensaje con tu dirección bitcoin, e incluso, cifrar y verificar la autenticidad de mensajes de forma segura. Un proceso que es posible gracias a que Bitcoin usa criptografía asimétrica.

Por ejemplo, es posible que una persona firme un mensaje con su dirección bitcoin, para demostrar al mundo que el creador de un determinado texto es la persona que posee la clave privada de una dirección Bitcoin concreta. Y no es algo exclusivo de Bitcoin, muchas otras criptomonedas tienen esta capacidad, pues sus fundamentos criptográficos de clave pública / privada son los mismos. Todo ello sin exponer información sensible.

Pero ¿Cómo podemos hacer eso de esta función? Pues bien, eso lo descubrirás en este interesante artículo, donde te mostraremos como realizar este procedimiento.

Utilidad de firmar mensajes usando tu dirección de Bitcoin

Ahora bien ¿Cuál es la utilidad real de firmar mensajes usando tu dirección de Bitcoin? Como comentamos al principio, realizar este procedimiento te permite hacer pública una determinada información que puede ser verificada por cualquier persona sin mayores problemas y con total seguridad.

Existe una gran variedad de casos de uso donde esta función puede ser de utilidad. A continuación, te mostraremos algunos de esos casos de usos:

  1. Verificación de procedencia de fondos. Por ejemplo, si hemos decidido realizar una compra usando bitcoins de una dirección, pero nos solicitan una verificación de que esa dirección y fondos son nuestros, entonces firmar un mensaje con esa dirección soluciona el problema.
  2. Poder hacer pagos a una dirección concreta de forma segura. Por ejemplo, nos envían un mensaje, y necesitamos saber que el mensaje no ha sido interceptado y modificado (ej: cambiando la dirección para el pago). Para ello, se firmaría el texto completo (dónde también aparece la dirección a donde pagar) y añadiremos la firma digital. Así, el destinatario podría tomar el mensaje, la dirección y la firma y verificar que todo es correcto.
  3. Como un previo para la configuración de monederos multisig o multifirmas. Si un grupo de personas han decidido crear un monedero multisig un paso previo podría ser verificar que efectivamente tenemos el control de la dirección que nos corresponde y para ello podemos firmar un mensaje usando dicha dirección.
  4. Poder demostrar que eres el dueño de una dirección. Esto es algo que se le pidió a Craig Wright, pues grita a los 4 vientos que él es Satoshi Nakamoto, pero no es capaz de demostrar que tiene control sobre las direcciones atribuidas a Satoshi Nakamoto. Simplemente firmando un mensaje con cualquiera de las direcciones lo podría demostrar. Uno más de los motivos por lo que se le conoce como un estafador.

En este punto, queda claro que es una función bastante útil y que puede adaptarse a las necesidades de quien vaya a usar la misma y, con un poco de creatividad, encontrar nuevos y revolucionarios escenarios.

Herramientas para firmar y verificar mensajes usando tu dirección Bitcoin

Ahora bien ¿Qué necesitamos para poder hacer uso de esta función? Pues bien, la verdad es que cualquier monedero Bitcoin con la función “Firmar y Verificar Mensajes” te permite usar esta función. Entre los monedero con esta capacidad podemos mencionar:

  1. Bitcoin Core, el software oficial de Bitcoin te permite hacer uso de esta función a la perfección.
  2. Electrum Wallet, es otro famoso monedero que te permite hacer uso de esta función sin mayores complicaciones.
  3. Trezor Wallet, este monedero hardware también cuenta con la función de firmar y verificar mensajes en su interfaz.
  4. Herramientas online Bitcoin Signature Tool, te permite perfectamente hacer eso de esta función.
  5. Librerías de código open source, como bitcoinjs, para crear tus propios programas e ideas.

Firmando y Verificando información usando Bitcoin Core

Para saber cómo manejar esta función hemos elegido usar como ejemplo Bitcoin Core, el software oficial de Bitcoin. La razón para ello es que este es el monedero más completo y seguro de Bitcoin que existe de momento, además de que usar esta opción con este monedero es bastante sencillo.

Lo primero que deberás hacer es descargar e instalar el monedero Bitcoin Core en tu ordenador. Para ello, te recomendamos ir a la web oficial y descargar la versión de Bitcoin Core para tu sistema operativo. Realizada la instalación, entonces podremos comenzar a usar las opciones de Verificar y Firmar mensajes.

Firmar un mensaje usando Bitcoin Core

Para firmar un mensaje usando Bitcoin Core, lo primero que deberás hacer es ejecutar el programa principal, lo que dejará con una interfaz como esta.

Pantalla principal de Bitcoin Core

En ese punto, antes de empezar lo primero que deberás hacer es realizar una ligera configuración del monedero. Esto es necesario debido a que de momento la firma de mensaje solo es soportada usando dirección legacy (aquellas direcciones que empiezan con “1”), quedando a la espera de la activación del BIP-322 para habilitar la firma de mensaje usando todas las direcciones soportadas por Bitcoin.

En tal sentido, lo primero que deberás hacer es ir al menú “Configuración” y hacer clic en “Opciones”.

Pantalla de configuración de Bitcoin Core

Una vez allí, deberás hacer clic en “Abrir archivo de Configuración” y, una vez abierto el archivo, deberás incluir la siguiente línea:

addresstype=legacy

Guarda la configuración y reinicia el programa para que los cambios tengan efectos. Este cambio lo que hace es ordenarle a Bitcoin Core que use de forma predeterminada direcciones legacy para generar nuestras direcciones, así podremos usar la firma de mensajes usando Bitcoin Core sin problemas.

Ahora bien, realizados estos cambios y reiniciado Bitcoin Core, lo siguiente será generar una dirección nueva para que sea nuestra base de firma de mensaje. Esta dirección es la que te permitirá usar la función de firmar un mensaje. Para generar esta dirección, deberás dirigirte a la opción “Recibir” y hacer clic en el botón “Crear nueva dirección para recepción”.

¡ADVERTENCIA!

Ten mucho cuidado con modificar valores en el archivo de configuración de Bitcoin Core. En este caso, nuestra recomendación es válida y reconocida por la comunidad y los desarrolladores de Bitcoin, pero pueden haber casos donde personas maliciosas pueden darte instrucciones para obtener acceso a tu monedero sin darte cuenta. Siempre ten cuidado, investiga sobre lo que haces antes de hacerlo.

Así que nuestra dirección a usar para la firma del mensaje es la 18FgxNdGSemUZNybpdrgdr1rbdRFbuAwL9

Ahora bien, para firmar un mensaje lo primero que deberás hacer es ir al menú “Archivo” y seleccionar “Firmar mensaje”, así se desplegará ante ti la siguiente nueva ventana.

En este punto, deberás tomar la dirección ya generada y colocar la misma en el campo donde se te solicita la dirección. Hecho esto, deberás escribir el mensaje a firmar, en nuestro caso el mensaje es:

Esta es una prueba de firma de mensaje usando una dirección de Bitcoin, para Bit2Me Academy.

Realizado estos dos puntos deberá quedarte algo como esto:

Mensaje a firmar en Bitcoin Core

Para terminar con el proceso de firma, solo deberás hacer clic en el botón “Firmar mensaje”, el resultado se muestra de la siguiente forma.

El resultado es una firma digital que es la siguiente:

IJQ9jOGl5ZdjmsUNDYmAwUlFqfjp/FfAi5dzdgiQTfjheDYmBxfBq40URLPOoggonqRYtGydTdwmiRn8ZElcSjc=

Como puedes ver el proceso es bastante sencillo, y no esconde mayor dificultad que realizar los pocos pasos de forma correcta.

Verificar un mensaje usando Bitcoin Core

Para verificar un mensaje usando Bitcoin Core, el proceso es bastante parecido. En primer lugar, deberás ir al menú “Archivo” y seleccionar la opción “Verificar mensaje”, con lo cual te aparecerá la siguiente ventana.

En este punto, para realizar la verificación deberás copiar la dirección de Bitcoin que se atribuye el mensaje, en este caso usaremos la dirección del ejemplo anterior, la cual es: 18FgxNdGSemUZNybpdrgdr1rbdRFbuAwL9.

El segundo paso es, tomar el mensaje original y copiarlo en el siguiente área:

Esta es una prueba de firma de mensaje usando una dirección de Bitcoin, para Bit2Me Academy.

Y finalmente colocamos el mensaje codificado y firmado que se atribuye esa dirección, que en nuestro caso es:

IJQ9jOGl5ZdjmsUNDYmAwUlFqfjp/FfAi5dzdgiQTfjheDYmBxfBq40URLPOoggonqRYtGydTdwmiRn8ZElcSjc=

Al colocar todos estos textos, nos quedará lo siguiente:

Verificando mensaje en Bitcoin Core

Para finalizar, solo debemos presionar el botón “Verificar mensaje” y así podremos verificar la autenticidad del mensaje y que ciertamente ha sido emitido por quien controla esa dirección.

Seguridad de este sistema

Seguramente te preguntarás si este sistema es realmente seguro y no puede ser roto de alguna manera. Si esa es una de tus preocupaciones quizás te guste saber que no tienes nada de qué preocuparte: esta función es segura, de hecho es altamente segura.

Esto es posible gracias a que Bitcoin usa el algoritmo de firma digital ECDSA para realizar todas estas operaciones, y de momento, dicho algoritmo junto a la curva secp256k1, es considerado altamente seguro. En pocas palabras, la seguridad tanto de Bitcoin, como de esta función está protegida por criptografía muy potente que no ha sido rota de momento. Para que te hagas una idea de su seguridad debes saber que este proceso se basa en una seguridad superior que casi cualquiera que uses en tu día a día en algunos procesos con la banca online, mensajería, telefonía,…

Por otro lado, y como puedes ver, es un proceso realmente sencillo, de hecho, si conoces de sistemas de cifrado y descifrado de mensajes como PGP (o GPG) te darás cuenta que funciona usando la misma base de principios.

El objetivo de todo esto es brindarte una herramienta para enviar y verificar información de forma segura y sin ningún tipo de intermediario para ello. Como siempre, Bitcoin apunta a la descentralización desde sus inicios y funciones como estas solo dan fe de ese esfuerzo.