Что такое CngKeyBlobFormat EccPrivateBlob, сгенерированный CngAlgorithm.ECDiffieHellmanP521 / P256 / P384? - PullRequest
0 голосов
/ 15 октября 2019
CngKey key = CngKey.Create(CngAlgorithm.ECDiffieHellmanP521, null,
   new CngKeyCreationParameters { ExportPolicy = CngExportPolicies.AllowPlaintextExport });    
byte[] keyBlob= key.Export(CngKeyBlobFormat.EccPrivateBlob);

длина keyBlob равна 206. Каков его формат? какие байты являются 32-байтовым закрытым ключом и 64-байтовым открытым ключом?

в Импортировать открытый ключ из CngKey откуда-то еще? , длина 4 + 4 + 64 + 32 = 104,

1 Ответ

0 голосов
/ 16 октября 2019

Бинарная структура BLOB-объектов одинакова для всех трех кривых:

<magic number, 4 bytes><modulus length in bytes, 4 bytes><x-value of public key><y-value of public key><private key>

Подробно применяется:

  • secp256r1 / NIST P-256

    Private: 45434B32 20000000 <x-value of public key, 32 bytes><y-value of public key, 32 bytes><private key, 32 bytes>   total length: 104 bytes
    Public:  45434B31 20000000 <x-value of public key, 32 bytes><y-value of public key, 32 bytes>                          total length:  72 bytes
    
  • secp384r1 / NIST P-384

    Private: 45434B34 30000000 <x-value of public key, 48 bytes><y-value of public key, 48 bytes><private key, 48 bytes>   total length: 152 bytes
    Public:  45434B33 30000000 <x-value of public key, 48 bytes><y-value of public key, 48 bytes>                          total length: 104 bytes
    
  • secp521r1 / NIST P-521

    Private: 45434B36 42000000 <x-value of public key, 66 bytes><y-value of public key, 66 bytes><private key, 66 bytes>   total length: 206 bytes
    Public:  45434B35 42000000 <x-value of public key, 66 bytes><y-value of public key, 66 bytes>                          total length: 140 bytes
    

Закрытый ключ и x - и y -компонент открытого ключа хранятся в формате с прямым порядком байтов. Все три компонента имеют длину модуля. Таким образом, разная длина сгустков обусловлена ​​разным модулем кривых.

См. Также: SECG, SEC2 , формат ключевого объекта , magicчисла , формат ECCPublicBlob и ECCPrivateBlob

...