Vald chiffertextattack

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 21 december 2018; verifiering kräver 1 redigering .

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 chiffertext

I 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 chiffertext

Annars väljer kryptoanalytikern adaptivt en chiffertext som beror på resultaten av tidigare dekrypteringar ( CCA2 ).

Attack mot protokoll baserade på RSA PKCS#1-krypteringsstandarden

En kort beskrivning av RSA PKCS#1-standarden

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.

Beskrivning av attacken

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:

Matematisk beskrivning av attacken

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.

  1. Hitta . Givet ett heltal c väljer vi olika slumpmässiga heltal , sedan kontrollerar vi med enheten om uttrycket uppfyller PKCS-standarden. För det första numret som lyckades hittas på detta sätt, hittar vi , , .
  2. Att hitta rätt meddelanden
    1. Sök start. Om i=1, så letar vi efter det minsta positiva talet , för vilket chiffertexten uppfyller PKCS-standarden.
    2. Annars, om och antalet intervall är minst 2, så letar vi efter det minsta heltal för vilket chiffertexten uppfyller PKCS-standarden.
    3. Annars, om den innehåller exakt ett intervall (dvs. ), välj sedan heltal som uppfyller uttrycken och , tills chiffertexten uppfyller PKCS-standarden.
  3. Begränsa mängden lösningar . När den väl hittats beräknas en serie intervall för både alla och .
  4. Beräkna en lösning . Om innehåller bara ett intervall av formuläret , ställ in och returnera m som lösningen . Annars går vi till steg 2.

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.

Attackanalys

Uppskattning av sannolikheten för att ett meddelande överensstämmer med PKCS-standarden

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 intervaller

Lå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 attack

Meddelandet 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.

Tillgång till dekryptatorn

Tänk på tre situationer där en analytiker kan få tillgång till en enhet.

  1. Vanlig kryptering . Alice genererar ett meddelande, krypterar det med standarden PKCS#1 utan att tillämpa integritetskontroller och skickar det till Bob. Bob dekrypterar det och om formatet på det dekrypterade meddelandet inte uppfyller standarden, slänger han ett fel, annars agerar han enligt protokollet. Därmed kan analytikern agera som Alice och kontrollera meddelandena för överensstämmelse med standarden. Observera att analytikerns attack fungerar även om autentisering används i nästa steg, eftersom analytikern får den information som krävs innan användaren behöver autentiseras.
  2. Detaljerade felmeddelanden . Integritetskontroll är en viktig del av RSA-kryptering. Ett sätt att göra detta är att signera meddelandet med den privata nyckeln innan avsändaren krypterar det med den offentliga nyckeln. Då kommer angriparen inte att kunna skapa rätt meddelande av misstag. Attacken kan dock bli framgångsrik. I händelse av en misslyckad validering skickar mottagaren ett meddelande som anger var valideringen misslyckades. I synnerhet äventyrar det säkerheten genom att returnera olika felmeddelanden för ett meddelande som inte överensstämmer med standarden och för ett meddelande som har ett signaturverifieringsfel.
  3. Tidsattack . Vissa meddelandegenereringsalternativ inkluderar både kryptering och signatur. Tänk på sekvensen av åtgärder.
    1. Meddelandet är dekrypterat.
    2. Om den inte uppfyller standarden skickas ett felmeddelande.
    3. Annars är signaturen verifierad.
    4. Om signaturen är felaktig, så kastas ett fel, annars åtkomst.

Genom att mäta mottagarens svarstid är det således möjligt att avgöra om ett formatfel föreligger eller inte.

Litteratur

Länkar

  • RSA Data Security Inc. PKCS #1: RSA Encryption Standard. — Redwood City, CA, nov. 1993. Version 1.5 - ftp://ftp.rsa.com/pub/pkcs/ascii/pkcs-1.asc
  • Bleichenbacher's Attack // Authenticated Key Exchange (i TLS), Kenny Paterson, 2015, s.  32-41