domingo, 1 de diciembre de 2024

Brave New World - El bityen

Hasta inicios del siglo 21, el dinero era moneda o papel, que solía transferirse digitalmente a través de internet, pero la parte digital de una moneda no es nada, es una mera anotación fiscal, no existe un objeto digital, aunque puedan ser enviados a una cuenta bancaria.

Por el contrario, los bityen no existen como moneda física, pero si que son un objeto digital. Son un paquete de datos (encriptados) y no solo un elemento contable.
Aunque de peso despreciable, al existir como ficheros ocupan espacio de disco duro. Anotar en una registro contable que alguien posee 9999999999 dolares ocupa menos (prácticamente 0) que guardar 1 simple bityen (es la diferencia entre una anotación fiscal y realmente guardar el dinero).
Afortunadamente para quienes almacenan bityens, su peso es despreciable y la capacidad de las redes informáticas infinita a efectos prácticos. 
Los bityens como objetos digitales que son, no funcionan de la misma manera que, p.ej, los dólares. Cuando un programa le dice a otro que "le envía 1000 dólares", simplemente son números. Un programa se resta 1000, y el otro se los suma, dejando (normalmente) una traza de que el dinero ha viajado de A a B. Sumarse y restarse el capital es la forma de reflejar ese traspaso.
 
En cambio con los bityens, no se mueven anotaciones fiscales, si no que los pequeños objetos encriptados son movidos de un lado a otro como ficheros. Los mismos programas A y B podrían no ser capaces de procesar estos ficheros/bityens. Y la gran mayoría no lo son, ya que los bityens son ilegales en cualquier legislación que pretenda tener control sobre el movimiento de capitales. No obstante, no supone ningún esfuerzo que un software de contabilidad sea capaz de trabajar con bityens, y que pueda o nó depende en buena medida de donde ha sido creado y su legislación. No es ningún problema para el software procesar ambas clases de monedas.


¿Qué es un bityen?

Técnicamente, un bityen es un datagrama (una matriz de datos) que se crea acorde a un patrón público que todo el mundo puede conocer, simplemente para que el software pueda decir "esto es un bityen".
Luego veremos que este datagrama es al final un ínfimo paquete de datos encriptados, y por ello no legible en principio. Un bityen no se puede saber que es un bityen si no es desencriptado. Cualquier fichero encriptado podría ser un bityen, o muchisimos bityens (esto ayuda a que no sean detectados al surcar la red).
También se envuelve dentro del cifrado datos a modo de ruido para variar su "peso", y que no se pueda reconocer que es un bityen o multiplos de bityen solo por el peso del paquete (misma cantidad de bityens, generaría un fichero del mismo peso cifrados de la misma manera si no hubiese aleatoriedad). 

En sí mismo no tiene valor, no representa una riqueza ni es un trabajo laborioso crearlo que nos permita establecerle al bityen un valor. Todo lo contrario, es un diseño público (un ingenioso trabajo de programación) y cualquier podría crear bityens si estuviese dispuesto a devaluarles y que no valiesen nada. 

Alguien podría plantear que no es moneda real, ya que su valor no se respalda en el valor de crearlos (valor-trabajo) o de utilidad (valor de uso), no se respalda mas que en el consenso que sus usarios estén dispuestos a pagar por un bityen (valor de cambio), pero como cualquier moneda, que también es moneda fiduciaria (basada en deuda, no moneda mercancia, basada en algún material escaso y preciado, como el oro o el agua).

El valor del bityen actualmente es 1 dolar. Al menos teóricamente. Con 100 dolares podrías comprar 100 bityens, y 100 bityens te darían 100 dolares... si no se cobrase históricamente una tasa del 10% en cada cambio (por 100 dolares recibes 90 bityens, y si los cambias a dolares recibes 81). Hay cambistas que pueden ofrecer cambios mas o menos favorables según si están aprovisionando bityens y quieren pagar mas por ellos, prefieren liquidez legal, etc.
 
Como con las viejas criptodivisas, existen otras variantes derivadas de él con otras particularidades (forks, en la jerga de los programadores), pero el bityen se ha convertido en un standar que marca el camino, tanto para el submundo criminal como para los anarquistas enemigos del estado o los ciudadanos comprometidos con su soberanía económica.


La red de bityens

Los bityens se usan de forma diferente a la moneda normal. La moneda se paga como una transferencia normal a un destino dejando un rastro como toda operación que se realiza. Los bityens en cambio, necesitan sí o sí otra forma de funcionar, ya que están diseñados para ser completamente anónimos;

- El emisor no conoce el destino del dinero
- El receptor no conoce el origen del dinero
 
(Con moneda tradicional, puedes enviar dinero a una cuenta sin saber quien está detrás, o recibirla sin saber de quién, pero sabes que cuenta está implicada, aunque esta sea temporal y deje de existir. Los bityen hacen esto automáticamente. Además, no queda ningún registro como con las operaciones legales)
 
