stringtranslate.com

Firma ciega

En criptografía, una firma ciega , como la introdujo David Chaum , [1] es una forma de firma digital en la que el contenido de un mensaje se disfraza ( se oculta ) antes de firmarlo. La firma ciega resultante se puede verificar públicamente con el mensaje original, no oculto, de la misma manera que una firma digital normal. Las firmas ciegas se emplean normalmente en protocolos relacionados con la privacidad en los que el firmante y el autor del mensaje son partes diferentes. Algunos ejemplos son los sistemas de elección criptográfica y los esquemas de dinero digital .

Una analogía que se utiliza a menudo con la firma ciega criptográfica es el acto físico de un votante que encierra una papeleta anónima completa en un sobre especial forrado con papel carbón que tiene las credenciales del votante impresas previamente en el exterior. Un funcionario verifica las credenciales y firma el sobre, transfiriendo así su firma a la papeleta que se encuentra en el interior a través del papel carbón. Una vez firmado, el paquete se devuelve al votante, quien transfiere la papeleta ahora firmada a un nuevo sobre normal sin marcar. De este modo, el firmante no ve el contenido del mensaje, pero un tercero puede verificar posteriormente la firma y saber que la firma es válida dentro de las limitaciones del sistema de firma subyacente.

Un ejemplo de firma ciega en acción

Las firmas ciegas también se pueden utilizar para proporcionar la posibilidad de no vincular , lo que impide que el firmante vincule el mensaje ciego que firma con una versión no ciega posterior que puede ser requerida para verificar. En este caso, la respuesta del firmante primero se "desenmascara" antes de la verificación de tal manera que la firma sigue siendo válida para el mensaje no ciego. Esto puede ser útil en esquemas donde se requiere anonimato .

Los esquemas de firma ciega se pueden implementar utilizando varios esquemas de firma de clave pública comunes , por ejemplo RSA y DSA . Para realizar una firma de este tipo, primero se "ciega" el mensaje, normalmente combinándolo de alguna manera con un "factor de cegamiento" aleatorio. El mensaje ciego se pasa a un firmante, que luego lo firma utilizando un algoritmo de firma estándar. El mensaje resultante, junto con el factor de cegamiento, se puede verificar posteriormente con la clave pública del firmante. En algunos esquemas de firma ciega, como RSA, incluso es posible eliminar el factor de cegamiento de la firma antes de que se verifique. En estos esquemas, el resultado final (mensaje/firma) del esquema de firma ciega es idéntico al del protocolo de firma normal.

Usos

Los esquemas de firma ciega se utilizan mucho en aplicaciones en las que la privacidad del remitente es importante. Esto incluye varios esquemas de " dinero digital " y protocolos de votación .

Por ejemplo, la integridad de algunos sistemas de votación electrónica puede requerir que cada papeleta sea certificada por una autoridad electoral antes de que pueda ser aceptada para el recuento; esto permite a la autoridad verificar las credenciales del votante para asegurarse de que se le permite votar y de que no está enviando más de una papeleta. Al mismo tiempo, es importante que esta autoridad no conozca las selecciones del votante. Una firma ciega no vinculable proporciona esta garantía, ya que la autoridad no verá el contenido de ninguna papeleta que firme y no podrá vincular las papeletas ciegas que firme con las papeletas no ciegas que reciba para el recuento.

Esquemas de firma ciega

Existen esquemas de firma ciega para muchos protocolos de firma de clave pública. Más formalmente, un esquema de firma ciega es un protocolo criptográfico que involucra a dos partes: un usuario, Alice, que desea obtener firmas en sus mensajes, y un firmante, Bob, que está en posesión de su clave de firma secreta. Al final del protocolo, Alice obtiene la firma de Bob en m sin que Bob aprenda nada sobre el mensaje. Esta intuición de no aprender nada es difícil de capturar en términos matemáticos. El enfoque habitual es mostrar que para cada firmante (adversario), existe un simulador que puede generar la misma información que el firmante. Esto es similar a la forma en que se define el conocimiento cero en los sistemas de prueba de conocimiento cero .

