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 chiffertekstI 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 chiffertekstEllers vælger kryptoanalytikeren adaptivt en chiffertekst, der afhænger af resultaterne af tidligere dekrypteringer ( CCA2 ).
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.
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:
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.
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.
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 intervallerLad 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 angrebMeddelelsen 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.
Overvej 3 situationer, hvor en analytiker kan få adgang til en enhed.
Ved at måle modtagerens responstid er det således muligt at afgøre, om der er en formatfejl eller ej.