Aracılığıyla paylaş


Diffie-Hellman Sürüm 3 Ortak Anahtar BLOB'ları

Diffie-Hellman sürüm 3 Ortak Anahtar BLOB'ları (PUBLICKEYBLOB türü) bir DH ortak anahtarı hakkındaki bilgileri dışarı ve içeri aktarmak için kullanılır. Bunlar aşağıdaki biçime sahiptir:

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

bu BLOB biçimi, CRYPT_BLOB_VER3 bayrağı CryptExportKeyile kullanıldığında dışarı aktarılır. Sürüm BLOB'da olduğundan, CryptImportKeyile bu BLOB kullanırken bir bayrak belirtmeniz gerekmez.

Ayrıca, DH anahtarında anahtar parametrelerini ayarlamak için dwParam değeri KP_PUB_PARAMS kullanıldığında bu BLOB biçimi CryptSetKeyParam işleviyle birlikte kullanılır. Anahtarı oluşturmak için CRYPT_PREGEN bayrağı kullanıldığında bu yapılır. Bu durumda kullanıldığında, y değeri yoksayılır ve bu nedenle BLOB'a dahil edilmemelidir.

Aşağıdaki tabloda anahtar BLOB'un her bileşeni açıklanmaktadır.

Alan Açıklama
blobheader BLOBHEADER yapısı. bType üyesi PUBLICKEYBLOB değerine sahip olmalıdır.
dhpubkeyver3 DHPUBKEY_VER3 bir yapı. sihirli üyesi ortak anahtarlar için 0x33484400 olarak ayarlanmalıdır. Onaltılık değerin yalnızca "DH3" kodlamasının ASCII olduğuna dikkat edin.
P P değeri doğrudan DHPUBKEY_VER3 yapısından sonra bulunur ve her zaman DHPUBKEY_VER3bitlenP alanının (P bit uzunluğu) sekize bölünen uzunluğu (küçük endian biçimi) bayt cinsinden olmalıdır.
Q Q değeri doğrudan P değerinden sonra bulunur ve her zaman DHPUBKEY_VER3bitlenQ alanının bayt cinsinden uzunluğu sekize bölünmelidir (little-endian biçimi). BitlenQ değeri 0 ise, değer BLOB'da yoktur.
G G değeri doğrudan Q değerinden sonra bulunur ve her zaman DHPUBKEY_VER3bitlenP alanının uzunluğu (P'nin bit uzunluğu) sekize bölünür. Verilerin uzunluğu P'nin 8'e bölünmesinden bir veya daha fazla bayt daha kısaysa, verilerin istenen uzunlukta (küçük endian biçimi) olması için gerekli baytlarla (sıfır değer) doldurulması gerekir.
J J değeri doğrudan G değerinden sonra bulunur ve her zaman DHPUBKEY_VER3bitlenJ alanının bayt cinsinden uzunluğu sekize bölünmelidir (little-endian biçimi). BitlenQ değeri 0 ise, değer BLOB'da yoktur.
Y Y değeri (G^X) mod P, J değerinin hemen ardından bulunur ve her zaman DHPUBKEY_VER3bitlenP alanının bayt cinsinden uzunluğu (P bit uzunluğu) sekize bölünmelidir. (G^X) mod P hesaplamasından kaynaklanan verilerin uzunluğu P'nin 8'e bölünmesinden bir veya daha fazla bayt daha kısaysa, verilerin istenen uzunlukta (küçük endian biçimi) olması için gerekli baytlarla (sıfır değer) doldurulması gerekir. Bu yapı KP_PUB_PARAMS dwParam değeriyle CryptSetKeyParam kullanıldığında, bu değer BLOB'a dahil değildir.

 

Not

Ortak anahtar BLOB'ları şifrelenmez, ancak düz metin biçiminde ortak anahtarlar içerir.