OpenSSHのRSAの鍵

UBUNTU-VM [1]% cd openssh-5.0p1
UBUNTU-VM [1]% cat -n key.c | grep RSA_generate_key
   573          private = RSA_generate_key(bits, 35, NULL, NULL);
UBUNTU-VM [1]%

RSAのN,e,d,p,qのうちeが35で固定。

opensshのrsa1の公開鍵(~/.ssh/identity.pub)のフォーマットは次のとおりだけど、は必ず35になる。

<Nのbit長> <e> <N> <user>@<host>

秘密鍵の書式

ちょっと調べた

UBUNTU-VM [1]% od -t x1z ~/.ssh/identity
0000000 53 53 48 20 50 52 49 56 41 54 45 20 4b 45 59 20  >SSH PRIVATE KEY <
0000020 46 49 4c 45 20 46 4f 52 4d 41 54 20 31 2e 31 0a  >FILE FORMAT 1.1.<
0000040 00 03 00 00 00 00 00 00 03 00 03 00 bd df 8c 1f  >................<
0000060 42 d5 3a a5 41 2a 2d e7 7c 68 bf 2a 25 ad 0e 7e  >B.:.A*-.|h.*%..~<
0000100 64 8e 75 b0 3e aa 55 82 44 33 2f 06 b8 df 64 c6  >d.u.>.U.D3/...d.<
0000120 72 f6 10 dc fa 8f 90 4f 9e 44 36 ad 5b cd 31 a1  >r......O.D6.[.1.<
0000140 c1 01 c1 50 4c 76 f2 25 9b a3 ca fe 95 36 d9 3f  >...PLv.%.....6.?<
0000160 f9 d0 1f 58 30 61 85 0d a8 4c 60 96 d8 12 80 f4  >...X0a...L`.....<
0000200 f0 65 12 88 1d 8d 18 91 49 82 fa d7 00 06 23 00  >.e......I.....#.<
0000220 00 00 10 74 61 6b 75 6d 69 40 75 62 75 6e 74 75  >...takumi@ubuntu<
0000240 2d 76 6d 27 c0 1b 5d 9b fe a6 2a 6d af b4 75 95  >-vm'..]...*m..u.<
0000260 39 82 0c 06 3f d0 fe db 8d a4 a9 fa 07 79 cb 6b  >9...?........y.k<
0000300 de bb 34 ab a8 86 df db ef 43 ad 0c be 7d 4d 18  >..4......C...}M.<
0000320 52 c2 70 59 9a 19 bd 97 ac c2 a4 f7 bb 86 50 79  >R.pY..........Py<
0000340 07 5a 7b ac f7 04 d2 bc 11 aa db 28 cf cf 5b cf  >.Z{........(..[.<
0000360 4b f3 c9 1d 93 6d bf 2c e8 9a 0d 3b 19 ba 4e cd  >K....m.,...;..N.<
0000400 c7 64 f5 1d 64 f9 9d 44 4f cb 5b 41 d5 cf 3b ee  >.d..d..DO.[A..;.<
0000420 1b 2b a1 28 3a b4 cd 41 3d 19 ca 27 e1 4d d9 3b  >.+.(:..A=..'.M.;<
0000440 8d c0 13 2d ed 08 fc c1 ac d7 e8 67 6e 60 72 2c  >...-.......gn`r,<
0000460 f8 d1 73 7a dc 9d 1e 01 62 12 66 6e 0d ab 9e a7  >..sz....b.fn....<
0000500 d3 5e 4f 1e b5 50 26 a0 18 be 7b d7 62 d3 b6 81  >.^O..P&...{.b...<
0000520 73 5c 9a ff 64 75 df 96 e5 2e 1d 67 c3 d9 b0 7c  >s\..du.....g...|<
0000540 68 e1 63 44 b7 e5 dc 57 5a d7 c0 ba 7d d0 ac 3c  >h.cD...WZ...}..<<
0000560 47 4d 02 8c 72 fd 17 9c 3c d3 74 50 8d 39 7f 91  >GM..r...<.tP.9..<
0000600 68 66 0d a3 e3 8a a6 52 2c 9f 49 be 0c 2d d5 e9  >hf.....R,.I..-..<
0000620 55 8e 8c d2 f4 ca be d8 18 1f ff c7 45 c5 94 97  >U...........E...<
0000640 57 21 e4                                         >W!.<
0000643

はじめにid

0000000[53 53 48 20 50 52 49 56 41 54 45 20 4b 45 59 20  >SSH PRIVATE KEY <
0000020 46 49 4c 45 20 46 4f 52 4d 41 54 20 31 2e 31 0a] >FILE FORMAT 1.1.<

次にpassphraseの暗号法。passphraseない場合は[00 00]。あるばあいは[00 03]。3DESで暗号化するらしい。

0000040[00 03]00 00 00 00 00 00 03 00 03 00 bd df 8c 1f  >................<

次は予約領域。4byte

0000040 00 03[00 00 00 00]00 00 03 00 03 00 bd df 8c 1f  >................<

次は鍵の長さ。4byte

0000040 00 03[00 00 00 00[00 00 03 00]03 00 bd df 8c 1f  >................<

次はN。はじめに2byteでNの長さ。次に中身

0000040 00 03 00 00 00 00 00 00 03 00[03 00|bd df 8c 1f  >................<
0000060 42 d5 3a a5 41 2a 2d e7 7c 68 bf 2a 25 ad 0e 7e  >B.:.A*-.|h.*%..~<
0000100 64 8e 75 b0 3e aa 55 82 44 33 2f 06 b8 df 64 c6  >d.u.>.U.D3/...d.<
0000120 72 f6 10 dc fa 8f 90 4f 9e 44 36 ad 5b cd 31 a1  >r......O.D6.[.1.<
0000140 c1 01 c1 50 4c 76 f2 25 9b a3 ca fe 95 36 d9 3f  >...PLv.%.....6.?<
0000160 f9 d0 1f 58 30 61 85 0d a8 4c 60 96 d8 12 80 f4  >...X0a...L`.....<
0000200 f0 65 12 88 1d 8d 18 91 49 82 fa d7]00 06 23 00  >.e......I.....#.<

次にe。はじめ2byteでeの長さ。次に中身

0000200 f0 65 12 88 1d 8d 18 91 49 82 fa d7[00 06|23]00  >.e......I.....#.<

次にコメント。はじめに4byteで長さ。次に中身

0000200 f0 65 12 88 1d 8d 18 91 49 82 fa d7 00 06 23[00  >.e......I.....#.<
0000220 00 00 10|74 61 6b 75 6d 69 40 75 62 75 6e 74 75  >...takumi@ubuntu<
0000240 2d 76 6d]27 c0 1b 5d 9b fe a6 2a 6d af b4 75 95  >-vm'..]...*m..u.<

ここまで調べた。