Az RSA titkosítás egy olyan rendszer, amely megoldja a kriptográfia valaha volt egyik legnagyobb problémáját: Hogyan lehet elküldeni valakinek kódolt üzenetet anélkül, hogy lehetősége lenne megosztani velük a kódot?
Ez a cikk mindent megtanít, amit tudnia kell az RSA titkosítás fejlesztése, hogyan működik, a matematika mögött, mire használják valamint néhány a legnagyobb biztonsági kérdések, amelyekkel szembesül. Az RSA megismerésével alapvető ismereteket szerezhet, amelyek segítenek megérteni online életünk hány részét biztonságban.
Mi az RSA titkosítás??
Tegyük fel, hogy titkot szeretne mondani a barátjának. Ha közvetlenül mellette vagy, suttoghatja. Ha az ország másik oldalán vagy, akkor ez nyilvánvalóan nem fog működni. Leírhatja és elküldheti nekik, vagy használhatja a telefont, de ezen kommunikációs csatornák mindegyike bizonytalan és bárki, aki elég erős motivációval rendelkezik, könnyen elhallgathatja az üzenetet.
Ha a titok elég fontos, akkor nem kockáztatja, hogy rendesen leírja – kémek vagy egy gazember postai alkalmazott kereshet az Ön levelein. Hasonlóképpen, valaki meghallgathatja a telefonját az Ön tudta nélkül, és naplózhat minden egyes hívást.
Az egyik megoldás annak megakadályozására, hogy a lehallgatók hozzáférjenek az üzenet tartalmához titkosítani. Ez alapvetően azt jelenti, hogy egy kódot kell hozzáadni az üzenethez, amely azt összezavarodott rendetlenséggé változtatja. Ha a kódod elég bonyolult, akkor az eredeti üzenethez csak azok férhetnek hozzá, akik hozzáférnek a kódhoz.
Ha előbb volt esélye megosztani a kódot barátjával, akkor bármelyik titkosított üzenetet bármikor elküldhet, tudva, hogy csak ketten vagytok képesek elolvasni az üzenet tartalmát. De mi lenne, ha nem volt lehetősége megosztani a kódot előre?
Ez a kriptográfia egyik alapvető problémája, amelyet a nyilvános kulcsú titkosítási sémák (más néven aszimmetrikus titkosítás), például az RSA.
Az RSA titkosítás alatt az üzeneteket egy a kóddal kódolják nyilvános kulcs, amelyet nyíltan meg lehet osztani. Az RSA algoritmus megkülönböztetett matematikai tulajdonságai 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ó rendelkezik kulcspárral, amely nyilvános és magán kulcsból áll. Ahogy a neve is sugallja, a privát kulcsot titokban kell tartani.
A nyilvános kulcsú titkosítási sémák eltérnek szimmetrikus kulcsos titkosítás, ahol a titkosítási és a dekódolási folyamat ugyanazt a privát kulcsot használja. Ezek a különbségek teszik lehetővé a nyilvános kulcsok titkosítását, mint például az RSA, hogy kommunikálhassunk olyan helyzetekben, amikor nem volt lehetőség kulcsok biztonságos elosztására..
A szimmetrikus kulcsú algoritmusoknak vannak saját alkalmazásai, például adatok titkosítása személyes használatra, vagy amikor biztonságos csatornák vannak, amelyekkel 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 a kombináció más titkosítási sémákkal, vagy digitális aláírások amely bizonyíthatja az üzenet hitelességét és integritását. Általában nem használják a teljes üzenetek vagy fájlok titkosítására, mivel kevésbé hatékony és erőforrás-igényesebb, mint a szimmetrikus kulcsos titkosítás..
A dolgok hatékonyabbá tétele érdekében, egy fájlt általában szimmetrikus kulcs algoritmussal titkosítunk, majd a szimmetrikus kulcsot RSA titkosítással titkosítjuk.. Ebben a folyamatban csak az az entitás, amely hozzáféréssel rendelkezik az RSA privát kulcshoz, képes lesz dekódolni a szimmetrikus kulcsot.
Anélkül, hogy hozzáférhetnénk a szimmetrikus kulcshoz, a az eredeti fájlt nem lehet visszafejteni. Ez a módszer arra használható, hogy az üzeneteket és a fájlokat biztonságban tartsa anélkül, hogy túl sokáig kellene tartania, vagy túl sok számítógépes erőforrást kellene felhasználnia.
Az RSA titkosítás számos különféle rendszerben használható. Meg lehet valósítani az OpenSSL-ben, a wolfCrypt-ben, a cryptlib-ben és számos más kriptográfiai könyvtárban.
Az RSA, mint az egyik legszélesebb körben alkalmazott nyilvános kulcsú titkosítási séma, megalapozta biztonságos kommunikációnk nagy részét. Ez volt hagyományosan használt TLS és ez volt a PGP titkosításban használt eredeti algoritmus. Az RSA továbbra is számos böngészőben, e-mailben, VPN-ben, csevegőben és más kommunikációs csatornákban látható.
Az RSA-t gyakran használják biztonságos kapcsolatok létrehozására a VPN-ügyfelek és a VPN-kiszolgálók között. Az olyan protokollok, mint az OpenVPN, a TLS kézfogások az RSA algoritmust használhatják kulcsok cseréjére és biztonságos csatorna létrehozására.
Az RSA titkosítás háttere
Mint a cikk elején megemlítettük, a nyilvános kulcsú titkosítás előtt kihívást jelentett a biztonságos kommunikáció, ha nem volt volna lehetőség a kulcsok biztonságos cseréjére. Ha nem volt lehetősége megosztani a kódot idő előtt, vagy nem volt egy biztonságos csatorna, amelyen keresztül a kulcsokat el lehet osztani, akkor nem lehetett kommunikálni anélkül, hogy az ellenség megakadályozhatná, hogy elfogja és hozzáférjen az üzenet tartalmához..
A dolgok valójában csak az 1970-es években kezdtek változni. James H. Ellis az évtized elején tette közzé az első jelentős fejleményt, amelyet most nyilvános kulcsú kriptográfiának hívunk. Ellis nem találta a módját a munkájának végrehajtására, de kollégája, Clifford Cocks kibővítette azt, és mostanává vált RSA titkosítás.
A puzzle utolsó darabja az, amit most hívunk Diffie-Hellman kulcscsere. Malcolm J. Williamson, egy másik munkatárs, kitalált egy sémát, amely lehetővé tette két fél számára titkosítási kulcs megosztását, még akkor is, ha a csatornát ellenfelek figyelték meg..
E munkát az Egyesült Királyság hírszerző ügynökségén, a kormányzati kommunikációs központban (GCHQ) végezték, amely a felfedezést besorolva tartotta. Részben a technológiai korlátok miatt a GCHQ abban az időben nem látott felhasználást nyilvános kulcsú kriptográfiához, így a fejlesztés üresen állt a polcon összegyűjtött polcon. Csak 1997-ben szüntették meg a munkát, és elismerték az RSA eredeti feltalálóit.
Néhány évvel később hasonló fogalmak kezdtek kialakulni a közszférában. Ralph Merkle létrehozta a nyilvános kulcsú kriptográfia, amely befolyásolta Whitfield Diffie-t és Martin Hellman-t a Diffie-Hellman kulcscsere megtervezésében.
Diffie és Hellman gondolataiból hiányzott egy olyan fontos szempont, amely munkájukkal a nyilvános kulcsú kriptográfia alapját tenné. Ez egy a egyirányú funkció, amelyet nehéz megfordítani. 1977-ben, Ron Rivest, Adi Shamir és Leonard Adleman, akiknek utónevei az RSA betűszó alkotják, egy évvel a probléma megoldása után megoldást találtak.
Az MIT-ben működő tudósok áttörést hajtottak végre egy 1977-es húsvéti párt után. Egy éjszakai ivás után Rivest hazament, ám alvás helyett inkább lázasan töltötte az estét, és egy olyan papírt írt, amely hivatalos gondolatát formalizálta a szükséges egyirányú funkcióhoz..
Az elképzelést az MIT 1983-ban szabadalmazta, de csak az internet korai szakaszában kezdte az RSA algoritmus fontos biztonsági eszköznek tekinteni az elterjedt alkalmazást..
Hogyan működik az RSA titkosítás??
A következők kissé egyszerűsödni fognak, mert valószínűleg túl sok olvasót megijesztett a középiskolai matematikai tanár. Annak érdekében, hogy a matematika ne kerüljön túl kezet, mi leszünk egyes fogalmak egyszerűsítése és sokkal kisebb számok használata. A valóságban az RSA titkosítás sokkal nagyobb nagyságrendű prímszámokat használ, és van néhány egyéb bonyolultság is.
Számos különböző fogalom létezik, amelyekkel körül kell mozdítania a fejét, mielőtt megmagyaráznánk, hogy mindez hogyan illeszkedik egymáshoz. Ezek tartalmazzák csapóajtó funkciók, prímjelek generálása, Carmichael teljes funkciója és a a nyilvános és a magánkulcs kiszámítása használják a titkosítási és visszafejtési folyamatokban.
Csapda funkciók
Az RSA titkosítás azon az előfeltevésen működik, hogy az algoritmus létezik könnyű kiszámolni egy irányba, de fordítva szinte lehetetlen. Például, ha azt kapnák, ha a 701,111 két prímszám szorzata, akkor tudná kitalálni, hogy mi ez a két szám?
Még számológéppel vagy számítógéppel sem lenne elképzelésünk arról, hol kezdjük, nem is beszélve arról, hogy kitaláljuk a választ. De ha körülfordulunk, ez sokkal könnyebbé válik. Mi az eredménye:
907 x 773
Ha elég unatkozik, ki tudta volna dobni a telefonját, vagy akár kiszámíthatja a fejében, hogy felfedezze, hogy a válasz a korábban említett 701,111. Ez a 907 és a 773 az elsődleges szám, amely megválaszolja az első kérdésünket, amely megmutatja nekünk, hogy bizonyos egyenleteket könnyen lehet kitalálni, 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 szorzót. Ha azt mondják, hogy a 701,111 egy 907-es eredmény szorzata egy másik prímszámmal, akkor a másik egyenlettel kitalálhatja:
701,111 ÷ 907 = 773
Mivel ezeknek a számoknak a kapcsolatát egyszerűen lehet egy irányba kiszámítani, de fordítva hihetetlenül nehéz, az egyenletet a csapdaajtó funkció. Vegye figyelembe, hogy bár a fenti példát nehéz kitalálni az emberek számára, a számítógépek triviális idő alatt tudják elvégezni a műveletet.
Emiatt az RSA sokkal nagyobb számot használ. A prímek mérete egy valódi RSA megvalósításban változó, de a 2048 bites RSA-ban összejönnek, hogy 617 számjegyű billentyűket készítsenek. A megjelenítés megkönnyítése érdekében kulcs lenne egy ilyen méretű szám:
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
Prímumok generálása
A csapdaajtó fent említett funkciói képezik az alapot a nyilvános és a magánkulcsos titkosítási rendszerek működéséhez. Tulajdonságai lehetővé teszik a nyilvános kulcsok megosztását az üzenet veszélyeztetése vagy a magánkulcs feltárása nélkül. Ezenkívül lehetővé teszik az adatok titkosítását az egyik kulccsal oly módon, hogy csak a másik kulccsal lehet visszafejteni a párból.
Az üzenet RSA-val történő titkosításának első lépése a következő generálja a kulcsokat. Ehhez szükségünk van két prímszám (p és q) amelyeket primalitási teszttel választanak meg. Az prímteszt egy olyan algoritmus, amely hatékonyan megtalálja a prímszámokat, például a Rabin-Miller prímteszt.
Az RSA prímszámának nagyon nagynak kell lennie, és viszonylag távol is kell lennie egymástól. A kicsi vagy közelebb lévő számok sokkal könnyebben feltörhetők. Ennek ellenére példánk kisebb számokat fog használni, hogy a dolgok könnyebben követhetők és kiszámíthatók legyenek.
Tegyük fel, hogy az primalitási teszt megadja nekünk azokat a prímszámokat, amelyeket a fentiekben használtunk, 907 és 773. A következő lépés a modulus felfedezése (n) az alábbi képlettel:
n = p x q
Hol p = 907 és q = 773
Ebből adódóan:
n = 907 x 773
n = 701,111
Carmichael teljes funkciója
Ha egyszer megvan n, mi használjuk Carmichael teljes funkciója:
λ(n) = LCM (p – 1, q – 1)
Ha már egy ideje eltalálta a matematikai tankönyveket, a fentiek kissé félelmetesnek tűnhetnek. Á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 további számításhoz. Mindent el fogunk magyarázni a lehető leg részletesebben, hogy segítsünk az alapok körül mozgatni.
Azok számára, akik nem tudják, λ (n) képviseli Carmichael összesítőjét n, míg LCM a legalacsonyabb közös multiplex, ami mind a kettő legalacsonyabb száma p és q lehet osztani. Néhány különféle módszer van ennek kiderítésére, de a legegyszerűbb az, ha megbíz egy online számológéppel, aki elvégzi az egyenletet az Ön számára. Tegyük fel a számokat az egyenletbe:
λ(701111) = LCM (907 – 1, 773 – 1)
λ(701111) = LCM (906, 772)
A fent hivatkozott számológéppel ez adja meg a következőket:
λ(701111) = 349 716
A nyilvános kulcs generálása
Most, hogy megvan a Carmichael összes prímszámja, az az ideje kitalálni a nyilvános kulcsunkat. RSA alatt, a nyilvános kulcsok prímszámból állnak e, valamint n. A szám e bármilyen lehet 1 és a érték között λ(n), amely példánkban 349 716.
Mivel a nyilvános kulcsot nyíltan megosztják, az számára nem annyira fontos e hogy véletlenszerű szám legyen. Gyakorlatban, e általában a 65537, mert ha sokkal nagyobb számot választanak véletlenszerűen, akkor a titkosítás sokkal kevésbé lesz hatékony. A mai példa esetében a számokat kismértékben fogjuk tartani a számítások hatékonysága érdekében. Mondjuk:
e = 11
A végső titkosított adatokat titkosítási szövegnek (c). A sima szöveges üzenetből származik (m), a nyilvános kulcs alkalmazásával a következő képlettel:
c = me mod n
Már felálltunk e és tudjuk n is. Az egyetlen, amit meg kell magyaráznunk mod. Ez egy kicsit ki van e cikk mélységéből, de utal a modulo műtét, ami lényegében azt jelenti, hogy fennmarad a fennmaradó rész, amikor az egyik oldalt a másikra osztja. Például:
10 mod 3 = 1
Ennek oka az, hogy a 3 háromszor 10-be megy, a fennmaradó pedig 1-be.
Vissza az egyenletünkhöz. Tegyük fel, hogy a dolgok egyszerűek maradjanak az üzenet (m), amelyet titkosítani akarunk és titokban akarunk tartani, csak egyetlen szám, 4. Csatlakoztassunk mindent:
c = me mod n
c = 411 mod 701111
c = 4 194 304 mod 701111
Ismét, hogy a modulo műtét könnyű, online számológépet fogunk használni, de szívesen kitalálja magát. Beírva 4,144,304-et az online számológépbe, ez megadja nekünk:
c = 688,749
Ezért, amikor az RSA-t használjuk az üzenet titkosításához, 4, a nyilvános kulcsunkkal megadja nekünk a A 688 749 rejtjelezett szöveg. Az előző lépések kissé túl nehéznek tűnhetnek, de fontos megismételni, mi történt.
Volt egy 4. üzenet, amit titokban akartunk tartani. Egy nyilvános kulcsot alkalmazottunk rá, amely megadta nekünk a titkosított eredmény 688 749. Most, hogy titkosítva van, biztonságosan elküldhetjük a 688 749 számot a kulcspár tulajdonosának. Ők az egyedüli személyek, akik a privát kulcsukkal képesek megfejteni azt. 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, ha az adatokat vagy egy üzenetet nyilvános kulccsal rejtjelezett szöveggé alakítottuk, csak ugyanazon kulcspár privát kulcsával lehet visszafejteni.. A privát kulcsok a következőkből állnak: d és n. Már tudjuk n, és a következő egyenlettel keressük meg d:
d = 1 /e mod λ(n)
Ban,-ben A nyilvános kulcs generálása a fenti szakaszban, ezt már a példánkban elhatároztuk, e egyenlő lenne 11. Hasonlóképpen, ezt is tudjuk λ(n) megegyezik a 349 716 korábbi munkánkkal Carmichael teljes funkciója. A dolgok egy kicsit bonyolultabbá válnak, ha a képlet ezen szakaszával találkozunk:
1 /e mod
Ez az egyenlet úgy néz ki, mintha arra kéri Önt, hogy ossza meg 1-re 11-gyel, de erről nincs szó. Ehelyett ez csak azt szimbolizálja, hogy ki kell számolnunk a moduláris inverz nak,-nek e (amely ebben az esetben 11) és λ(n) (amely ebben az esetben 349 716).
Ez lényegében azt jelenti a szokásos modulo művelet végrehajtása helyett az inverzt fogjuk használni. Ez általában megtalálható a kibővített euklideszi algoritmusnál, de ez kissé kívül esik a cikk alkalmazási körén, tehát csak csalunk és használunk online kalkulátort. Most, hogy megértettük mindazt, ami folyik, tegyük be adatainkat a képletbe:
d = 1 /11 mod 349716
A művelet végrehajtásához egyszerűen írja be a 11-et (vagy bármilyen értéket, amelyre szükség lehet) e ha ezt a saját példájával próbáljátok meg), hol mondja Egész szám és 349 716 (vagy bármilyen érték, amely esetleg felmerülhet) λ(n), ha ezt a saját példájával próbálja meg)) modulo a fent hivatkozott online számológépben. Ha helyesen tette, akkor olyan eredményt kell kapnia, ahol:
d = 254, 339
Most, hogy megvan az értéke d, a következő képlettel dekódolhatjuk azokat a üzeneteket, amelyeket titkosítottak nyilvános kulcsunkkal:
m = cd mod n
Most visszatérhetünk a rejtjelezett szöveghez, amelyet a A privát kulcs generálása szakasz. Amikor az üzenetet a nyilvános kulccsal titkosítottuk, az értéket adott nekünk c 688 749-ből. Fentről ezt tudjuk d egyenlő: 254,339. Ezt is tudjuk n 701,111. Ez megadja nekünk:
m = 688,749254339 mod 701111.
Mint már észrevetted, a legtöbb normál számológépnél egy kicsit megpróbálhat egy számot megtenni a 254 339-es teljesítményre. Ehelyett egy online RSA dekódolási számológépet fogunk használni. Ha másik módszert akarsz használni, akkor a szokásos módon hajtaná végre a hatalmat, és a modulus mûveletet ugyanúgy hajtja végre, mint a A nyilvános kulcs generálása szakasz.
A fent hivatkozott számológépbe írja be a 701,111 pontot, ahova azt mondja Supply Modulus: N, 254,399, ahol azt mondja Dekódolási kulcs: D, és 688 749, ahol azt mondják Ciphertext üzenet numerikus formában, az alábbiak szerint:
Miután megadta az adatokat, nyomja meg a gombot dekódolása, amely beírja a számokat a fent felsorolt dekódolási képlet segítségével. Ezzel megkapja az eredeti üzenetet az alábbi mezőben. Ha mindent helyesen tett, akkor választ kell kapnia 4, ezt az eredeti üzenetet titkosítottuk nyilvános kulcsunkkal.
Hogyan működik az RSA titkosítás a gyakorlatban?
A fenti szakaszoknak ésszerű képet kell adniuk a nyilvános kulcsú titkosítás mögötti matematika működéséről. Kicsit zavaró lehet, de még azok is, akik nem értették az egyenletek bonyolultságát, remélhetőleg elvesznek 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 előzőleg megosztott volna egy kódot. Először mindkettőnek meg kell hozzanak létre saját kulcspárokat és ossza meg a nyilvános kulcsot egymással. A két entitásnak titokban kell tartania magánkulcsait, hogy kommunikációja biztonságban maradjon.
Miután a feladó megkapta a címzett nyilvános kulcsát, felhasználhatja azt a titkosításra, amelyet biztonságban kíván tartani. Miután titkosítva volt egy nyilvános kulccsal, csak ugyanazon kulcspár privát kulcsával lehet visszafejteni.. Még ugyanaz a nyilvános kulcs nem használható az adatok visszafejtéséhez. Ennek oka a csapdaajtó funkciók amit már említettünk.
Amikor a címzett megkapja a titkosított üzenetet, a személyes kulcsot használják az adatok eléréséhez. Ha a címzett biztonságos módon szeretné visszatérni a kommunikációhoz, ezután titkosíthatják üzenetüket annak a félnek a nyilvános kulcsával, amellyel kommunikálnak. Ismét, miután titkosítva volt a nyilvános kulccsal, az információkhoz való hozzáférés egyetlen módja a megfelelő magánkulcs..
Ilyen módon az RSA titkosítást a korábban ismeretlen felek használhatják az adatok biztonságos küldésére egymás között. A kommunikációs csatornák jelentős részét, amelyeket online életünkben használunk, ebből az alapból építettük fel.
Hogyan bonyolultabb üzenetek vannak titkosítva az RSA-val?
Példánkban sokat egyszerűsítettünk a dolgok megértésének könnyebbé tétele é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 érdekes lehet hogyan lehet titkosítani egy bonyolultabb adatkészletet, például egy szimmetrikus kulcsot (amely az RSA leggyakoribb használata), vagy akár üzenetet is.
Néhány ember megdöbbent, hogy egy olyan kulcsot, mint például az „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…”, vagy egy olyan üzenetet, mint például a „vásároljon nekem egy szendvicset”, egy olyan algoritmus titkosítsa, mint például az RSA, amely számokkal foglalkozik, és nem betűket. A valóság az, hogy az összes információ, amelyet számítógépeink feldolgoznak, binárisan (1 és 0) tárolódik, és olyan kódolási szabványokat használunk, mint például ASCII vagy Unicode ábrázolni őket az emberek által érthető módon (betűk).
Ez azt jelenti olyan kulcsok, mint az „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…”, valamint az olyan üzenetek, mint „vásároljon nekem egy szendvicset”, számokként léteznek, amely könnyen kiszámítható az RSA algoritmusban. A számok, amelyeket képviselnek, sokkal nagyobbak és nehezebben kezelhetők számunkra, ezért inkább az alfanumerikus karakterekkel foglalkozunk, nem pedig a bináris betűkkel..
Ha akartál hosszabb munkamenet-kulcs vagy összetettebb üzenet titkosítása az RSA-val, egyszerűen sokkal nagyobb számot vonna be.
Párnázás
Az RSA végrehajtásakor az úgynevezett valamit használja párnázás a támadások elkerülése érdekében. 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 jól vagytok. Még mindig vacsorázunk holnap?
Üdvözlettel,
James
Tegyük fel, hogy egyszerűen kódolta az üzenetet minden betű megváltoztatása az ábécé betűjére. Ez megváltoztatná 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ö, amelyet felhasználhattak a kód feltörésére. Ők tudnák nézd meg a levél formátumát, és próbáld kitalálni, mi lehet az üzenet. Tudják, hogy az emberek általában „Hi”, „Hello”, „kedves” vagy sok más konvencióval kezdik a levelet.
Ha megpróbálnák az első szóként „Szia” vagy a „Helló” alkalmazni, akkor látni fogják, hogy ez nem felel meg a karakterek számának. Ezután kipróbálhatják a „Kedves” szót. Megfelel, de ez nem feltétlenül jelent semmit. A támadók csak kipróbálják, és megnézik, hová vezette őket. Tehát megváltoztatnák az „e”, „f”, „b” és „s” betűket „d”, „e”, „a” és „r” betűkkel. Ez megadná nekik:
Kedves Laseo!,
J ipqe zpv xemm. Xe tujmm iawjoh djooes upnpsspx?
Zpvrt tjoderemz,
Kanet
Ez továbbra is elég zavarónak tűnik, így a támadók megpróbálhatnak átnézni más konvenciókat, például hogyan fejezzük be a leveleinket. Az emberek gyakran kiegészítik a „From” -t vagy a „kedves üdvözletét” végén, de ezek egyike sem felel meg a formátumnak. Ehelyett a támadók megpróbálhatják a „Tisztelettel” szöveget, és kicserélhetik a többi levelet, hogy megtudják, hová hozzák őket. A „z”, „p”, „v”, „t”, „j”, „o”, „d” és „m” értékének „y”, „o”, „u”, „s”, „ i ”,„ n ”,„ c ”és„ l ”, akkor kapnák:
Kedves Lasen!,
Ioqe xell vagy. Xe tuill iawinh dinnes uonossox?
Üdvözlettel,
Kanet
A módosítás után úgy tűnik, hogy a támadók elindulnak valahova. Megtalálták az „én”, „te” és „vagyok” szavakat, azon szavak mellett, amelyek az eredeti kitalálásukat alkották.
Mivel a szavak helyes nyelvtani sorrendben vannak, a támadók elég biztosak lehetnek abban, hogy a helyes irányba haladnak. Mostanra valószínűleg azt is felismerték, hogy a kód az egyes betűket úgy változtatja meg, hogy az ábécé kövesse őket. Amint rájönnek erre, megkönnyíti a többi fordítását és az eredeti üzenet elolvasását.
A fenti példa csak egy egyszerű kód volt, de mint láthatja, az üzenet felépítése a támadók számára nyomokat adhat annak tartalmára vonatkozóan. Persze, nehéz volt az üzenetet a szerkezetéből kitalálni, és néhány oktatott kitalálásra volt szükség, de ne feledje, hogy a számítógépek sokkal jobban tudják ezt megtenni, mint mi. Ez azt jelenti, hogy sokkal bonyolultabb kódokat sokkal rövidebb idő alatt képesek kitalálni, a szerkezetből és más elemekből származó nyomok alapján.
Ha a struktúra egy kód feltöréséhez vezethet, és felfedheti az üzenet tartalmát, 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 párnázás.
Amikor egy üzenet meg van töltve, randomizált adatok kerülnek hozzá az eredeti formázási nyomok elrejtéséhez, amelyek a titkosított üzenet törését eredményezhetik. Az RSA-val a dolgok egy kicsit bonyolultak, mivel a titkosított kulcsnak nincs egyértelmű formázása egy levélhez, amely a fenti példánkban segítséget nyújtott nekünk..
Ennek ellenére az ellenfelek számos támadást használhatnak fel a kód matematikai tulajdonságainak kihasználására és a titkosított adatok megtörésére. Ezen veszély miatt, az RSA megvalósításai olyan töltési sémákat használnak, mint például az OAEP, az adatok beágyazására az üzenetbe. Ha hozzáadja ezt a párnázatot az üzenet titkosítása előtt, az RSA sokkal biztonságosabb.
Üzenetek aláírása
Az RSA nemcsak az adatok titkosításához használható. Tulajdonságai révén ez is hasznos rendszer annak megerősítése, hogy egy üzenetet küldött az a szervezet, aki azt állítja, hogy elküldte, valamint annak igazolása, hogy az üzenetet nem módosították vagy hamisították meg.
Ha valaki bizonyítani akarja üzenet hitelességét, kiszámíthatja a hash (egy olyan funkció, amely tetszőleges méretű adatokat vesz át, és rögzített hosszúságú értékké alakítja azokat) a sima szöveget, majd aláírja saját magánkulcsukkal. Ők írja alá a hash-ot ugyanazon képlet alkalmazásával, amelyet a dekódoláshoz használt (m = cd mod n). Az üzenet aláírása után megküldik ezt a digitális aláírást a címzettnek az üzenettel együtt.
Ha a címzett üzenetet kap digitális aláírással, akkor használhatja a aláírás annak ellenőrzésére, hogy az üzenetet hitelesen írta-e alá annak a személynek a magánkulcsa, aki azt állítja, hogy elküldte. Azt is megnézhetik, hogy a támadók megváltoztatták-e az üzenetet 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 fel a kapott üzenet hash-értékének megkeresésére. A címzett ezután alkalmazza a a feladó nyilvános kulcsa a digitális aláíráshoz, a titkosítási képlet segítségével (c = me mod n), hogy megkapja a digitális aláírás kivonatát.
Által a titkosított digitális aláírásból a kivonattal kapott üzenet kivonatának összehasonlítása, a címzett megmondhatja, hogy az üzenet hiteles-e. Ha a két érték azonos, az üzenet az aláírás óta nem változott az eredeti feladó által. Ha az üzenetet még egyetlen karakter megváltoztatta, a hash-érték teljesen más lenne.
RSA biztonság & támadások
Mint a legtöbb kriptoszisztémában, az RSA biztonsága attól is függ, hogy hogyan alkalmazzák és használják. Az egyik fontos tényező a kulcs mérete. Az minél nagyobb a bit bitszáma egy kulcsban (lényegében mennyi a kulcs), annál nehezebb megtörni a támadásokat mint például a brutális kényszerítés és a faktoring.
Mivel az aszimmetrikus kulcsú algoritmusokat, például az RSA-t egész tényezős faktorral lehet megtörni, míg az AES-hez hasonló szimmetrikus kulcsú algoritmusok nem képesek, az RSA-kulcsoknak sokkal hosszabb időtartamúaknak kell lenniük az azonos biztonsági szint elérése érdekében.
Jelenleg a a figyelembe vett legnagyobb kulcsméret 768 bit hosszú. Ezt egy akadémikusok egy csapata végezte két év alatt, száz gépek felhasználásával.
Mivel a faktoring 2009 végére befejeződött, és a számítási teljesítmény azóta jelentősen megnőtt, feltételezhető, hogy hasonló intenzitású kísérlet most sokkal nagyobb RSA-kulcsot tud befolyásolni.
Ennek ellenére az ilyen típusú támadásokhoz szükséges idő és erőforrások a legtöbb hackertől eljuthatnak és a nemzetállamok birodalmába kerülnek. A legmegfelelőbb kulcshossz az egyéni fenyegetési modelltől függ. A Nemzeti Szabványügyi és Technológiai Intézet javasolja a kulcs legkisebb méretét: 2048 bit, de 4096 bites billentyűket is használnak bizonyos helyzetekben, ahol a fenyegetési szint magasabb.
A faktoring csak az egyik módja annak, hogy az RSA megsérüljön. Számos más támadás kisebb méretű erőforrásokkal képes megtörni a titkosítást, de ezek a végrehajtástól és más tényezőktől függnek, nem feltétlenül magát az RSA-tól. Néhány ezek közül:
A prímok valóban véletlenszerűek??
Az RSA egyes megvalósításai gyenge véletlenszám-generátorokat használnak, hogy felvegyék a primesket. Ha ezek a számok nem elég véletlenszerűek, akkor a támadók sokkal könnyebben tudják számba venni őket és megtörni a titkosítást. Ez a probléma elkerülhető egy kriptográfiailag biztonságos ál-véletlenszám-generátor használatával.
Szegény kulcsgeneráció
Az RSA kulcsoknak bizonyos paraméterekre kell esniük ahhoz, hogy biztonságosak legyenek. Ha a prímák p és q ha túl közel vannak egymáshoz, a kulcs könnyen felfedezhető. Hasonlóképpen a szám d amely a magánkulcs 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úak legyenek a kulcs biztonsága érdekében.
Oldalcsatorna támadások
Ez egy olyan támadás, amely nem szakítja meg közvetlenül az RSA-t, hanem a végrehajtásából származó információkat használja fel, hogy a támadóknak tippeket adjon a titkosítási folyamatról. Ezek a támadások magukban foglalhatják például a felhasznált energiamennyiség elemzése, vagy ágbecslés elemzése, amely végrehajtási idő mérésekkel fedezi fel a privát kulcsot.
Az oldalsó csatorna támadásának egy másik típusát időzítési támadásnak nevezik. Ha a támadó képes megmé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, ezek az információk lehetővé teszik a támadó számára, hogy megbizonyosodjon a cél privát kulcsáról.
Az RSA legtöbb megvalósítása elkerüli ezt a támadást azáltal, hogy a titkosítási folyamat során egyszeri értéket ad hozzá, amely megszünteti ezt a korrelációt. Ezt a folyamatot hívják kriptográfiai vakolás.
Az RSA titkosítása 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 helyesen kell végrehajtani, és olyan kulcsot kell használnia, amely a helyes paraméterekhez tartozik. Mint az imént megvitattuk, azok a megvalósítások, amelyek nem használnak párnázást, nem megfelelő méretű prímákat használnak, vagy más biztonsági réseket tartalmaznak, nem tekinthetők biztonságosnak.
Ha használni szeretné az RSA titkosítást, győződjön meg arról, hogy legalább 1024 bites kulcsot használ. A nagyobb fenyegetéssel rendelkező modelleknek ragaszkodniuk kell a 2048 vagy 4096 bites kulcsokhoz, ha bizalommal akarják használni az RSA-t. Mindaddig, amíg tisztában van az RSA gyengeségeivel, és helyesen használja, biztonságban kell éreznie az RSA használatát kulcsmegosztáshoz és más hasonló, nyilvános kulcsos titkosítást igénylő feladatokhoz..
Lásd még: Általános titkosítási típusok magyarázatok
az RSA-t gyakran használják a kulcsok titkosítására, amelyeket a szimmetrikus kulcsos titkosítási sémák használnak. Az RSA-t használják az SSL/TLS protokollban, amely biztonságos kapcsolatot biztosít a weboldalak és a felhasználók között. Az RSA-t használják az e-mail aláírások és titkosítások létrehozásához is. Az RSA-t használják az adatok biztonságos tárolásához is, például a PGP (Pretty Good Privacy) szoftverben. Az RSA-t használják az online banki tranzakciók és az e-kereskedelem biztonságosabbá tételéhez is. Az RSA-t széles körben használják a kriptográfiai alkalmazásokban, és fontos szerepet játszik az online biztonságban.
az RSA-t gyakran használják a kulcsok titkosítására, amelyeket a szimmetrikus kulcsos titkosítási sémák használnak. Az RSA-t használják az SSL/TLS protokollban, amely biztonságos kapcsolatot biztosít a weboldalak és a felhasználók között. Az RSA-t használják az e-mail aláírások és titkosítások létrehozásához is. Az RSA-t használják az adatok biztonságos tárolásához is, például a PGP (Pretty Good Privacy) szoftverben. Az RSA-t használják az online banki tranzakciók biztonságosabbá tételéhez is. Az RSA-t széles körben használják az információ biztonságának javítására az online világban.