Firma ciega RSA vs firmar un hash

2

Según tengo entendido, la característica clave de una firma RSA ciega es que el firmante desconoce el contenido del mensaje firmado.

¿En qué se diferencia esto de un simple hashing de algunos datos y la alimentación de hash a la entrada de la función de firma RSA?

Dado que el firmante solo conoce el hash de lo que está a punto de firmar, realiza la misma tarea: el firmante desconoce el contenido del mensaje real.

¿Cuál es la razón detrás de la introducción de firmas RSA ciegas, en lugar de usar el método descrito anteriormente?

    
pregunta ralien 05.01.2016 - 21:13
fuente

2 respuestas

5

Según el artículo de Wikipedia para Firmas ciegas :

  

Las firmas ciegas también se pueden usar para proporcionar desvinculación, lo que evita que el firmante vincule el mensaje ciego que firma con una versión posterior no ciega a la que se le puede solicitar que verifique.

El principio de desvinculación existe (entre otras razones) para proteger el anonimato del autor del mensaje. Imagine que 4 personas entregan un mensaje ciego al firmante, para el cual el firmante proporciona las firmas. En una fecha posterior se revela uno de los mensajes. La firma debe probar que A) el mensaje no está alterado (integridad), y B) es uno de los 4 mensajes originales (autenticidad), pero no debería poder decir a cuál de la original 4 es (anonimato).

Si usó "firmar un hash" como una forma de Firma ciega, el firmante (o un atacante que registra el tráfico de su red) podría recordar qué hash vino de cada persona, y luego, una vez que se revela el mensaje completo, Calcule su hash, compárelo con los hashes que se enviaron y sepa qué autor lo escribió, anulando el nombre del autor.

Es posible que algunas aplicaciones o casos de uso no se preocupen por la capacidad de enlace, en cuyo caso firmar un hash es una buena forma de hacer una Firma ciega. Pero si lo haces, entonces este esquema no es bueno. Por ejemplo, las firmas ciegas se usan comúnmente en sistemas electorales en los que la incapacidad de rastrear una boleta revelada a la persona que la emitió es un requisito del sistema.

    
respondido por el Mike Ounsworth 05.01.2016 - 21:35
fuente
3

Aparte de la propiedad de desvinculación explicada por @Mike (y es muy importante en algunos contextos, por ejemplo, en algunos protocolos de votación), simplemente proporcionar un hash al firmante permite una búsqueda exhaustiva en el datos: mientras que las claves viven en espacios lo suficientemente grandes como para impedir una búsqueda exhaustiva, los datos significativos no son necesariamente tan resistentes. Por ejemplo, si los datos que se van a firmar son "sí" o "no", entonces solo hay dos valores hash posibles, y el firmante puede simplemente intentar ambos para ver cuál coincide con el valor hash que envió.

Si desea que el firmante no pueda adivinar lo que está firmando, debe al menos emplear un hash aleatorio (los datos de hash deben incluir suficientes bytes aleatorios para evitar cualquier intento de adivinación por el firmante).

    
respondido por el Thomas Pornin 05.01.2016 - 21:58
fuente

Lea otras preguntas en las etiquetas