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 .