- Todo ajeno a la transacción no ve el importe de la misma, ni quien es el receptor ni el emisor, ni el momento en que se realizó.

Veremos mas adelante como logran esto, básicamente, necesitan una red de usuarios de cierto volumen para que las transferencias no se sepa de quien son, y puedan llegar a su destino enrutadas de múltiples formas posibles. Veremos que la red de bityens además de ser el ecosistema por donde los bityens se mueven, tiene también sus medidas de seguridad para impedir la falsificación.
 
La definición y programación de estos protocolos es autoría de un grupo de hackers japoneses que se rebelaron contra el control estatal, la muerte de la privacidad, y la manipulación perversa de los mercados.

Los bityens funcionan con sus monederos. Si una ciudad tiene 20000 habitantes, quizás 10000 tengan monedero (es el problema de los bityens, que requiere un volumen de usuarios para ser efectivo, aunque es posible e incluso normal que un usuario disponga de mas de una cuenta, con lo que el número de monederos aumenta), y lo que los bityens hacen es lo siguiente;

Cada monedero tiene 2 claves, una privada y una publica (relacionadas entre sí). La pública se usa para encriptar datagramas por si alguien accediese a ellos (solo podrían ser desencriptados mediante la clave privada). La privada puede ser la misma, o no. Finalmente en cada transacción (o incluso en cada subtransacción dentro de la misma transacción si se quiere mas seguridad) se genera otro par de claves temporales como luego veremos.  

Los monederos generan cuentas temporales, de tal forma que para cobrar, nadie expone su cuenta, si no que en el momento, genera múltiples cuentas temporales y dice "págame en estas cuentas (para tal fecha)". El pagador entonces ordena el pago a su vez generando multiples cuentas temporales desde las que se paga a las destinatarias, pero no necesariamente al momento, si no que el pagador puede definir un "para cuando estará pagado" (o definir su propio pago de forma precisa) y el monedero va enviando bityens en el tiempo desde las cuentas creadas a las cuentas de destino, como un goteo, y va destruyendo las cuentas temporales a madida que han hecho sus envíos.

Cuanta mas gente sea parte de la red, mas opciones habrá de enrutar los paquetes, cada uno de una forma distinta, para que lleguen desde el origen hasta el destino, pudiendo repetir nodos por los que ya ha pasado, tardar diferente cantidad de tiempo en salir de cada nodo (retardo), y además la propia red envía siempre desde los billeteros paquetes cifrados (no se puede saber si son criptos) para "hacer ruido".
 
14 nodos. 108 posibles rutas sin repetir nodo y asumiendo que haya 4 saltos.

Entonces los bityens viajan por la red de monederos hasta llegar a destino, donde las cuentas temporales también se destruyen. El emisor sabe las cuentas temporales a las que ha enviado, pero realmente no sabe que cuenta está detras de ellas, no sabe a quien está pagando, y el receptor tampoco sabe de quien cobra.
 
En el viaje hasta su destino, los bityens pueden ser interceptados, y si asumimos que lo que hemos interceptado es un bityen o fracción dé, es evidente que en ese momento se estaba produciendo un pago, ya que tenemos parte de él, pero ¿a que fecha debía estar completo el pago? ¿de cuando es esa transferencia? No podemos tener mas que el dato de que en este momento se estaba produciendo una transacción, pero no existe una fecha como tal en la cual se realizó la transacción. No podemos saber que eso interceptado es la totalidad de un pago realizado en ese momento concreto.
Los propios monederos no almacenan la información de quien les envia pagos ni cuando, limitándose a recoger un balance de bityens en propiedad. Si un monedero fuese comprometido, no aporta información sobre la red.

Los propios monederos generan pagos fantasma de forma (enfatizadamente) aleatoria. Van mal cifrados, de forma que el receptor no cobra realmente el dinero al no poder autenticarlo, de forma que incluso si pudiesemos saber que se están movimiento pagos, no tenemos ni el dato de que esté habiendo pagos, ya que podrían ser señuelos y/o pagos reales.

Naturalmente, siempre existe la opción de estar recibiendo un pago, o haberlo recibido, y no cumplir tu parte del acuerdo, como con cualquier moneda. Solicitar un pagos muy diferidos en el tiempo suele ser visto con desconfianza mas que como seguridad, ya que en una red anónima en la que no puedan lanzarte represalias, la sombra de que vayas recogiendo parte del dinero y desaparezcas es demasiado real. Negociar un pago por adelantado es igualmente escabroso por esto mismo, por lo que un 50/50 suele ser habitual.

Para anonimizar los pagos, se aplica el principio básico de criptografía asimétrica, pero introduciendo mas monederos en el proceso para formar un anillo de firmas.

Quien recibe, expone de alguna manera las direcciones temporales a las que se debe envíar (hay servidores seguros donde es habitual que los miembros de la comunidad tengan acceso, y puede publicarse la información temporalmente allí) una clave pública temporal, y el momento al cual debe estar completada la transferencia. En breve esta información es borrada.

Quien envía, tendrá en su billetero bityens (datagramas encriptados), los desencripta volviendo a convertirlos en datagramas, y los cifra de nuevo con la clave pública suministrada, pero el monedero automáticamente toma otros monederos que también suministran automaticamente claves públicas temporales, usando propiedades matemáticas que garantizan que cualquiera de esas claves públicas será reconocida como clave pública del cifrado.

Esto es importante para el anonimato del bityen ya que incluso si tuviesemos esa clave pública temporal y la probasemos contra el bityen, solo podemos saber que ese monedero podría ser el emisor de la transferencia, pero podrían serlo también un número variable de monederos, no es una certeza. (Si probamos el resto de claves señuelo, también podrían ser el firmante original, nuevamente sin certezas). E incluso sabiendo que una de esas N firmas ha sido la firmante real ¿que hacer a continuación? ¿que monedero hay tras las direcciones temporales del envio? ¿Y que identidad tras ese billetero? 
 
Es habitual que existan en paralelo conversaciones seguras (vpn o similar) en las que las partes hablan, mientras los criptos se mueven por su propia red. La red de bityens no da soluciones integrales para comunicarse, solo para transferir bityens.

Cuando se recibe el bityen, se desencripta usando la clave privada temporal asociada a la pública temporal expuesta, y se obtienen los datagramas, que automaticamente el monedero nuevamente encripta con su clave pública general por si alguien accediese a su billetero (necesitaría su clave privada general para desencriptarlos).


Falsificar bityens

En teoría es posible crear bityens offline sin introducirlos a la red y pagar con ellos en un dispositivo habiendo generado dinero de la nada y sin que la red sepa que existe, pero no es la forma normal de trabajar en la red bityen, y cuando esos bityens llegasen a la red antes o después acabarían por devaluar la moneda. Esto es lo que se conoce como un bityen falsificado, una jugarreta a tu cobrador entregándole bityens que no salen del circuito normal.
Cosa diferente es, en vez de crear un bityen nuevo offline, copiar uno que ya existe (a fín de cuentas son objetos digitales) que es lo que se conoce como un bityen duplicado. Un bityen falsificado es un datagrama que no está reconocido por la red, la red no sabe que está en circulación. Un bityen duplicado es uno que se ha copiado para tener dos o más. Un bityen  nulo es ambas cosas, una copia de una falsificación.

Cuando la red de monederos detecta bityens duplicados o falsificados, borra todas las copias menos la original. Es práctica habitual entre los cobradores comprobar si los bityens "son buenos" desencriptandoles (si no la red no les reconoce) poniendoles en el monedero y usando la función de la red de buscar duplicidades.  
 
 
Monederos no oficiales

Han surgido algunos monederos derivados del protocolo formal de los bityens (forks), que permiten si se desea, mantener un histórico de sus transacciones hacia y desde las direcciones temporales, algo que no sirve de mucho, pero mientras la transferencia está en curso, puede ser prueba de que la transacción se está realizando.

Y si ambos monederos mantienen histórico, eso es una pequeña falla de privacidad, en tanto teniendo ambos históricos, se tendría a la vista el pago entre ellos. Estos billeteros si que tienen la constancia de pagos incorrectos no cobrados ni pagados fruto de los monederos enviando señuelos.

Por contra, los históricos permiten compartir, mediante otras 2 claves asimétricas (pública y privada) tu "calendario de pagos", todo tu historial, solo pasados, solo futuros, solo el referente a algún pago, o lo que quieras.
Sirve como "historial de crédito" para ver que pagaste (salvando el hecho de que no se puede saber las direcciones temporales a las que pagaste a quien pertenecían), informar de como estás pagando, y el motivo de que esto surgiese, poder tener un control de cuanto enviaste o recibiste tal día, en vez de simplemente tener tu capital actual sin saber lo que ha salido y entrado.

Son datos facilmente falsificables (por que los billeteros no guardan ningún control sobre esas direcciones temporales desechadas, simplemente es texto apuntado en tu billetero) que se envían encriptados para que solo quien quieras los vea. Muchos usan estos monederos, pero no son parte del diseño del bityen como fue planteado. 

Naturalmente, las autoridades se sabe que liberan monederos con puertas traseras y troyanos para ganar acceso a la red, pero como los monederos deben ser de código abierto para tener alguna consideración, cientos o miles de programadores revisando las diferentes alternativas garantizan que estas farsas se descubran. 
También se intenta infiltrar hardware en la red, que bloquea el trafico o lo analiza, lo cual es detectado por los algoritmos de la red y esto causa reconfiguraciones en el enrutamiento de la red, y alertas.