Választott titkosított szöveges támadás

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2018. december 21-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A választott – rejtjelezett szöveges támadás olyan kriptográfiai támadás , amelyben a  kriptaelemző információkat gyűjt a rejtjelről úgy, hogy kitalálja a rejtjelezett szöveget, és egy ismeretlen kulccsal visszafejti. A kriptoanalizátor általában egy vagy több alkalommal használhatja a visszafejtőt a visszafejtett rejtjelezett szöveg megszerzéséhez. A kapott adatok felhasználásával megpróbálhatja visszaállítani a titkos kulcsot a visszafejtéshez. Vannak olyan titkosítások, amelyeknél ez a fajta támadás sikeres lehet. Ezek a következők: ElGamal-séma ; RSA , az SSL protokollban használatos ; NTRU . A védelem érdekében RSA-OAEP és Cramer-Showe titkosításokat használnak .

A titkosított szöveges támadás lehet adaptív vagy nem adaptív.

Támadás rosszul alkalmazkodó rejtjelezett szövegen

Nem adaptív támadásnál a kriptoanalizátor nem használja fel a korábbi visszafejtések eredményeit, vagyis a titkosított szövegeket előre kiválasztja. Az ilyen támadásokat ebédidős támadásoknak nevezik ( ebédidő vagy CCA1 ).

Támadás adaptívan választott rejtjelezett szöveg alapján

Ellenkező esetben a titkosítási elemző adaptív módon választ ki egy rejtjelezett szöveget, amely a korábbi visszafejtések ( CCA2 ) eredményeitől függ.

Támadás az RSA PKCS#1 titkosítási szabványon alapuló protokollok ellen

Az RSA PKCS#1 szabvány rövid leírása

A nyilvános kulcsú kriptorendszerek ( Public Key Cryptography Standards ) egyik képviselője, az RSA algoritmus alapján. Legyen k az RSA modul bájthossza, n. A PKCS#1 szabványnak számos változata létezik. Ebben a példában az RSAES-PKCS1-v1_5 verziót digitális aláírás nélkül vesszük figyelembe, az üzenetblokk második bájtja 00 vagy 01. A szabvány maximum k-11 hosszúságú üzenetekkel tud működni. A PKCS#1 szabványos blokk, az EB, k bájtból áll. Alakja EB = 00||02||PS||00||D. Az első két bájt állandó és egyenlő 00-val, illetve 02-val.. A PS egy kitöltési karakterlánc, egy generált pszeudovéletlen szám, amely nem nulla bájtokból áll. A biztonsági szint növelése érdekében ajánlott minden egyes titkosításhoz új PS blokkot generálni. Ennek hossza rendre k-3-|D|, ahol D az adatblokk, |D| a bájt hossza. A PS blokk hosszának legalább 8 bájtnak kell lennie. A PS és D blokkokat null byte-tal kell elválasztani. A kényelem kedvéért a jövőben nem adjuk meg az RSAES-PKCS1-v1_5 szabványt, hanem PKCS#1-ként fogjuk megjelölni. Legyen n, e a nyilvános kulcs és p, q, d a titkos kulcs. Az R.S.A. Az EB blokkot x egész számmá alakítjuk, és az RSA algoritmussal titkosítjuk . A vevő ellenőrzi a titkosított szöveg hosszát , dekódolja , blokkolja, és ellenőrzi a helyes első két bájtot, amelyek elválasztják a null byte-ot és a PS blokk hosszát. Ha az ellenőrzés sikertelen, hibaüzenet jelenik meg.

A támadás leírása

Ez a példa egy sikeres támadás lehetőségét szemlélteti egy adaptívan választott rejtjelezett szöveg alapján. Engedje meg, hogy a rejtjelelemző hozzáférjen egy olyan eszközhöz, amely bármely kiválasztott rejtjelezett szöveg esetén jelzi, hogy a megfelelő nyílt szöveg a PKCS#1 szabványos formátumban van-e, és a C rejtjelezett szöveg visszafejtésének feladatával kell szembenéznie. Ily módon az elemző különféle rejtjelezett szövegeket választhat ki. és küldje el őket a készülékre. Miután megkapta a választ, az előzőek eredményei alapján összeállítja a következő rejtjelezett szöveget. Így az eszköztől kapott válaszok és a szabványnak megfelelő nyílt üzenetformátum ismerete alapján a kriptoanalitikus kiszámíthatja a . A támadásban a döntő tényező a nyitott üzenet első két bájtja, amelyek konstansok. Ebben a példában egy olyan algoritmust veszünk figyelembe, amely minimalizálja a nyitott üzenet fogadásához szükséges titkosított szövegek számát. A támadás 3 szakaszra osztható:

