Bitmessage : 2º Parte

En el post anterior os hablé sobre Bitmessage. En éste, vamos a ver qué nos ofrece esta aplicación de correo electrónico distribuido.

En primer lugar, instalamos el cliente. Desde la web oficial, vemos que está disponible para Windows, Mac OS y, en el caso de Linux, tenemos el código fuente. Está escrito en Python. De hecho, el protocolo se llama Bitmessage y, el cliente, pybitmessage.

Una vez iniciamos la aplicación, nos pide si necesitamos configurar la red, o no es necesario. Esto es por si necesitamos indicar un proxy o similar.

Una vez iniciado, se conectará con la red y empezará a descargar la lista de mensajes, claves públicas, etc. Hay que recordar que su funcionamiento está inspirado en el protocolo de Bitcoin. Todos los mensajes pasan por todos los nodos y, la forma de saber si es nuestro o no, se basa en si tenemos la clave privada para descifrarlo.

Lo primero que debemos hacer es crearnos una identidad. Podemos tener tantas como queramos. En este punto, tenemos dos opciones:

1.- Identidad no determinística (por defecto): Se crea de manera aleatoria y debemos salvar las claves, ya que no tenemos posibilidad de recuperarla, si las perdemos.

2.- Determinística: Se crea asociada una passphrase. Tiene la ventaja de que, si tenemos la passprhase, podemos regenerar la cuenta (también es necesario recordar la versión y el stream).

Bien, veamos qué opciones más tenemos. En las opciones de menú, si empezamos por File, veremos que, desde ahí, podemos regenerar una identidad determinística y limpiar la papelera. En realidad, la opción Manage Keys, sólo nos indica la ruta en la que se encuentra el key.dat y nos informa que, para cambiar la configuración de cada una, debemos editar ese fichero y asegurarnos que el cliente está cerrado, para que no se sobreescriba.

En Settings, tenemos opciones interesantes. Dentro de User Interface, la más interesante quizás sea la de ejecutar en modo portable. Esto hace que toda la información se guarde en el mismo directorio donde se ejecuta pybitmessage, lo que nos permite tenerlo, por ejemplo, en un pen.

En el apartado de Network Settings, podemos especificar el puerto en el que escucha pybitmessage (para que otros clientes se conecten, si tenemos el puerto abierto), y nos permite la configuración de proxys, por ejemplo, para utilizar Tor.

Los dos siguientes apartados, Demanded Difficulty y Max Aceptable difficulty, nos permiten ajustar los valores de la prueba de trabajo que realiza nuestro nodo para enviar un mensaje. La idea de esto es que se genere un coste computacional a la hora enviar un mensaje, lo que ayuda a combatir el spam.

También tenemos la opción de integrar el cliente con NameCoin. Podemos registrar nuestra identidad con NameCoin, de manera que es más fácil de recordar y aquí es el sitio para indicar dónde tenemos el cliente para poder resolverla. Utilizando NameCoin, es mucho más difícil poder obtener la dirección real de bitmessage.

La última opción nos permite configurar el reenvío de mensajes. Esto es porque, cuando enviamos un mensaje, éste permanece en la red dos días. Si el destinatario no se ha conectado, el mensaje se borrará y no lo recibirá. En el caso de que no se haya entregado el mensaje, aquí indicamos el máximo de tiempo que bitmessage reenviará el mensaje. En ese período, se irán reenviando los mensajes, aumentando el intervalo de días, hasta que expire el tiempo establecido o le llegue al receptor.

Bien, ya hemos visto las opciones de configuración del cliente. Ahora, pasemos al resto de opciones.

Para enviar un correo, es sumamente sencillo. Basta ir a Send e indicar desde qué identidad queremos enviarlo. Tenemos una libreta de direcciones a la izquierda, que nos permite seleccionar de ahí a quién queremos enviar el correo. También podemos enviarlo a todos nuestros suscriptores.

Desde aquí, también se puede especificar cuánto tiempo de vida tendrá el mensaje. Es el parámetro TTL. Si bien, podemos poner un genérico en las opciones vistas anteriormente, aquí podemos especificar un TTL por cada mensaje.

En Subscriptions veremos los mensajes de las direcciones a las que estemos suscritos. Esto son como una especie de listas de correo. Si alguien se suscribe a nuestra identidad, ahí será donde verá los mensajes que nosotros enviemos al broadcast (a todos los suscriptores). El cliente tiene una suscripción por defecto, que nos informa de versiones nuevas del cliente.

Los Chans son una especie de lista de correo distribuida. Son un tipo de direcciones especiales. Podemos crear/suscribirnos a un chan. Al hacerlo, tendremos la clave pública y privada, es decir, será una identidad más que tendremos disponible para enviar correos. Para suscribirnos a un Chan, lo haremos por su nombre. Si éste es suficientemente complejo, como para no adivinarlo fácilmente con fuerza bruta, tendremos una lista de correo distribuida, relativamente privada. Todos los que se unen a un Chan, tendrán las claves públicas y privadas y, por otra parte, con que sólo uno de los suscriptores del Chan esté operativo, la lista seguirá funcionando.

Y, por último, podemos configurar una lista negra o blanca, de las direcciones que queremos bloquear o permitir que nos envíen correos.

Como veis, es un protocolo muy interesante, con un cliente que es muy sencillo de utilizar.

¡Espero que os haya gustado!

@MMontesDiaz