Firmas RSA ciegas

[2] : 235 

Uno de los esquemas de firma ciega más simples se basa en la firma RSA. Una firma RSA tradicional se calcula elevando el mensaje m al exponente secreto d módulo el módulo público N. La versión ciega utiliza un valor aleatorio r , de modo que r es relativamente primo a N (es decir, mcd ( r , N ) = 1). r se eleva al exponente público e módulo N , y el valor resultante se utiliza como factor de cegamiento. El autor del mensaje calcula el producto del mensaje y el factor de cegamiento, es decir:

y envía el valor resultante a la autoridad firmante. Como r es un valor aleatorio y la asignación es una permutación, se deduce que r también es aleatorio. Esto implica que no se filtra ninguna información sobre m . La autoridad firmante calcula entonces la firma ciega s' como:

s' se envía de vuelta al autor del mensaje, quien luego puede eliminar el factor cegador para revelar s , la firma RSA válida de m :

Esto funciona porque las claves RSA satisfacen la ecuación y, por lo tanto,

Por lo tanto, s es de hecho la firma de m .

En la práctica, la propiedad de que firmar un mensaje ciego produce como máximo un mensaje firmado válido es lo que suele ser deseable. Esto significa un voto por papeleta firmada en elecciones, por ejemplo. Esta propiedad no se cumple en el esquema simple descrito anteriormente: el mensaje original y la firma no ciega son válidos, pero también lo son el mensaje ciego y la firma ciega, y posiblemente otras combinaciones si el atacante es astuto. Una solución a esto es firmar ciegamente un hash criptográfico del mensaje, no el mensaje en sí. [3]

Peligros de la firma ciega RSA

RSA está sujeto al ataque de cegamiento RSA, mediante el cual es posible engañar a alguien para que descifre un mensaje firmando otro mensaje de forma ciega. Dado que el proceso de firma es equivalente a descifrar con la clave secreta del firmante, un atacante puede proporcionar una versión ciega de un mensaje cifrado con la clave pública del firmante para que lo firme. El mensaje cifrado normalmente sería información secreta que el atacante observó que se enviaba cifrada con la clave pública del firmante y sobre la que quiere obtener más información. Cuando el atacante elimina la versión ciega, la versión firmada tendrá el texto claro:

¿Dónde está la versión cifrada del mensaje? Cuando el mensaje está firmado, el texto sin cifrar se extrae fácilmente:

Nótese que se refiere a la función totiente de Euler . El mensaje ahora se obtiene fácilmente.

Este ataque funciona porque en este esquema de firma ciega el firmante firma el mensaje directamente. Por el contrario, en un esquema de firma no ciega el firmante normalmente utilizaría un esquema de relleno (por ejemplo, firmando el resultado de una función hash criptográfica aplicada al mensaje, en lugar de firmar el mensaje en sí); sin embargo, dado que el firmante no conoce el mensaje real, cualquier esquema de relleno produciría un valor incorrecto cuando no esté cegado. Debido a esta propiedad multiplicativa de RSA, la misma clave nunca debería utilizarse para fines de cifrado y firma.

Véase también

Referencias

  1. ^ Chaum, David (1983). "Firmas ciegas para pagos imposibles de rastrear" (PDF) . Avances en criptología . Vol. 82. págs. 199-203. doi :10.1007/978-1-4757-0602-4_18. ISBN . 978-1-4757-0604-8.
  2. ^ Goldwasser, S. y Bellare, M. "Lecture Notes on Cryptography" Archivado el 21 de abril de 2012 en Wayback Machine . Curso de verano sobre criptografía, MIT, 1996-2001
  3. ^ Los problemas de inversión de RSA One-More y la seguridad del esquema de firma ciega de Chaum

Enlaces externos