Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.