INTRODUCCIÓN
Con el inicio de la Era de la Información, nuestra nación depende cada vez más de las comunicaciones en red. La tecnología basada en la informática está influyendo significativamente en nuestra capacidad para acceder, almacenar y distribuir información. Uno de los usos más importantes de esta tecnología es el comercio electrónico: la realización de transacciones financieras mediante el intercambio de información electrónica a través de las líneas de telecomunicaciones. Un requisito clave para el comercio electrónico es el desarrollo de sistemas de pago electrónico seguros y eficaces. La necesidad de seguridad se pone de manifiesto con el auge de Internet, que promete ser un medio líder para el futuro comercio electrónico.
Los sistemas de pago electrónico se presentan en muchas formas, como cheques digitales, tarjetas de débito, tarjetas de crédito y tarjetas de valor almacenado. Las características de seguridad habituales de estos sistemas son la privacidad (protección contra las escuchas), la autenticidad (proporciona la identificación del usuario y la integridad del mensaje) y el no repudio (prevención de la negación posterior de haber realizado una transacción).
El tipo de sistema de pago electrónico en el que se centra este documento es el efectivo electrónico. Como su nombre indica, el efectivo electrónico es un intento de construir un sistema de pago electrónico basado en nuestro sistema de efectivo en papel. El efectivo en papel tiene características como ser: portátil (fácil de llevar), reconocible (como moneda de curso legal) por lo tanto fácilmente aceptable, transferible (sin participación de la red financiera), no rastreable (no hay registro de dónde se gasta el dinero), anónimo (no hay registro de quién gasta el dinero) y tiene la capacidad de hacer “cambio”. Los diseñadores del dinero electrónico se centraron en preservar las características de imposibilidad de rastreo y anonimato. Así, el dinero electrónico se define como un sistema de pago electrónico que proporciona, además de las características de seguridad mencionadas, las propiedades de anonimato del usuario y de imposibilidad de rastrear el pago..
En general, los sistemas de dinero electrónico alcanzan estos objetivos de seguridad mediante firmas digitales. Pueden considerarse el análogo digital de una firma manuscrita. Las firmas digitales se basan en la criptografía de clave pública. En este criptosistema, cada usuario tiene una clave secreta y una clave pública. La clave secreta se utiliza para crear una firma digital y la clave pública se necesita para verificar la firma digital. Para saber quién ha firmado la información (también llamada mensaje), hay que tener la certeza de saber a quién pertenece una determinada clave pública. Este es el problema de la gestión de claves, y su solución requiere algún tipo de infraestructura de autenticación. Además, el sistema debe contar con una seguridad física y de red adecuada para salvaguardar el secreto de las claves secretas.
Este informe ha estudiado la literatura académica sobre las técnicas criptográficas para la implementación de sistemas seguros de dinero electrónico. Se han encontrado varios sistemas de pago innovadores que proporcionan anonimato al usuario e imposibilidad de rastrear el pago. Aunque no se ha analizado a fondo ningún sistema de pago en particular, la criptografía en sí parece ser sólida y ofrecer el anonimato prometido.
Sin embargo, estos sistemas son mucho menos satisfactorios desde el punto de vista de la aplicación de la ley. En particular, los peligros del blanqueo de dinero y la falsificación son potencialmente mucho más graves que con el efectivo en papel. Estos problemas existen en cualquier sistema de pago electrónico, pero se agravan mucho más por la presencia del anonimato. De hecho, el uso generalizado del efectivo electrónico aumentaría la vulnerabilidad del sistema financiero nacional ante los ataques de la guerra de la información. Discutimos medidas para gestionar estos riesgos; estas medidas, sin embargo, tendrían el efecto de limitar el anonimato de los usuarios.
Este informe está organizado de la siguiente manera. En el capítulo 1 se definen los conceptos básicos que rodean a los sistemas de pago electrónico y al dinero electrónico. El capítulo 2 ofrece al lector una descripción criptográfica de alto nivel de los protocolos de efectivo electrónico en términos de mecanismos básicos de autenticación. El capítulo 3 describe técnicamente las implementaciones específicas que se han propuesto en la literatura académica. En el capítulo 4 se presentan las características opcionales de transferibilidad y divisibilidad del efectivo electrónico fuera de línea. Por último, en el capítulo 5 se analizan los problemas de seguridad asociados al efectivo electrónico.
Los autores de este documento desean agradecer a las siguientes personas su contribución a este esfuerzo de investigación a través de numerosas discusiones y revisión de este documento: Kevin Igoe, John Petro, Steve Neal y Mel Currie.
-
¿QUÉ ES EL DINERO ELECTRÓNICO?
Empezamos por definir cuidadosamente el “dinero electrónico”. Este término se aplica a menudo a cualquier esquema de pago electrónico que se asemeja superficialmente al efectivo para el usuario. Sin embargo, el efectivo electrónico es un tipo específico de esquema de pago electrónico, definido por ciertas propiedades criptográficas. A continuación nos centraremos en estas propiedades.
1.1 Pago electrónico
El término comercio electrónico se refiere a cualquier transacción financiera que implique la transmisión electrónica de información. Los paquetes de información que se transmiten se denominan comúnmente fichas electrónicas. No hay que confundir la ficha, que es una secuencia de bits, con el soporte físico utilizado para almacenar y transmitir la información.
Nos referiremos al medio de almacenamiento como una tarjeta, ya que suele tener la forma de una tarjeta del tamaño de una cartera hecha de plástico o cartón. (Dos ejemplos obvios son las tarjetas de crédito y las de los cajeros automáticos.) Sin embargo, la “tarjeta” también podría ser, por ejemplo, una memoria de ordenador.
Un tipo particular de comercio electrónico es el del pago electrónico. Un protocolo de pago electrónico es una serie de transacciones, al final de las cuales se ha realizado un pago, utilizando un token emitido por un tercero. El ejemplo más común es el de las tarjetas de crédito cuando se utiliza un proceso de aprobación electrónica. Nótese que nuestra definición implica que ni el pagador ni el beneficiario emiten el token.l
El escenario del pago electrónico supone tres tipos de actores:2
- un pagador o consumidor, al que llamaremos Alicia.
- un beneficiario, como un comerciante. Llamaremos al beneficiario Bob.
- una red financiera en la que tanto Alicia como Bob tienen cuentas. Nos referiremos informalmente a la red financiera como el Banco.
__________
1 En este sentido, el pago electrónico difiere de sistemas como las tarjetas telefónicas de prepago y las tarjetas de metro, en las que la ficha es emitida por el beneficiario.
2 En 4.1, generalizaremos este escenario cuando hablemos de las transferencias.
1.2 Seguridad de los pagos electrónicos
Con el auge de las telecomunicaciones y de Internet, cada vez es más frecuente que el comercio electrónico tenga lugar utilizando un medio de transmisión que no está bajo el control del sistema financiero. Por lo tanto, es necesario tomar medidas para garantizar la seguridad de los mensajes enviados a través de dicho medio.
Las propiedades de seguridad necesarias son:
- Privacidad, o protección contra las escuchas. Esto es obviamente importante para las transacciones que implican, por ejemplo, números de tarjetas de crédito enviadas por Internet.
- Identificación del usuario, o protección contra la suplantación de identidad. Está claro que cualquier sistema de comercio electrónico debe exigir que el usuario sepa con quién está tratando (aunque sólo sea con un alias o un número de tarjeta de crédito).
- Integridad del mensaje, o protección contra la manipulación o la sustitución. Hay que saber que la copia del mensaje del destinatario es la misma que se envió.
- No repudio, o protección contra la negación posterior de una transacción. Esto es claramente necesario para el comercio electrónico, para cosas como recibos y pagos digitales.
Las tres últimas propiedades se denominan colectivamente autenticidad.
Estas características de seguridad pueden lograrse de varias maneras. La técnica que se está extendiendo es la de emplear una infraestructura de autenticación. En este caso, la privacidad se consigue cifrando cada mensaje con una clave privada que sólo conocen el emisor y el receptor. Las características de autenticidad se consiguen mediante la gestión de claves, es decir, el sistema de generación, distribución y almacenamiento de las claves de los usuarios.
La gestión de claves se lleva a cabo mediante una autoridad de certificación, o un agente de confianza que se encarga de confirmar la identidad de un usuario. Esto se hace para cada usuario (incluidos los bancos) al que se le expide un certificado de identidad digital. El certificado puede utilizarse siempre que el usuario desee identificarse ante otro usuario. Además, los certificados permiten establecer una clave privada entre usuarios de forma segura y autentificada. Esta clave privada se utiliza después para cifrar los mensajes posteriores. Esta técnica puede aplicarse para proporcionar una o todas las características de seguridad mencionadas.
Aunque la infraestructura de autenticación puede estar separada de la configuración del comercio electrónico, su seguridad es un componente esencial de la seguridad del sistema de comercio electrónico. Sin una autoridad de certificación de confianza y una infraestructura segura, no se pueden conseguir las cuatro características de seguridad anteriores, y el comercio electrónico se hace imposible a través de un medio de transmisión no fiable.
A lo largo de este documento asumiremos que existe alguna infraestructura de autenticación que proporciona las cuatro características de seguridad.
1.3 Dinero electrónico
Hemos definido la privacidad como la protección contra las escuchas de las comunicaciones propias. Sin embargo, algunos defensores de la privacidad, como David Chaum (véase [2], [3]), definen el término de forma mucho más amplia. Para ellos, la verdadera “privacidad” implica que el historial de compras de una persona no esté disponible para su inspección por parte de los bancos y las compañías de tarjetas de crédito (y, por extensión, del gobierno). Para conseguirlo, no sólo es necesario tener privacidad, sino también anonimato. En particular, se necesita
- anonimato del pagador durante el pago,
- la imposibilidad de rastrear los pagos, de modo que el Banco no pueda saber de quién es el dinero utilizado en un determinado pago.
Estas características no están disponibles con las tarjetas de crédito. De hecho, el único sistema de pago convencional que las ofrece es el efectivo. Por ello, Chaum y otros han introducido el efectivo electrónico (o efectivo digital), un sistema de pago electrónico que ofrece ambas características. La secuencia de acontecimientos en un pago con dinero electrónico es la siguiente:
- retirada, en la que Alicia transfiere parte de su patrimonio de su cuenta bancaria a su tarjeta.
- pago, en el que Alice transfiere dinero de su tarjeta a la de Bob.
- depósito, en el que Bob transfiere el dinero que ha recibido a su cuenta bancaria.
(Véase la figura 1.)
Figura 1. Los tres tipos de transacciones en un modelo básico de dinero electrónico.
Estos procedimientos pueden aplicarse de dos maneras:
- El pago en línea significa que Bob llama al Banco y verifica la validez de la ficha de Alice antes 3de aceptar su pago y entregar su mercancía. (Esto se parece a muchas de las transacciones actuales con tarjeta de crédito).
- El pago fuera de línea significa que Bob presenta la moneda electrónica de Alice para su verificación y depósito en algún momento después de que se haya completado la transacción de pago. (Este método se asemeja a cómo hacemos hoy en día las pequeñas compras con cheques personales).
Tenga en cuenta que con un sistema en línea, el pago y el depósito no son pasos separados. Nos referiremos a los sistemas de efectivo en línea y fuera de línea, omitiendo la palabra “electrónico”, ya que no hay peligro de confusión con el efectivo en papel.
__________
3 En el contexto del dinero electrónico, el token suele denominarse moneda electrónica.
1.4 Falsificación
Como en cualquier sistema de pago, existe aquí la posibilidad de que se produzcan abusos delictivos, con la intención de engañar al sistema financiero o de utilizar el mecanismo de pago para facilitar algún otro delito. Discutiremos algunos de estos problemas en el apartado 5. Sin embargo, el tema de la falsificación debe considerarse aquí, ya que los protocolos de pago contienen protecciones incorporadas contra ella.
Hay dos abusos de un sistema de dinero electrónico análogos a la falsificación de dinero físico:
- Falsificación de tokens, o creación de una moneda de apariencia válida sin realizar la correspondiente retirada del Banco.
- El gasto múltiple, o el uso de la misma ficha una y otra vez. Dado que una moneda electrónica consiste en información digital, su aspecto es tan válido después de haberla gastado como antes. (El gasto múltiple también se denomina comúnmente re-gastar, gastar dos veces y repetir el gasto).
Se puede hacer frente a la falsificación intentando evitarla o intentando detectarla a posteriori de forma que se identifique al culpable. La prevención es claramente preferible, en igualdad de condiciones.
Aunque es tentador imaginar sistemas de dinero electrónico en los que los medios de transmisión y almacenamiento son seguros, sin duda habrá aplicaciones en las que no sea así. (Un ejemplo obvio es Internet, cuyos usuarios son notoriamente vulnerables a los virus y a las escuchas). Por tanto, necesitamos técnicas para hacer frente a la falsificación distintas de la seguridad física.
- Para protegerse contra la falsificación de fichas, se recurre a las funciones habituales de autenticidad de la identificación del usuario y la integridad del mensaje. (Nótese que el “usuario” que se identifica desde la moneda es el Banco emisor, no el gastador anónimo).
- Para evitar el gasto múltiple, el Banco mantiene una base de datos de monedas electrónicas gastadas. Las monedas que ya están en la base de datos deben ser rechazadas para su depósito. Si los pagos son en línea, esto evitará el gasto múltiple. Si se trata de pagos fuera de línea, lo mejor que podemos hacer es detectar cuando se ha producido un gasto múltiple. Para proteger al beneficiario, es necesario identificar al pagador. Por tanto, es necesario desactivar el mecanismo de anonimato en caso de gasto múltiple.
Las características de autenticidad, anonimato y exposición de múltiples gastadores se consiguen de forma más conveniente utilizando criptografía de clave pública. En los dos próximos capítulos analizaremos cómo se hace esto.
-
UNA DESCRIPCIÓN CRIPTOGRÁFICA
En este capítulo, ofrecemos una descripción de alto nivel de los protocolos de dinero electrónico en términos de mecanismos básicos de autenticación. Comenzamos describiendo estos mecanismos, que se basan en la criptografía de clave pública. A continuación, construimos el protocolo gradualmente para facilitar la exposición. Comenzamos con un esquema simplificado que no proporciona anonimato. A continuación, incorporamos la característica de imposibilidad de rastrear los pagos y, por último, la propiedad de anonimato de los pagos. El resultado será un protocolo completo de dinero electrónico.
2.1 Herramientas criptográficas de clave pública
Empezaremos hablando de las técnicas criptográficas básicas de clave pública en las que se basan las implementaciones del dinero electrónico.
Funciones unidireccionales. Una función unidireccional es una correspondencia entre dos conjuntos que puede ser calculada eficientemente en una dirección pero no en la otra. En otras palabras, la función phi es unidireccional si, dado s en el dominio de phi, es fácil calcular t = phi(s), pero dado sólo t, es difícil encontrar s. (Los elementos son típicamente números, pero también podrían ser, por ejemplo, puntos de una curva elíptica; véase [10]).
Pares de claves. Si phi es una función unidireccional, entonces un par de claves es un par s, t relacionado de alguna manera a través de phi. Llamamos a s la clave secreta y a t la clave pública. Como los nombres implican, cada usuario mantiene su clave secreta para sí mismo y pone su clave pública a disposición de todos. La clave secreta sigue siendo secreta aunque se conozca la clave pública, porque la propiedad unidireccional de phi asegura que t no puede calcularse a partir de s.
Todos los protocolos de clave pública utilizan pares de claves. Por esta razón, la criptografía de clave pública suele denominarse criptografía asimétrica. La criptografía convencional suele llamarse criptografía simétrica, ya que se puede cifrar y descifrar con la clave privada, pero no se puede hacer nada sin ella.
Firma e identificación. En un sistema de clave pública, un usuario se identifica demostrando que conoce su clave secreta sin revelarla. Esto se hace realizando alguna operación con la clave secreta que cualquiera puede comprobar o deshacer con la clave pública. Esto se llama identificación. Si uno utiliza un mensaje así como su clave secreta, está realizando una firma digital sobre el mensaje. La firma digital desempeña el mismo papel que una firma manuscrita: identificar al autor del mensaje de forma que no pueda ser repudiado y confirmar la integridad del mensaje.
Hashing seguro. Una función hash es un mapa de todas las posibles cadenas de bits de cualquier longitud a una cadena de bits de longitud fija. A menudo se exige que estas funciones estén libres de colisiones: es decir, debe ser difícil, desde el punto de vista computacional, encontrar dos entradas que tengan el mismo valor. Si una función hash es a la vez unidireccional y libre de colisiones, se dice que es un hash seguro.
El uso más común de las funciones hash seguras es en las firmas digitales. Los mensajes pueden tener cualquier tamaño, pero un determinado algoritmo de clave pública requiere trabajar en un conjunto de tamaño fijo. Por lo tanto, se hace un hash del mensaje y se firma el hash seguro en lugar del propio mensaje. El hash debe ser unidireccional para evitar la falsificación de la firma, es decir, la construcción de una firma de apariencia válida de un mensaje sin utilizar la clave secreta.4 El hash debe estar libre de colisiones para evitar el repudio, es decir, negar haber firmado un mensaje produciendo otro con el mismo hash.
__________
4 Tenga en cuenta que la falsificación de tokens no es lo mismo que la falsificación de firmas. Falsificar la firma digital del Banco sin conocer su clave secreta es una forma de cometer una falsificación de fichas, pero no la única. Un empleado del banco o un hacker, por ejemplo, podría “tomar prestada” la clave secreta del Banco y firmar válidamente un token. Este escenario de compromiso de la clave se discute en el punto 5.3.
2.2 Un protocolo simplificado de dinero electrónico
A continuación presentamos un sistema de dinero electrónico simplificado, sin las características de anonimato.
PROTOCOLO 1: Pago electrónico en línea.
Retirada:
Alice envía una solicitud de retirada de fondos al Banco.
El banco prepara una moneda electrónica y la firma digitalmente.
El banco envía la moneda a Alicia y la carga en su cuenta.
Pago/depósito:
Alice le da la moneda a Bob.
Bob se pone en contacto con el Banco5 y envía la moneda.
El Banco verifica la firma digital del Banco.
El banco verifica que la moneda no ha sido ya gastada.
El banco consulta sus registros de retirada para confirmar la retirada de Alice. (opcional)
El banco introduce la moneda en la base de datos de monedas gastadas.
El banco acredita la cuenta de Bob e informa a éste.
Bob le da a Alice la mercancía.
__________
5 Hay que tener en cuenta que el término “Banco” se refiere al sistema financiero que emite y compensa las monedas. Por ejemplo, el banco puede ser una empresa de tarjetas de crédito o el sistema bancario en general. En este último caso, Alice y Bob podrían tener bancos distintos. Si es así, el procedimiento de “depósito” es un poco más complicado: El banco de Bob se pone en contacto con el banco de Alice, “cobra” la moneda y pone el dinero en la cuenta de Bob.
PROTOCOLO 2: Pago electrónico fuera de línea.
Retirada:
Alice envía una solicitud de retirada de fondos al Banco.
El banco prepara una moneda electrónica y la firma digitalmente.
El banco envía la moneda a Alicia y la carga en su cuenta.
El pago:
Alice le da la moneda a Bob.
Bob verifica la firma digital del Banco. (opcional)
Bob le da a Alice la mercancía.
Depósito:
Bob envía la moneda al Banco.
El Banco verifica la firma digital del Banco.
El banco verifica que la moneda no ha sido ya gastada.
El banco consulta sus registros de retirada para confirmar la retirada de Alice. (opcional)
El banco introduce la moneda en la base de datos de monedas gastadas.
El banco acredita la cuenta de Bob.
Los protocolos anteriores utilizan firmas digitales para lograr la autenticidad. Las características de autenticidad podrían haberse logrado de otras maneras, pero necesitamos utilizar firmas digitales para permitir los mecanismos de anonimato que vamos a añadir.
2.3 Pagos electrónicos no rastreables
En esta sección, modificamos los protocolos anteriores para incluir la imposibilidad de rastrear los pagos. Para ello, es necesario que el Banco no pueda vincular una retirada específica con un depósito específico.6 Esto se consigue utilizando un tipo especial de firma digital llamada firma ciega.
En 3.2 daremos ejemplos de firmas ciegas, pero por ahora sólo damos una descripción de alto nivel. En el paso de retirada, el usuario cambia el mensaje a firmar utilizando una cantidad aleatoria. Este paso se denomina “cegado” de la moneda, y la cantidad aleatoria se llama factor de cegado. El Banco firma este texto de aspecto aleatorio, y el usuario elimina el factor cegador. El usuario tiene ahora una moneda electrónica legítima firmada por el Banco. El Banco verá esta moneda cuando se presente para su depósito, pero no sabrá quién la ha retirado, ya que los factores de cegamiento aleatorios son desconocidos para el Banco. (Obviamente, ya no será posible realizar la comprobación de los registros de retirada que era un paso opcional en los dos primeros protocolos).
Tenga en cuenta que el Banco no sabe lo que está firmando en el paso de retirada. Esto introduce la posibilidad de que el Banco pueda estar firmando algo distinto a lo que pretende firmar. Para evitarlo, especificamos que la firma digital de un banco por una clave secreta determinada sólo es válida para autorizar una retirada de una cantidad fija. Por ejemplo, el Banco podría tener una clave para una retirada de 10 dólares, otra para una retirada de 50 dólares, y así sucesivamente.7
_________
6 Para conseguir cualquiera de las dos características de anonimato, es necesario, por supuesto, que el conjunto de monedas electrónicas sea grande.
7 También se podría ampliar el concepto de “firma ciega” para incluir protocolos interactivos en los que ambas partes aportan elementos aleatorios al mensaje que se va a firmar. Un ejemplo de ello es la “firma ciega aleatoria” que se da en el esquema Ferguson comentado en el punto 3.3.
PROTOCOLO 3: Pago electrónico en línea no rastreable.
Retirada:
Alice crea una moneda electrónica y la ciega.
Alice envía la moneda cegada al Banco con una solicitud de retirada.
El banco firma digitalmente la moneda cegada.
El banco envía la moneda ciega firmada a Alicia y la carga en su cuenta.
Alice desvela la moneda firmada.
Pago/depósito:
Alice le da la moneda a Bob.
Bob se pone en contacto con el Banco y envía la moneda.
El Banco verifica la firma digital del Banco.
El banco verifica que la moneda no ha sido ya gastada.
El banco introduce la moneda en la base de datos de monedas gastadas.
El banco acredita la cuenta de Bob e informa a éste.
Bob le da a Alice la mercancía.
PROTOCOLO 4: Pago electrónico fuera de línea no rastreable.
Retirada:
Alice crea una moneda electrónica y la ciega.
Alice envía la moneda cegada al Banco con una solicitud de retirada.
El banco firma digitalmente la moneda cegada.
El banco envía la moneda ciega firmada a Alicia y la carga en su cuenta.
Alice desvela la moneda firmada.
El pago:
Alice le da la moneda a Bob.
Bob verifica la firma digital del Banco. (opcional)
Bob le da a Alice la mercancía.
Depósito:
Bob envía la moneda al Banco.
El Banco verifica la firma digital del Banco.
El banco verifica que la moneda no ha sido ya gastada.
El banco introduce la moneda en la base de datos de monedas gastadas.
El banco acredita la cuenta de Bob.
2.4 Un protocolo básico de dinero electrónico
Ahora damos el último paso y modificamos nuestros protocolos para conseguir el anonimato de los pagos. La situación ideal (desde el punto de vista de los defensores de la privacidad) es que ni el pagador ni el beneficiario conozcan la identidad del otro. Esto hace que las transacciones a distancia con dinero electrónico sean totalmente anónimas: nadie sabe en qué gasta su dinero Alicia ni quién le paga.
Resulta que esto es demasiado pedir: no hay manera de que el consumidor obtenga un recibo firmado. Así que nos vemos obligados a conformarnos con el anonimato del pagador.
Si el pago va a ser en línea, podemos utilizar el Protocolo 3 (implementado, por supuesto, para permitir el anonimato del pagador). Sin embargo, en el caso fuera de línea, surge un nuevo problema. Si un comerciante intenta depositar una moneda previamente gastada, será rechazado por el Banco, pero ninguno de los dos sabrá quién era el pagador múltiple, ya que era anónimo. Por tanto, es necesario que el Banco pueda identificar a un gastador múltiple. Sin embargo, esta característica debería preservar el anonimato de los usuarios que respetan la ley.
La solución es que el paso de pago requiera que el pagador tenga, además de su moneda electrónica, algún tipo de información de identificación que debe compartir con el beneficiario. Esta información se divide de tal manera que una sola pieza no revela nada sobre la identidad de Alice, pero dos piezas cualesquiera son suficientes para identificarla completamente.
Esta información se crea durante el paso de retirada. El protocolo de retirada incluye un paso en el que el Banco verifica que la información está ahí y corresponde a Alice y a la moneda concreta que se está creando. (Para preservar el anonimato del pagador, el Banco no verá realmente la información, sólo verificará que está ahí). Alice lleva la información junto con la moneda hasta que la gasta.
En el paso de pago, Alice debe revelar una parte de esta información a Bob. (Por tanto, sólo Alice puede gastar la moneda, ya que sólo ella conoce la información). Esta revelación se realiza mediante un protocolo de desafío-respuesta. En este protocolo, Bob envía a Alice una cantidad aleatoria de “desafío” y, en respuesta, Alice devuelve una pieza de información de identificación. (La cantidad de desafío determina la pieza que envía). En el paso de depósito, la pieza revelada se envía al Banco junto con la moneda. Si todo va como debería, la información de identificación nunca apuntará a Alice. Sin embargo, si ella gasta la moneda dos veces, el Banco acabará obteniendo dos copias de la misma moneda, cada una con una pieza de información identificativa. Debido a la aleatoriedad del protocolo desafío-respuesta, estas dos piezas serán diferentes. Así, el Banco podrá identificarla como la persona que ha gastado varias monedas. Como sólo ella puede dispensar información de identificación, sabemos que su moneda no ha sido copiada y vuelta a gastar por otra persona.
PROTOCOLO 5: Efectivo fuera de línea.
Retirada:
Alice crea una moneda electrónica, incluyendo información de identificación.
Alice ciega la moneda.
Alice envía la moneda cegada al Banco con una solicitud de retirada.
El banco verifica que los datos de identificación están presentes.
El banco firma digitalmente la moneda cegada.
El banco envía la moneda ciega firmada a Alicia y la carga en su cuenta.
Alice desvela la moneda firmada.
El pago:
Alice le da la moneda a Bob.
Bob verifica la firma digital del Banco.
Bob envía a Alice un desafío.
Alice envía a Bob una respuesta (revelando un dato de identificación).
Bob verifica la respuesta.
Bob le da a Alice la mercancía.
Depósito:
Bob envía la moneda, el desafío y la respuesta al Banco.
El Banco verifica la firma digital del Banco.
El banco verifica que la moneda no ha sido ya gastada.
El banco introduce la moneda, el reto y la respuesta en la base de datos de monedas gastadas.
El banco acredita la cuenta de Bob.
Nótese que, en este protocolo, Bob debe verificar la firma del Banco antes de entregarle la mercancía a Alice. De este modo, Bob puede estar seguro de que, o bien recibirá el pago, o bien conocerá la identidad de Alice como gastadora múltiple.
-
PROPUESTAS DE APLICACIÓN FUERA DE LÍNEA
Una vez descrito el dinero electrónico a alto nivel, queremos describir las implementaciones específicas que se han propuesto en la literatura. Estas implementaciones son para el caso fuera de línea; los protocolos en línea son sólo simplificaciones de los mismos. El primer paso es discutir las diversas implementaciones de las herramientas criptográficas de clave pública que hemos descrito anteriormente.
3.1 Inclusión de información identificativa
Primero debemos ser más específicos sobre cómo incluir (y acceder cuando sea necesario) la información de identificación destinada a atrapar a los gastadores múltiples. Hay dos maneras de hacerlo: el método de cortar y elegir y las pruebas de conocimiento cero.
Cortar y elegir. Cuando Alicia desea hacer una retirada, primero construye y ciega un mensaje que consiste en K pares de números, donde K es lo suficientemente grande como para que un evento con probabilidad 2–K nunca ocurra en la práctica. Estos números tienen la propiedad de que se puede identificar a Alice dadas las dos piezas de un par, pero las piezas no coincidentes son inútiles. A continuación, ella obtiene la firma de este mensaje cegado del Banco. (Esto se hace de tal manera que el Banco puede comprobar que los K pares de números están presentes y tienen las propiedades requeridas, a pesar del cegamiento).
Cuando Alicia gasta sus monedas con Bob, el reto que éste le lanza es una cadena de K bits aleatorios. Para cada bit, Alice envía la pieza apropiada del par correspondiente. Por ejemplo, si la cadena de bits empieza por 0110. …, entonces Alice envía la primera pieza del primer par, la segunda pieza del segundo par, la segunda pieza del tercer par, la primera pieza del cuarto par, etc. Cuando Bob deposita la moneda en el banco, envía estas K piezas.
Si Alicia vuelve a gastar su moneda, es desafiada por segunda vez. Como cada reto es una cadena de bits aleatoria, el nuevo reto está destinado a no coincidir con el anterior en al menos un bit. Por lo tanto, Alice tendrá que revelar la otra pieza del par correspondiente. Cuando el Banco recibe la moneda por segunda vez, toma las dos piezas y las combina para revelar la identidad de Alice.
Aunque es conceptualmente sencillo, este esquema no es muy eficiente, ya que cada moneda debe ir acompañada de 2K números grandes.
Pruebas de conocimiento cero. El término prueba de conocimiento cero se refiere a cualquier protocolo de criptografía de clave pública que demuestra el conocimiento de alguna cantidad sin revelarla (o facilitar su búsqueda). En este caso, Alicia crea un par de claves de tal manera que la clave secreta apunta a su identidad. (Esto se hace de tal manera que el Banco puede comprobar a través de la clave pública que la clave secreta revela de hecho su identidad, a pesar del cegamiento). En el protocolo de pago, ella entrega a Bob la clave pública como parte de la moneda electrónica. A continuación, demuestra a Bob mediante una prueba de conocimiento cero que posee la clave secreta correspondiente. Si responde a dos retos distintos, la información de identificación puede unirse para revelar la clave secreta y, por tanto, su identidad.
3.2 Técnicas de autenticación y firma
Nuestro siguiente paso es describir las firmas digitales que se han utilizado en las implementaciones de los protocolos anteriores, y las técnicas que se han utilizado para incluir la información de identificación.
Hay dos tipos de firmas digitales, y ambos tipos aparecen en los protocolos de dinero electrónico. Supongamos que el firmante tiene un par de claves y un mensaje M que debe firmar.
- Firma digital con recuperación de mensajes. Para este tipo de firma, tenemos una función de firma SSK que utiliza la clave secreta SK, y una función de verificación VPK que utiliza la clave pública PK. Estas funciones son inversas, por lo que
(*) VPK (SSK (M)) = M
- La función VPK es fácil de implementar, mientras que S SKes fácil si se conoce SK y difícil en caso contrario. Por lo tanto, se dice que SSK tiene una trampilla, o cantidad secreta que permite realizar un cálculo criptográfico que, de otro modo, sería inviable. La función VPK se denomina función unidireccional con trampilla, ya que es una función unidireccional para cualquiera que no conozca la trampilla.
- En este tipo de esquema, el verificador recibe el mensaje firmado SSK (M) pero no el texto del mensaje original. A continuación, el verificador aplica la función de verificación VPK. Este paso verifica la identidad del firmante y, mediante (*), recupera el texto del mensaje.
- Firma digital con apéndice. En este tipo de firma, el firmante realiza una operación sobre el mensaje utilizando su propia clave secreta. El resultado se considera la firma del mensaje y se envía como un apéndice del texto del mensaje. El verificador comprueba una ecuación que incluye el mensaje, el apéndice y la clave pública del firmante. Si la ecuación se comprueba, el verificador sabe que se ha utilizado la clave secreta del firmante para generar la firma.
A continuación, ofrecemos algoritmos específicos.
Firmas RSA. La firma más conocida con recuperación de mensajes es la firma RSA. Sea N un número entero difícil de calcular. La clave secreta de la firma s y la clave pública de verificación v son exponentes con la propiedad de que
M sv= M (mod N)
para todos los mensajes M. Dado v, es fácil encontrar s si se conocen los factores de N, pero difícil en caso contrario. Por lo tanto, el mapa “v thpotencia (mod N)” es una función unidireccional de trampilla. La firma de M es
C := Ms (mod N);
para recuperar el mensaje (y verificar la firma), se calcula
M := Cv (mod N).
Firmas RSA ciegas. El esquema anterior se puede cegar fácilmente. Supongamos que Alicia quiere que el Banco produzca una firma ciega del mensaje M. Ella genera un número aleatorio r y envía
r v. M (mod N)
al Banco para que lo firme. El Banco lo hace, devolviendo
r . Ms (mod N)
Alice divide entonces este resultado por r. El resultado es M s(mod N), la firma del Banco de M, aunque el Banco nunca haya visto M.
Los algoritmos de Schnorr. La familia de algoritmos de Schnorr incluye un procedimiento de identificación y una firma con apéndice. Estos algoritmos se basan en una prueba de conocimiento cero de la posesión de una clave secreta. Sean p y q números primos grandes en los que q divide a p – 1. Sea g un generador; es decir, un número entero entre 1 y p tal que
gq = 1 (mod p).
Si s es un número entero (mod q), la operación de exponenciación modular sobre s es
phi : s -> gs (mod p).
La operación inversa se denomina función de logaritmo discreto y se denota
logg t <- t.
Si p y q se eligen adecuadamente, la exponenciación modular es una función unidireccional. Es decir, es computacionalmente inviable encontrar un logaritmo discreto.
Ahora supongamos que tenemos una línea
(**) y = mx + b
sobre el campo de los enteros (mod q). Una recta puede describirse dando su pendiente m y su intercepción b, pero la “esconderemos” como sigue. Sea
c = gb (mod p),
n = gm (mod p).
Entonces c y n nos dan la “sombra” de la recta bajo phi. Conocer c y n no nos da la pendiente o el intercepto de la recta, pero sí nos permite determinar si un punto dado (x, y) está en la recta. Porque si (x, y) satisface (**), entonces también debe satisfacer la relación
(***) gy = n x. c (mod p).
(A la inversa, cualquier punto (x, y) que satisfaga (***) debe estar en la línea). La relación (***) puede ser comprobada por cualquiera, ya que sólo implica cantidades públicas. Así, cualquiera puede comprobar si un punto dado está en la recta, pero los puntos en la recta sólo pueden ser generados por alguien que conozca la información secreta.
El protocolo básico de Schnorr es una prueba de conocimiento cero de que se posee una determinada cantidad secreta m. Sea n la correspondiente cantidad pública. Supongamos que un usuario (el “prover”) quiere convencer a otro (el “verificador”) de que conoce m sin revelarlo. Para ello, construye una línea (**) y envía su sombra al verificador. La pendiente de la línea se toma como la cantidad secreta m, y la verificadora elige el intercepto al azar, de forma diferente para cada ejecución del protocolo. El protocolo procede entonces como sigue.
Prueba de posesión de Schnorr:
- Alice envía c (y n si es necesario) a Bob.
- Bob envía a Alice un valor de “desafío” de x.
- Alicia responde con el valor de y tal que (x, y) está en la línea.
- Bob verifica mediante (**) que (x, y) está en la línea.
Bob sabe ahora que está hablando con alguien que puede generar puntos en la línea. Por lo tanto, esta persona debe conocer la pendiente de la línea, que es la cantidad secreta m.
Una característica importante de este protocolo es que sólo puede realizarse una vez por línea. Porque si conoce dos puntos cualesquiera (xo, yo) y (x1, y1) en la línea, el verificador puede calcular la pendiente de la línea utilizando la conocida fórmula de “subida sobre el recorrido”
m = yyo – 1 / x1 – x1 (mod q),
y esta pendiente es la cantidad secreta m. Por eso hay que generar un nuevo intercepto cada vez. Llamamos a esto el principio de dos puntos en una línea. Esta característica será útil para los protocolos de dinero electrónico, ya que queremos definir un procedimiento de gasto que no revele nada de la clave secreta si se usa una vez por moneda, pero que revele la clave si se gasta una moneda dos veces.
Identificación Schnorr. El protocolo anterior puede utilizarse para la identificación de usuarios en una red. A cada usuario se le entrega un par de claves, y cada clave pública se anuncia como perteneciente a un usuario determinado. Para identificarse, un usuario sólo tiene que demostrar que conoce su clave secreta. Esto puede hacerse utilizando la prueba de conocimiento cero anterior, ya que su clave pública está vinculada a su identidad.
Firma Schnorr. Es fácil convertir el protocolo de identificación de Schnorr para producir un esquema de firma digital. En lugar de recibir un reto de un verificador en línea, el firmante simplemente toma x como un hash seguro del mensaje y de la sombra de la línea. Esto demuestra el conocimiento de su clave secreta de forma que vincula su par de claves con el mensaje.
Firma Schnorr ciega. Supongamos que Alicia quiere obtener una firma Schnorr ciega para su moneda, que gastará con Bob. Alice genera cantidades aleatorias (mod q) que describen un cambio de variables. Este cambio de variables sustituye la línea oculta del Banco por otra línea, y el punto de la línea del Banco por un punto de la nueva línea. Cuando Bob verifica la firma del Banco, está comprobando el nuevo punto de la nueva línea. Las dos líneas tienen la misma pendiente, por lo que la firma del Banco seguirá siendo válida. Cuando el Banco reciba la moneda para depositarla, verá el protocolo implementado en la nueva línea, pero no podrá relacionar la moneda con la retirada de Alice, ya que sólo Alice conoce el cambio de variables que relacionan las dos líneas.
Firma Chaum-Pederson. En los protocolos de dinero electrónico se utiliza una variante del esquema de firma de Schnorr dada en [6]. Este esquema modificado es una especie de esquema de “doble Schnorr”. Implica una sola línea y punto pero utiliza dos sombras. Este esquema de firma puede ser cegado de forma similar a la firma Schnorr ordinaria.
Implementación de los protocolos de Schnorr. Hemos descrito los algoritmos de Schnorr en términos de números enteros módulo un primo p. Sin embargo, los protocolos funcionan en cualquier escenario en el que el análogo del problema del logaritmo discreto sea difícil. Un ejemplo importante es el de las curvas elípticas (véase [10]). Los protocolos basados en curvas elípticas son mucho más rápidos, y requieren la transmisión de muchos menos datos, que los protocolos no elípticos que ofrecen el mismo nivel de seguridad.
3.3 Resumen de las aplicaciones propuestas
Ahora podemos presentar resúmenes de los principales esquemas de efectivo fuera de línea de la literatura académica. Hay tres: los de Chaum-Fiat-Naor [4], Brands [1] y Ferguson [9].
Chaum-Fiat-Naor. Este fue el primer esquema de dinero electrónico, y es el más sencillo conceptualmente. El Banco crea una moneda electrónica realizando una firma RSA ciega a la solicitud de retirada de Alice, después de haber verificado interactivamente que Alice ha incluido su información de identificación en la moneda. La prevención del gasto múltiple se logra mediante el método de cortar y elegir. Por esta razón, este esquema es relativamente ineficiente.
Marcas. El esquema de Brands está basado en Schnorr.8 De hecho, se utiliza un protocolo Schnorr dos veces: en el momento de la retirada, el Banco realiza una firma ciega Chaum-Pederson, y luego Alice realiza una prueba de posesión Schnorr como la parte de desafío y respuesta del protocolo de gasto.
El paso de retirada produce una moneda que contiene la firma del Banco, autentificando tanto la información de identificación de Alice como la sombra de la línea que se utilizará para la prueba de posesión. Esto compromete a Alice a utilizar esa línea concreta en el paso de gasto. Si vuelve a gastar la moneda, deberá utilizar la misma línea dos veces, lo que permitirá al Banco identificarla.
El esquema Brands es considerado por muchos como el mejor de los tres, por dos razones. En primer lugar, evita la incómoda técnica de cortar y elegir. En segundo lugar, se basa únicamente en los protocolos Schnorr, por lo que puede implementarse en diversos entornos, como las curvas elípticas.
Ferguson. El esquema de Ferguson está basado en RSA como Chaum-Fiat-Naor, pero utiliza el principio de “dos puntos en una línea” como Brands. La firma que utiliza no es la firma RSA ciega descrita anteriormente, sino una variante llamada firma RSA ciega aleatoria. El esquema RSA ciego ordinario tiene el inconveniente de que el Banco no tiene ni idea de lo que está firmando. Como se ha mencionado anteriormente, esto no es un problema en el caso de cortar y elegir, pero en este caso puede permitir a un pagador derrotar el mecanismo de identificación de múltiples gastadores. La versión aleatoria evita este problema haciendo que tanto Alice como el Banco aporten datos aleatorios al mensaje. El Banco sigue sin saber lo que está firmando, pero sabe que los datos no han sido elegidos maliciosamente.
El resto del protocolo es conceptualmente similar al esquema de Brands. El mensaje que debe firmar el Banco contiene, además de los datos aleatorios, la sombra de una línea cuya pendiente e intercepción revelan la identidad de Alice. Durante el pago, Alice revela un punto de esta línea; si lo hace dos veces, el Banco puede identificarla.
Aunque el esquema de Ferguson evita la técnica de cortar y elegir, es el más complicado de los tres (debido en gran parte a la firma RSA ciega aleatoria). Además, no puede implementarse en curvas elípticas porque está basado en RSA.
__________
8 Para facilitar la exposición, damos una explicación simplificada del protocolo de Brands.
-
CARACTERÍSTICAS OPCIONALES DEL EFECTIVO FUERA DE LÍNEA
Gran parte de la literatura reciente sobre el dinero en efectivo fuera de línea se ha centrado en la adición de características para hacer más conveniente su uso. En este capítulo analizaremos dos de estas características.
4.1 Transferibilidad
La transferibilidad es una característica del papel moneda que permite a un usuario gastar una moneda que acaba de recibir en un pago sin tener que ponerse en contacto con el Banco entretanto. Nos referimos a un pago como transferencia si el beneficiario puede utilizar la moneda recibida en un pago posterior. Un sistema de pago es transferible si permite al menos una transferencia por moneda. La figura 2 muestra un recorrido de longitud máxima de una moneda en un sistema que permite dos transferencias. El pago final no se considera una transferencia porque debe ser depositado por el beneficiario. La transferibilidad sería una característica conveniente para un sistema de efectivo fuera de línea porque requiere menos interacción con el Banco. (Un sistema de efectivo electrónico transferible es off-line por definición, ya que los sistemas on-line requieren una comunicación con el Banco durante cada pago).
Figura 2. Recorrido de longitud máxima de una moneda en un sistema que permite 2 transferencias por moneda.
Los sistemas transferibles han recibido poca atención en la literatura académica. Los sistemas presentados en el apartado 3.3 no son transferibles porque el beneficiario no puede utilizar una moneda recibida en otro pago: sus únicas opciones son depositarla o cambiarla por nuevas monedas en el Banco. Cualquier sistema de dinero electrónico transferible tiene la propiedad de que la moneda debe “crecer en tamaño” (es decir, acumular más bits) cada vez que se gasta. Esto se debe a que la moneda debe contener información sobre cada persona que la ha gastado para que el Banco mantenga la capacidad de identificar a los múltiples gastadores. (Véase [5].) Este crecimiento hace imposible permitir un número ilimitado de transferencias. El número máximo de transferencias permitido en un sistema determinado estará limitado por el tamaño permitido de la moneda.
Cualquier sistema de dinero electrónico transferible plantea otros problemas, aunque el número de transferencias por moneda sea limitado, y eliminamos la propiedad de anonimato. Hasta que se deposita la moneda, la única información de la que dispone el Banco es la identidad del individuo que retiró originalmente la moneda. Cualquier otra transacción que implique esa retirada sólo puede reconstruirse con la cooperación de cada uno de los usuarios consecutivos de esa moneda. Esto plantea los mismos problemas que el efectivo en papel para detectar el blanqueo de dinero y la evasión fiscal: no hay registros de las transacciones.
Además, cada transferencia retrasa la detección de las monedas reutilizadas o falsificadas. El gasto múltiple no se notará hasta que se depositen finalmente dos copias de la misma moneda. Para entonces puede ser demasiado tarde para atrapar al culpable, y muchos usuarios pueden haber aceptado monedas falsas. Por tanto, la detección del gasto múltiple a posteriori puede no ser una solución satisfactoria para un sistema de dinero electrónico transferible. Un sistema transferible puede necesitar confiar en la seguridad física para evitar el gasto múltiple. (Véase el apartado 5.1.)
4.2 Divisibilidad
Supongamos que Alicia está inscrita en un sistema de efectivo no transferible y fuera de línea, y quiere comprar un artículo de Bob que cuesta, digamos, 4,99 dólares. Si tiene monedas electrónicas cuyos valores suman exactamente 4,99 dólares, simplemente las gasta. Sin embargo, a menos que Alicia haya almacenado una gran reserva de monedas de cada denominación posible, es poco probable que tenga el cambio exacto para la mayoría de las compras. Es posible que no quiera tener una reserva tan grande de monedas a mano por las mismas razones por las que no se lleva una gran cantidad de dinero en efectivo: pérdida de intereses y miedo a que le roben o se pierda el dinero. Otra opción es que Alice retire una moneda de la cantidad exacta para cada pago, pero eso requiere la interacción con el Banco, haciendo el pago en línea desde su punto de vista. Una tercera opción es que Bob pague a Alice la diferencia entre su pago y el precio de compra de 4,99 dólares. Esto pone la carga de tener un pago exacto en Bob, y también requiere que Alice se ponga en contacto con el Banco para depositar el “cambio”.
Una solución al dilema de Alicia es utilizar monedas divisibles: monedas que pueden “dividirse” en piezas cuyo valor total es igual al de la moneda original. Esto permite realizar pagos exactos fuera de línea sin necesidad de almacenar una reserva de monedas de diferentes denominaciones. Obviamente, el papel moneda no es divisible, pero la falta de divisibilidad no es un inconveniente tan grande con el papel moneda porque es transferible. Las monedas que se reciben en un pago pueden volver a utilizarse en el siguiente, por lo que el suministro de diferentes denominaciones se repone parcialmente con cada transacción. (¡Imagínese lo rápido que se le acabaría el cambio a un cajero si el papel moneda no fuera transferible y cada pago se pusiera en una papelera distinta reservada para el siguiente depósito bancario! )
Se han propuesto tres esquemas de efectivo divisible fuera de línea, pero con el coste de un mayor tiempo de transacción y un almacenamiento adicional. El esquema divisible de Eng y Okamoto [7] se basa en el método “cortar y elegir”. Okamoto [11] es mucho más eficiente y se basa en el esquema de Brands, pero también funciona con el esquema de Ferguson. Okamoto y Ohta [12] es el más eficiente de los tres, pero también el más complicado. Se basa en la dificultad de la factorización y en la dificultad de calcular logaritmos discretos.
Figura 3. Árbol binario de una moneda divisible con un valor de 4,00 dólares, con una unidad mínima de 1,00 dólares. Se puede realizar un pago de 3 dólares gastando los nodos sombreados. El nodo 1I no puede utilizarse en un pago posterior porque es un ancestro de los nodos 2 y 6. Los nodos 4 y 5 no pueden utilizarse porque son descendientes del nodo 2. El nodo 3 no puede utilizarse porque es un ancestro del nodo 6. Los nodos 2 y 6 no pueden utilizarse más de una vez, por lo que el nodo 7 es el único que puede gastarse en un pago posterior.
Los tres esquemas funcionan asociando un árbol binario a cada moneda de valor $w. (Véase la figura 3). A cada nodo se le asigna un valor monetario de la siguiente manera: el único nodo raíz (el nodo del nivel 0) tiene un valor de $w, los dos nodos del nivel 1 tienen un valor de $w/2, los cuatro nodos del nivel 2 tienen un valor de $w/4, etc. Por lo tanto, si w = 21, el árbol tiene l+ 1 niveles, y los nodos del nivel j tienen cada uno valor $w/2j. Las hojas del árbol son los nodos del nivel l, y tienen la unidad mínima de valor.
Para gastar la cantidad completa de valor $w, se utiliza el nodo raíz. Las cantidades inferiores a $w pueden gastarse gastando un conjunto de nodos cuyos valores sumen la cantidad deseada.
Inicialmente, se puede gastar cualquier cantidad entera de dólares hasta $w. Los pagos posteriores se realizan de acuerdo con las siguientes reglas:
- Una vez que se utiliza un nodo, no se pueden utilizar todos sus nodos descendientes y antecesores9.
- Ningún nodo puede ser utilizado más de una vez.
Estas dos reglas aseguran que no se utilice más de un nodo en ningún camino desde la raíz hasta una hoja. Si se cumplen estas dos reglas, será imposible gastar más del valor original de la moneda. Si se incumple alguna de estas reglas, entonces se utilizan dos nodos en el mismo camino, y la información de los dos pagos correspondientes puede combinarse para revelar la identidad del individuo que ha gastado más de la cuenta, de la misma manera que se revela la identidad de un gastador múltiple.
Más concretamente, en los esquemas Eng/Okamoto y Okamoto, cada usuario tiene un valor secreto, s, que está vinculado a su identidad (si se descubre s se descubrirá su identidad, pero no a la inversa). A cada nodo i se le asigna un valor secreto, ti. Por lo tanto, cada nodo i corresponde a una línea
y = sx + ti
Cuando se realiza un pago utilizando un nodo n en particular, ti se revelará para todos los nodos i que sean ancestros del nodo n. Entonces, el beneficiario envía un reto xi y el pagador responde con
y 1= sx 1+ t n.
Esto revela un punto (x1, y1) en la línea y = sx + tn, pero no revela la línea misma. Si el mismo nodo se gasta dos veces, entonces las respuestas a dos desafíos independientes, x1 y x2, revelarán dos puntos en la misma línea: (x1, y1) y (x2, y2). Entonces el valor secreto s puede recuperarse utilizando el principio de los dos puntos en una línea descrito en 3.2.
Si alguien intenta gastar una moneda de más, entonces se utilizarán dos nodos del mismo camino. Supongamos que los nodos n y m están en el mismo camino, y que el nodo n está más lejos de la raíz en este camino. Gastar el nodo n revelará tm, ya que el nodo m es un ancestro del nodo n. Ahora bien, si el nodo m también se gasta, entonces la respuesta a un desafío x1 será y1 = sx 1+ tm. Pero tm se reveló cuando se gastó tn, por lo que se revelará sx 1y, por tanto, s. Por lo tanto, gastar dos nodos en la misma ruta revelará la identidad del que ha gastado más. El esquema divisible de Okamoto/Ohta también utiliza un árbol binario con las mismas reglas de uso de los nodos para evitar el gasto múltiple y el gasto excesivo, pero cuando los nodos se utilizan incorrectamente, se utiliza una técnica diferente para determinar la identidad del gastador. En lugar de ocultar el secreto de identificación del usuario en una línea para la que se revela un punto cuando se gasta una moneda, el secreto de identificación del usuario se oculta en la factorización de un módulo RSA. Gastar el mismo nodo dos veces, o gastar dos nodos en el mismo camino proporcionará suficiente información para que el Banco factorice el módulo (que es parte de la moneda) y luego calcule la información secreta de identificación del usuario.
Aunque estos tres esquemas divisibles no son rastreables, los pagos realizados con la misma moneda inicial pueden estar “vinculados” entre sí, lo que significa que es posible saber si dos pagos proceden de la misma moneda y, por tanto, de la misma persona. Esto no revela la identidad del pagador si ambos pagos son válidos (siga las reglas 1 y 2, arriba), pero revelar la identidad del pagador para una compra revelaría la identidad de ese pagador para todas las demás compras realizadas con la misma moneda inicial.
Estos son tres ejemplos de sistemas de efectivo fuera de línea que tienen monedas divisibles. Aunque la divisibilidad complica el protocolo, puede lograrse sin perder la capacidad de rastreo o de detectar a los que gastan indebidamente. El esquema divisible más eficiente tiene un tiempo de transacción y una memoria requerida por moneda proporcional al logaritmo de N, donde N es el valor total de la moneda dividido por el valor de la unidad mínima divisible. Se esperan más mejoras en la eficiencia de los esquemas divisibles, ya que la mejora más reciente se acaba de presentar en 1995.
__________
9 Un descendiente de un nodo n es un nodo en una ruta desde el nodo n a una hoja. Un ancestro de un nodo n es un nodo en el camino desde el nodo n hasta el nodo raíz.
-
CUESTIONES DE SEGURIDAD
En esta sección tratamos algunas cuestiones relativas a la seguridad del dinero electrónico. En primer lugar, discutimos las formas de ayudar a prevenir el gasto múltiple en los sistemas fuera de línea, y describimos el concepto de observadores de cartera. También discutimos las consecuencias de un fallo inesperado en la seguridad del sistema. Por último, describimos una solución a algunos de los problemas de aplicación de la ley que crea el anonimato.
5.1 Prevención del gasto múltiple
En el apartado 1.3 explicamos que se puede evitar el gasto múltiple en los pagos en línea manteniendo una base de datos de monedas electrónicas gastadas, pero no existe ningún método criptográfico para evitar que una moneda fuera de línea se gaste más de una vez. En cambio, el gasto múltiple fuera de línea se detecta cuando se deposita la moneda y se compara con una base de datos de monedas gastadas. Incluso en los sistemas de pago anónimos e imposibles de rastrear, la identidad del gastador múltiple puede revelarse cuando se detecta el abuso. La detección a posteriori puede ser suficiente para desalentar el gasto múltiple en la mayoría de los casos, pero no resolverá el problema. Si alguien fuera capaz de obtener una cuenta con una identidad falsa, o estuviera dispuesto a desaparecer después de volver a gastar una gran suma de dinero, podría engañar al sistema con éxito.
Una forma de minimizar el problema del gasto múltiple en un sistema fuera de línea es establecer un límite máximo en el valor de cada pago. Esto limitaría las pérdidas financieras de un determinado comerciante por aceptar monedas que han sido depositadas previamente. Sin embargo, esto no impedirá que alguien gaste la misma moneda pequeña muchas veces en diferentes lugares.
Para evitar el gasto múltiple en los pagos fuera de línea, hay que recurrir a la seguridad física. Una tarjeta “a prueba de manipulaciones” podría impedir el gasto múltiple retirando o inutilizando una moneda una vez gastada. Por desgracia, no existe una tarjeta verdaderamente “a prueba de manipulaciones”. En su lugar, nos referiremos a una tarjeta “a prueba de manipulaciones”, que está construida físicamente para que sea muy difícil modificar su contenido. Puede ser una tarjeta inteligente, una tarjeta10 de PC o cualquier dispositivo de almacenamiento que contenga un chip informático a prueba de manipulaciones. Esto evitará los abusos en la mayoría de los casos, ya que el típico delincuente no tendrá los recursos necesarios para modificar la tarjeta. Incluso con una tarjeta resistente a la manipulación, sigue siendo esencial proporcionar seguridad criptográfica para evitar la falsificación y detectar e identificar a los múltiples gastadores en caso de que la protección contra la manipulación sea derrotada de alguna manera. Además, el establecimiento de límites en el valor de los pagos fuera de línea reduciría la rentabilidad de la manipulación de la tarjeta.
Las tarjetas resistentes a las manipulaciones también pueden proporcionar seguridad personal y privacidad al titular de la tarjeta al dificultar que los adversarios lean o modifiquen la información almacenada en ella (como claves, algoritmos o registros secretos).
__________
10 Anteriormente PCMCIA, o Personal Computer Memory Card International Association.
5.2 Observadores de carteras
Todos los esquemas básicos de dinero en efectivo fuera de línea presentados en el apartado 3.3 pueden detectar criptográficamente la identidad de los gastadores múltiples, pero la única forma de evitar el gasto múltiple fuera de línea es utilizar un dispositivo resistente a la manipulación, como una tarjeta inteligente. Uno de los inconvenientes de este enfoque es que el usuario debe depositar una gran confianza en este dispositivo, ya que pierde la capacidad de controlar la información que entra o sale de la tarjeta. Es concebible que el dispositivo resistente a la manipulación pueda filtrar información privada sobre el usuario sin que éste lo sepa.
Chaum y Pedersen [6] propusieron la idea de incrustar un dispositivo a prueba de manipulaciones en un módulo exterior controlado por el usuario para conseguir las ventajas de seguridad de un dispositivo a prueba de manipulaciones sin exigir que el usuario confíe en el dispositivo. A esta combinación la denominan monedero electrónico (véase la figura 4). El módulo exterior (como un pequeño ordenador de mano o el PC del usuario) es accesible para el usuario. El módulo interior, que no se puede leer ni modificar, se llama “observador”. Toda la información que entra o sale del observador debe pasar por el módulo exterior, lo que permite al usuario controlar la información que entra o sale de la tarjeta. Sin embargo, el módulo exterior no puede completar una transacción sin la cooperación del observador. Esto da al observador el poder de impedir que el usuario realice transacciones que no aprueba, como gastar la misma moneda más de una vez.
Figura 4. Un monedero electrónico.
Brands[1] y Ferguson[8] han mostrado cómo incorporar observadores a sus respectivos esquemas de dinero electrónico para evitar el gasto múltiple. El esquema de Brands incorpora observadores de una manera mucho más sencilla y eficiente. En el esquema básico de Brands, la clave secreta del usuario se incorpora a cada una de sus monedas. Cuando se gasta una moneda, el gastador utiliza su secreto para crear una respuesta válida a un desafío del beneficiario. El beneficiario verifica la respuesta antes de aceptar el pago. En el esquema de Brands con observadores de monedero, este secreto de usuario se comparte entre el usuario y su observador. El secreto combinado es una suma modular de las dos partes, por lo que una parte del secreto no revela ninguna información sobre el secreto combinado. La cooperación del usuario y del observador es necesaria para crear una respuesta válida a un desafío durante una transacción de pago. Esto se consigue sin que ni el usuario ni el observador revelen ninguna información sobre su parte del secreto al otro. También se evita que el observador controle la respuesta; por tanto, el observador no puede filtrar ninguna información sobre el gastador.
Un observador también podría utilizarse para rastrear las transacciones del usuario en un momento posterior, ya que puede mantener un registro de todas las transacciones en las que participa. Sin embargo, esto requiere que el Banco (o quienquiera que haga el rastreo) sea capaz de obtener el observador y analizarlo. Además, no todos los tipos de observadores pueden utilizarse para rastrear transacciones. Tanto Brands como Ferguson afirman que pueden incorporar observadores a sus esquemas y seguir manteniendo la imposibilidad de rastrear las transacciones de los usuarios, incluso si el observador utilizado en las transacciones se ha obtenido y puede ser analizado.
5.3 Fallos de seguridad
Tipos de fallos.
En cualquier sistema criptográfico existe un cierto riesgo de fallo de seguridad. Un fallo de seguridad en un sistema de dinero electrónico daría lugar a la posibilidad de falsificar o duplicar el dinero. Hay varias maneras de que un sistema de dinero electrónico pueda fallar.
Uno de los tipos de fallo más graves sería que la criptografía (el protocolo o las matemáticas subyacentes) no proporcionara la seguridad prevista.11 Esto podría permitir a alguien crear monedas de apariencia válida sin conocer la clave secreta de un banco autorizado, u obtener claves secretas válidas sin tener acceso físico a ellas. Cualquiera que conozca el punto débil podría crear monedas que parezcan proceder de un banco legítimo del sistema.
Otro tipo de fallo grave podría producirse en una implementación específica del sistema. Por ejemplo, si el generador de números aleatorios del banco no es bueno, se podría adivinar el número aleatorio secreto y utilizarlo para calcular las claves secretas que se utilizan para crear el dinero electrónico.
Incluso si la criptografía y la implementación son seguras, la seguridad podría fallar debido a un compromiso físico. Si un pirata informático, un ladrón, un empleado bancario deshonesto o un Estado delincuente accedieran a la clave secreta del banco, podrían crear dinero falso. Si accedieran a la clave secreta de un usuario, podrían gastar el dinero de ese usuario. Si pudieran modificar el software del usuario o del banco, podrían destruir la seguridad del sistema.
Los anteriores escenarios de fracaso se aplican, no sólo al sistema de dinero electrónico, sino también a la infraestructura de autenticación subyacente. Cualquier forma de comercio electrónico depende en gran medida de la capacidad de los usuarios para confiar en los mecanismos de autenticación. Así que si, por ejemplo, un atacante pudiera demostrar una falsificación de la firma digital de la autoridad de certificación, socavaría la confianza de los usuarios en su capacidad para identificarse. Por tanto, las autoridades de certificación deben estar tan protegidas como los bancos.
Consecuencias de un fallo.
Los tres esquemas básicos descritos en este documento son anónimos, lo que hace imposible que alguien pueda conectar una moneda depositada con el registro de retirada de esa moneda por parte del banco de origen. Esta propiedad tiene graves consecuencias en caso de que se produzca un fallo de seguridad que lleve a la falsificación de fichas. Cuando se presenta una moneda para su depósito, es imposible determinar si es falsa. Incluso el banco de origen es incapaz de reconocer sus propias monedas, impidiendo la detección del compromiso. Es concebible que el compromiso no se detecte hasta que el banco se dé cuenta de que el valor total de los depósitos de su dinero electrónico supera la cantidad que ha creado con una clave concreta. En ese momento las pérdidas podrían ser devastadoras.
Una vez descubierta la clave comprometida, el banco seguirá sin poder distinguir las monedas válidas de las inválidas, ya que los depósitos y las retiradas no pueden vincularse. El banco tendría que cambiar su clave secreta e invalidar todas las monedas que fueron firmadas con la clave comprometida. El banco puede sustituir las monedas que aún no se han gastado, pero la validez de las monedas no rastreables que ya se han gastado o depositado no puede determinarse sin la cooperación del pagador. La imposibilidad de rastrear el pago impide al banco determinar la identidad del pagador, y el anonimato del pagador impide incluso al beneficiario identificar al pagador.
Es posible minimizar este daño limitando el número de monedas afectadas por un solo compromiso. Esto podría hacerse cambiando la clave pública del Banco a intervalos de tiempo designados, o cuando el valor total de las monedas emitidas por una sola clave supere un límite designado. Sin embargo, este tipo de compartimentación reduce el anonimato al disminuir el conjunto de retiradas que podrían corresponder a un determinado depósito y viceversa.
__________
11 No tenemos conocimiento de nada en la literatura que sugiera este tipo de fallo con los protocolos discutidos en este documento.
5.4 Restablecer la trazabilidad
Las propiedades de anonimato del dinero electrónico plantean varios problemas para la aplicación de la ley, ya que impiden que las retiradas y los depósitos se relacionen entre sí. En la sección anterior explicamos cómo esto impide la detección de monedas falsas. El anonimato también dificulta la detección del blanqueo de dinero y la evasión fiscal, ya que no hay forma de vincular al pagador y al beneficiario. Por último, el dinero electrónico allana el camino a nuevas versiones de antiguos delitos como el secuestro y el chantaje (véase [13]), en los que la entrega de dinero puede realizarse ahora de forma segura desde el ordenador de casa del delincuente.12
Una forma de minimizar estas preocupaciones es exigir que las transacciones grandes o un gran número de transacciones en un periodo de tiempo determinado sean rastreables. Esto dificultaría la comisión de delitos que impliquen grandes sumas de dinero en efectivo. Sin embargo, incluso un límite estricto, como un máximo de 100 dólares al día en retiradas e ingresos, puede sumar rápidamente, especialmente si uno puede abrir varias cuentas, cada una con su propio límite. Además, la limitación de la cantidad gastada en un periodo de tiempo determinado tendría que depender de un dispositivo a prueba de manipulaciones.
Otra forma de minimizar estas preocupaciones es proporcionar un mecanismo para restaurar la trazabilidad bajo ciertas condiciones, como una orden judicial. La trazabilidad puede separarse en dos tipos por su dirección. La trazabilidad de un depósito es la capacidad de identificar un registro de depósito (y por lo tanto el beneficiario), dado un registro de retirada (y por lo tanto la identidad del pagador). En otras palabras, si se obtiene una orden de registro para Alice, la trazabilidad hacia adelante revelará dónde ha gastado Alice su dinero. La trazabilidad hacia atrás es la capacidad de identificar un registro de retirada (y, por tanto, al pagador), dado un registro de depósito (y, por tanto, la identidad del beneficiario). La trazabilidad hacia atrás revelará de quién ha recibido Alice los pagos.
Stadler, Piveteau y Camenisch presentan en [14] una solución que restablece condicionalmente la trazabilidad hacia delante y hacia atrás en el esquema de cortar y elegir. En el esquema básico de cortar y elegir, se asocia un número de identificación a cada registro de retirada y un número de identificación diferente a cada registro de depósito, aunque no hay forma de vincular estos dos registros entre sí. Para proporcionar un mecanismo que permita restablecer la trazabilidad hacia atrás, el número de retirada (junto con algunos otros datos que no pueden asociarse a la retirada) se cifra con la clave pública de una entidad de confianza común y se incorpora a la propia moneda. Este número de retirada encriptado se transmite al beneficiario como parte del protocolo de pago, y luego se transmitirá al banco cuando el beneficiario deposite la moneda. El pagador realiza el cifrado durante la transacción de retirada, pero el banco puede asegurarse de que el cifrado se ha realizado correctamente. Si se cumplen las condiciones necesarias para el rastreo, el pago o el depósito puede entregarse a la entidad de confianza que posee la clave secreta para descifrar el número de retirada. Este número de retirada permitirá al banco acceder a sus registros de retirada, identificando al pagador.
Para proporcionar un mecanismo que permita restablecer la trazabilidad hacia adelante, el pagador debe comprometerse con un número de depósito en el momento en que se retira la moneda. El pagador cifra este número de depósito con la clave pública de una entidad de confianza (junto con otros datos que no pueden asociarse al depósito) y debe enviar este valor al banco como parte del protocolo de retirada. El banco puede determinar que el pagador no ha hecho trampa, aunque sólo ve el número de depósito en forma cifrada. Si se cumplen las condiciones necesarias para el rastreo, el registro de retirada puede entregarse a la entidad de confianza que posee la clave secreta para descifrar el número de depósito. El banco puede utilizar este número de depósito para identificar al depositante (el beneficiario).
Stadler et al. han demostrado que es posible proporcionar un mecanismo para restablecer la trazabilidad en una o en ambas direcciones. Esto puede utilizarse para proporcionar a los usuarios anonimato, al tiempo que resuelve muchos de los problemas de aplicación de la ley que existen en un sistema totalmente ilocalizable. La capacidad de rastrear las transacciones en cualquier dirección puede ayudar a los agentes de la ley a atrapar a los evasores de impuestos y a los blanqueadores de dinero al revelar quién ha pagado o ha sido pagado por el presunto delincuente. Los chantajistas electrónicos pueden ser atrapados porque los números de depósito de las monedas mal habidas de la víctima podrían ser descifrados, identificando al chantajista cuando se deposita el dinero.
La posibilidad de restablecer la trazabilidad no resuelve un problema policial muy importante: la detección de monedas falsas. La trazabilidad hacia atrás ayudará a identificar una moneda falsificada si un pago o depósito concreto (o un depositante) está bajo sospecha. En ese caso, el rastreo hacia atrás revelará el número de retirada, lo que permitirá al banco de origen localizar su registro de retirada y verificar la validez de la moneda. Sin embargo, si una moneda falsificada se abre paso en el sistema, es posible que no se detecte hasta que el banco cuyo dinero se está falsificando se dé cuenta de que el valor total de sus depósitos de efectivo electrónico con una clave determinada supera los valores de sus retiradas. La única forma de determinar qué depósitos son auténticos y cuáles son falsos requeriría obtener permiso para descifrar los números de retirada de todos y cada uno de los depósitos de efectivo electrónico utilizando la clave comprometida. Esto violaría la privacidad que el dinero anónimo fue diseñado para proteger.
Lamentablemente, el esquema de [14] no es eficiente porque se basa en el voluminoso método de cortar y elegir. Sin embargo, puede ser posible aplicar ideas similares para restablecer la trazabilidad en un esquema de dinero electrónico más eficiente.
__________
12 No nos centraremos en esos delitos contra los individuos, sino que nos concentraremos en los delitos contra el Gobierno, el sistema bancario y la economía nacional.
CONCLUSIÓN
Este informe ha descrito varios esquemas de pago innovadores que proporcionan anonimato al usuario e imposibilidad de rastrear el pago. Estos sistemas de dinero electrónico disponen de mecanismos criptográficos para resolver los problemas de gasto múltiple y falsificación de fichas. Sin embargo, se han identificado algunas preocupaciones serias sobre la capacidad de un sistema de dinero electrónico para recuperarse de un fallo de seguridad. También se ha debatido sobre el impacto del anonimato en el blanqueo de dinero y la evasión fiscal.
Dado que es fácil hacer una copia exacta de una moneda electrónica, un sistema de dinero electrónico seguro debe tener una forma de proteger contra el gasto múltiple. Si el sistema se implementa en línea, se puede evitar el gasto múltiple manteniendo una base de datos de monedas gastadas y comprobando esta lista con cada pago. Si el sistema se implementa fuera de línea, no hay forma de evitar el gasto múltiple criptográficamente, pero puede detectarse cuando se depositan las monedas. La detección del gasto múltiple a posteriori sólo es útil si se revela la identidad del infractor. Se han propuesto soluciones criptográficas que revelarán la identidad del gastador múltiple preservando, por lo demás, el anonimato del usuario.
La falsificación de fichas puede evitarse en un sistema de dinero electrónico siempre que la criptografía sea sólida y esté implementada de forma segura, las claves secretas utilizadas para firmar las monedas no se vean comprometidas y se mantenga la integridad de las claves públicas. Sin embargo, si hay un fallo de seguridad o una clave comprometida, el anonimato del dinero electrónico retrasará la detección del problema. Incluso cuando se detecte la existencia de un compromiso, el Banco no podrá distinguir sus propias monedas válidas de las falsificadas. Dado que no hay forma de garantizar que las claves secretas del Banco nunca se vean comprometidas, es importante limitar el daño que podría causar un compromiso. Esto podría hacerse limitando el valor total de las monedas emitidas con una clave concreta, pero al reducir estos límites también se reduce el anonimato del sistema, ya que hay un conjunto menor de monedas asociadas a cada clave.
La propiedad de no trazabilidad del dinero electrónico crea problemas para detectar el blanqueo de dinero y la evasión fiscal porque no hay forma de vincular al pagador y al beneficiario. Para contrarrestar este problema, es posible diseñar un sistema que tenga la opción de restablecer la trazabilidad mediante un mecanismo de custodia. Si se cumplen ciertas condiciones (como una orden judicial), un registro de depósito o retirada puede entregarse a una entidad de confianza común que posea una clave que pueda desencriptar la información que conecta el depósito con la retirada o viceversa. De este modo, se identificará al pagador o al beneficiario de una determinada transacción. Sin embargo, esto no es una solución al problema de la falsificación de tokens porque puede que no haya forma de saber qué depósitos son sospechosos. En ese caso, para identificar las monedas falsificadas habría que entregar todos los registros de depósitos del banco a la entidad de confianza para que descifre los números de retirada.
También hemos estudiado dos características opcionales del dinero electrónico fuera de línea: la transferibilidad y la divisibilidad. Dado que el tamaño de una moneda electrónica debe crecer con cada transferencia, el número de transferencias permitidas por moneda debe ser limitado. Además, permitir las transferencias aumenta los problemas de detección de monedas falsas, blanqueo de dinero y evasión fiscal. Las monedas pueden hacerse divisibles sin perder ninguna característica de seguridad o anonimato, pero a expensas de requisitos adicionales de memoria y tiempo de transacción.
En conclusión, los riesgos potenciales en el comercio electrónico se magnifican cuando hay anonimato. El anonimato crea la posibilidad de que grandes sumas de dinero falso pasen desapercibidas al impedir la identificación de las monedas falsas. El anonimato también proporciona una vía para el blanqueo de dinero y la evasión de impuestos que es difícil de combatir sin recurrir a mecanismos de custodia. El anonimato puede proporcionarse a distintos niveles, pero al aumentar el nivel de anonimato también aumentan los daños potenciales. Es necesario sopesar la necesidad de anonimato con estas preocupaciones. Se puede llegar a la conclusión de que estos problemas se evitan mejor utilizando un sistema de pago electrónico seguro que proporcione privacidad, pero no anonimato.
REFERENCIAS
- Stefan Brands, Untraceable Off-Line Cash in Wallets with Observers, Advances in Cryptology CRYPTO ’93, Springer-Verlag, pp. 302-318.
- David Chaum, Achieving Electronic Privacy, Scientific American (agosto de 1992), 96-101.
- David Chaum, Seguridad sin identificación: Transaction Systems to make Big Brother Obsolete, ACM 28 no. 10 (Oct 1985), 1030-1044.
- David Chaum, Amos Fiat y Moni Naor, Untraceable Electronic Cash, Advances in Cryptology CRYPTO ’88, Springer-Verlag, pp. 319-327.
- David Chaum y Torben Pedersen, Transferred Cash Grows in Size, Advances in Cryptology – EUROCRYPT ’92, Springer-Verlag, pp. 390-407.
- David Chaum y Torben Pedersen, Wallet Databases with Observers, Advances in Cryptology CRYPTO ’92, Springer-Verlag, pp. 89-105.
- Tony Eng y Tatsuaki Okamoto, Single-Term Divisible Electronic Coins, Advances in Cryptology EUROCRYPT ’94, Springer-Verlag, pp. 311-323.
- Niels Ferguson, Extensions of Single-term Coins, Advances in Cryptology – CRYPTO ’93, Springer-Verlag, pp. 292-301.
- Niels Ferguson, Single Term Off-Line Coins, Advances in Cryptology – EUROCRYPT ’93, Springer-Verlag, pp. 318-328.
- Alfred J. Menezes, Elliptic Curve Public Key Cryptosystems, Kluwer Academic Publishers, Boston, 1993.
- Tatsuaki Okamoto, An Efficient Divisible Electronic Cash Scheme, Advances in Cryptology – CRYPTO ’95, Springer-Verlag, pp. 438-451.
- Tatsuaki Okamoto y Kazuo Ohta, Universal Electronic Cash, Advances in Cryptology – CRYPTO ’91, Springer-Verlag, pp. 324-337.
- Sebastiaan von Solms y David Naccache, On Blind Signatures and Perfect Crimes, Computers & Security 11 (1992), 581-583.
- Markus Stadler, Jean-Marc Piveteau y Jan Camenisch, Fair Blind Signatures, Advances in Cryptology – EUROCRYPT ’95, Springer-Verlag, pp. 209-219.





