Diffie-Hellman バージョン 3 公開キー BLOB
バージョン 3 Diffie-Hellman公開キー BLOB (タイプ PUBLICKEYBLOB) は、DH 公開キーに関する情報をエクスポートおよびインポートするために使用されます。 これらの形式は次のとおりです。
BLOBHEADER blobheader;
// As explained under "Data Structures"
DHPUBKEY_VER3 dhpubkeyver3;
BYTE p[dhpubkeyver3.bitlenP/8];
// Where P is the prime modulus
BYTE q[dhpubkeyver3.bitlenQ/8];
// Where Q is a large factor of P-1
BYTE g[dhpubkeyver3.bitlenP/8];
// Where G is the generator parameter
BYTE j[dhpubkeyver3.bitlenJ/8];
// Where J is (P-1)/Q
BYTE y[dhpubkeyver3.bitlenP/8];
// Where Y is (G^X) mod P
この BLOB 形式は、CRYPT_BLOB_VER3 フラグが CryptExportKey と共に使用されるときにエクスポートされます。 バージョンは BLOB 内にあるため、CryptImportKey でこの BLOB を使用するときにフラグを指定する必要はありません。
さらに、この BLOB 形式は、dwParam 値KP_PUB_PARAMSを使用して DH キーにキー パラメーターを設定するときに、CryptSetKeyParam 関数と共に使用されます。 これは、キーの生成に CRYPT_PREGEN フラグが使用されている場合に行われます。 この状況で使用する場合、y 値は無視されるため、BLOB に含めてはいけません。
次の表では、キー BLOB の各コンポーネントについて説明します。
フィールド | 説明 |
---|---|
blobheader | BLOBHEADER 構造体。 bType メンバーの値は PUBLICKEYBLOB である必要があります。 |
dhpubkeyver3 | DHPUBKEY_VER3構造体。 マジック メンバーは、公開キーの0x33484400に設定する必要があります。 16 進数の値は、"DH3" の 単なる ASCII エンコードであることに注意してください。 |
P | P 値は 、DHPUBKEY_VER3 構造体の直後にあり、常に、 DHPUBKEY_VER3bitlenP フィールドの長さ (P のビット長) を 8 (リトル エンディアン 形式) で割ったバイト単位にする必要があります。 |
Q | Q 値は P 値の直後にあり、常に 、DHPUBKEY_VER3bitlenQ フィールドの長さを 8 で割ったバイト単位 (リトル エンディアン 形式) にする必要があります。 bitlenQ 値が 0 の場合、値は BLOB に存在しません。 |
G | G 値は Q 値の直後にあり、常に 、DHPUBKEY_VER3bitlenP フィールドの長さ (P のビット長) を 8 で割ったバイト単位にする必要があります。 データの長さが P を 8 で割ったバイトより 1 バイト短い場合、データを目的の長さ (リトル エンディアン 形式) にするために、データに必要なバイト (ゼロ値) を埋め込む必要があります。 |
J | J 値は G 値の直後にあり、常に 、DHPUBKEY_VER3bitlenJ フィールドの長さを 8 で割ったバイト単位 (リトル エンディアン 形式) にする必要があります。 bitlenQ 値が 0 の場合、値は BLOB に存在しません。 |
Y | Y 値 (G^X) mod P は J 値の直後にあり、 常に、DHPUBKEY_VER3bitlenP フィールドの長さ (P のビット長) を 8 で割った値にする必要があります。 (G^X) mod P の計算結果のデータの長さが P を 8 で割ったバイトより 1 バイト短い場合、データを必要な長さ (リトル エンディアン 形式) にするために、データに必要なバイト (ゼロ値) を埋め込む必要があります。 dwParam 値がKP_PUB_PARAMSされた CryptSetKeyParam でこの構造体を使用する場合、この値は BLOB に含まれません。 |
Note
公開キー BLOB は暗号化されませんが、プレーンテキスト形式の公開キーが含まれています。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示