az RSA titkosítás olyan rendszer, amely megoldja azt, ami egykor a kriptográfia egyik legnagyobb problémája volt: Hogyan küldhet valakinek kódolt üzenetet anélkül, hogy lehetősége lenne korábban megosztani velük a kódot?
Ez a cikk megtanít mindent, amit tudnia kell arról, hogyan fejlesztették ki az RSA titkosítást, hogyan működik, a mögötte lévő matematikát, mire használják, valamint néhány legnagyobb biztonsági problémát, amelyekkel szembesül., Az RSA megismerése néhány alapvető tudást ad Önnek,amely segít megérteni, hogy online életünk hány részét biztonságban tartják.
mi az RSA titkosítás?
tegyük fel, hogy el akarja mondani a barátjának egy titkot. Ha közvetlenül mellettük vagy, csak suttoghatod. Ha az ország másik oldalán állsz, az nyilvánvalóan nem fog működni. Le lehet írni és elküldeni nekik, vagy használni a telefont, de mindegyik kommunikációs csatorna bizonytalan, és bárki, aki elég erős motivációval rendelkezik, könnyen elfoghatja az üzenetet.,
Ha a titok elég fontos lenne, akkor nem kockáztatná meg, hogy normálisan írja le-kémek vagy egy gazember postai alkalmazott átnézheti a leveleit. Hasonlóképpen, valaki lehet, hogy megérinti a telefont anélkül, hogy a tudás és naplózása minden egyes hívást, hogy.
az egyik megoldás annak megakadályozására, hogy a hallgatók hozzáférjenek az üzenet tartalmához, annak titkosítása. Ez alapvetően azt jelenti, hogy adjunk egy kódot az üzenetet, amely megváltoztatja azt egy zavaros rendetlenség. Ha a kódja eléggé összetett, akkor az egyetlen ember, aki képes lesz hozzáférni az eredeti üzenethez, azok, akik hozzáférnek a kódhoz.,
ha lehetősége volt előzetesen megosztani a kódot a barátjával, akkor bármelyikük bármikor titkosított üzenetet küldhet, tudva, hogy ketten vagytok az egyetlenek, akik képesek olvasni az üzenet tartalmát. De mi van, ha nem volt esélye, hogy megosszák a kódot előre?
Ez a kriptográfia egyik alapvető problémája, amelyet a nyilvános kulcsú titkosítási rendszerek (más néven aszimmetrikus titkosítás), például az RSA kezeltek.
az RSA titkosítás alatt az üzeneteket nyilvános kulcsnak nevezett kóddal titkosítják, amely nyíltan megosztható., Az RSA algoritmus néhány különálló matematikai tulajdonsága miatt, miután egy üzenetet titkosítottak a nyilvános kulccsal, csak egy másik kulccsal lehet visszafejteni, az úgynevezett privát kulcs. Minden RSA felhasználónak van egy kulcspárja, amely a köz-és magánkulcsokból áll. Ahogy a neve is sugallja, a privát kulcsot titokban kell tartani.
a nyilvános kulcsú titkosítási rendszerek különböznek a szimmetrikus kulcsú titkosítástól, ahol mind a titkosítási, mind a dekódolási folyamat ugyanazt a privát kulcsot használja., Ezek a különbségek teszik a nyilvános kulcs titkosítást, mint például az RSA, hasznos a kommunikációhoz olyan helyzetekben, ahol korábban nem volt lehetőség a kulcsok biztonságos terjesztésére.
A szimmetrikus kulcsú algoritmusok saját alkalmazásokkal rendelkeznek, mint például az adatok titkosítása személyes használatra, vagy ha vannak olyan biztonságos csatornák, amelyeken a privát kulcsok megoszthatók.
Lásd még: nyilvános kulcs kriptográfia
hol használják az RSA titkosítást?
az RSA titkosítást gyakran használják más titkosítási sémákkal kombinálva, vagy olyan digitális aláírásokhoz, amelyek bizonyítják az üzenet hitelességét és integritását., Általában nem használják teljes üzenetek vagy fájlok titkosítására, mert kevésbé hatékony és erőforrás-nehéz, mint a szimmetrikus kulcsú titkosítás.
a dolgok hatékonyabbá tétele érdekében a fájlt általában szimmetrikus kulcsú algoritmussal titkosítják, majd a szimmetrikus kulcsot RSA titkosítással titkosítják. Ebben a folyamatban csak egy olyan entitás lesz képes visszafejteni a szimmetrikus kulcsot, amely hozzáfér az RSA privát kulcshoz.
anélkül, hogy hozzáférne a szimmetrikus kulcshoz, az eredeti fájl nem dekódolható., Ez a módszer lehet használni, hogy üzeneteket, fájlokat biztonságos, anélkül, hogy túl hosszú, vagy túl sok számítási erőforrások fogyasztása.
az RSA titkosítás számos különböző rendszerben használható. Meg lehet valósítani OpenSSL, wolfCrypt, cryptlib és számos más kriptográfiai könyvtárak.
mint az egyik első széles körben használt nyilvános kulcsú titkosítási rendszer, az RSA megalapozta biztonságos kommunikációnk nagy részét. Hagyományosan a TLS-ben használták, valamint a PGP titkosításban használt eredeti algoritmus is volt., RSA még mindig látható egy sor böngészők, e-mail, VPN, chat, valamint más kommunikációs csatornák.
az RSA-t gyakran használják a VPN-kliensek és a VPN-kiszolgálók közötti biztonságos kapcsolatok kialakítására is. Az olyan protokollok alatt, mint az OpenVPN, a TLS kézfogások használhatják az RSA algoritmust a kulcsok cseréjéhez és biztonságos csatorna létrehozásához.
az RSA titkosítás háttere
ahogy a cikk elején említettük, a nyilvános kulcsú titkosítás előtt kihívás volt biztonságosan kommunikálni, ha nem volt esély a kulcsok biztonságos cseréjére., Ha nem volt lehetőség a kód idő előtti megosztására, vagy egy biztonságos csatornára, amelyen keresztül a kulcsokat el lehetett osztani, akkor nem lehetett kommunikálni anélkül, hogy az ellenségek fenyegetnék az üzenet tartalmának elfogását és elérését.
csak az 1970-es években kezdtek igazán megváltozni a dolgok. James H. Ellis az évtized elején tette közzé az első jelentős fejlesztést az úgynevezett nyilvános kulcsú kriptográfia felé., Ellis nem tudta megvalósítani a munkáját, de kollégája, Clifford Cocks kibővítette, hogy az RSA titkosítás legyen.
a puzzle utolsó darabja az, amit most Diffie-Hellman kulcscserének nevezünk. Malcolm J. Williamson, egy másik munkatárs, kitalált egy olyan rendszert, amely lehetővé tette két fél számára, hogy megosszák a titkosítási kulcsot, még akkor is, ha a csatornát ellenfelek figyelik.
mindez a munka az Egyesült Királyság hírszerző ügynökségénél, a kormányzati kommunikációs központban (GCHQ) történt, amely a felfedezést titkosította., Részben a technológiai korlátok miatt, a GCHQ akkoriban nem látta a nyilvános kulcsú kriptográfia használatát, így a fejlesztés tétlenül ült a polcon, összegyűjtve a port. A munkát csak 1997-ben szüntették meg, az RSA eredeti feltalálóit pedig elismerték.
néhány évvel később hasonló fogalmak kezdtek fejlődni a közszférában. Ralph Merkle a nyilvános kulcsú kriptográfia korai formáját hozta létre, amely befolyásolta Whitfield Diffie – t és Martin Hellman-t a Diffie-Hellman KULCSCSERE kialakításában.,
Diffie és Hellman ötleteiből hiányzott egy fontos szempont, ami a munkájukat a nyilvános kulcs kriptográfia alapjává tenné. Ez egy egyirányú függvény volt, amelyet nehéz lenne megfordítani. 1977-ben Ron Rivest, Adi Shamir és Leonard Adleman, akiknek a vezetékneve az RSA betűszó, egy évnyi munka után találtak megoldást a problémára.
az MIT-alapú akadémikusok áttörést értek el egy Pászka párt után 1977-ben., Egy éjszakai ivás után Rivest hazament, de alvás helyett lázasan töltötte az estét egy olyan papír írásával, amely formalizálta ötletét a szükséges egyirányú funkcióra.
az ötletet 1983-ban szabadalmaztatta az MIT, de az internet korai napjáig az RSA algoritmus fontos biztonsági eszköznek tekintette a széles körű elfogadást.
hogyan működik az RSA titkosítás?
a következő lesz egy kicsit egyszerűsítés, mert túl sok olvasó valószínűleg már Sebhelyes a középiskolás matektanár., Annak érdekében, hogy a matematika ne legyen túl kézenfekvő, egyszerűsíteni fogunk néhány fogalmat és sokkal kisebb számokat használunk. A valóságban az RSA titkosítás olyan prímszámokat használ, amelyek nagyságrendje sokkal nagyobb, és van még néhány összetettség.
számos különböző fogalom van, amit meg kell kapnod a fejed körül, mielőtt megmagyaráznánk, hogy mindez hogyan illeszkedik egymáshoz. Ezek közé tartoznak a trapdoor függvények, a prímek generálása, a Carmichael totient funkciója, valamint a titkosítási és dekódolási folyamatokban használt nyilvános és privát kulcsok számításában részt vevő különálló folyamatok.,
Trap door functions
RSA titkosítás működik a feltevést, hogy az algoritmus könnyen kiszámítható egy irányba, de szinte lehetetlen fordított. Például, ha azt mondják, hogy a 701,111 két prímszám terméke, akkor képes lenne kitalálni, hogy mi ez a két szám?
még számológéppel vagy számítógéppel is, a legtöbbünknek fogalma sem lenne arról, hogy hol kezdje, nem is beszélve arról, hogy kitalálja a választ. De ha megfordítjuk a dolgokat, sokkal könnyebbé válik., Mi az eredménye:
907 x 773
ha elég unatkozott volna, képes lett volna kihúzni a telefont, vagy talán kiszámolni a fejében, hogy felfedezze, hogy a válasz a korábban említett 701,111. Ez a 907 és 773 a prímszámok, amelyek az első kérdésünkre válaszolnak, ami azt mutatja, hogy bizonyos egyenletek könnyen kitalálhatók egy módon, de fordítva látszólag lehetetlen.
ennek az egyenletnek egy másik érdekes aspektusa az, hogy egyszerű kitalálni az egyik prímszámot, ha már van a másik, valamint a termék., Ha azt mondják, hogy a 701,111 az eredménye 907 szorozva egy másik prímszám, akkor kitaláljuk, hogy a másik prím a következő egyenlet:
701,111 ÷ 907 = 773
mivel a kapcsolat ezek a számok egyszerű kiszámítani egy irányban, de hihetetlenül nehéz fordított, az egyenlet ismert, mint egy csapóajtó függvény. Ne feledje, hogy míg a fenti példa nehéz az emberek számára, hogy kitalálják, a számítógépek triviális idő alatt elvégezhetik a műveletet.
emiatt az RSA sokkal nagyobb számokat használ., A valódi RSA megvalósításban a prímek mérete változik,de az 2048-bites RSA-ban összejönnek, hogy 617 számjegyű kulcsokat készítsenek. Segít elképzelni, kulcsfontosságú lenne egy bizonyos méret:
Generáló fővezérek
A csapóajtó függvények fent említett képezik az alapot, hogy nyilvános kulcsú titkosítási rendszerek működnek. Tulajdonságaik lehetővé teszik a nyilvános kulcsok megosztását anélkül, hogy veszélyeztetnék az üzenetet vagy felfednék a privát kulcsot. Azt is lehetővé teszik, hogy az adatokat egy kulccsal titkosítsák oly módon, hogy csak a másik kulcs visszafejtheti a párból.,
Az üzenet RSA-val történő titkosításának első lépése a kulcsok létrehozása. Ehhez két prímszámra (p és q) van szükségünk, amelyek elsődleges teszttel vannak kiválasztva. Az elsődleges teszt olyan algoritmus, amely hatékonyan megtalálja a prímszámokat, például a Rabin-Miller primality tesztet.
az RSA prímszámainak nagyon nagynak kell lenniük, valamint viszonylag távol kell lenniük egymástól. A kicsi vagy közelebb álló számokat sokkal könnyebb feltörni. Ennek ellenére a példánk kisebb számokat fog használni, hogy megkönnyítsük a dolgok követését és kiszámítását.,
tegyük fel, hogy az elsődleges teszt megadja a fenti, 907 és 773 prímszámokat. A következő lépés az, hogy fedezze fel a modulus (n), az alábbi képlet segítségével:
n = p x q
Ahol p = 907 s q = 773
Tehát:
n = 907 x 773
n = 701,111
Carmichael totient funkció
Ha van n, használjuk Carmichael totient funkció:
λ(n) = lcm (p − 1 q − 1)
Ha már egy ideje, hogy a matematika tankönyvek, a fenti, talán egy kicsit ijesztő., Átugorhatja ezt a részt, és csak bízhat abban, hogy a matematika működik, különben ragaszkodjon hozzánk még néhány számításhoz. Mindent a lehető legrészletesebben elmagyarázunk, hogy segítsen a fejedben az alapok körül.
azok számára, akik nem tudják, λ (n) a Carmichael totientjét jelenti n-re, míg az lcm A legalacsonyabb közös többszörös, amely a legalacsonyabb szám, amelyre mind a p, mind a q osztható. Van néhány különböző módon, hogy kitaláljuk ezt, de a legegyszerűbb az, hogy megbízik egy online számológép csinálni az egyenlet az Ön számára., Tehát tegyük a számainkat az egyenletbe:
λ (701,111) = lcm (907 − 1, 773 − 1)
λ(701,111) = lcm (906, 772)
a fent hivatkozott számológép segítségével ez ad nekünk:
λ(701,111) = 349,716
generálja a nyilvános kulcsot
most, hogy van Carmichael itt az ideje, hogy kitaláljuk a nyilvános kulcsunkat. Az RSA alatt a nyilvános kulcsok egy e prímszámból állnak, valamint n. az e szám bármi lehet az 1 és a λ(n) értéke között, ami példánkban 349,716.,
mivel a nyilvános kulcs nyíltan meg van osztva, nem olyan fontos, hogy az e véletlenszerű szám legyen. A gyakorlatban az e-t általában 65 537-re állítják be, mert ha sokkal nagyobb számokat véletlenszerűen választanak, akkor a titkosítás sokkal kevésbé hatékony. A mai példa, fogjuk tartani a számok kicsi, hogy a számítások hatékony. Tegyük fel:
e = 11
végső titkosított adatainkat rejtjelezett (C) – nek nevezzük. Mi származik az az üzenet sima szövegként (m) alkalmazásával a nyilvános kulcs az alábbi képlet segítségével:
c = nekem mod n
már fel e, meg tudjuk n is., Az egyetlen dolog, amit meg kell magyaráznunk, a mod. Ez egy kicsit ki a mélysége ezt a cikket, de arra utal, hogy egy modulo művelet, ami lényegében azt jelenti, a maradék maradt, ha osztja az egyik oldalon a másik. Például:
10 mod 3 = 1
Ez azért van, mert a 3 háromszor 10-re megy, a fennmaradó 1-re.
vissza az egyenletünkhöz. Ahhoz, hogy a dolgok egyszerűek maradjanak, tegyük fel, hogy az üzenet (m), amit titkosítani és titokban tartani akarunk, csak egy szám, 4., Csatlakoztassunk mindent:
c = me mod n
c = 411 mod 701,111
c = 4,194,304 mod 701,111
ismét, hogy a modulo művelet egyszerű legyen, online számológépet fogunk használni, de szívesen kitaláljuk magadnak. Az 4,194,304 beírásával az online számológépbe megadja nekünk:
c = 688,749
ezért amikor RSA-t használunk üzenetünk titkosítására, 4, nyilvános kulcsunkkal megadja nekünk a 688,749 kódját., Az előző lépések kissé túl matematikusnak tűntek, de fontos megismételni, hogy mi történt valójában.
volt egy 4-es üzenetünk, amelyet titokban akartunk tartani. Nyilvános kulcsot alkalmaztunk rá, amely 688,749 titkosított eredményt adott nekünk. Most, hogy titkosítva van, biztonságosan elküldhetjük a 688,749 számot a kulcspár tulajdonosának. Ők az egyetlen személy, aki képes lesz visszafejteni azt a saját kulcs. Amikor dekódolják, látni fogják az üzenetet, amelyet valóban küldtünk, 4.,
A privát kulcs generálása
az RSA titkosításban, miután az adatokat vagy az üzenetet titkosították egy nyilvános kulccsal, csak a privát kulcs visszafejthető ugyanabból a kulcspárból. Privát kulcs áll a d n. Már tudjuk, n, meg a következő egyenletet használják, hogy megtalálják d:
d =1/e mod λ(n)
a Termelő a nyilvános kulcs a fenti szakaszt, már úgy döntött, hogy a példánkban e egyenlő 11. Hasonlóképpen tudjuk, hogy λ (n) egyenlő 349,716-tal a Carmichael totient függvénye alatt végzett korábbi munkánkból., A dolgok egy kicsit bonyolultabbá válnak, amikor a képlet ezen szakaszával találkozunk:
1 / e mod
Ez az egyenlet úgy néz ki, mintha 1-et 11-re osztana, de nem ez a helyzet. Ehelyett ez csak azt jelképezi, hogy ki kell számítanunk az e (amely ebben az esetben 11) És λ(n) moduláris inverzét (amely ebben az esetben 349,716).
Ez lényegében azt jelenti, hogy a standard modulo művelet végrehajtása helyett az inverzt használjuk., Ez általában megtalálható a kiterjesztett euklideszi algoritmussal, de ez egy kicsit kívül esik a cikk hatókörén, ezért csak csalunk, hanem online számológépet használunk., Most, hogy megértjük, hogy mindent, ami történik, akkor kössük az információkat a képlet:
d =1/11 mod 349,716
ennek A műveletnek az elvégzéséhez, egyszerűen csak adja meg a 11 (vagy bármilyen érték lehet e, ha megpróbálja ezt a saját példa), ahol azt mondja, Egész számra 349,716 (vagy tetszőleges érték lehet, hogy λ(n), ha megpróbálja ezt a saját példa) hol azt mondja, Modulo az online kalkulátor, hogy volt fent belinkelt., Ha volna helyesen, akkor kap egy eredményt, ahol:
d = 254, 339
Most, hogy mi az az érték, d, tudjuk visszafejteni üzenetek titkosítva a nyilvános kulcs az alábbi képlet segítségével:
m = cd mod n
most menj vissza a rejtjelezett, hogy a titkosított alatt a Termelő a privát kulcs szakasz. Amikor titkosítottuk az üzenetet a nyilvános kulccsal, 688,749 C értéket adott nekünk. Felülről tudjuk, hogy d egyenlő 254,339. Azt is tudjuk, hogy n egyenlő 701,111. Ez ad nekünk:
m = 688,749254,339 mod 701,111.,
amint azt észrevetted, megpróbálva egy számot a 254,339 TH teljesítményre vinni, lehet, hogy egy kicsit sok a legtöbb normál számológép számára. Ehelyett egy online RSA dekódolási számológépet fogunk használni. Ha más módszert szeretne használni, akkor a hatásköröket úgy alkalmazná, ahogy általában tenné, és ugyanúgy hajtaná végre a modulus műveletet, mint a nyilvános kulcs létrehozása szakaszban.,
a kalkulátor fent belinkelt, adja meg 701,111, ahol azt mondja, Ellátási Modulus: N, 254,399, ahol azt mondja, Dekódoló Kulcs: D, de 688,749, ahol azt mondja, Rejtjelezett Üzenet numerikus formában, az alábbiak szerint:
Miután megadta az adatokat, nyomja Visszafejteni, amely fel a számokat keresztül a dekódoló formula volt a fent felsorolt. Ez megadja az eredeti üzenetet az alábbi mezőben. Ha mindent helyesen tett, akkor 4-es választ kell kapnia, amely az eredeti üzenet volt, amelyet a nyilvános kulcsunkkal titkosítottunk.,
hogyan működik az RSA titkosítás a gyakorlatban
a fenti szakaszoknak ésszerű képet kell adniuk arról, hogyan működik a nyilvános kulcs titkosítás mögötti matematika. Kicsit zavaró lehet, de még azok is, akik nem értették az egyenletek bonyolultságát, remélhetőleg elvehetnek néhány fontos információt a folyamatról.
a fent felsorolt lépésekben megmutattuk, hogy két entitás hogyan tud biztonságosan kommunikálni anélkül, hogy korábban megosztott volna egy kódot. Először is, mindegyiknek létre kell hoznia saját kulcspárját, és meg kell osztania a nyilvános kulcsot egymással., A két entitásnak titokban kell tartania a privát kulcsait, hogy kommunikációjuk biztonságban maradjon.
miután a feladónak megvan a címzett nyilvános kulcsa, felhasználhatják azt a biztonságos adat titkosítására. Miután nyilvános kulccsal titkosították, csak a privát kulcs visszafejthető ugyanabból a kulcspárból. Még ugyanaz a nyilvános kulcs sem használható az adatok visszafejtésére. Ez a csapdaajtó funkciók tulajdonságainak köszönhető, amelyeket fent említettünk.
amikor a címzett megkapja a titkosított üzenetet, az adatok eléréséhez saját kulcsot használnak., Ha a címzett biztonságos módon akarja visszaküldeni a kommunikációt, akkor az üzenetet titkosíthatja annak a félnek a nyilvános kulcsával, akivel kommunikál. Ismét, miután titkosította a nyilvános kulcsot, az egyetlen módja annak, hogy az információ elérhető legyen a megfelelő privát kulcson keresztül.
ily módon az RSA titkosítást korábban ismeretlen felek használhatják az adatok Biztonságos küldésére egymás között. Az online életünkben használt kommunikációs csatornák jelentős részét ebből az alapítványból építettük fel.,
hogyan titkosítják a bonyolultabb üzeneteket az RSA – val?
példánkban sokat egyszerűsítettünk a dolgok megértésének megkönnyítése érdekében, ezért csak a “4”üzenetet titkosítottuk. A 4-es szám titkosítása nem tűnik különösebben hasznosnak, ezért kíváncsi lehet, hogyan lehet titkosítani egy bonyolultabb adatkészletet, például egy szimmetrikus kulcsot (amely az RSA leggyakoribb használata), vagy akár egy üzenetet.,
néhány ember lehet zavarba, hogy egy kulcs, mint a “n38cb29fkbjh138g7fqijnf3kaj84f8b9f …” vagy egy üzenetet, mint a “vegyél nekem egy szendvicset” lehet titkosítani egy algoritmus, mint RSA, amely foglalkozik a számok és nem betűk. A valóság az, hogy az összes információt, hogy a számítógépek folyamat tárolja bináris (1s és 0s), és használjuk kódolási szabványok, mint ASCII vagy Unicode, hogy képviselje őket oly módon, hogy az emberek megértsék (betűk).,
Ez azt jelenti, hogy az olyan kulcsok, mint az “n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” és az olyan üzenetek, mint a “vegyél nekem egy szendvicset”, már léteznek számokként, amelyek könnyen kiszámíthatók az RSA algoritmusban. Az általuk képviselt számok sokkal nagyobbak és nehezebbek számunkra, ezért inkább alfanumerikus karakterekkel foglalkozunk, nem pedig bináris zűrzavarral.
ha hosszabb munkamenet-kulcsot vagy összetettebb üzenetet szeretne titkosítani az RSA-val, akkor egyszerűen sokkal nagyobb számot vonna be.,
Padding
az RSA végrehajtása során egy úgynevezett párnázást használ, hogy megakadályozza a támadások számát. Hogy elmagyarázzuk, hogyan működik ez, egy példával kezdjük. Tegyük fel, hogy kódolt üzenetet küldött egy barátjának:
kedves Karen,
remélem, hogy jól vagy. Még mindig vacsorázunk holnap?
tisztelettel,
James
tegyük fel, hogy egyszerű módon kódolta az üzenetet, minden betűt megváltoztatva az ábécében követőre. Ez megváltoztatja az üzenetet:
Efbs Lbsfo,
J ipqf zpv bsf xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?
Zpvst tjodfsfmz,
Kbnft
ha ellenségei elfogták ezt a levelet, van egy trükk, amellyel megpróbálhatják feltörni a kódot. Megnézhetik a levél formátumát, és megpróbálhatják kitalálni, mit mond az üzenet. Tudják, hogy az emberek általában “Hi”, “Hello”, “kedves” vagy számos más konvencióval kezdik leveleiket.
ha megpróbálták alkalmazni a “Hi” vagy a “Hello”, mint az első szó, azt látni, hogy nem felel meg a karakterek száma. Ezután megpróbálhatják”kedves”., Illik rá, de ez nem feltétlenül jelent semmit. A támadók csak megpróbálták megnézni, hogy hova vezette őket. Így az “e”, “f”, “b” és “s” betűket “d”, “e”, “a” és “r” betűvel változtatták meg. Ez ad nekik:
kedves Laseo,
J ipqe zpv vannak xemm. Vannak xe tujmm iawjoh djooes upnpsspx?
Zpvrt tjoderemz,
Kanet
még mindig elég zavarónak tűnik, így a támadók megpróbálhatnak megnézni néhány más egyezményt, például hogyan fejezzük be leveleinket. Az emberek a végén gyakran “From” vagy “Kind regards” – ot adnak hozzá, de ezek egyike sem felel meg a formátumnak., Ehelyett a támadók megpróbálhatják “őszintén”, és kicserélhetik a többi betűt, hogy megnézzék, hol kapja meg őket. A “z”, “p”, “v”, “t”, “j” “o”, “d” és “m” megváltoztatásával az “y”, “o”, “u”, “S”, “i”, “N”, “c” és “l” lesz:
kedves Lasen,
ioqe te vagy xell. Xe tuill iawinh dinnes uonossox?
Üdvözlettel,
Kanet
a módosítás után úgy tűnik,hogy a támadók valahol elkezdenek eljutni. Megtalálták az “én”, “te” és “vannak” szavakat, a kezdeti találgatások mellett.,
mivel a szavak helyes nyelvtani sorrendben vannak, a támadók nagyon biztosak lehetnek abban, hogy a helyes irányba haladnak. Mostanra valószínűleg rájöttek arra is, hogy a kód minden betűt az ábécében követőre változtat. Ha rájönnek, hogy ez, Ez megkönnyíti, hogy lefordítani a többit, és olvassa el az eredeti üzenetet.
a fenti példa csak egy egyszerű kód volt, de amint láthatja, az üzenet szerkezete nyomokat adhat a támadóknak annak tartalmáról., Persze, nehéz volt kitalálni az üzenetet, csak a szerkezetét, és beletelt néhány művelt találgatás, de meg kell szem előtt tartani, hogy a számítógépek sokkal jobban csinálni ezt, mint mi. Ez azt jelenti, hogy sokkal rövidebb idő alatt sokkal összetettebb kódokat lehet kitalálni, a struktúrából és más elemekből származó nyomok alapján.
Ha a szerkezet egy kód feltöréséhez és egy üzenet tartalmának feltárásához vezethet, akkor valamilyen módon el kell rejtenünk a struktúrát az üzenet biztonságának megőrzése érdekében. Ez elvezet minket a padding.,
amikor egy üzenet párnázott, randomizált adatokat adunk, hogy elrejtse az eredeti formázási nyomokat, amelyek titkosított üzenet töréséhez vezethetnek. Az RSA-val a dolgok egy kicsit bonyolultabbak, mert a titkosított kulcs nem rendelkezik olyan levél nyilvánvaló formázásával, amely segített nekünk nyomokat adni a fenti példánkban.
ennek ellenére az ellenfelek számos támadást használhatnak egy kód matematikai tulajdonságainak kihasználására és titkosított adatok feltörésére. Ennek a fenyegetésnek köszönhetően az RSA implementációi olyan párnázási rendszereket használnak, mint az OAEP, hogy extra adatokat beágyazzanak az üzenetbe., Hozzáadása ezt a párnázást, mielőtt az üzenet titkosítva teszi RSA sokkal biztonságosabb.
Üzenetek aláírása
az RSA nem csak az adatok titkosítására használható. Tulajdonságai szintén hasznos rendszert jelentenek annak megerősítésére, hogy az üzenetet az a szervezet küldte, aki azt állítja, hogy elküldte, valamint annak bizonyítására, hogy az üzenetet nem változtatták meg vagy nem manipulálták.,
Ha valaki bizonyítani akarja üzenetének hitelességét, kiszámíthatja a hash-t (egy olyan függvényt, amely tetszőleges méretű adatokat vesz fel, és rögzített hosszúságú értékké alakítja) a sima szövegben, majd aláírja a privát kulcsával. Aláírják a hash-t ugyanazzal a képlettel, amelyet a dekódoláshoz használnak (m = cd mod n). Az üzenet aláírása után ezt a digitális aláírást elküldik a címzettnek az üzenet mellett.,
Ha a címzett digitális aláírással kap üzenetet, akkor az aláírással ellenőrizheti, hogy az üzenetet hitelesen aláírta-e annak a személynek a privát kulcsa, aki azt állítja, hogy elküldte. Azt is láthatják, hogy az üzenetet a támadók megváltoztatták-e az elküldés után.
a digitális aláírás ellenőrzéséhez a címzett először ugyanazt a hash funkciót használja a kapott üzenet hash értékének megtalálásához., A címzett ezután alkalmazza a feladó nyilvános kulcsát a digitális aláírásra, a titkosítási képlet (c = me mod n) segítségével, hogy megadja nekik a digitális aláírás hash-jét.
a titkosított digitális aláírásból származó hash mellett kapott üzenet hash-jának összehasonlításával a címzett meg tudja mondani, hogy az üzenet hiteles-e. Ha a két érték azonos, az üzenet nem változott, mivel azt az eredeti feladó írta alá. Ha az üzenetet egyetlen karakter is megváltoztatta volna, a hash érték teljesen más lenne.,
RSA security & támadások
mint a legtöbb cryptosystems, az RSA biztonsága attól függ, hogyan hajtják végre és használják. Az egyik fontos tényező a kulcs mérete. Minél nagyobb a bitek száma egy kulcsban (lényegében mennyi ideig tart a kulcs), annál nehezebb feltörni olyan támadásokkal, mint a brutális kényszerítés vagy a faktoring.
mivel az aszimmetrikus kulcsú algoritmusok, például az RSA egész faktorizációval megszakíthatók, míg a szimmetrikus kulcsú algoritmusok, mint például az AES, nem tudnak, az RSA kulcsoknak sokkal hosszabbnak kell lenniük ugyanazon biztonsági szint eléréséhez.,
jelenleg a legnagyobb kulcsméret, amelyet figyelembe vettek, 768 bit hosszú. Ezt tette egy csapat akadémikusok több mint két év alatt, segítségével több száz gép.
mivel a faktoring 2009 végére fejeződött be, és a számítási teljesítmény azóta jelentősen nőtt, feltételezhető, hogy egy hasonló intenzitású kísérlet most sokkal nagyobb RSA kulcsot eredményezhet.
ennek ellenére az ilyen típusú támadásokhoz szükséges idő és források a legtöbb hekkertől és a nemzetállamok birodalmától távol tartják., A legjobb kulcs hossza az egyéni fenyegetési modelltől függ. A Nemzeti Szabványügyi és Technológiai Intézet minimum 2048 bites kulcsméretet javasol, de 4096 bites kulcsokat is használnak olyan helyzetekben, amikor a veszélyességi szint magasabb.
faktoring csak egy módja annak, hogy RSA lehet törni. Számos más támadásnak lehetősége van arra, hogy kisebb mennyiségű erőforrással megtörje a titkosítást, de ezek a végrehajtástól és más tényezőktől függnek, nem feltétlenül maga az RSA. Ezek közül néhány:
a prímek valóban véletlenszerűek?,
az RSA egyes implementációi gyenge véletlenszám-generátorokat használnak a prímek elkészítéséhez. Ha ezek a számok nem eléggé véletlenszerűek, a támadók számára sokkal könnyebbé válik a számozás és a titkosítás megszakítása. Ezt a problémát el lehet kerülni egy kriptográfiailag biztonságos pszeudo-véletlenszám-generátor használatával.
szegény kulcs generáció
az RSA kulcsoknak bizonyos paraméterekbe kell esniük ahhoz, hogy biztonságosak legyenek. Ha a P és q prímek túl közel vannak egymáshoz, a kulcs könnyen felfedezhető. Hasonlóképpen, a D szám, amely a privát kulcs részét képezi, nem lehet túl kicsi., Az alacsony érték megkönnyíti a megoldást. Fontos, hogy ezek a számok megfelelő hosszúságú, hogy a kulcs biztonságos.
Side channel támadások
ezek olyan típusú támadások, amelyek nem törik meg közvetlenül az RSA-t, hanem a végrehajtásból származó információkat használják fel, hogy a támadók tippeket adjanak a titkosítási folyamatról. Ezek a támadások olyan dolgokat tartalmazhatnak, mint például a felhasznált energia mennyiségének elemzése, vagy ág-előrejelzési elemzés, amely végrehajtási időméréseket használ a privát kulcs felfedezéséhez.
egy másik típusú oldalsó csatorna támadás időzítési támadásként ismert., Ha a támadó képes mérni a dekódolási időt a célszámítógépén számos különböző titkosított üzenet esetén, ez az információ lehetővé teszi a támadó számára, hogy meggyőződjön a cél privát kulcsáról.
az RSA legtöbb implementációja elkerüli ezt a támadást egy egyszeri érték hozzáadásával a titkosítási folyamat során, amely eltávolítja ezt a korrelációt. Ezt a folyamatot kriptográfiai vakításnak nevezik.
az RSA titkosítás biztonságos a jövőben?
a jó hír az, hogy az RSA biztonságosnak tekinthető a lehetséges támadások ellenére., A figyelmeztetés az, hogy helyesen kell végrehajtani, és olyan kulcsot kell használni, amely a megfelelő paraméterekbe esik. Mint már említettük, azok a megvalósítások, amelyek nem használnak párnázást, nem megfelelő méretű prímeket használnak, vagy más sebezhetőségekkel rendelkeznek, nem tekinthetők biztonságosnak.
ha RSA titkosítást szeretne használni, Győződjön meg róla, hogy legalább 1024 bites kulcsot használ. A magasabb fenyegetésű modellekkel rendelkezőknek ragaszkodniuk kell a 2048 vagy 4096 bites kulcsokhoz, ha magabiztosan akarják használni az RSA-t., Mindaddig, amíg tudatában van az RSA gyengeségeinek, és helyesen használja, biztonságban kell éreznie magát az RSA használatával a kulcsmegosztáshoz és más hasonló feladatokhoz, amelyek nyilvános kulcs titkosítást igényelnek.
Lásd még: közös titkosítási típusok magyarázata