Vald - chiffertextattack är en kryptografisk attack där en kryptoanalytiker samlar in information om ett chiffer genom att gissa chiffertexten och dekryptera den med en okänd nyckel. Vanligtvis kan en kryptoanalytiker använda dekrypteringsverktyget en eller flera gånger för att erhålla den dekrypterade chiffertexten. Med hjälp av mottagna data kan han försöka återställa den hemliga nyckeln för dekryptering. Det finns chiffer för vilka den här typen av attacker kan vara framgångsrika. Dessa inkluderar: ElGamal Scheme ; RSA , används i SSL-protokollet ; NTRU . För skydd används RSA-OAEP och Cramer-Showe chiffer .
En chiffertextattack kan vara adaptiv eller icke-adaptiv.
Attack baserad på felaktig chiffertextI en icke-adaptiv attack använder kryptoanalytikern inte resultaten från tidigare dekrypteringar, det vill säga chiffertexter väljs ut i förväg. Sådana attacker kallas lunchattacker ( lunchtid eller CCA1 ).
Attack baserat på en adaptivt vald chiffertextAnnars väljer kryptoanalytikern adaptivt en chiffertext som beror på resultaten av tidigare dekrypteringar ( CCA2 ).
En av representanterna för kryptosystem med publik nyckel ( Public Key Cryptography Standards ), baserad på RSA-algoritmen. Låt k vara bytelängden för RSA-modulen, n. Det finns många varianter av PKCS#1-standarden. I detta exempel betraktas RSAES-PKCS1-v1_5-versionen utan att använda en digital signatur, den andra byten i meddelandeblocket är 00 eller 01. Standarden kan fungera med meddelanden med en maximal längd lika med k-11. Standardblocket PKCS#1, EB, består av k byte. Dess form är EB = 00||02||PS||00||D. De två första byten är konstanta och lika med 00 respektive 02. PS är en utfyllnadssträng, ett genererat pseudoslumptal som består av byte som inte är noll. För att öka säkerhetsnivån rekommenderas det att generera ett nytt PS-block för varje enskild kryptering. Dess längd är lika med k-3-|D|, där D är datablocket, |D| är dess bytelängd. Längden på PS-blocket måste vara minst 8 byte. PS- och D-blocken måste separeras med en nollbyte. För enkelhetens skull kommer vi i framtiden inte att specificera RSAES-PKCS1-v1_5-standarden, vi kommer att beteckna den som PKCS#1. Låt n, e vara den publika nyckeln och p, q, d vara den hemliga nyckeln. Enligt R.S.A. EB-blocket konverteras till ett heltal x och krypteras med RSA-algoritmen, . Mottagaren kontrollerar längden på chiffertexten, dekrypterar den , blockerar den och kontrollerar de första två byten som separerar nollbyten och längden på PS-blocket. Om kontrollen misslyckas skapas ett fel.
Detta exempel illustrerar möjligheten till en framgångsrik attack baserat på en adaptivt vald chiffertext. Låt kryptoanalytikern ha tillgång till en enhet som för valfri vald chiffertext indikerar om motsvarande klartext är i standardformatet PKCS#1 och står inför uppgiften att dekryptera chiffertext C. På så sätt kan analytikern välja olika chiffertexter och skicka dem till enheten. Efter att ha fått svaret komponerar den nästa chiffertext, baserat på resultaten från de föregående. Baserat på svaren som mottagits från enheten och kunskap om det standardkompatibla öppna meddelandeformatet kan kryptoanalytikern beräkna . Den avgörande faktorn i attacken är de två första byten i det öppna meddelandet, som är konstanter. I detta exempel betraktas en algoritm som minimerar antalet chiffertexter som krävs för att ta emot ett öppet meddelande. Attacken kan delas in i tre steg:
Anta att kryptoanalytikerns mål är att ta reda på det . Eftersom k är bytelängden på n, då . Analytikern väljer antalet s, beräknar det och skickar det till enheten. Om enheten tar emot ett meddelande vet vi säkert att de två första byten är 00 och 02. För enkelhetens skull, låt oss beteckna . Antag att s är lämpligt, då är uppskattningen sann . Genom att samla in den här typen av information kan vi hitta m. Som regel kommer chiffertexter att räcka, men det här antalet kan fluktuera kraftigt. Låt oss skriva attacken steg för steg.
Det första steget kan hoppas över om C är ett krypterat meddelande som överensstämmer med PKCS-standarden. I det andra steget börjar matchningen med , eftersom meddelandet för mindre värden inte överensstämmer med PKCS-standarden. Siffran används för att dividera intervallet vid varje iteration med ungefär hälften.
Låt sannolikheten att en slumpmässigt vald chiffertext har ett lämpligt klartextformat vara , och vara sannolikheten att för ett slumpmässigt valt heltal de första 2 byten är 00 och 02. Eftersom , det följer att . RSA-modulen väljs vanligtvis som en multipel av 8. Så, vanligtvis nära . Sannolikheten att ett PS-block innehåller minst 8 byte som inte är noll som slutar med en nollbyte är . Om vi antar att n är minst 512 bitar (k > 64), har vi . Så .
Beräkna intervallerLåt oss bevisa det . Eftersom den överensstämmer med PKCS-standarden, följer det att . Låt oss anta det . Så det finns ett intervall med . Eftersom den överensstämmer med PKCS-standarden finns det ett sådant r som därför, , , det vill säga finns i ett av intervallen.
Uppskattning av komplexiteten i en attackMeddelandet i steg 1 väljs slumpmässigt, vilket innebär att du måste skicka till enheten nära meddelandena för att hitta . På samma sätt för steg 2.1 och 2.2 för . Låt vara antalet intervaller i . Sedan för . Längden på intervallet begränsas uppifrån av värdet . Genom att veta att PKCS-formatet får vi intervaller av formuläret . kommer att innehålla ungefär intervaller. Om , så ingår vart och ett av intervallen, eller en del av det, i om det överlappar med ett av intervallen . Inget av intervallen kan överlappa med två intervall . Om intervallen är slumpmässigt fördelade, så kommer sannolikheten att man skär sig att begränsas ovan av . Således erhålls ekvationen för under antagandet att ett intervall måste innehålla värdet . I vårt fall förväntar vi oss att få med om och ha . Därför kommer det att ta ett enda värde med hög sannolikhet. Därför förväntas steg 2.2 inträffa endast en gång. Låt oss analysera steg 2.3. Det finns därför . Intervalllängd . Därför är det möjligt att hitta ett par som uppfyller olikheterna i steg 2.3 för vart tredje värde på . Sannolikheten för att , är ungefär . Därför kan vi hitta , som uppfyller standarden ungefär med hjälp av chiffertexter. Eftersom resten av intervallet halveras i varje steg 2.3, förväntar vi oss att använda nära chiffertexter. För och kommer att behöva ca chiffertexter för en lyckad attack. Alla sannolikheter som anges ovan hittades under antagandet att alla är oberoende. Låt och uppfylla PKCS-standarden och ha samma PS-blocklängd. Sedan för något heltal får vi och . Då är det mycket troligt att de uppfyller PKCS-standarden, eftersom de också ofta uppfyller standarden. Vanligtvis väljs n som en multipel av 8, eftersom sannolikheten är liten för det. En modul med en bitlängd lika med , är bekvämt för analytikern, eftersom det i det här fallet behövs cirka chiffertexter för en framgångsrik attack.
Tänk på tre situationer där en analytiker kan få tillgång till en enhet.
Genom att mäta mottagarens svarstid är det således möjligt att avgöra om ett formatfel föreligger eller inte.