Valgt chiffertekstangreb

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. december 2018; verifikation kræver 1 redigering .

Valgt - chiffertekstangreb er et  kryptografisk angreb , hvor en kryptoanalytiker indsamler information om en chiffer ved at gætte chifferteksten og dekryptere den med en ukendt nøgle. Typisk kan en kryptoanalytiker bruge dekryptering en eller flere gange for at få den dekrypterede chiffertekst. Ved hjælp af de modtagne data kan han forsøge at gendanne den hemmelige nøgle til dekryptering. Der er cifre, for hvilke denne type angreb kan lykkes. Disse omfatter: ElGamal Scheme ; RSA , brugt i SSL-protokollen ; NTRU . Til beskyttelse anvendes RSA-OAEP- og Cramer-Showe- cifre .

Et chiffertekstangreb kan være adaptivt eller ikke-adaptivt.

Angreb baseret på utilpasset chiffertekst

I et ikke-adaptivt angreb bruger kryptanalytikeren ikke resultaterne af tidligere dekrypteringer, det vil sige, at chiffertekster er valgt på forhånd. Sådanne angreb kaldes frokostangreb ( frokosttid eller CCA1 ).

Angreb baseret på en adaptivt valgt chiffertekst

Ellers vælger kryptoanalytikeren adaptivt en chiffertekst, der afhænger af resultaterne af tidligere dekrypteringer ( CCA2 ).

Angreb på protokoller baseret på RSA PKCS#1-krypteringsstandarden

En kort beskrivelse af RSA PKCS#1-standarden

En af repræsentanterne for offentlige nøglekryptosystemer ( Public Key Cryptography Standards ), baseret på RSA-algoritmen. Lad k være byte-længden af ​​RSA-modulet, n. Der er mange variationer af PKCS#1-standarden. I dette eksempel betragtes RSAES-PKCS1-v1_5-versionen uden brug af en digital signatur, den anden byte i meddelelsesblokken er 00 eller 01. Standarden kan fungere med meddelelser med en maksimal længde svarende til k-11. PKCS#1 standardblokken, EB, består af k bytes. Dens form er EB = 00||02||PS||00||D. De første to bytes er konstante og lig med henholdsvis 00 og 02. PS er en polstringsstreng, et genereret pseudo-tilfældigt tal, der består af ikke-nul bytes. For at øge sikkerhedsniveauet anbefales det at generere en ny PS-blok for hver enkelt kryptering. Dens længde er henholdsvis lig k-3-|D|, hvor D er datablokken, |D| er dens byte længde. Længden af ​​PS-blokken skal være mindst 8 bytes. PS- og D-blokkene skal adskilles af en nulbyte. For nemheds skyld vil vi i fremtiden ikke specificere RSAES-PKCS1-v1_5-standarden, vi vil udpege den som PKCS#1. Lad n, e være den offentlige nøgle og p, q, d være den hemmelige nøgle. Ifølge R.S.A. EB-blokken konverteres til et heltal x og krypteres med RSA-algoritmen, . Modtageren kontrollerer længden af ​​chifferteksten, dekrypterer den , blokerer den og kontrollerer for de korrekte første to bytes, der adskiller null-byten og længden af ​​PS-blokken. Hvis kontrollen mislykkes, opstår der en fejl.

Beskrivelse af angrebet

Dette eksempel illustrerer muligheden for et vellykket angreb baseret på en adaptivt valgt chiffertekst. Lad kryptanalytikeren få adgang til en enhed, der for enhver valgt krypteringstekst angiver, om den tilsvarende almindelig tekst er i PKCS#1 standardformatet, og står over for opgaven med at dekryptere krypteringstekst C. På denne måde kan analytikeren vælge forskellige krypteringstekster og send dem til enheden. Efter at have modtaget svaret, komponerer den den næste chiffertekst baseret på resultaterne af de foregående. Baseret på de modtagne svar fra enheden og kendskab til det standard-kompatible åbne meddelelsesformat, kan kryptanalytikeren således beregne . Den afgørende faktor i angrebet er de første to bytes af den åbne besked, som er konstanter. I dette eksempel betragtes en algoritme, der minimerer antallet af chiffertekster, der kræves for at modtage en åben besked. Angrebet kan opdeles i 3 faser:

Matematisk beskrivelse af angrebet

Antag, at kryptoanalytikerens mål er at finde ud af det . Da k er bytelængden af ​​n, så . Analytikeren vælger tallet s, beregner det og sender det til enheden. Hvis enheden modtager en besked, ved vi med sikkerhed, at de første to bytes er 00 og 02. Lad os for nemheds skyld angive . Antag, at s er passende, så er estimatet sandt . Ved at indsamle denne type information kan vi finde m. Som regel vil chiffertekster være nok, men dette tal kan svinge meget. Lad os skrive angrebet trin for trin.

  1. Finde . Givet et heltal c, vælger vi forskellige tilfældige heltal , så kontrollerer vi med enheden, om udtrykket opfylder PKCS-standarden. For det første tal, der er fundet på denne måde, finder vi , , .
  2. At finde de rigtige beskeder
    1. Søgning starter. Hvis i=1, så leder vi efter det mindste positive tal , for hvilket chifferteksten opfylder PKCS-standarden.
    2. Ellers, hvis og antallet af intervaller er mindst 2, så leder vi efter det mindste heltal , for hvilket chifferteksten opfylder PKCS-standarden.
    3. Ellers, hvis det indeholder præcis ét interval (dvs. ), så vælg heltal , der opfylder udtrykkene og indtil chifferteksten opfylder PKCS-standarden.
  3. Indsnævring af sæt af løsninger . Når først fundet, beregnes en række intervaller for både alle og .
  4. Beregning af en løsning . Hvis kun indeholder ét interval af formen , så sæt og returner m som løsningen . Ellers går vi til trin 2.

