Struttura System.Security.Cryptography.RSAParameters
Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.
La RSAParameters struttura rappresenta i parametri standard per l'algoritmo RSA.
La RSA classe espone un ExportParameters metodo che consente di recuperare la chiave RSA non elaborata sotto forma di struttura RSAParameters .
Per comprendere il contenuto di questa struttura, è utile acquisire familiarità con il funzionamento dell'algoritmo RSA . La sezione successiva illustra brevemente l'algoritmo.
Algoritmo RSA
Per generare una coppia di chiavi, iniziare creando due numeri primi di grandi dimensioni denominati p e q. Questi numeri vengono moltiplicati e il risultato viene chiamato n. Poiché p e q sono entrambi numeri primi, gli unici fattori di n sono 1, p, q e n.
Se si considerano solo numeri minori di n, il numero di numeri relativamente primi a n, ovvero non hanno fattori in comune con n, uguale a (p - 1)(q - 1).
Ora si sceglie un numero e, che è relativamente primo del valore calcolato. La chiave pubblica è ora rappresentata come {e, n}.
Per creare la chiave privata, è necessario calcolare d, ovvero un numero tale che (d)(e) mod (p - 1)(q - 1) = 1. In conformità con l'algoritmo Euclideo, la chiave privata è ora {d, n}.
La crittografia di testo non crittografato m in testo crittografato c è definita come c = (m ^ e) mod n. La decrittografia viene quindi definita come m = (c ^ d) mod n.
Riepilogo dei campi
La sezione A.1.2 di PKCS #1: RSA Cryptography Standard definisce un formato per le chiavi private RSA.
Nella tabella seguente vengono riepilogati i campi della RSAParameters struttura. La terza colonna fornisce il campo corrispondente nella sezione A.1.2 di PKCS #1: RSA Cryptography Standard.
Campo diRSAParameters | Contiene | Campo PKCS #1 corrispondente |
---|---|---|
D | d, esponente privato | privateExponent |
DP | d mod (p - 1) | esponente1 |
DQ | d mod (q - 1) | esponente2 |
Exponent | e, esponente pubblico | publicExponent |
InverseQ | (InverseQ) (q) = 1 mod p | Coefficiente |
Modulus | n | modulo |
P | p | prime1 |
Q | q | prime2 |
La sicurezza di RSA deriva dal fatto che, data la chiave pubblica { e, n }, è infeasible dal punto di vista computazionale per calcolare d, direttamente o inserendo n in p e q. Pertanto, qualsiasi parte della chiave correlata a d, p o q deve essere mantenuta segreta. Se si chiama ExportParameters e si richiedono solo le informazioni sulla chiave pubblica, questo è il motivo per cui si riceveranno solo Exponent e Modulus. Gli altri campi sono disponibili solo se si ha accesso alla chiave privata e lo si richiede.
RSAParameters non è crittografato in alcun modo, quindi è necessario prestare attenzione quando lo si usa con le informazioni sulla chiave privata. Tutti i membri di RSAParameters vengono serializzati. Se chiunque può derivare o intercettare i parametri della chiave privata, la chiave e tutte le informazioni crittografate o firmate con esso vengono compromesse.