Struktura System.Security.Cryptography.RSAParameters
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Struktura RSAParameters reprezentuje standardowe parametry algorytmu RSA.
Klasa RSA uwidacznia metodę ExportParameters , która umożliwia pobranie nieprzetworzonego RSAParameters klucza RSA w postaci struktury.
Aby zrozumieć zawartość tej struktury, warto zapoznać się z działaniem algorytmu RSA . W następnej sekcji omówiono krótko algorytm.
Algorytm RSA
Aby wygenerować parę kluczy, zacznij od utworzenia dwóch dużych liczb głównych o nazwach p i q. Te liczby są mnożone, a wynik jest wywoływany n. Ponieważ p i q są zarówno liczbami głównymi, jedynymi czynnikami n są 1, p, q i n.
Jeśli rozważymy tylko liczby, które są mniejsze niż n, liczba liczb, które są stosunkowo prime do n, czyli nie mają żadnych czynników wspólnych z n, równa (p - 1)(q - 1).
Teraz wybierz liczbę e, która jest stosunkowo podstawowa do obliczonej wartości. Klucz publiczny jest teraz reprezentowany jako {e, n}.
Aby utworzyć klucz prywatny, należy obliczyć d, czyli liczbę taką, że (d)(e) mod (p - 1)(q - 1) = 1. Zgodnie z algorytmem euklidesowym klucz prywatny to teraz {d, n}.
Szyfrowanie zwykłego tekstu m do szyfrowania c jest definiowane jako c = (m ^ e) mod n. Odszyfrowywanie będzie wtedy definiowane jako m = (c ^ d) mod n.
Podsumowanie pól
Sekcja A.1.2 PKCS #1: RsA Cryptography Standard definiuje format kluczy prywatnych RSA.
Poniższa tabela zawiera podsumowanie pól RSAParameters struktury. Trzecia kolumna zawiera odpowiednie pole w sekcji A.1.2 PKCS #1: RSA Cryptography Standard.
RSAParameters Pole | Contains | Odpowiednie pole PKCS #1 |
---|---|---|
D | d, wykładnik prywatny | privateExponent |
DP | d mod (p - 1) | wykładnik1 |
DQ | d mod (q - 1) | wykładnik2 |
Exponent | e, wykładnik publiczny | publicExponent |
InverseQ | (OdwrotnośćQ) (q) = 1 mod p | Współczynnik |
Modulus | n | modulus |
P | p | prime1 |
Q | q | prime2 |
Bezpieczeństwo RSA wynika z faktu, że biorąc pod uwagę klucz publiczny { e, n }, jest obliczanie niewykonalne do obliczenia d, bezpośrednio lub przez uwzględnienie n w p i q. W związku z tym każda część klucza powiązana z kluczem d, p lub q musi być przechowywana w tajemnicy. Jeśli dzwonisz ExportParameters i pytasz tylko o informacje o kluczu publicznym, dlatego otrzymasz tylko Exponent i Modulus. Inne pola są dostępne tylko wtedy, gdy masz dostęp do klucza prywatnego i żądasz go.
RSAParameters nie jest szyfrowany w żaden sposób, dlatego należy zachować ostrożność podczas korzystania z nich z informacjami o kluczu prywatnym. Wszystkie elementy członkowskie RSAParameters są serializowane. Jeśli ktoś może uzyskać lub przechwycić parametry klucza prywatnego, klucz i wszystkie informacje zaszyfrowane lub podpisane z nim zostaną naruszone.