Algoritmi di firma basati su RSA

3

Da Iniziare la crittografia con Java - capitolo 4, firme digitali:

Signatures are created using the RSA algorithm by applying the RSA algorithm using the private key and then distributing the result as the signature. Because of the way the RSA algorithm works, this means the signature can be decrypted using the public key, giving you the process you see in Figure 4-5. The reason it works so well is that if a signature decrypts successfully with a given public key, then it must have been created with the corresponding private key.

"la firma può essere decifrata usando la chiave pubblica"? Pensavo che la decifrazione fosse fatta dalla chiave privata ...?

    
posta rapt 03.06.2014 - 20:50
fonte

2 risposte

5

Questo è un tentativo maledetto di spiegare le firme RSA. L'operazione di base - l'esponenziazione modulare - è la stessa per tutte le operazioni RSA. Quindi in questo senso puoi pensare alla verifica della firma RSA come "decifrare" con la chiave pubblica.

Tuttavia, sia il tipo di chiave che il riempimento del messaggio sono parte integrante delle operazioni RSA. Sono tenuti a proteggere le operazioni RSA. Il padding RSA è diverso per la crittografia e la generazione della firma, anche se entrambi sono informalmente chiamati padding PKCS # 1 v1.5. I parametri di input sono generalmente anche diversi; la generazione della firma richiede che il padding venga applicato su uno specifico valore hash formattato internamente.

Le operazioni con le chiavi pubbliche e private si differenziano in diversi modi. Entrambi usano l'esponenziazione modulare. Tuttavia, le chiavi private richiedono una protezione aggiuntiva per assicurarsi che i componenti segreti che compongono la chiave privata non siano trapelati attraverso gli attacchi ai canali laterali. La chiave privata ha anche utilizzato un esponente di grandi dimensioni o più valori che consentono i calcoli utilizzando il Teorema del resto cinese (CRT). Dire che la generazione della firma è la crittografia con la chiave privata è quindi una dichiarazione molto pericolosa; internamente dovrebbero essere operazioni abbastanza diverse.

Ti esorto a leggere semplicemente le specifiche RSA PKCS # 1 v2.1 in RFC 3447 . Sono abbastanza leggibili e fanno una chiara distinzione tra i vari primitivi nella sezione 5.2:

The main mathematical operation in each primitive is exponentiation, as in the encryption and decryption primitives of Section 5.1. RSASP1 and RSAVP1 [EDIT: for signature generation / verification] are the same as RSADP and RSAEP [EDIT: for decryption / encryption, in that order] except for the names of their input and output arguments; they are distinguished as they are intended for different purposes.

Questo era diverso per PKCS # 1 v1.5 e versioni precedenti dello standard PKCS # 1. Il cambio di formulazione in PKCS # 1 era molto deliberato . Sfortunatamente la confusione rimane quando si tratta di OID che specifica una chiave pubblica RSA, anche quella utilizzata per la verifica della firma:

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

Questa è un'eredità dei vecchi standard PKCS # 1 versione 1, temo.

Per ulteriori informazioni, vedi anche link .

    
risposta data 22.06.2014 - 19:26
fonte
0

Prima una rapida recensione di RSA:

Crittografia RSA

Nella crittografia RSA, si cripta un testo semplice M sollevandolo in una chiave pubblica e in un modulo pubblicamente noto N:

crittografia = M e mod N

Per decodificare, si solleva il testo crittografato sulla chiave privata d:

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

Le chiavi private e pubbliche sono progettate in modo che x ed = x mod N per (quasi) tutte x.

Firma RSA

Per firmare un messaggio M, lo "cifri" con la tua chiave privata d:

firma = M d mod N

Per verificare se l'hai effettivamente firmato, chiunque può cercare la tua chiave pubblica e aumentare la firma al suo potere:

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

Se il risultato è il messaggio M, il verificatore sa che tu ha firmato il messaggio.

Conclusione

In effetti, nel verificare una firma, il verificatore sta eseguendo la stessa operazione di qualcuno che stava decifrando la firma usando la chiave pubblica.

    
risposta data 03.06.2014 - 23:19
fonte

Leggi altre domande sui tag