3

Поэтому я использовал puttygen для генерации закрытого ключа DSA, а затем экспортировал его в формат OpenSSH, и вот что я получил, запустив на нем asn1parse OpenSSL:

    0:d=0  hl=4 l= 443 cons: SEQUENCE
    4:d=1  hl=2 l=   1 prim:  INTEGER           :00
    7:d=1  hl=3 l= 129 prim:  INTEGER           :B9916796B7A3EFFD5CA36368186D0ED
193BE7FDD61CC6851174F3E9781A0C0CEA7473E528372F559A1DB2A7E049A9BEFAE2CAAC55527049
2A0CD55B59A48A53BCADD32181F519EA9E6A98EF8EF59DE314A2E69606C728F2F8DEE722B4C67BA6
8EB8A619B6006804F83740F9C74C38136522E7E83F22920AA39822FBDA0DF4D0B
  139:d=1  hl=2 l=  21 prim:  INTEGER           :D832F5B01F075FEC0F162B91982F34D
B26A0CC29
  162:d=1  hl=3 l= 129 prim:  INTEGER           :9B73F47AEFF8E39584FD10ACF81CCD5
75C96FC5558A5C94B941EF76318D132007ACAE1EA22E95CE0B13FC7875CE4D4ED33BA639CD8C2AC9
C0A0530FB7786F584A62EBAE5985E1C26ED0D0B9FDD5E8DB0142BE182A4E5359307007060C327FEE
C2F8D04EABB37D7B74076EB9BDB4885F627DE85708D5BDBF5177A05721E09A367
  294:d=1  hl=3 l= 128 prim:  INTEGER           :6BD9267D2D1E4546EE05F6CD087F311
93C0EEB13B1E139F5072E900AB2EEF68EEC28BF4D7D6CAE4DEE59005F00BAE07343EE520C217FF6E
7880DC788E4555F78CCB5E89A10CDC71A663DA696C5BC34E296CEB3518D65A79BF00B6D592B1399A
9F0D79AE3F3FB445EE1F2B4B72515F036C8E1D5C7FAD336FD3503874645C5C264
  425:d=1  hl=2 l=  20 prim:  INTEGER           :15295A12325E5F1A6F7243B7BB3BE74
6FE7B76E9

У меня вопрос ... где описан этот формат? Например, что означает первое целочисленное значение 0?

Я думаю, я мог бы посмотреть в исходном коде puttygen, но есть ли RFC, описывающий этот формат или что-то?

1 ответ1

1

Форматы с закрытым ключом не так стандартизированы, как форматы с открытым ключом, потому что в идеале они никогда не отправляются и не принимаются, поэтому совместимость не так важна.

Однако документацию по этому формату можно найти в нескольких местах. Это очень похоже на структуру RSAPrivateKey, описанную в PKCS # 1, которая обычно переносится внутри контейнера PKCS # 8. Однако обычный способ хранения DSA-ключа в контейнере PKCS # 8 - просто сохранить личное значение x , а не всю имеющуюся у вас структуру. Я предполагаю, что это предложенный, но никогда не стандартизированный в техническом отношении формат DSAPrivateKey, который OpenSSL реализовал до установления стандартов. Страница руководства OpenSSL dsa гласит:

Опция DER с закрытым ключом использует закодированную в ASN1 DER форму ASN.1 SEQUENCE, состоящую из значений версии (в настоящее время ноль), p, q, g, компонентов открытого и закрытого ключей соответственно в качестве INTEGER ASN.1.

и я предполагаю, что OpenSSH повторно использовал этот формат. Комментарии в реализации ключа DSA PyCrypto подтверждают эту идею; там они называют структуру "DSAPrivatKey_OpenSSL" и называют ее "пользовательской кодировкой OpenSSL/OpenSSH".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .