112 / 736BLIND

Blind Signature

Firma ciega: certificar un mensaje sin que el firmante vea su contenido

Imagina un vale que necesita la aprobación de su emisor, pero cuyo número único este no debe anotar. Más adelante podrá reconocer que el vale es auténtico sin identificar, a partir de la firma, a la persona que lo retiró. Blind Signature ayuda a resolver esta aparente contradicción. Es una idea fundamental del efectivo electrónico: comprobar la validez del dinero sin que esa comprobación genere por sí misma un registro de todas las compras de su dueño.

Blind Signature, o firma ciega, es un procedimiento criptográfico: el solicitante oculta un mensaje al firmante, obtiene una firma de esa versión oculta y después retira la ocultación. Queda una firma utilizable del mensaje original. David Chaum aplicó esta idea al efectivo electrónico. Con un protocolo correcto, el firmante no puede vincular un token posterior con su emisión a partir del intercambio de firma. Eso no elimina otras pistas, como el momento, el importe o la dirección de red.

En una validación corriente, el emisor puede anotar el número único de un vale junto al nombre de quien lo recibe. Cuando una tienda devuelve el vale, puede relacionar ambos registros. Chaum explicaba la firma ciega con un sobre forrado de papel carbón: el sello exterior se transfiere al papel interior, cuyo número el emisor no ve. Al sacarlo, el papel lleva una aprobación válida. Es una analogía para entender la idea, no un procedimiento seguro basado en papel y sellos. El protocolo real utiliza números y matemáticas para conseguir esa separación entre ordenadores. [7] [1]

Ana quiere un vale digital por 100 sats. Los sats son pequeñas unidades de Bitcoin. Su cartera, la aplicación con la que gestiona y paga con estos vales, genera un valor secreto impredecible que distinguirá el vale y lo oculta matemáticamente mediante otro valor aleatorio. Esta transformación se llama cegamiento. El emisor recibe el mensaje oculto, no el secreto original. La cartera conserva lo necesario para retirar la ocultación después. No basta con cambiar el nombre de un archivo o borrar un nombre propio: el cegamiento debe cumplir propiedades criptográficas precisas. Usamos un solo vale para simplificar el ejemplo; una cartera real puede reunir varios vales de distinto valor para completar el importe. [8] [2]

Firmar a ciegas no significa firmar cualquier cosa gratis para cualquiera. El emisor puede verificar primero el pago de Ana o descontar el saldo correspondiente. Conoce el valor solicitado, 100 sats, pero no necesita el número secreto del vale. Una clave de firma es un valor numérico secreto que el programa del emisor utiliza para crear firmas. El valor del vale puede quedar ligado a una clave de firma distinta para cada denominación; cambiar una cifra en un archivo no permite obtener un vale de mayor valor. El emisor firma la entrada oculta y devuelve el resultado. Así se separan el derecho de Ana a recibir el vale y la identidad del vale que circulará después. [7] [8]

Ana no tiene que revelar ahora el secreto al emisor. Su cartera elimina por sí sola la ocultación aleatoria del resultado recibido. Este paso se llama unblinding. Un procedimiento bien diseñado deja una certificación válida del mensaje inicial sin entregar a la cartera la clave privada de firma del emisor. Ana ve una nueva cantidad en su cartera; la envoltura matemática se pone y se quita en segundo plano. Ese comprobante digital suele llamarse token. No es un bitcoin independiente en la blockchain, el registro compartido de transacciones de Bitcoin, sino un derecho frente a su emisor. [2] [8]

Verificar consiste en comprobar que la firma corresponde al mensaje y a la clave correcta del emisor. En las firmas ciegas basadas en el sistema criptográfico RSA basta la clave pública; otras construcciones pueden necesitar una prueba adicional o la participación del emisor. Eso no demuestra que el vale siga sin gastar, que nadie lo haya copiado ni que existan reservas suficientes para reembolsarlo. Son tres cuestiones distintas. Como una entrada auténtica ya utilizada no da derecho a entrar otra vez, un comprobante criptográficamente válido puede no servir para un nuevo pago. [2] [10]

