[megoldva] ssh kulcspár szerkezete

Fórumok

Nézem az RSA-séma működési elvét, és azt látom, hogy a ma elterjedt kettős kulcsú titkosításnál mind a titkos, mind a nyilvános kulcs két számból áll (N, e ill. N, d). Ezt a két számot ki lehet-e valahogy nyerni a .ssh/id_rsa* fájlokból? Van valami specifikáció valahol erre vonatkozóan?

Hozzászólások

cd ~/.ssh
openssl rsa -text -in id_rsa

Ez szép, tömény és célravezető.
Köszönet érte!

Ha a fenti parancs kimenetét betesszük egy "veszelyes" nevű (és felhasználói jogosultságait kellően lecsökkentett) fájlba, és ráeresztjük ezt a szkriptet, akkor szép decimális számokat kapunk, amikkel az RSA-séma főbb jellemzőit pl. bc-ben kipróbálhatjuk. Nekem jólesett látni pl., hogy "kijön az 1" az exponensek szorzataként...
Az elnevezési konvenció:
modulus (nyilvános és titkos): N
publicExponent: e
privateExponent: d

Egyelőre bc-vel nem tudtam megoldani a teljes kódolást-dekódolást, de talán maximában menne.

Mert a sokjegyű szám sokjegyű hatványát nem szerette (modulo N sem). Még egy kevés jegyű szám sokjegyű hatványával is megizzadt.
A maximának sem volt annyi esze, hogy önmagától rájöjjön, hogy az ismételt négyzetre emeléses módszerrel lehet gyorsan megoldani az x^b mod N feladatot.

Ez klassz! Az ilyen meglátásokért érdemes ide a HUPra járni.
Köszi. :o)

Ily módon a hiányzó láncszem is megvan.
Rákeresve az "=" jelre a http://pastebin.com/qJHBGTui kimenetében megvannak a $n=...; $d=...; értékek. Ezeket ebbe betéve:
http://pastebin.com/qcLSAvUn
... már működik is az oda-vissza kódolás.
Sajnos nagyon szeressük a PHP-t. :-)

(Bosszantó módon az Arch linuxos PHP-ben nincs benne, ám az Ubuntus PHP-ben bele van fordítva a bcmath. Becsapós módon azonban az Arch linuxos is "=shared" állapotúnak hazudja a php -i-ben a bcmath támogatást, ám a tényleges futtatáskor nem látja a bc függvényeket.)

Azert ugy gondolom ennyit bc-ben azert meg le leht programozni. Azaz ne x^b -t ird be, hanem szepen ciklussal szamittasd ki te magad. (Ha esetleg neminemu tovabbi gyorsitast is akarsz, akkor elore kiszamolhatod, hogy mely kitevok kellenek majd a vegen, es utkozben amikor elofordulnak, azokat is eltarolhatod a vegere.)

Amugy mibol *tudod*, hogy nem ugy szamolt? Megnezted a bc forrasat? Nem lehet, hogy esetleg a sajat szamabrazolas esetlegesen nem tul hatekony modja miatt lett annyira lassu?

Jó ötlet a ciklusos kiszámolás, csak ennyi energiát nem akartam rászánni; ha már programot írok, akkor inkább komolyabb/testhezállóbb eszközt keresek (pl. maxima vagy php :-) [lásd föntebb, bcpowmod] ). Persze nincs kőbe vésve ez az álláspont, meggyőzhető vagyok más célszerű megoldásról is.

Amúgy nem *tudom*, hogy hogy számolt, csak a ráfordított időből sejtem. A bc saját számábrázolásától meg "elvárom", hogy legyen klassz (a nagy egész számokra), ha már "arbitrary precision calculator"-nak vallja magát.