Artículo publicado en Patreon en 2022
eCash aceptado aquí!
Artículo publicado en Patreon para Selenitas, Colonos y Voyager y leído en el L163. Aquí en su versión redactada con imágenes y links de referencia.
Una de las mayores aportaciones de David Chaum la encontramos en 1982, cuando a los 27 años de edad publicó su segundo gran paper "Blind Signatures for untraceable payments" [^1] o "firmas ciegas para pagos no rastreables".
En este paper, Chaum decía que:
La automatización de la forma en que pagamos por bienes y servicios está ya en camino, como se puede observar en la variedad y crecimiento de los servicios bancarios electrónicos que están disponibles para el consumidor.
La estructura final de los nuevos pagos electrónicos puede tener un impacto sustancial en la privacidad personal, así como en la naturaleza y el alcance del uso delictivo de los pagos. Lo ideal sería que un nuevo sistema de pagos abordara ambos conjuntos de preocupaciones aparentemente contradictorias.
Y en su paper proponía:
Aquí se propone un tipo de criptografía fundamentalmente nueva -- las firmas ciegas -- que permiten un sistema de pagos automatizado con las siguientes propiedades:
- 1. Imposibilidad de que terceros determinen el beneficiario, la hora o el importe de los pagos realizados por un individuo
- 2. Posibilidad de que los individuos aporten pruebas de pago o determinen la identidad del beneficiario en circunstancias excepcionales.
- 3. Posibilidad de interrumpir el uso de los medios de pago denunciados como robados.
Ojo a todo esto porque quizá no nos damos cuenta del momento histórico en el que nos encontramos. Todo esto lo dice Chaum en pleno 1982:
ARPANET, el origen de internet que conectaba a 3 universidades californianas era de noviembre de 1969, 13 años antes.
El primer cliente web (el World Wide Web) no llegaría hasta 8 años después en 1990
Y la web no entraría en el dominio público hasta 1993 cuando se levantó la prohibición al uso comercial de internet.
En este contexto tan alejado del internet que conocemos hoy, Chaum ya pensaba en la privacidad de los sistemas de pago electrónico y para ello inventó las firmas ciegas, un criptosistema con el que se podría construir un sistema de pagos privados como el cash físico: el cash electrónico.
Blind Signatures
Y ¿cómo funcionan estas firmas ciegas?
En la criptografía de clave pública tenemos 2 pares de claves:
La clave privada
y la clave pública que se deriva de la privada
La clave pública la conoce todo el mundo y con ella cualquiera puede cifrar información que solo nosotros podremos descrifrar con la clave privada. En cambio, con la clave privada, podemos cifrar información que se descrifra con nuestra clave pública y como ésta la tiene todo el mundo, solo sirve para demostrar nuestra autoría sobre una información concreta. A la acción de cifrar con nuestra clave privada se le llama firmar, mientras que cifrar con la clave pública se le llama igualmente cifrar.
Cuando firmas una información lo normal es que veas y sepas lo que estás firmando. Chaum le dio una vuelta de tuerca a esto y creó un sistema para que puedas firmar algo que no ves y que luego, una vez se te presenta la información ya visible, puedas verificar que esa era la información que firmaste.
En su paper Chaum hace la analogía con un papel de calco o de carbón. Imagina que tienes una información que no puedes revelar y que quieres que tu amigo te la firme sin que sepa que está firmando para luego demostrarle que efectivamente conocías esa información. ¿Cómo lo harías?
Chaum dice que podrías tomar esa información y ponerla dentro de un sobre de papel de calco.
se lo darías sellado a tu amigo y este lo firmaría por fuera calcando también la firma en el contenido del sobre
Al tiempo, cuando ya le puedes mostrar el contenido, lo abrirías y se lo entregarías
Así, el contenido tendría su firma sin él haberlo visto antes
Eso es una firma ciega.
A nivel criptográfico lo que haces es primero de todo cifrar la información con una clave de ocultación (que no es ni tu clave pública ni tu privada. Es una clave adicional que tú creas de forma local).
Una vez tienes la información cifrada, le pasas ésta a tu amigo y él genera una firma ciega con su clave privada.
Cuando recuperas la firma ciega le aplicas un descifrado con tu clave de ocultación y acabas teniendo la información en claro + la firma desoculta.
Cuando le presentas estos 2 pedazos de información a tu amigo, aunque no lo ha visto nunca (el solo vio la información cifrada y la firma sin descifrar), puede verificar criptográficamente que es una firma válida hecha con su clave privada.
Et voila!
Este es el funcionamiento de la invención de David Chaum pero para acabar de ver el potencial que esto podía tener en los sistemas de pago electrónicos, hagamos un fast forward hasta 1989 y 1994.
En 1989, David Chaum fundó su conocida empresa DigiCash [2], compañía con la que quería cristalizar el sistema de pagos de cash electrónico que había empezado a teorizar en 1982.
En mayo de 1994, en la primera conferencia de la World Wide Web de Ginebra [3] Chaum presentó eCash, el primer sistema de cash electrónico sobre una red de ordenadores:
> Se ha demostrado por primera vez el pago desde cualquier ordenador personal a cualquier otra estación de trabajo, a través del correo electrónico o de Internet, utilizando la tecnología del dinero electrónico. "Se puede pagar el acceso a una base de datos, comprar un software o un boletín por correo electrónico, jugar a un juego de ordenador a través de la red, recibir los 5 dólares que te debe un amigo o simplemente pedir una pizza. Las posibilidades son realmente ilimitadas". [4]
Este sistema del que habla David Chaum es el que conoceremos hasta nuestros días como Chaumian eCash o Cash electrónico de Chaum.
Funcionamiento del Chaumian eCash
Para entender cómo funcionaba vamos a necesitar a 3 actores:
Un banco que hará de casa de la moneda o ceca
Alice, que hará de emisor del pago
y Bob que hará de receptor del pago.
En los tiempos de Chaum, el único dinero que se podían imaginar utilizar de forma electrónica era el dólar y por ello necesitaban que todo empezara donde están los dólares del sistema FIAT, en un Banco. Los bancos hacían de Mint y se encargaban de acuñar las monedas de eCash.
Para empezar a operar, un banco debía ejecutar un software para Mints que permitía:
Generar nuevas monedas de eCash
Llevar un registro de todas las generadas y gastadas para evitar dobles gastos.
Con esto en marcha, aparece Alice, una usuaria de un banco que ha implementado el sistema y que desea retirar parte de su balance en tokens de eCash para sus compras por internet.
Alice tiene instalada la Cyberwallet de Digicash [5] -- que es así como se llamaba -- y con ella se conecta a su banco y solicita retirar 10 dólares en tokens de 1 $
Para ello, la wallet de Alice crea 10 pedazos de información aleatoria y los oculta con su llave de ocultación. Se los envía al banco y éste los firma otorgándole en su balance un valor de 1$ por pedazo de información. Al terminar, el banco le envía Alice las 10 firmas generadas con la clave privada del Banco y éste le debita 10 dólares de su cuenta.
Alice - 10$ en balance de cuenta bancaria y + 10 en tokens eCash que ya no están en el banco.
Alice, desoculta las firmas recibidas del Banco y acaba teniendo 10 pedazos de información aleatoria + 10 firmas desocultas del banco. La combinación de cada pedazo de información con su respectiva firma crean lo que conocemos como Token de eCash.
Alice ahora decide pagar a Bob -- que también tiene una cyberwallet -- 10 dólares por un servicio online.
Alice se conecta con la Cyberwallet de Bob y le envía tokens que suman esos 10 dólares. Bob recibe esos tokens y para verificar que sean buenos, antes de darle el servicio online a Alice se comunica con el banco y le envía los tokens que Alice le acaba de enviar.
El banco no ha visto esos tokens en su vida:
Cuando vio los pedazos de información los vio ocultos y las firmas que él envió no estaban así por lo tanto no puede relacionarlos con Alice
Pero en lugar de denegarlos y ya, verifica contra su Clave privada esos tokens y se da cuenta que efectivamente los emitió él. Con esto, tacha de su registro 10 tokens de 1 dólar, anota los tokens que acaba de verificar en su libre contable de tokens gastados y le da crédito a Bob por valor de 10$.
Ahora Bob puede quererlos en eCash Tokens y entonces entre Bob y el Banco se realiza de forma automática un retiro de 10 nuevos tokens,
o quizá Bob los quiera depositados en su cuenta bancaria y el banco actúa acordemente.
Lo que ahora Bob sabe de forma segura es que los tokens que Alice le envió eran buenos y que puede enviarle el servicio por el que ha pagado.
Si solo existieran estos tres participantes para el Banco sería trivial saber que Alice ha pagado 10 tokens de eCash a Bob, pero en una red con muchos participantes que hayan retirado tokens de valor 1 dólar, sería imposible para el banco saber quién ha pagado a Bob por que gracias a las firmas ciegas, el emisor de los tokens no ve conexión entre el retiro (o acuñación) y el gasto (la redención o quema de tokens contra el banco).
Ésta fue la revolución que aportó el eCash de Chaum en 1994: el primer Cash digital realmente privado y que llegó a estar en producción en bancos de todo el mundo y aceptado en varios comercios online.
Dos datos curiosos
Como dato curioso, en 1994 DigiCash lanzó su propia moneda, los "Cyberbucks" para que la gente pudiera testear el sistema sin dólares reales. Los Cyberbacks llegaron a cotizar contra el dólar a razón de 20 cb$ / 1$ - [6]
Con la llegada del eCash al primer banco de los EEUU, el Mark Twain Bank de St Louis [7], se empezó a ofrecer eCash en valor dólares en denominaciones tan pequeñas como de 5 ct.
Este detalle era importante para recalcar que eCash funcionaba como un sistema de monedas, como las físicas y no de balances en cuenta con lo que la granuralidad de la denominación [8] en la que tu retirabas fondos del banco es la que te permitía luego pagar con exactitud importes determinados.
El eCash de Chaum no podía generar cambio, con lo que si no sumabas la cantidad exacta de monedas tenías que retirar el importe que te faltaba de tu banco o asumir la diferencia como una propina. ¿Te suena un cash electrónico también basado en UTXOs … ai! digo en monedas que sí solucione el cambio?
El Legado de Chaum
El Chaumian eCash aportó el primer cash digital anónimo no trazable.
Evitaba el doble gasto con un mint centralizado que llevaba el registro y no requería de ningún hardware seguro adicional. Con un ordenador y un software era suficiente.
Por contra, el tener que verificar todas las monedas que recibía un comercio creaba una saturación de la línea entre la tienda y el banco.
También, el banco necesitaba mantener una base de datos enorme de todas las monedas emitidas.
La combinación de estos dos problemas lo hacían difícil de escalar y además las monedas no eran reusables.
Y al estar tan centralizado era un modelo altamente censurable.
La invención de Chaum pudo haber explotado si hubiera aceptado algunos de los acuerdos que le propusieron como el de incluir su software en Windows 95, pero la avaricia y el vertiginoso ascenso del uso de las tarjetas de crédito para el comercio electrónico hicieron que DigiCash quebrase por falta de fondos en 1998 y con ello el abandono del uso del software de eCash.
Aun así, las ideas de Chaum tuvieron tal calado que la aplicación de éstas siguió desarrollándose después de la quiebra de Digicash y llega hasta nuestros días con nuevas iteraciones de su eCash como en los Fedimints y con por ejemplo la aplicacion de las firmas ciegas en la coordinación de transacciones de Coinjoin, que da como resultado los conocidos como Chaumian Coinjoins de Wasabi o Samourai.
Referencias
[^1] https://chaum.com/wp-content/uploads/2022/01/Chaum-blind-signatures.pdf
[^2] https://en.wikipedia.org/wiki/DigiCash
[^3] https://www.youtube.com/watch?v=muinjNP63G4
[^4] https://chaum.com/wp-content/uploads/2022/01/05-27-94-World_s-first-electronic-cash-payment-over-computer-networks.pdf
[^5] http://pages.di.unipi.it/gervasi/ISLP9697/www.cli.di.unipi.it/~pratesil/progetto/bibliogr/D2giCash%20ecash%20-%20frequently%20ask
[^6] https://web.archive.org/web/20220302192634/http://pages.di.unipi.it/gervasi/ISLP9697/www.cli.di.unipi.it/~pratesil/progetto/bibliogr/D1igiCash%20ecash%20-%20about%20ecash
[^7] http://pages.di.unipi.it/gervasi/ISLP9697/www.cli.di.unipi.it/~pratesil/progetto/bibliogr/D5giCash%20publications%20-%20third%20e
[^8] http://pages.di.unipi.it/gervasi/ISLP9697/www.cli.di.unipi.it/~pratesil/progetto/bibliogr/D2giCash%20ecash%20-%20frequently%20ask#WhereToGet