次の方法で共有


System.Security.Cryptography.RSAParameters 構造体

この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。

RSAParameters構造体は、RSA アルゴリズムの標準パラメーターを表します。

RSA クラスは、RSAParameters構造の形式で生の RSA キーを取得できるExportParameters メソッドを公開します。

この構造の内容を理解するには、 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 係数
P p prime1
Q q prime2

RSA のセキュリティは、公開キー { e, n } を指定すると、d を直接計算するか、n を p と q に組み込むことで計算できないという事実に由来します。 したがって、d、p、または q に関連するキーの一部は秘密にしておく必要があります。 ExportParametersを呼び出して公開キー情報のみを要求すると、ExponentModulusのみを受け取る理由になります。 他のフィールドは、秘密キーにアクセスでき、それを要求した場合にのみ使用できます。

RSAParameters は暗号化されないため、秘密キー情報と共に使用するときは注意が必要です。 RSAParametersのすべてのメンバーがシリアル化されます。 誰かが秘密キー パラメーターを派生またはインターセプトできる場合、キーと、暗号化または署名されたすべての情報が侵害されます。