Ana envía el vale a Pedro. Al ser datos, puede conservar una copia idéntica. La firma ciega no borra archivos de su dispositivo. En un sistema online habitual, la cartera del receptor presenta el token al emisor, que comprueba su validez y si su secreto ya se ha gastado. Si lo acepta, registra el token como usado y puede emitir para Pedro uno nuevo mediante el mismo proceso de firma ciega. Ana no conoce el nuevo secreto de Pedro. Un intento posterior de gastar la copia antigua será rechazado. Reutilizar los mismos fondos se llama double spend, o doble gasto; impedirlo requiere otra parte del sistema de pagos. [9] [8]

La protección también debe impedir que el cliente obtenga comprobantes adicionales con nuevos secretos a partir de las firmas autorizadas. Esa propiedad es la no falsificabilidad. En firmas ciegas se estudia especialmente one-more unforgeability: si, después de cierto número de interacciones de firma, un atacante puede producir más pares distintos y válidos de mensaje y firma que interacciones realizadas. Copiar la misma pareja es el problema anterior. La criptografía tampoco sustituye las comprobaciones del servidor sobre derechos, importes y estructura admitida del token. Juntas, esas comprobaciones pueden impedir emisiones no autorizadas. [2] [3]

El emisor puede conocer cuándo Ana obtuvo tokens y por qué importe. Al canjearlos puede conocer la hora, la cantidad o la dirección de red del receptor. Son metadatos: información que acompaña al comprobante. Entre pocos usuarios, un importe poco habitual o un pago inmediatamente posterior puede facilitar mucho la asociación. También importan las claves compartidas y verificadas: una clave asignada a una sola persona podría identificarla. La propiedad de ceguera protege el vínculo concreto entre firma y emisión, no toda la información circundante. Tampoco repara una cartera comprometida ni obliga al emisor a cumplir sus compromisos. [7] [2]

La idea de Chaum sustenta el efectivo electrónico, históricamente ligado a DigiCash. En Bitcoin la utilizan Cashu y Fedimint, con conexiones a Lightning Network (una red para pagos rápidos en Bitcoin) que facilitan la entrada y salida de fondos. Sus construcciones, sin embargo, no son RSA. Cashu básico verifica el token con la clave secreta del emisor, llamado mint; NUT-12 añade una prueba que permite verificar la firma con datos públicos, pero no demuestra que siga sin gastar. Fedimint reparte la administración entre varios operadores. En ambos casos, el usuario tiene un derecho frente al emisor y depende de su custodia y disponibilidad. GNU Taler muestra otro enfoque: combina la privacidad del comprador con ingresos comerciales rastreables. [5] [6] [10] [4]

Un esquema simplificado cabe en unas ecuaciones. El mensaje se codifica de forma segura como número m; la clave pública contiene n y e, y d representa la parte privada. El solicitante elige un r aleatorio con inverso multiplicativo r⁻¹ módulo n y envía m′ = m·r^e mod n. La expresión mod n indica que se trabaja con restos de dividir entre n. El firmante devuelve s′ = (m′)^d mod n y el solicitante obtiene s = s′·r⁻¹ mod n. Al verificar se cumple s^e mod n = m. El factor r⁻¹ retira la ocultación. Estas relaciones explican el mecanismo, no constituyen un programa seguro completo. RFC 9474 define además la preparación del mensaje, el esquema RSA-PSS con codificación segura, las comprobaciones de entrada y la separación de claves. La aleatoriedad y la variante correcta del protocolo son esenciales. [2] [3]

Para obtener la imagen más completa, lee esta entrada junto con David Chaum, Chaumian eCash, DigiCash, Cashu, Fedimint, Privacidad en Bitcoin. También enlazan con esta entrada DigiCash, Chaumian eCash, Reusable Proofs of Work, Fedimint.

DOC · 001David Chaum — Blind Signatures for Untraceable PaymentsFuente primaria DOC · 002RFC 9474 — RSA Blind SignaturesEspecificación DOC · 003IRTF/CFRG — RFC 9474 publication recordEspecificación DOC · 004GNU Taler — PrinciplesFuente primaria DOC · 005Cashu protocol specificationsEspecificación DOC · 006Fedimint — How Federations WorkFuente primaria DOC · 007David Chaum — Security without IdentificationFuente primaria DOC · 008Cashu NUT-00 — Notation and modelsEspecificación DOC · 009Cashu NUT-03 — Swapping tokensEspecificación DOC · 010Cashu NUT-12 — DLEQ proofsEspecificación
Revisado: Fuentes primero · No es asesoramiento financiero