Det første trin kan springes over, hvis C er en krypteret meddelelse, der er i overensstemmelse med PKCS-standarden. I det andet trin starter kampen med , da beskeden for mindre værdier ikke vil være i overensstemmelse med PKCS-standarden. Tallet bruges til at dividere intervallet ved hver iteration med cirka halvdelen.

Angrebsanalyse

Estimering af sandsynligheden for, at en meddelelse er i overensstemmelse med PKCS-standarden

Lad sandsynligheden for, at en tilfældigt valgt chiffertekst har et passende almindeligt tekstformat være , og  vær sandsynligheden for, at for ethvert tilfældigt valgt heltal er de første 2 bytes 00 og 02. Siden , følger det, at . RSA-modulet er normalt valgt som et multiplum af 8. Så normalt tæt på . Sandsynligheden for, at en PS-blok indeholder mindst 8 ikke-nul-bytes, der slutter med en nul-byte, er . Hvis vi antager, at n er mindst 512 bit (k > 64), har vi . Så .

Estimering af intervaller

Lad os bevise det . Da den overholder PKCS-standarden, følger det, at . Lad os antage det . Så der er et interval med . Da den overholder PKCS-standarden, er der en sådan r , som derfor, , , altså er indeholdt i et af intervallerne.

Estimering af kompleksiteten af ​​et angreb

Meddelelsen i trin 1 er valgt tilfældigt, hvilket betyder, at du skal sende til enheden i nærheden af ​​beskederne for at finde . Tilsvarende for trin 2.1 og 2.2 for . Lad være  antallet af intervaller i . Så for . Længden af ​​intervallet er afgrænset ovenfra af værdien . Ved at vide, at PKCS-formatet, får vi intervaller af formen . vil indeholde ca intervaller. Hvis , så er hvert af intervallerne, eller en del af det, inkluderet i, hvis det overlapper med et af intervallerne . Ingen af ​​intervallerne kan overlappe med to intervaller . Hvis intervallerne er tilfældigt fordelt, så vil sandsynligheden for, at man skærer med , være afgrænset ovenfor af . Således opnås ligningen for under den antagelse, at et interval skal indeholde værdien . I vores tilfælde forventer vi at komme med om og have . Derfor vil det tage en enkelt værdi med stor sandsynlighed. Derfor forventes trin 2.2 kun at forekomme én gang. Lad os analysere trin 2.3. Der er derfor . Interval længde . Derfor er det muligt at finde et par , der opfylder ulighederne i trin 2.3 for hver tredje værdi af . Sandsynligheden for, at , er ca. Derfor kan vi finde , som tilfredsstiller standarden cirka ved hjælp af chiffertekster. Da resten af ​​intervallet i halveres i hvert trin 2.3, forventer vi at finde ved hjælp af næsten chiffertekster. For og vil have brug for om chiffertekster for et vellykket angreb. Alle de ovenfor angivne sandsynligheder blev fundet under den antagelse, at alle er uafhængige. Lad og opfylde PKCS-standarden og have samme PS-bloklængde. Så for et eller andet heltal får vi og . Så opfylder de højst sandsynligt PKCS-standarden, da de også ofte opfylder standarden. Normalt vælges n som et multiplum af 8, da sandsynligheden er lille for det. Et modul med en bitlængde lig med , er praktisk for analytikeren, da der i dette tilfælde kræves ca. chiffertekster for et vellykket angreb.

Adgang til dekryptering

Overvej 3 situationer, hvor en analytiker kan få adgang til en enhed.

  1. Almindelig kryptering . Alice genererer en besked, krypterer den ved hjælp af PKCS#1-standarden uden at anvende integritetstjek og sender den til Bob. Bob dekrypterer det, og hvis formatet af den dekrypterede besked ikke opfylder standarden, så kaster han en fejl, ellers handler han i henhold til protokollen. Således kan analytikeren fungere som Alice og kontrollere meddelelserne for overholdelse af standarden. Bemærk, at analytikerens angreb virker, selvom der bruges autentificering i næste trin, da analytikeren får de nødvendige oplysninger, før brugeren skal godkendes.
  2. Detaljerede fejlmeddelelser . Integritetskontrol er en vigtig del af RSA-kryptering. En måde at gøre dette på er at signere beskeden med den private nøgle, før afsenderen krypterer den med den offentlige nøgle. Så vil angriberen ikke være i stand til at oprette den korrekte besked ved et uheld. Dog kan angrebet lykkes. I tilfælde af en mislykket validering sender modtageren en besked, der angiver, hvor valideringen mislykkedes. Det kompromitterer især sikkerheden ved at returnere forskellige fejlmeddelelser for en meddelelse, der ikke er i overensstemmelse med standarden, og for en meddelelse, der har en signaturbekræftelsesfejl.
  3. Tidsangreb . Nogle muligheder for meddelelsesgenerering inkluderer både kryptering og signatur. Overvej rækkefølgen af ​​handlinger.
    1. Beskeden er dekrypteret.
    2. Hvis det ikke opfylder standarden, sendes en fejlmeddelelse.
    3. Ellers er signaturen verificeret.
    4. Hvis signaturen er forkert, bliver der smidt en fejl, ellers adgang.

Ved at måle modtagerens responstid er det således muligt at afgøre, om der er en formatfejl eller ej.

Litteratur

Links

  • RSA Data Security Inc. PKCS #1: RSA-krypteringsstandard. — 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