Где я могу найти документацию по формату открытого ключа RSA?
Открытый ключ RSA отформатирован следующим образом OpenSSH
:
SSH-RSA AAAAB3NzaC1yc2EAAAABJQAAAQB / nAmOjTmezNUDKYvEeIRf2YnwM9 / uUG1d0BYsc8 / tRtx + RGi7N2lUbp728MXGwdnL9od4cItzky / zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ / q9YVUgZbFKfYGaGQxsER + A0w / fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ / CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr / QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN + ffE7iiayQf / 2XR + 8j4N4bW30DiPtOQLGUrH1y5X / rpNZNlWW2 + jGIxqZtgWg7lTy3mXy5x836Sj / 6L
Тот же открытый ключ, отформатированный для использования в Secure Shell (RFC 4716 - Формат файла открытого ключа Secure Shell (SSH)) :
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYs
c8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS
0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7r
NzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaX
fgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQ
LGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L
---- END SSH2 PUBLIC KEY ----
Тот же открытый ключ, отформатированный как открытый ключ RSA (обратите внимание на пять -
и без пробела):
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA+xGZ/wcz9ugFpP07Nspo6U17l0YhFiFpxxU4pTk3Lifz9R3zsIsu
ERwta7+fWIfxOo208ett/jhskiVodSEt3QBGh4XBipyWopKwZ93HHaDVZAALi/2A
+xTBtWdEo7XGUujKDvC2/aZKukfjpOiUI8AhLAfjmlcD/UZ1QPh0mHsglRNCmpCw
mwSXA9VNmhz+PiB+Dml4WWnKW/VHo2ujTXxq7+efMU4H2fny3Se3KYOsFPFGZ1TN
QSYlFuShWrHPtiLmUdPoP6CV2mML1tk+l7DIIqXrQhLUKDACeM5roMx0kLhUWB8P
+0uj1CNlNN4JRZlC7xFfqiMbFRU9Z4N6YwIDAQAB
-----END RSA PUBLIC KEY-----
Шестнадцатеричный дамп данных в кодировке base-64:
00 00 00 07 73 73 68 2d 72 73 61 00 00 00 01 25 00 00 01 00 7f 9c 09
8e 8d 39 9e cc d5 03 29 8b c4 78 84 5f d9 89 f0 33 df ee 50 6d 5d d0
16 2c 73 cf ed 46 dc 7e 44 68 bb 37 69 54 6e 9e f6 f0 c5 c6 c1 d9 cb
f6 87 78 70 8b 73 93 2f f3 55 d2 d9 13 67 32 70 e6 b5 f3 10 4a f5 c3
96 99 c2 92 d0 0f 05 60 1c 44 41 62 7f ab d6 15 52 06 5b 14 a7 d8 19
a1 90 c6 c1 11 f8 0d 30 fd f5 fc 00 bb a4 ef c9 2d 3f 7d 4a eb d2 dc
42 0c 48 b2 5e eb 37 3c 6c a0 e4 0a 27 f0 88 c4 e1 8c 33 17 33 61 38
84 a0 bb d0 85 aa 45 40 cb 37 14 bf 7a 76 27 4a af f4 1b ad f0 75 59
3e ac df cd fc 48 46 97 7e 06 6f 2d e7 f5 60 1d b1 99 f8 5b 4f d3 97
14 4d c5 5e f8 76 50 f0 5f 37 e7 df 13 b8 a2 6b 24 1f ff 65 d1 fb c8
f8 37 86 d6 df 40 e2 3e d3 90 2c 65 2b 1f 5c b9 5f fa e9 35 93 65 59
6d be 8c 62 31 a9 9b 60 5a 0e e5 4f 2d e6 5f 2e 71 f3 7e 92 8f fe 8b
я читал, что есть пара форматов 🕗 :
Ключевые данные могут быть закодированы тремя основными способами:
- Двоичный формат с кодировкой DER. Иногда это называется кодировкой ASN.1 BER.
- Формат PEM или base64. Это те же данные, что и файл в кодировке DER, но они закодированы в base64 с дополнительными строками заголовка и нижнего колонтитула.
- Формат XML.
Если это ASN.1 , шестнадцатеричный код определенно не похож на него.
Какой формат открытого ключа RSA?
Смотрите также
источник
openssl asn1parse -inform PEM
с-----BEGIN RSA PUBLIC KEY----
данными или любой другой структурой PEM. Намного проще, чем пытаться вручную манипулировать заголовками с помощью команд grep / tr / base64.Начиная с декодированных данных base64 ключа OpenSSL rsa-ssh , я смог угадать формат:
00 00 00 07
: префикс длиной четыре байта (7 байтов)73 73 68 2d 72 73 61
: "ssh-rsa"00 00 00 01
: префикс длиной четыре байта (1 байт)25
: Показатель RSA (e
): 2500 00 01 00
: префикс длиной четыре байта (256 байт)Модуль RSA (
n
):Ближайшее подтверждение моей теории я могу найти в RFC 4253:
Но это не объясняет префиксы длины.
Взяв случайный случай, который
RSA PUBLIC KEY
я нашел (в вопросе), и декодировал base64 в шестнадцатеричный:Из RFC3447 - Стандарты криптографии с открытым ключом (PKCS) # 1: Спецификации криптографии RSA, версия 2.1 :
Используя отличную (и единственную настоящую) документацию по ASN.1 от Microsoft :
предоставление модуля открытого ключа и экспоненты:
0xfb1199ff0733f6e805a4fd3b36ca68...837a63
Обновление : Моя расширенная форма этого ответа в другом вопросе
источник
RSA PUBLIC KEY
следует форме ASN.1 (см. спецификацию PKCS), это не имеет ничего общего с форматом OpenSSH.string
иmpint
- он описан в RFC 4251, раздел 5, не нужно спрашивать :)Эталонный декодер CRL, CRT, CSR, NEW CSR, PRIVATE KEY, PUBLIC KEY, RSA, анализатор открытого ключа RSA
Открытый ключ RSA
Зашифрованный закрытый ключ
CRL
ЭЛТ
CSR
НОВАЯ КСО
PEM
PKCS7
ЧАСТНЫЙ КЛЮЧ
КЛЮЧ DSA
Эллиптическая кривая
Закрытый ключ PGP
Открытый ключ PGP
источник