A támadás matematikai leírása

Tegyük fel, hogy a kriptoanalitikus célja az, hogy kiderítse . Mivel k az n bájthossza, akkor . Az elemző kiválasztja az s számot, kiszámolja és elküldi a készüléknek. Ha a készülék üzenetet kap, akkor biztosan tudjuk, hogy az első két bájt 00 és 02. A kényelem kedvéért jelöljük . Tegyük fel, hogy s megfelelő, akkor a becslés igaz . Az ilyen típusú információkat összegyűjtve megtalálhatjuk a m. A titkosított szövegek általában elegendőek, de ez a szám nagymértékben ingadozhat. Írjuk le lépésről lépésre a támadást.

  1. Megtalálás . Adott egy c egész szám, különböző véletlenszerű egészeket választunk , majd az eszközzel ellenőrizzük, hogy a kifejezés megfelel -e a PKCS szabványnak. Az ily módon sikeresen megtalált első számra , , .
  2. A megfelelő üzenetek megtalálása
    1. Keresés indítása. Ha i=1, akkor a legkisebb pozitív számot keressük , amelyre a rejtjelezett szöveg megfelel a PKCS szabványnak.
    2. Ellenkező esetben, ha és az intervallumok száma legalább 2, akkor azt a legkisebb egész számot keressük, amelyre a rejtjelezett szöveg megfelel a PKCS szabványnak.
    3. Ellenkező esetben, ha pontosan egy intervallumot (azaz ) tartalmaz, akkor válasszon olyan egész számokat , amelyek kielégítik az és kifejezéseket , amíg a rejtjelezett szöveg nem felel meg a PKCS szabványnak.
  3. A megoldáskészlet szűkítése . Ha megtalálta, a rendszer kiszámol egy intervallumsorozatot mind az összesre, mind a .
  4. Megoldás kiszámítása . Ha csak egy intervallumot tartalmaz az űrlap , akkor állítsa be és adja vissza az m-t megoldásként . Ellenkező esetben a 2. lépésre lépünk.

Az első lépés kihagyható, ha C a PKCS szabványnak megfelelő titkosított üzenet. A második lépésben az egyezés a -val kezdődik , mivel kisebb értékek esetén az üzenet nem felel meg a PKCS szabványnak. A szám arra szolgál, hogy az intervallumot minden iterációnál körülbelül a felére osztja.

Támadáselemzés

A PKCS szabványnak megfelelő üzenet valószínűségének becslése

Legyen annak a valószínűsége, hogy egy véletlenszerűen kiválasztott rejtjelezett szövegnek megfelelő egyszerű szöveges formátuma van , és  legyen annak a valószínűsége, hogy bármely véletlenszerűen kiválasztott egész szám első 2 bájtja 00 és 02. Mivel , ebből következik, hogy . Az RSA modulust általában 8 többszöröseként választják. Tehát általában közel . Annak a valószínűsége, hogy egy PS-blokk legalább 8 nullától eltérő bájtot tartalmaz, amelyek egy nullbájttal végződnek, . Feltételezve, hogy n legalább 512 bit (k > 64), akkor . Szóval .

Becslő intervallumok

Bizonyítsuk be . Mivel megfelel a PKCS szabványnak, ebből következik, hogy . Tegyük fel, hogy . Tehát van egy intervallum -val . Mivel megfelel a PKCS szabványnak, van egy olyan r, amely ezért , , azaz az egyik intervallumban benne van.

Egy támadás összetettségének becslése

