RSAParameters 構造体


RSA アルゴリズムの標準のパラメーターを表します。Represents the standard parameters for the RSA algorithm.

public value class RSAParameters
public struct RSAParameters
type RSAParameters = struct
Public Structure RSAParameters


RSA クラスは、RSAParameters 構造体の形式で未加工の RSA キーを取得できるようにする ExportParameters メソッドを公開します。The RSA class exposes an ExportParameters method that enables you to retrieve the raw RSA key in the form of an RSAParameters structure. この構造体の内容を理解するには、RSA アルゴリズムのしくみについて理解しておく必要があります。Understanding the contents of this structure requires familiarity with how the RSA algorithm works. 次のセクションでは、このアルゴリズムについて簡単に説明します。The next section discusses the algorithm briefly.

RSA アルゴリズムRSA Algorithm

キーペアを生成するには、最初に p と q という名前の2つの大きな素数を作成します。To generate a key pair, you start by creating two large prime numbers named p and q. これらの数値を乗算し、結果を n と呼びます。These numbers are multiplied and the result is called n. P と q は両方とも素数であるため、n の唯一の要素は1、p、q、および n です。Because p and q are both prime numbers, the only factors of n are 1, p, q, and n.

N 未満の数値のみを考慮した場合、比較的素数である数値の数は、n と同じではありません。 n、equals (p-1) (q-1) のようになります。If we consider only numbers that are less than n, the count of numbers that are relatively prime to n, that is, have no factors in common with n, equals (p - 1)(q - 1).

ここで、数値 e を選択します。これは、計算した値に比較的素です。Now you choose a number e, which is relatively prime to the value you calculated. 公開キーは {e, n} として表されるようになりました。The public key is now represented as {e, n}.

秘密キーを作成するには、d を計算する必要があります。これは、(d) (e) mod (p-1) (q-1) = 1 の数値です。To create the private key, you must calculate d, which is a number such that (d)(e) mod (p - 1)(q - 1) = 1. ユークリッドアルゴリズムに従って、秘密キーは {d, n} になりました。In accordance with the Euclidean algorithm, the private key is now {d, n}.

テキスト m から暗号文 c への暗号化は、c = (m ^ e) mod n として定義されています。Encryption of plaintext m to ciphertext c is defined as c = (m ^ e) mod n. その後、復号化は m = (c ^ d) mod n として定義されます。Decryption would then be defined as m = (c ^ d) mod n.

フィールドの概要Summary of Fields

Section A. 1.2 for PKCS #1: rsa 研究所 Web サイトのRsa Cryptography Standardでは、rsa 秘密キーの形式が定義されています。Section A.1.2 of the PKCS #1: RSA Cryptography Standard on the RSA Laboratories Web site defines a format for RSA private keys.

次の表は、RSAParameters 構造のフィールドをまとめたものです。The following table summarizes the fields of the RSAParameters structure. 3番目の列は、「 PKCS #1: RSA Cryptography Standard」セクションの対応するフィールドを示しています。The third column provides the corresponding field in section A.1.2 of PKCS #1: RSA Cryptography Standard.

RSAParameters のフィールドRSAParameters field 次の値を含むContains 対応する PKCS #1 フィールドCorresponding PKCS #1 field
D d、プライベート指数d, the private exponent privateExponentprivateExponent
DP d mod (p-1)d mod (p - 1) exponent1exponent1
DQ d mod (q-1)d mod (q - 1) exponent2exponent2
Exponent e、一般指数e, the public exponent publicExponentpublicExponent
InverseQ (InverseQ)(q) = 1 mod p(InverseQ)(q) = 1 mod p coefficient
Modulus nn modulusmodulus
P pp prime1prime1
Q qq prime2prime2

RSA のセキュリティは、公開キー {e, n} が指定されている場合、直接、または n を p と q にファクタリングすることによって d を計算することは不可能であるという事実から派生します。The security of RSA derives from the fact that, given the public key { e, n }, it is computationally infeasible to calculate d, either directly or by factoring n into p and q. そのため、d、p、または q に関連するキーのすべての部分は、秘密にしておく必要があります。Therefore, any part of the key related to d, p, or q must be kept secret. を呼び出す場合If you call

ExportParameters し、公開キー情報のみを要求するので、ExponentModulusのみを受信します。ExportParameters and ask for only the public key information, this is why you will receive only Exponent and Modulus. その他のフィールドは、秘密キーにアクセスでき、要求した場合にのみ使用できます。The other fields are available only if you have access to the private key, and you request it.

RSAParameters はどのような方法でも暗号化されていないため、秘密キーの情報と共に使用する場合は注意が必要です。RSAParameters is not encrypted in any way, so you must be careful when you use it with the private key information. 実際、秘密キーの情報を含むフィールドはシリアル化できません。In fact, none of the fields that contain private key information can be serialized. リモート処理呼び出しを使用して、またはいずれかのシリアライザーを使用して RSAParameters 構造体をシリアル化しようとすると、公開キー情報だけが返されます。If you try to serialize an RSAParameters structure with a remoting call or by using one of the serializers, you will receive only public key information. 秘密キーの情報を渡す必要がある場合は、手動でそのデータを送信する必要があります。If you want to pass private key information, you will have to manually send that data. どのような場合でも、任意のユーザーがパラメーターを派生させると、送信されるキーは役に立たなくなります。In all cases, if anyone can derive the parameters, the key that you transmit becomes useless.

.Net Core 2.1.0 以降: シリアル化の制限が削除され、RSAParameters のすべてのメンバーがシリアル化されます。.NET Core 2.1.0 and later: The serialization restrictions have been removed and all members of RSAParameters are serialized. .NET Core 2.1.0 以降に対してコードを記述またはアップグレードする場合は、excercised する必要があります。秘密キーのパラメーターを誰かが取得またはインターセプトできる場合、キーと、暗号化または署名されたすべての情報が侵害される可能性があるためです。Care must be excercised when writing or upgrading code against .NET Core 2.1.0 or later, because if anyone can derive or intercept the private key parameters the key and all the information encrypted or signed with it are compromised.



D アルゴリズムの RSA パラメーターを表します。Represents the D parameter for the RSA algorithm.


DP アルゴリズムの RSA パラメーターを表します。Represents the DP parameter for the RSA algorithm.


DQ アルゴリズムの RSA パラメーターを表します。Represents the DQ parameter for the RSA algorithm.


Exponent アルゴリズムの RSA パラメーターを表します。Represents the Exponent parameter for the RSA algorithm.


InverseQ アルゴリズムの RSA パラメーターを表します。Represents the InverseQ parameter for the RSA algorithm.


Modulus アルゴリズムの RSA パラメーターを表します。Represents the Modulus parameter for the RSA algorithm.


P アルゴリズムの RSA パラメーターを表します。Represents the P parameter for the RSA algorithm.


Q アルゴリズムの RSA パラメーターを表します。Represents the Q parameter for the RSA algorithm.