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övegenNem 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ánEllenkező 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.
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.
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ó:
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.
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.
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ő intervallumokBizonyí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éseAz 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.
Vegyünk 3 olyan helyzetet, amikor az elemző hozzáférhet egy eszközhöz.
Így a vevő válaszidejének mérésével megállapítható, hogy van-e formázási hiba vagy sem.