System.Security.Cryptography.RSAParameters – struktura
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Struktura RSAParameters představuje standardní parametry algoritmu RSA.
Třída RSA zveřejňuje metodu ExportParameters , která umožňuje načíst nezpracovaný klíč RSA ve formě RSAParameters struktury.
Abyste pochopili obsah této struktury, pomůže vám seznámit se s tím, jak algoritmus RSA funguje. V další části se stručně popisuje algoritmus.
Algoritmus RSA
Pokud chcete vygenerovat pár klíčů, začněte vytvořením dvou velkých počátečních čísel s názvem p a q. Tato čísla se vynásobí a výsledek se nazývá n. Vzhledem k tomu, že p a q jsou obě čísla, jedinými faktory n jsou 1, p, q a n.
Pokud se podíváme pouze na čísla, která jsou menší než n, počet čísel, která jsou relativně základní k n, tedy nemají žádné faktory společné s n, rovná se (p - 1)(q - 1).
Teď zvolíte číslo e, které je relativně základní hodnotou, kterou jste vypočítali. Veřejný klíč je nyní reprezentován jako {e, n}.
Chcete-li vytvořit privátní klíč, musíte vypočítat d, což je číslo tak, že (d)(e) mod (p - 1)(q - 1) = 1. V souladu s euklidovým algoritmem je teď privátní klíč {d, n}.
Šifrování prostého textu m na šifertext c je definováno jako c = (m ^ e) mod n. Dešifrování by pak bylo definováno jako m = (c ^ d) mod n.
Souhrn polí
Oddíl A.1.2 pkcs #1: Standard kryptografie RSA definuje formát privátních klíčů RSA.
Následující tabulka shrnuje pole RSAParameters struktury. Třetí sloupec obsahuje odpovídající pole v části A.1.2 pkcs #1: RSA Cryptography Standard.
RSAParameters Pole | Contains | Odpovídající pole PKCS č. 1 |
---|---|---|
D | d, privátní exponent | privateExponent |
DP | d mod (p - 1) | exponent1 |
DQ | d mod (q - 1) | exponent2 |
Exponent | e, veřejný exponent | publicExponent |
InverseQ | (InverseQ) (q) = 1 mod p | Koeficient |
Modulus | n | modulus |
P | p | prime1 |
Q | q | prime2 |
Zabezpečení RSA vychází ze skutečnosti, že vzhledem k veřejnému klíči { e, n }, je výpočetně neproveditelný pro výpočet d, a to buď přímo, nebo pomocí faktoringu n do p a q. Proto musí být jakákoli část klíče související s klíčem d, p nebo q udržována v tajnosti. Pokud zavoláte ExportParameters a požádáte pouze o informace o veřejném klíči, je to důvod, proč obdržíte pouze Exponent a Modulus. Ostatní pole jsou dostupná jenom v případě, že máte přístup k privátnímu klíči a požadujete ho.
RSAParameters není šifrovaný žádným způsobem, takže při použití s informacemi o privátním klíči musíte být opatrní. Všechny členy RSAParameters jsou serializovány. Pokud někdo může odvodit nebo zachytit parametry privátního klíče, dojde k ohrožení zabezpečení klíče a všech informací zašifrovaných nebo podepsaných pomocí něj.