228 lines
14 KiB
Plaintext
228 lines
14 KiB
Plaintext
|
|
===== v1 (Plain)
|
|
|
|
[TIP]
|
|
====
|
|
Since plaintext/unencrypted keys do not have a cipher or KDF (as there's no encryption key or algorithm used), they use the string "none" to identify these (and entirely leave out the KDF options).
|
|
====
|
|
|
|
[id=struct_rsa_plain]
|
|
====== Structure
|
|
|
|
[source,text,linenums]
|
|
----
|
|
0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes)
|
|
1.0 uint32 allocator for 1.0.0 (4 bytes)
|
|
1.0.0 cipher name string (ASCII bytes)
|
|
2.0 uint32 allocator for 2.0.0 (4 bytes)
|
|
2.0.0 KDF name string (ASCII bytes)
|
|
3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes) (ALWAYS 0 for unencrypted keys, so no following substructure)
|
|
4.0 uint32 counter for # of keys (4 bytes)
|
|
4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
|
|
4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
|
|
4.0.0.0.0 public key #n keytype string (ASCII bytes)
|
|
4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
|
|
4.0.0.1.0 public exponent ('e')
|
|
4.0.0.2 uint32 allocator for 4.0.0.2.0 (4 bytes)
|
|
4.0.0.2.0 modulus ('n')
|
|
4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes)
|
|
4.0.1.0 uint32 decryption "checksum" #1 (should match 4.0.1.1) (4 bytes)
|
|
4.0.1.1 uint32 decryption "checksum" #2 (should match 4.0.1.0) (4 bytes)
|
|
4.0.1.2 copy of 4.0.0.0; allocator for 4.0.1.2.0 (4 bytes)
|
|
4.0.1.2.0 copy of 4.0.0.0.0 (ASCII bytes)
|
|
4.0.1.3 copy of 4.0.0.2; allocator for 4.0.1.3.0 (4 bytes)
|
|
4.0.1.3.0 copy of 4.0.0.2.0 (bytes)
|
|
4.0.1.4 copy of 4.0.0.1; allocator for 4.0.1.4.0 (4 bytes)
|
|
4.0.1.4.0 copy of 4.0.0.1.0 (bytes)
|
|
4.0.1.5 uint32 allocator for 4.0.1.5.0 (4 bytes)
|
|
4.0.1.5.0 private exponent ('d')
|
|
4.0.1.6 uint32 allocator for 4.0.1.6.0 (4 bytes)
|
|
4.0.1.6.0 CRT helper value ('q^(-1) % p')
|
|
4.0.1.7 uint32 allocator for 4.0.1.7.0 (4 bytes)
|
|
4.0.1.7.0 prime #1 ('p')
|
|
4.0.1.8 uint32 allocator for 4.0.1.8.0 (4 bytes)
|
|
4.0.1.8.0 prime #2 ('q')
|
|
4.0.1.9 uint32 allocator for 4.0.1.9.0 (4 bytes)
|
|
4.0.1.9.0 comment for key #n string (ASCII bytes)
|
|
4.0.1.10 sequential padding
|
|
----
|
|
|
|
[NOTE]
|
|
====
|
|
*Chunk 3.0.0 to 3.0.1:* These blocks are not present in unencrypted keys (see the <<struct_rsa_crypt, encrypted key structure>> for what these look like). *3.0* reflects this, as it's always going to be `00000000` (0).
|
|
|
|
*Chunk 4.0:* This is technically currently unused; upstream hardcodes to 1 (left zero-padded 0x01).
|
|
|
|
*Chunk 4.0.0.1.0, 4.0.0.2.0, 4.0.1.3.0, 4.0.1.4.0:* Note that the ordering of `e`/`n` in *4.0.0* is changed to `n`/`e` in *4.0.1*.
|
|
|
|
*Chunk 4.0.1.10:* The padding used aligns the private key (*4.0.1.0* to *4.0.1.9.0*) to the cipher blocksize. For plaintext keys, a blocksize of 8 is used.
|
|
====
|
|
|
|
[id=bytes_rsa_plain]
|
|
====== Example
|
|
|
|
The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is *`test`*.
|
|
|
|
.`id_rsa` Format
|
|
[source,text,linenums]
|
|
----
|
|
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
|
|
NhAAAAAwEAAQAAAgEAt87ARgHOKhLwySTLmjDrmQBmgSyxQ2kZPzCyuf3Ur8swDJGPKnfW
|
|
RBDzYXrnyMoxjCV9PE304sQQi7vpOoaJS6FLNXXy9yFQvDgdy/t0LHoZaGb9MYSs6Wdhrd
|
|
oPwpkvbIZtdWmRn8ItnEvw3kBajHbVGaoqUyncaCV3ciml0LdTp4JaiblSdfnAJeIVNDxs
|
|
iM1mkKIh+K6e9nXuRk3H0RjaQQUH6l1rZIndYK/YpmRkkts+J58aeCQNuKu9psUHFMljZl
|
|
CnIIHn+l1HLBQosH6uXRW2TqHip1CFEv6atlX4ajE0htPMod2OkKzFyfuk1udnUH+6ufOn
|
|
9ox0gUKvKjcB0xqKm3URlYqncYe6cC7ZNNOFr87kI4DpXg5+m8D00jNn/HcDdBZ7fwkm+2
|
|
/bbQWq0c/RkYJIRbAU4YFTvw0dPDsfrbslo/HRUfm2hGM9jBaQ/NjK0FqsKusj2/GaN+SA
|
|
oAiRAxnBFtR72SSzmUJUO4ig9hJ5UrLY4SkPMCn1Qq6+nAyONs8yloZc1mQ8iSTVZuv0lx
|
|
gJOZoawJb+Htw7X4cb9e8LTUTg6idiDSBRQuC/z2d7TbAlUyEho/B0WqTQWGMxczJXhVpc
|
|
7L46xEA9BP8MwMWLfASQS0AhJcK8KmOiDrswnMbz5l2zAaBYuNrOB+cbOPPzWVQz9psZjw
|
|
cAAAdQU4NHElODRxIAAAAHc3NoLXJzYQAAAgEAt87ARgHOKhLwySTLmjDrmQBmgSyxQ2kZ
|
|
PzCyuf3Ur8swDJGPKnfWRBDzYXrnyMoxjCV9PE304sQQi7vpOoaJS6FLNXXy9yFQvDgdy/
|
|
t0LHoZaGb9MYSs6WdhrdoPwpkvbIZtdWmRn8ItnEvw3kBajHbVGaoqUyncaCV3ciml0LdT
|
|
p4JaiblSdfnAJeIVNDxsiM1mkKIh+K6e9nXuRk3H0RjaQQUH6l1rZIndYK/YpmRkkts+J5
|
|
8aeCQNuKu9psUHFMljZlCnIIHn+l1HLBQosH6uXRW2TqHip1CFEv6atlX4ajE0htPMod2O
|
|
kKzFyfuk1udnUH+6ufOn9ox0gUKvKjcB0xqKm3URlYqncYe6cC7ZNNOFr87kI4DpXg5+m8
|
|
D00jNn/HcDdBZ7fwkm+2/bbQWq0c/RkYJIRbAU4YFTvw0dPDsfrbslo/HRUfm2hGM9jBaQ
|
|
/NjK0FqsKusj2/GaN+SAoAiRAxnBFtR72SSzmUJUO4ig9hJ5UrLY4SkPMCn1Qq6+nAyONs
|
|
8yloZc1mQ8iSTVZuv0lxgJOZoawJb+Htw7X4cb9e8LTUTg6idiDSBRQuC/z2d7TbAlUyEh
|
|
o/B0WqTQWGMxczJXhVpc7L46xEA9BP8MwMWLfASQS0AhJcK8KmOiDrswnMbz5l2zAaBYuN
|
|
rOB+cbOPPzWVQz9psZjwcAAAADAQABAAACAEmfLHBeBL/hekR20n5eHd/YwzX2OsIvdIdU
|
|
8CGDRA9tqT8/hkKSYWY+C939pp1ML3BdC7590xqJQb9WcuKYRKHgZwlwxvKpi3b4Wyb6/t
|
|
tZxJeGuN9+ruuGFx/Vef6N8OrdJTakJEoDMtWprT64NAyTBGQVPoK0/61PZHp7qAjjhURQ
|
|
+Aa2DgtnD8mctrWHhkl9TBmed1DuUImTTu8l9GUSOUlVxIfhB0Tr25oAlRyAlbAk1M518d
|
|
oxRrWzRHFp9Z4j1AaFQ4vHvK0Rc5J6OJoJA7oRGkaAnRI7NDIZfMqPwMJ4FvvyFcK3xYS5
|
|
TzfJ7YqOgVlC7/3PVHVyaK/lj9cAzc9qmKIJUGF7BiSqg12V4n16/N7nDDl8obaqBHNebV
|
|
xeAb//IXTPVi02hCYkSQ4SyoFCWV1SVnSU84shJAEsrKyyVk4hyEXrlPXW6/bzkGbh+gSz
|
|
GBdOb5mUgjuk2e8sKLN8s+oF+jytcgCJg5QnaDVSPk5BYFTyPbDrcyIR06EepVE5CujVjW
|
|
nhRmTg4g8r8MzSTSYLgyqUFE9YAep827JDbyG6LbrsvNVz8kxeDUP9JrSuZ2ThON2vR3Ws
|
|
AWPkVyfBACf3FsvjzHD/9zRBuyU45UJqGlY4tEinveloBB7CGE72ew2mAHApfNc97u/r0Z
|
|
UWEcendslW4Y5fFjohAAABAAri4c8kVaDYInLmpCu7qD63ZUluWjPhO4yUdW2MMvfXUF/Z
|
|
l73V7AjFm/jR1lnR3wK+xmnrtaqvXbHscM4vKms6F7ex/OOtxiA8KQXNZS12IgZd0BGuM4
|
|
lEZ8bco2Q5UrDK7f+bx4rEBAgHQCdWbuTEdRrT/0UqJ4Gvi1wsm/CbNO5eYgEzC0vDga92
|
|
Z5hmfFua0HM8GfTvR1/SZGVeAwVT8vL43lnCrudLndZyDjEIFD3+3UHPS8Ed4rmp9A+uxy
|
|
pSMSq+5MYVWs/uk4ShY0jHFTRuvmk4lf5tI0jU3tsKE3xIcYX/lJwgkRW5yKEGMpmR8Eno
|
|
Qwx7pg3VQI1yrJgAAAEBAOULZbpq5MsprmYSnD5B/+ujbNbsuqcEX/kM6nHQm8BWsLkTTc
|
|
V1TEnaH+irFpzRSe7a7M9JE9kV9PJBxf2Gx3UR4MJhw0RgCoTM546M9JPkkoRMuCxCq20S
|
|
RqU+XPUK1HWcKlwJ1TscXDtEkyjuoBQ01uU3s6UTko363fCnJygjiZuNeVIgyzNEq40OhG
|
|
4eQP/ftccZJiwrUnqJClH6q88QkEaZE197mXSH9LSNRJCtgPwls0b6C7WH8JKVvw9xrBCo
|
|
CGhn1LrQCgwnpkVvCODCv4yu2HaPA2aiRAQoGAopJhevYf6rq5pwdbi8ISCaVDm7/jYTkX
|
|
Bx/udKjV2A/pkAAAEBAM1wd2WfrZgxBLzH3FJiQrnqUs6kDpI993GsKijjd/K5IxpYwkSM
|
|
a40X/oNXHva9u8EfPUq0JU6oWWhLh3KRH5xvNVR5BT4+PTpuzOE6AWkIKYyj+LYo0hEXSa
|
|
NidijrBYRPVGeVpQZ9ObHTBOGcxvwb4AphZOoz5Ku8h/VoMicdglyGjFzNo3dbA3cR6ZQ2
|
|
+WxT83gLmFCE4dhKRYxoerCTigm/b5s//sQe0C/VsnVyx9GAA55AWlWbYvwI+ASxnwQ9uk
|
|
xvdWWxxydZ9Lky1Pk9T0HakbGxRvKYVKEAg0HkdgvdSYcJfsSmVRq5bgmaBKONaok7Uz2x
|
|
hau1VzZBnp8AAAAYVGhpcyBpcyBhIGNvbW1lbnQgc3RyaW5nAQID
|
|
-----END OPENSSH PRIVATE KEY-----
|
|
----
|
|
|
|
.Structure Reference (Hex) (Decoded Base64)
|
|
[source,text,linenums]
|
|
----
|
|
0.0 6f70656e7373682d6b65792d763100 ("openssh-key-v1" + 0x00)
|
|
1.0 0000000a (10)
|
|
1.0.0 6165733235362d637472 ("none")
|
|
2.0 00000006 (6)
|
|
2.0.0 626372797074 ("none")
|
|
3.0 00000000 (0)
|
|
4.0 00000001 (1)
|
|
4.0.0 00000217 (535)
|
|
4.0.0.0 00000007 (7)
|
|
4.0.0.0.0 7373682d727361 ("ssh-rsa")
|
|
4.0.0.1 00000003 (3)
|
|
4.0.0.1.0 010001 (65537)
|
|
4.0.0.2 00000201 (513)
|
|
4.0.0.2.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af
|
|
cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689
|
|
4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299
|
|
2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0
|
|
b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7
|
|
d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5
|
|
0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6
|
|
55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af
|
|
2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0
|
|
f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf
|
|
0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a
|
|
37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029
|
|
f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e
|
|
dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
|
|
5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
|
|
bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
|
|
07 (bytes)
|
|
4.0.1 00000750 (1872)
|
|
4.0.1.0 53834712 (1401112338)
|
|
4.0.1.1 53834712 (1401112338)
|
|
4.0.1.2 00000007 (7)
|
|
4.0.1.2.0 7373682d727361 ("ssh-rsa")
|
|
4.0.1.3 00000201 (513)
|
|
4.0.1.3.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af
|
|
cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689
|
|
4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299
|
|
2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0
|
|
b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7
|
|
d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5
|
|
0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6
|
|
55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af
|
|
2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0
|
|
f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf
|
|
0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a
|
|
37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029
|
|
f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e
|
|
dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
|
|
5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
|
|
bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
|
|
07 (bytes)
|
|
4.0.1.4 00000003 (3)
|
|
4.0.1.4.0 010001 (65537)
|
|
4.0.1.5 00000200 (512)
|
|
4.0.1.5.0 499f2c705e04bfe17a4476d27e5e1ddfd8c335f63ac22f748754f02183440f6d
|
|
a93f3f86429261663e0bddfda69d4c2f705d0bbe7dd31a8941bf5672e29844a1
|
|
e0670970c6f2a98b76f85b26fafedb59c49786b8df7eaeeb86171fd579fe8df0
|
|
eadd2536a4244a0332d5a9ad3eb8340c930464153e82b4ffad4f647a7ba808e3
|
|
854450f806b60e0b670fc99cb6b58786497d4c199e7750ee5089934eef25f465
|
|
12394955c487e10744ebdb9a00951c8095b024d4ce75f1da3146b5b3447169f5
|
|
9e23d40685438bc7bcad1173927a389a0903ba111a46809d123b3432197cca8f
|
|
c0c27816fbf215c2b7c584b94f37c9ed8a8e815942effdcf54757268afe58fd7
|
|
00cdcf6a98a20950617b0624aa835d95e27d7afcdee70c397ca1b6aa04735e6d
|
|
5c5e01bfff2174cf562d36842624490e12ca8142595d52567494f38b2124012c
|
|
acacb2564e21c845eb94f5d6ebf6f39066e1fa04b318174e6f9994823ba4d9ef
|
|
2c28b37cb3ea05fa3cad7200898394276835523e4e416054f23db0eb732211d3
|
|
a11ea551390ae8d58d69e14664e0e20f2bf0ccd24d260b832a94144f5801ea7c
|
|
dbb2436f21ba2dbaecbcd573f24c5e0d43fd26b4ae6764e138ddaf4775ac0163
|
|
e45727c10027f716cbe3cc70fff73441bb2538e5426a1a5638b448a7bde96804
|
|
1ec2184ef67b0da60070297cd73deeefebd1951611c7a776c956e18e5f163a21 (bytes)
|
|
4.0.1.6 00000100 (256)
|
|
4.0.1.6.0 0ae2e1cf2455a0d82272e6a42bbba83eb765496e5a33e13b8c94756d8c32f7d7
|
|
505fd997bdd5ec08c59bf8d1d659d1df02bec669ebb5aaaf5db1ec70ce2f2a6b
|
|
3a17b7b1fce3adc6203c2905cd652d7622065dd011ae33894467c6dca3643952
|
|
b0caedff9bc78ac40408074027566ee4c4751ad3ff452a2781af8b5c2c9bf09b
|
|
34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
|
|
53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
|
|
2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
|
|
137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes)
|
|
4.0.1.7 00000101 (257)
|
|
4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
|
|
56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
|
|
7511e0c261c344600a84cce78e8cf493e492844cb82c42ab6d1246a53e5cf50a
|
|
d4759c2a5c09d53b1c5c3b449328eea01434d6e537b3a513928dfaddf0a72728
|
|
23899b8d795220cb3344ab8d0e846e1e40ffdfb5c719262c2b527a890a51faab
|
|
cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
|
|
ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
|
|
292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
|
|
99 (bytes)
|
|
4.0.1.8 00000101 (257)
|
|
4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
|
|
b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f
|
|
9c6f355479053e3e3d3a6ecce13a016908298ca3f8b628d2111749a3627628eb
|
|
05844f546795a5067d39b1d304e19cc6fc1be00a6164ea33e4abbc87f5683227
|
|
1d825c868c5ccda3775b037711e99436f96c53f3780b985084e1d84a458c687a
|
|
b0938a09bf6f9b3ffec41ed02fd5b27572c7d180039e405a559b62fc08f804b1
|
|
9f043dba4c6f7565b1c72759f4b932d4f93d4f41da91b1b146f29854a1008341
|
|
e4760bdd4987097ec4a6551ab96e099a04a38d6a893b533db185abb55736419e
|
|
9f (bytes)
|
|
4.0.1.9 00000018 (24)
|
|
4.0.1.9.0 54686973206973206120636f6d6d656e7420737472696e67 ("This is a comment string")
|
|
4.0.1.10 010203 ([1 2 3], 3 bytes)
|
|
----
|