Az 1. lépésben az üzenetet véletlenszerűen választja ki, ami azt jelenti, hogy el kell küldenie az üzenetek közelében lévő eszközre, hogy megtalálja . Hasonlóan a 2.1. és 2.2. lépéshez a . Legyen  az intervallumok száma -ben . Akkor azért . Az intervallum hosszát felülről az érték határolja . Tudva, hogy a PKCS formátum, az űrlap intervallumait kapjuk . körülbelül intervallumokat fog tartalmazni. Ha , akkor minden intervallum vagy annak egy része benne van, ha átfedésben van az egyik intervallumtal . Egyik intervallum sem fedhet át két intervallumot . Ha az intervallumok véletlenszerű eloszlásúak, akkor annak a valószínűsége, hogy egy metszéspontba kerül, a fenti értékkel határos . Így a for egyenletet azzal a feltételezéssel kapjuk meg, hogy egy intervallumnak tartalmaznia kell az értéket . A mi esetünkben azt várjuk, hogy kb and have . Ezért nagy valószínűséggel egyetlen értéket vesz fel. Ezért a 2.2 lépés várhatóan csak egyszer történik meg. Elemezzük a 2.3 lépést. Létezik tehát tehát . Intervallum hossza . Ezért minden harmadik értékre találhatunk olyan párt , amely kielégíti a 2.3 lépésben szereplő egyenlőtlenségeket . Annak a valószínűsége, hogy kb . Ezért találhatunk , ami nagyjából megfelel a szabványnak rejtjelezett szövegek segítségével. Mivel az in intervallum többi része a 2.3 lépésben felére csökken, várhatóan közel rejtjelezett szövegeket használunk. A sikeres támadáshoz körülbelül titkosított szövegekre lesz szükség . Az összes fent jelzett valószínűséget úgy határoztuk meg, hogy feltételeztük, hogy mindegyik független. Legyen és feleljen meg a PKCS szabványnak, és azonos PS blokkhosszú legyen. Ekkor valamilyen egész számra megkapjuk és . Akkor nagy valószínűséggel megfelelnek a PKCS szabványnak, hiszen gyakran megfelelnek a szabványnak is. Általában n-t 8 többszörösének választják, mivel ennek kicsi a valószínűsége. A , bithosszúságú modul kényelmes az elemző számára, mivel ebben az esetben körülbelül titkosított szövegek szükségesek a sikeres támadáshoz.

Hozzáférés a visszafejtőhöz

Vegyünk 3 olyan helyzetet, amikor az elemző hozzáférhet egy eszközhöz.

  1. Rendszeres titkosítás . Alice létrehoz egy üzenetet, a PKCS#1 szabvány szerint titkosítja, integritásellenőrzés nélkül, és elküldi Bobnak. Bob visszafejti, és ha a visszafejtett üzenet formátuma nem felel meg a szabványnak, akkor hibát dob, ellenkező esetben a protokoll szerint jár el. Így az elemző Aliceként viselkedhet, és ellenőrizheti, hogy az üzenetek megfelelnek-e a szabványnak. Vegye figyelembe, hogy az elemző támadása akkor is működik, ha a következő lépésben hitelesítést használnak, mivel az elemző megkapja a szükséges információkat, mielőtt a felhasználót hitelesíteni kellene.
  2. Részletes hibaüzenetek . Az integritás-ellenőrzés az RSA-titkosítás fontos része. Ennek egyik módja, hogy aláírja az üzenetet a privát kulccsal, mielőtt a feladó titkosítaná a nyilvános kulccsal. Ekkor a támadó nem tudja véletlenül a megfelelő üzenetet létrehozni. A támadás azonban sikeres lehet. Sikertelen érvényesítés esetén a címzett üzenetet küld, amelyben megadja, hogy hol nem sikerült az érvényesítés. Különösen veszélyezteti a biztonságot azáltal, hogy különböző hibaüzeneteket ad vissza a szabványnak nem megfelelő és az aláírás-ellenőrzési hibát tartalmazó üzenetekhez.
  3. Idő támadás . Egyes üzenetgenerálási lehetőségek a titkosítást és az aláírást egyaránt tartalmazzák. Fontolja meg a műveletek sorrendjét.
    1. Az üzenet visszafejtésre kerül.
    2. Ha nem felel meg a szabványnak, hibaüzenetet küld.
    3. Ellenkező esetben az aláírás ellenőrzésre kerül.
    4. Ha az aláírás hibás, akkor hibaüzenet jelenik meg, ellenkező esetben hozzáférés.

Így a vevő válaszidejének mérésével megállapítható, hogy van-e formázási hiba vagy sem.

Irodalom

Linkek

  • RSA Data Security Inc. PKCS #1: RSA titkosítási szabvány. – Redwood City, Kalifornia, nov. 1993. 1.5-ös verzió – ftp://ftp.rsa.com/pub/pkcs/ascii/pkcs-1.asc
  • Bleichenbacher's Attack // Hitelesített kulcscsere (TLS-ben), Kenny Paterson, 2015,  32-41 .