Sziasztok,
A dronvezerlos peldanal vegig azt irtam, hogy nincs semmi problema a kulcskezelessel, hiszen van a "repuloteren" kulcsgeneratorunk, dronunk es vezerlonk. Ez a 3 dolog ott van egymas mellett, siman fizikailag (pl SD kartyan) lehet kozottuk adatot mozgatni. Aztan probalja meg valaki lehallgatni/elteriteni a kommunikaciot (ami a fizikai mozgatassal tortenik par meter tavolsagra).
De ez csak erre a specialis esetre igaz, altalanossagban nagyon nem. Mar a dron felveteleire sem, hiszen tudjuk, hogy idonkent nem csak a dron operator, de az USA elnoke is nezni szeretne ezt a videot, es kettojuk kozott beosztasban szinte vegtelen sok ember van, aki szinten idonkent szeretne nezni az adatokat, amihez bizony az kell, hogy valahogy eljusson hozzajuk a kulcs.
Altalanossagban az mondhato el, hogy ha 100 ember szeretne egymassal kommunikalni, akkor vagy 4950 kulcsra van szukseg (ekkor minden emberpar rendelkezik egy darab kulccsal, amivel egymas kozott kommunikalhatnak, es ami rajtuk kivul senkinek sincs meg). Vagy ha lesz kozottuk egyetlen arulo, akkor a masik 99 ember egymas kozotti kommunikacioja is megfejtheto (ha 1 kulcs van az egesz tarsasagnak).
Az ide kapcsolodo problema, hogy ezeket a titkos kulcsokat el kell juttatni egymashoz, vagyis kell egy biztonsagos csatorna a kulcsok elkuldesehez. De ha van ilyen csatornank, akkor minek az egesz titkositas, egyszeruen kuldjuk el a titkainkat ezen a csatornan.
Ez nagyon sokaig ugy tunt, hogy egy olyan problema, amit el kell fogadni.
Aztan 1976-ban 3 matematikus (Ron
Rivest, Adi
Shamir és Len
Adleman) kitalalta a nyilt kulcsu titkositast. Addig annyira a legalapvetobb jellemzoje volt a titkositasoknak a kulcs titokban tartasa, hogy egyszeruen megtagadtak a matematikai tudomanyos lapok a cikkuk lekozleset evekik.
Hasznalat szintjere leegyszerusitve az RSA lenyege, hogy nem egyesevel hozzuk letre a kulcsokat, hanem kettesevel: minden privat kulcshoz tartozik egy publikus kulcs is. Az egyik fontos jellemzo, hogy (a kvantumszamitogepektol eltekintve) kivarhatatlan ido alatt lehet a publikus kulcsbol kiszamolni a privat kulcsot. A masik 2 jellemzo:
-ha a mi publikus kulcsunkkal titkositva van egy adat, akkor azt csak a mi privat kulcsunkkal lehet visszaalakitani
-ha a mi publikus kulcsunkkal vissza lehet fejteni egy adatot, azt csak a mi privat kulcsunkkal lehetett titkositani.
Tehat a publikus kulcsunk tenyleg publikus, nyugodtan megtudhatja akar az ellenseg is. Tehat a 100 ember egymassal kommunikacioja eseten nem 4950 kulcsra van szukseg, csak 100 parra; es ha valaki arulo lesz, akkor a sajat uzenetein kivul (amit ugyis ismer) hiaba ad at az ellensegnek 99 publikus kulcsot, azzal semmire se megy az ellenseg.
Tehat ez a modszer (elvben) kivaloan alkalmazhato titkositasra: barki, aki velunk akar kommunikalni, az hasznalja a mi publikus kulcsunkat, ez altal rajtunk kivul senki mas sem tudja megfejteni az uzenetet.
Persze itt felmerul problemakent, hogy ha barki kuldheti ezt az uzenetet, akkor honnan tudjuk, hogy ki kuldte (es nem az ellenseg probal dezinformalni a partnerunk neveben).
Erre a megoldas az, hogy miutan eltitkositotta a mi publikus kulcsunkkal, meg a sajat privat kulcsaval is eltitkositja. Ez utobbi lepes miatt persze nem lesz titkosabb az uzenet (mivel ezt barki visszaalakithatja, ha ismeri a partner publikus kulcsat, azt meg mindenki ismeri), viszont garantalja azt, hogy senki mastol nem johet ez az uzenet, csak attol, akinek a publikus kulcsaval visszaalakithato.
Ez mind nagyon szep es jo, de van meg 2 problema a fentivel, ami miatt a "tiszta" RSA-t senki sem hasznalja (annak ellenere, hogy a tovabbfejlesztett verziojat extrem szeles korben hasznaljak - konkretan en is, amikor ezt a hozzaszolast megirom, es szinte biztosan ti is, amikor elolvassatok).
Az elso a teljesitmeny: "tisztessegesen" hasznalva is lassu az RSA, ezert hosszu uzeneteket (akar egy videostream-et, akar a htka weboldalat) nagyon nem eri meg RSA-val titkositani.
Viszont ez nem nagy gond, mivel az elozo hozzaszolasomban bemutatott AES ebbol a szempontbol tokeletes: 256 bit az 0.032 KB, illetve 0.000032 MB, vagyis az atvivendo uzenethez kepest elenyeszoen rovid a kulcs. Ha ezt a kulcsot RSA titkositva atvisszuk, akkor ez a picike adat gyorsan megvan, es innentol kezdve minden mast vihetunk AES-sel titkositva, ami nagyon gyors es hatekony titkositas.
(Igazabol ez felvet egy kisebb problemat, hogy vajon az uzenet nem valtozott-e meg, ezt ugy tudjuk garantalni, ha az uzenethez a felado keszit egy "osszegzo szamot", hash-t, es a vegen azt is RSA titkositassal atkuldi, ez garantalja, hogy nem valtozott meg az adat amig hozzank ert. De ez nem nagy valtozas, tovabbra is a sok MB adat helyett ket egeszen kicsi adatot kell csak RSA-val titkositani, kb 0.000064 MB-ot.)
A masik problema az, hogy ebben az esetben a masik felnek azt azert el kell hinnie, hogy amirol azt mondjuk ("valaki azt mondja"), hogy a mi publikus kulcsunk, az valoban a mi publikus kulcsunk, es nem az ellenseg probalja meg elhitetni vele, hogy ez a mi publikus kulcsunk, ezzel rabeszelve ot arra, hogy igazabol az ellenseg kulcsaval titkositsa a nekunk szant informaciokat.
Es ha 100-an akarunk egymassal kommunikalni, akkor bizony mind a 99 partnerrol el kell hinni, hogy valoban azok, akiknek mondjak magukat. Jobb lenne, ha csak 1-rol kellene ezt elhinni.
Es itt jon egy csavar a dologban: amikor atkuldjuk a publikus kulcsunkat, akkor azt nem csak ugy egyszeruen atkuldjuk, hanem elotte megkerunk egy megbizhato embert (CA), hogy a sajat titkos kulcsaval irja ala a mi publikus kulcsunkat es a nevunket, miutan megbizonyosodott arrol, hogy nem kamuzunk, hanem mi tenyleg mi vagyunk, es nem valaki mas.
Az igy kapott eredmenyt certification-nek (bizonyitvany) hivjak, aki ezeket kiallitja (alairja), azt Certification Authoritynek (bizonyitvany hatosag). Innentol kezdve nem 99 partnerben kell megbizni, hanem csak 1-ben, a CA-ban. Mindenki mas eseteben csak azt kell ellenorizni, hogy tenyleg a megbizhato CA irta ala azt, hogy kie ez a publikus kulcs.
Nehany apro praktikus dologgal ha meg ezt kiegeszitjuk (pl. azzal, hogy a valosagban sok titkositasi modszer van, tehat az elejen meg kell beszelni, hogy mi az, amit mindket partner kepes hasznalni es el is fogad; ezt a megbeszelest kezfogasnak - handshake nevezik), akkor megkapjuk a most epp TLS-nek (korabban SSL-nek) nevezett modszert, amivel a teljesen megbizhatatlannak tekintett Interneten tudunk megbizhatoan kommunikalni.
Termeszetesen a kvantum szamitogepek okozta (hivatalosan jovobeni) fenyegetes miatt az RSA ma katonai celra alkalmatlan, de a nagy vonalakban hasonlo
kyber ebbol a szempontbol biztonsagosabb (az mas kerdes, hogy vajon ezt elemeztek-e olyan alaposan fuggetlen szakertok, mint az RSA-t).