Portál AbcLinuxu, 16. dubna 2024 23:02


Dotaz: Jak převést veřený klíč na authorized_keys

23.10.2008 17:40 Andrej | skóre: 51 | blog: Republic of Mordor
Jak převést veřený klíč na authorized_keys
Přečteno: 1125×
Odpovědět | Admin

Ahoj, chtěl jsem se zeptat, zda existuje možnost použít klíče vygenerované pomocí OpenSSL pro práci s OpenSSH. Konkrétněji, zda lze veřejný klíč z klasického formátu PEM/PKCS nějak převést do jednořádkové podoby, kterou lze dát do souboru authorized_keys na serveru. Nebo to nejde, mám se na to vybodnout a prostě vytvořit nové klíče pomocí ssh-keygen? Soukromý klíč v id_rsa kupodivu v textovém formátu PEM může být a klient ho normálně přečte...

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.10.2008 21:17 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
Odpovědět | | Sbalit | Link | Blokovat | Admin

Aha, tak já si dnes vystačím sám. Netransformuje se veřejný klíč. Vypočte se znova ze soukromého klíče pomocí ssh-keygen.

23.10.2008 22:38 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys

Nerozumím, odpovědi na otázku.

Soubor se soukromým klíčem obvykle obsahuje i veřejný klíč, protože když už znám soukromý klíč, tak znalost veřejného klíče nic nezkazí.

Avšak výpočet (nikoliv oddělení) veřejného klíče ze soukromého je nemožný.

Pokud se jedná o převod veřejného SSH klíče na klíč vhodný pro authorized_keys, tak tam se nic nepřevádí. Prostě se obsah id_rsa.pub přiřetězí k athorized_keys. Přesně tohle dělá ssh-copy-id.

Pokud si myslíte, že ssk-keygen -i převádí PEM na OpenSSH formát, tak tomu tak není. Převádí RFC 4712 SSH2 formát na OpenSSH formát. PEM a SSH2 se liší.

24.10.2008 00:05 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
Nerozumím, odpovědi na otázku.

Já taky ne. Podstatné je, že mi to už funguje.

Soubor se soukromým klíčem obvykle obsahuje i veřejný klíč, protože když už znám soukromý klíč, tak znalost veřejného klíče nic nezkazí.

Nevím, je to možné. Nicméně soubor, který jsem použil, obsahoval pouze jeden blok s klíčem. Zda tam je někde ukrytý i veřejný klíč, to netuším. Možné to je.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,30DECD56B5DEE229

...
-----END RSA PRIVATE KEY-----
Avšak výpočet (nikoliv oddělení) veřejného klíče ze soukromého je nemožný.

Obecně asymetrický šifrovací algoritmus musí splňovat pouze podmínku, že z veřejného klíče je nepřekonatelně obtížné odvodit soukromý. Převoditelnost opačným směrem není nijak na závadu, pokud vím.

Už si nepamatuju, jak je to konkrétně v algoritmu RSA. Ze školy si nějak matně vzpomínám, že ani tím druhým směrem se to nedá odvodit, ale jistý si tím už nejsem. Nemám v úmyslu řešit otázku, jestli (a) soubor se soukromým klíčem má někde v sobě ukrytý veřejný klíč, nebo (b) lze odvodit veřejný klíč ze soukromého, nebo (c) je v tom jiný trik. Prostě mi to funguje s původním soukromým klíčem na straně klienta a s tím vygenerovaným SSH klíčem na straně serveru.

Pokud se jedná o převod veřejného SSH klíče na klíč vhodný pro authorized_keys, tak tam se nic nepřevádí. Prostě se obsah id_rsa.pub přiřetězí k athorized_keys. Přesně tohle dělá ssh-copy-id.

V tomto případě se samozřejmě nejedná o převod SSH klíče na klíč pro authorized_keys. (Tam samozřejmě není třeba nic převádět.) Zde se jedná o převod PEM klíče vygenerovaného pomocí OpenSSL na SSH klíč.

Pokud si myslíte, že ssk-keygen -i převádí PEM na OpenSSH formát, tak tomu tak není. Převádí RFC 4712 SSH2 formát na OpenSSH formát. PEM a SSH2 se liší.

Vůbec není podstatné, co si o tom myslím. (Kromě toho, o optionu -i tu řeč nebyla...) Podstatné je, že

ssh-keygen -y -f můj_soubor_se_soukromým_PEM_klíčem >> ~/.ssh/authorized_keys

na straně serveru mi zprovonzil autentifikaci pomocí certifikátu založenou na mém PEM klíči. Už nezadávám heslo uživatele na cílovém stroji, ale pouze heslo k tomu soukromému klíči. Nemám v úmyslu pátrat po tom, proč to funguje.

30.10.2008 14:13 mikky | skóre: 25 | blog: Ghlog | M. L. - Praha
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys

Už si nepamatuju, jak je to konkrétně v algoritmu RSA. Ze školy si nějak matně vzpomínám, že ani tím druhým směrem se to nedá odvodit, ale jistý si tím už nejsem.

