System.Security.Cryptography.RSAParameters-struktur

Anmärkning

Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.

Strukturen RSAParameters representerar standardparametrarna för RSA-algoritmen.

Klassen RSA exponerar en ExportParameters metod som gör att du kan hämta den råa RSA-nyckeln i form av en RSAParameters struktur.

För att förstå innehållet i den här strukturen hjälper det att känna till hur algoritmen RSA fungerar. I nästa avsnitt beskrivs algoritmen kort.

RSA-algoritm

Om du vill generera ett nyckelpar börjar du med att skapa två stora primtal med namnet p och q. Dessa tal multipliceras och resultatet kallas n. Eftersom p och q båda är primtal är de enda faktorerna för n 1, p, q och n.

Om vi bara tänker på tal som är mindre än n, är antalet tal som är relativt prima till n, det vill säga inte har några gemensamma faktorer med n, lika med (p - 1)(q - 1).

Nu väljer du ett tal e, som är relativt primärt för det värde som du beräknade. Den offentliga nyckeln representeras nu som {e, n}.

Om du vill skapa den privata nyckeln måste du beräkna d, vilket är ett tal som (d)(e) mod (p - 1)(q - 1) = 1. I enlighet med Euclidean-algoritmen är den privata nyckeln nu {d, n}.

Kryptering av klartext m till chiffertext c definieras som c = (m ^ e) mod n. Dekryptering skulle sedan definieras som m = (c ^ d) mod n.

Sammanfattning av fält

Avsnitt A.1.2 i PKCS #1: RSA Cryptography Standard definierar ett format för privata RSA-nycklar.

I följande tabell sammanfattas fälten i RSAParameters strukturen. Den tredje kolumnen innehåller motsvarande fält i avsnitt A.1.2 i PKCS #1: RSA Cryptography Standard.

RSAParameters fält Innehåller Motsvarande PKCS #1-fält
D d, den privata exponenten privateExponent
DP d mod (p - 1) exponent1
DQ d mod (q - 1) exponent2
Exponent e, den offentliga exponenten publicExponent
InverseQ (InverseQ)(q) = 1 mod p koefficient
Modulus n modul
P p prime1
Q q prime2

Säkerheten för RSA härleds från det faktum att med tanke på den offentliga nyckeln { e, n }, är det beräkningsmässigt omöjligt att beräkna d, antingen direkt eller genom att räkna in n i p och q. Därför måste alla delar av nyckeln som är relaterade till d, p eller q hållas hemliga. Om du bara ringer ExportParameters och ber om information om den offentliga nyckeln får du endast Exponent och Modulus. De andra fälten är endast tillgängliga om du har åtkomst till den privata nyckeln och du begär det.

RSAParameters krypteras inte på något sätt, så du måste vara försiktig när du använder den med den privata nyckelinformationen. Alla medlemmar i RSAParameters är serialiserade. Om någon kan härleda eller fånga upp parametrarna för den privata nyckeln komprometteras nyckeln och all information som krypteras eller signeras med den.