Algoritmos de firma basados en RSA

3

De Criptografía de inicio con Java - capítulo 4, firmas digitales:

  

Las firmas se crean utilizando el algoritmo RSA aplicando el RSA   algoritmo usando la clave privada y luego distribuyendo el resultado como   la firma. Debido a la forma en que funciona el algoritmo RSA, esto significa   la firma se puede descifrar usando la clave pública, dándole la   proceso que se ve en la Figura 4-5. La razón por la que funciona tan bien es que si   una firma se desencripta exitosamente con una clave pública dada, entonces   debe haberse creado con la clave privada correspondiente.

"la firma se puede descifrar usando la clave pública"? Pensé que el descifrado se realiza mediante la clave privada ...?

    
pregunta rapt 03.06.2014 - 20:50
fuente

2 respuestas

5

Este es un intento mal redactado para explicar las firmas RSA. La operación básica, la exponenciación modular, es la misma para todas las operaciones RSA. Entonces, en ese sentido, puede pensar en la verificación de la firma RSA como "descifrado" con la clave pública.

Sin embargo, tanto el tipo de clave como el relleno de mensajes son parte integral de las operaciones de RSA. Se requieren para asegurar las operaciones de RSA. El relleno RSA es diferente para el cifrado y la generación de firmas, incluso si ambos son informalmente llamados PKCS # 1 v1.5 padding. Los parámetros de entrada son generalmente también diferentes; la generación de firmas requiere que el relleno se aplique internamente en un valor hash formateado específico.

Las operaciones de clave pública y privada difieren de varias maneras. Ambos utilizan exponenciación modular. Sin embargo, las claves privadas requieren protección adicional para asegurarse de que los componentes secretos que conforman la clave privada no se filtren a través de ataques de canales laterales. La clave privada también usó un exponente grande o varios valores que permiten cálculos utilizando el Teorema del Resto Chino (CRT). Decir que la generación de firmas es cifrado con la clave privada es, por lo tanto, una declaración muy peligrosa; internamente deberían ser operaciones bastante diferentes.

Le insto a que simplemente lea las especificaciones RSA PKCS # 1 v2.1 en RFC 3447 . Son bastante legibles, y hacen una clara distinción entre los diversos primitivos en la sección 5.2:

  

La operación matemática principal en cada primitiva es      exponenciación, como en las primitivas de cifrado y descifrado de      Sección 5.1. RSASP1 y RSAVP1 [EDIT: para generación / verificación de firma] son lo mismo que RSADP y RSAEP [EDIT: para descifrado / cifrado, en ese orden]      excepto los nombres de sus argumentos de entrada y salida; son      Distinguidos ya que están destinados a diferentes propósitos.

Esto fue diferente para PKCS # 1 v1.5 y versiones anteriores del estándar PKCS # 1. El cambio en la redacción en PKCS # 1 fue muy deliberado . Desafortunadamente, la confusión se mantiene cuando se trata del OID que especifica una clave pública RSA, incluso una que se usa para la verificación de firmas:

{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) rsaEncryption(1)}

Este es un legado de los antiguos estándares PKCS # 1 versión 1, me temo.

Para obtener más información, consulte también enlace .

    
respondido por el Maarten Bodewes 22.06.2014 - 19:26
fuente
0

Primero una revisión rápida de RSA:

cifrado RSA

En el cifrado RSA, usted encripta un texto plano M elevándolo a una clave pública e en un módulo conocido públicamente N:

cifrado = M e mod N

Para descifrar, eleva el texto cifrado a la clave privada d:

descifrado = (M e ) d = M ed mod N

Las claves privadas y públicas están diseñadas de modo que x ed = x mod N para (casi) todas las x.

firma RSA

Para firmar un mensaje M, lo "cifras" con tu clave privada d:

signature = M d mod N

Para verificar si realmente lo ha firmado, cualquiera puede buscar su clave pública y aumentar la firma a su poder:

signature e = (M d ) e = M mod N

Si el resultado es el mensaje M, entonces el verificador sabe que usted firmó el mensaje.

Conclusión

En efecto, al verificar una firma, el verificador está realizando la misma operación que alguien que descifraba la firma usando la clave pública.

    
respondido por el Ari Trachtenberg 03.06.2014 - 23:19
fuente

Lea otras preguntas en las etiquetas