Nedá. Pojemy "soukromý" a "veřejný" klíč jsou jen věcí definice, je v podstatě jedno, který klíč použijete jako veřejný a který jako soukromý. Platí, že to, co zašifrujete pomocí jednoho klíče, dešifrujete pomocí druhého a naopak. -m.
Je vám méně než 30 ? (jsme vrstevnící => budeme si tykat) : (jsem pro vás bažant => můžete mi tykat);
31.10.2008 09:30 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
Obecně asymetrický šifrovací algoritmus musí splňovat pouze podmínku, že z veřejného klíče je nepřekonatelně obtížné odvodit soukromý. Převoditelnost opačným směrem není nijak na závadu, pokud vím.
Veřejný klíč je ze soukromého odvozen. Princip asymetrické kryptografie je v tom, že mezi dvěma klíči je pouze jednosměrný vztah. Pokud by tam ten vztah nebyl žádný, těžko ty klíče "dohromady" (použití jednoho a následně druhého) mohou vést k něčemu rozumnému.
31.10.2008 09:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
Měl jsem si přečíst nejdřív předchozí komentář. Svůj komentář beru zpět -- oba klíče (soukromý a veřejný) jsou odvozené ze stejného základu (tím vznikne ta vazba), ale ten základ pak není součástí soukromého klíče, ale zahodí se.
31.10.2008 19:20 miro
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
oba klíče (soukromý a veřejný) jsou odvozené ze stejného základu (tím vznikne ta vazba), ale ten základ pak není součástí soukromého klíče, ale zahodí se

AFAIK znalost soukromého klíč (zhruba) odpovídá znalosti dvou velkých prvočísel, zatímco znalost veřejného klíče (opět zhruba) odpovídá znalosti součinu těch prvočísel (s tím, že soukromý klíč by šlo teoreticky získat faktorizací toho součinu, prakticky by ta faktorizace měla u velkých prvočísel trvat velmi dlouhou dobu). Pokud by se ten "stejný základ" zahazoval, tak těžko vysvětlíte tohle:

[user@machine ~]$ openssl version
OpenSSL 0.9.8g 19 Oct 2007
[user@machine ~]$ cat > text.txt
blabla
[user@machine ~]$ openssl genrsa -out mykey_rsa
Generating RSA private key, 512 bit long modulus
...++++++++++++
......++++++++++++
e is 65537 (0x10001)
[user@machine ~]$ cat mykey_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAM/vbCYhM1m9MMaRXtFHNYkjxQSnBON1e6Ze9LK0biskxaPxxVz0
Lp4IsQW7RfBZQbe4Ly6M/mKaEIHWHp7qo70CAwEAAQJAQAok7Llc705tLzqmUR31
Rv9VNlGaF9Oe+WZVRpR7OZ3TbnSvJF+7RtvBBMgs1bMLiweNs3S73n3u/KZoSexv
AQIhAO6q8CRWsLRL/KN3ykzYF2B2TIT4EHjeLLeMJg63m6LVAiEA3wkjWKpZZiWD
/Og7Odt6/WLdgETdIFB0E4YbjdG84UkCIF52c7O+SBQkWysMF5rQkHgSenjKgiKE
tSg0pT9/9m69AiEAk8DiAaMYhmrj/W97jOCxoZsVUhxMwVOLEkQNjO4dSsECID83
5XcKRsW4wTDq519HeVWL6O/96poU+x6LazkiSsCl
-----END RSA PRIVATE KEY-----
[user@machine ~]$ openssl rsa -in mykey_rsa -out mykey_rsa.pub -pubout
writing RSA key
[user@machine ~]$ cat mykey_rsa.pub 
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM/vbCYhM1m9MMaRXtFHNYkjxQSnBON1
e6Ze9LK0biskxaPxxVz0Lp4IsQW7RfBZQbe4Ly6M/mKaEIHWHp7qo70CAwEAAQ==
-----END PUBLIC KEY-----
[user@machine ~]$ openssl rsautl -encrypt -inkey mykey_rsa.pub -in text.txt -out text.asc -pubin
[user@machine ~]$ cat text.asc
_o���헔g���|%Ľ�:��8L�j��'����n)�x�Z�a?��??���z[�?N�Z�nf-�b5?[user@machine ~]$ 
[user@machine ~]$ hexdump text.asc
0000000 6f5f adb9 ed80 9497 f767 8997 257c bdc4
0000010 3aa3 8bbe 4c38 6a8c e5b9 ea27 c8c8 6ecd
0000020 ef29 6878 dd08 f45a 1d61 ebc0 1012 e7d7
0000030 7aec ff5b 4e16 5aed 6ea2 2d66 62e8 0135
0000040
[user@machine ~]$ openssl rsautl -decrypt -inkey mykey_rsa -in text.asc
blabla
1.11.2008 22:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
Teoreticky je součástí obou klíčů součin těch prvočísel, takže z teoretického minima, které tvoří privátní klíč, ta původní prvočísla nezískáte, a nedokážete ani vytvořit odpovídající veřejný klíč. Něco jiného je, že běžně používané formáty uložení RSA klíče ukládají do privátního klíče obě původní prvočísla, nikoli až jejich součin. Z takhle uložených údajů je možné veřejný klíč znova vytvořit. Ale nic vám nebrání uložit si soukromý klíč po svém, obě prvočísla zahodit a stejně dokážete klíčem podepisovat nebo dešifrovat (i když to bude výpočetně náročnější). Teoreticky tedy můžete exponent veřejného klíče a soukromého klíče zaměnit, a bezpečnost to nijak neohrozí. Prakticky zaměnit soubory vygenerované OpenSSL zaměnit nelze, protože ty soubory obsahují něco jiného, než součin dvou prvočísel a exponent příslušného klíče.
2.11.2008 14:15 miro
Rozbalit Rozbalit vše Re: Jak převést veřený klíč na authorized_keys
jj, už jsem si to našel, máte pravdu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.