System.Security.Cryptography.RSAParameters 構造体
この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。
この構造体は RSAParameters 、RSA アルゴリズムの標準パラメーターを表します。
このクラスは RSA 、構造の ExportParameters 形式で生の RSA キーを取得できるようにするメソッドを RSAParameters 公開します。
この構造の内容を理解するには、アルゴリズムのしくみ RSA を理解するのに役立ちます。 次のセクションでは、アルゴリズムについて簡単に説明します。
RSA アルゴリズム
キー ペアを生成するには、まず p と q という名前の 2 つの大きな素数を作成します。 これらの数値は乗算され、結果は n と呼ばれます。 p と q はどちらも素数であるため、n の唯一の要因は 1、p、q、n です。
n 未満の数値のみを考慮する場合、n に比較的素数である数値の数、つまり n と等しい (p - 1)(q - 1) と共通する要因はありません。
ここで、数値 e を選択します。これは、計算した値に対して相対的に素数です。 公開キーは {e, n} として表されるようになりました。
秘密キーを作成するには、d (d)(e) mod (p - 1)(q - 1) = 1 のような数値である d を計算する必要があります。 ユークリッド アルゴリズムに従って、秘密キーは {d, n} になりました。
プレーンテキスト m から暗号文 c への暗号化は、c = (m ^ e) mod n として定義されます。 復号化は m = (c ^ d) mod n として定義されます。
フィールドの概要
PKCS #1 の セクション A.1.2: RSA Cryptography Standard では、RSA 秘密キーの形式が定義されています。
次の表は、構造体のフィールドを RSAParameters まとめたものです。 3 番目の列は、PKCS #1: RSA Cryptography Standard のセクション A.1.2 の対応するフィールドを提供します。
RSAParameters のフィールド | 内容 | 対応する PKCS #1 フィールド |
---|---|---|
D | d、プライベート指数 | privateExponent |
DP | d mod (p - 1) | exponent1 |
DQ | d mod (q - 1) | exponent2 |
Exponent | e、パブリック指数 | publicExponent |
InverseQ | (逆Q)(q) = 1 mod p | 係数 |
Modulus | n | modulus |
P | P | prime1 |
Q | q | prime2 |
RSA のセキュリティは、公開キー { e, n } を指定すると、d を直接計算するか、n を p と q に組み込むことで計算できないという事実に由来します。 したがって、d、p、または q に関連するキーの一部は秘密にしておく必要があります。 公開キー情報だけを呼び出 ExportParameters して要求する場合、これがあなたが受け取る唯一 Exponent の理由です Modulus。 他のフィールドは、秘密キーにアクセスでき、それを要求した場合にのみ使用できます。
RSAParameters は暗号化されないため、秘密キー情報と共に使用するときは注意が必要です。 すべてのメンバー RSAParameters がシリアル化されます。 誰かが秘密キー パラメーターを派生またはインターセプトできる場合、キーと、暗号化または署名されたすべての情報が侵害されます。
.NET