Kryptografiske angreb: en forklaring på forvirrede sind

Når du hører ordet "kryptografi", husker nogle mennesker deres WiFi-adgangskode, den grønne hængelås ved siden af ​​adressen på deres yndlingswebsted, og hvor svært det er at komme ind i en andens e-mail. Andre husker en række sårbarheder i de senere år med sigende forkortelser (DROWN, FREAK, POODLE...), stilfulde logoer og en advarsel om hurtig opdatering af din browser.

Kryptografi dækker det hele, men essensen af i en anden. Pointen er, at der er en fin linje mellem simpelt og komplekst. Nogle ting er nemme at gøre, men svære at sætte sammen igen, som at knække et æg. Andre ting er nemme at gøre, men svære at komme tilbage, når der mangler en lille, vigtig, afgørende del: for eksempel at åbne en låst dør, når den "vigtige del" er nøglen. Kryptografi studerer disse situationer, og hvordan de kan bruges i praksis.

I de senere år er samlingen af ​​kryptografiske angreb blevet til en zoologisk have af prangende logoer, fyldt med formler fra videnskabelige artikler, og givet anledning til en generel dyster følelse af, at alt er i stykker. Men faktisk er mange af angrebene baseret på nogle få generelle principper, og endeløse sider med formler er ofte kogt ned til letforståelige ideer.

I denne serie af artikler vil vi se på de forskellige typer kryptografiske angreb med vægt på de grundlæggende principper. Generelt og ikke nøjagtigt i denne rækkefølge, men vi vil dække følgende:

  • Grundlæggende strategier: brute force, frekvensanalyse, interpolation, nedgradering og krydsprotokoller.
  • Mærkemærkede sårbarheder: FREAK, KRIMINALITET, PUDLE, DRUNNE, Logjam.
  • Avancerede strategier: orakelangreb (Vodenet-angreb, Kelsey-angreb); møde-i-midt-metoden, fødselsdagsangreb, statistisk skævhed (differentiel kryptoanalyse, integreret kryptoanalyse osv.).
  • Sidekanalangreb og deres nære slægtninge, fejlanalysemetoder.
  • Angreb på offentlig nøglekryptografi: terningerod, broadcast, relateret besked, Coppersmith-angreb, Pohlig-Hellman-algoritme, talsigte, Wiener-angreb, Bleichenbacher-angreb.

Denne særlige artikel dækker ovenstående materiale op til Kelseys angreb.

Grundlæggende strategier

De følgende angreb er enkle i den forstand, at de næsten kan forklares fuldstændigt uden mange tekniske detaljer. Lad os forklare hver type angreb i de enkleste vendinger uden at gå ind i komplekse eksempler eller avancerede brugssager.

Nogle af disse angreb er stort set blevet forældede og har ikke været brugt i mange år. Andre er oldtimere, som stadig jævnligt sniger sig ind på intetanende udviklere af kryptosystem i det 21. århundrede. Tiden med moderne kryptografi kan anses for at være begyndt med fremkomsten af ​​IBM DES, den første chiffer, der modstod alle angrebene på denne liste.

Simpel brute force

Kryptografiske angreb: en forklaring på forvirrede sindKrypteringsskemaet består af to dele: 1) krypteringsfunktionen, som tager en besked (klartekst) kombineret med en nøgle, og derefter opretter en krypteret besked - chiffertekst; 2) en dekrypteringsfunktion, der tager chifferteksten og nøglen og producerer klartekst. Både kryptering og dekryptering skal være lette at beregne med nøglen – og vanskelige at beregne uden den.

Lad os antage, at vi ser chifferteksten og forsøger at dekryptere den uden yderligere information (dette kaldes et kun chiffertekstangreb). Hvis vi på en eller anden måde på magisk vis finder den rigtige nøgle, kan vi nemt verificere, at den faktisk er korrekt, hvis resultatet er en rimelig besked.

Bemærk, at der er to implicitte antagelser her. For det første ved vi, hvordan man udfører dekryptering, det vil sige hvordan kryptosystemet fungerer. Dette er en standardantagelse, når man diskuterer kryptografi. At skjule chifferens implementeringsdetaljer fra angribere kan virke som en ekstra sikkerhedsforanstaltning, men når først angriberen finder ud af disse detaljer, er denne ekstra sikkerhed stille og roligt tabt. Sådan Kerchhoffs princip: Systemet, der falder i fjendens hænder, bør ikke forårsage besvær.

For det andet antager vi, at den korrekte nøgle er den eneste nøgle, der vil føre til en rimelig dekryptering. Dette er også en rimelig antagelse; den er tilfreds, hvis chifferteksten er meget længere end nøglen og er læsbar. Dette er normalt, hvad der sker i den virkelige verden, undtagen enorme upraktiske nøgler eller andre skænderier, der bedst lader sig ligge (hvis du ikke kan lide, at vi har sprunget forklaringen over, se venligst sætning 3.8 her).

I betragtning af ovenstående opstår der en strategi: tjek alle mulige nøgler. Dette kaldes brute force, og et sådant angreb vil med garanti virke mod alle praktiske cifre – i sidste ende. For eksempel er brute force nok til at hacke ciffer Cæsar, en gammel chiffer, hvor nøglen er ét bogstav i alfabetet, hvilket betyder lidt over 20 mulige nøgler.

Desværre for kryptoanalytikere er en forøgelse af nøglestørrelsen et godt forsvar mod brute force. Når nøglestørrelsen øges, øges antallet af mulige nøgler eksponentielt. Med moderne nøglestørrelser er simpel brute force fuldstændig upraktisk. For at forstå, hvad vi mener, lad os tage den hurtigste kendte supercomputer fra midten af ​​2019: Summit fra IBM, med en topydelse på omkring 1017 operationer i sekundet. I dag er den typiske nøglelængde 128 bit, hvilket betyder 2128 mulige kombinationer. For at søge gennem alle tasterne skal Summit-supercomputeren bruge tid, der er cirka 7800 gange universets alder.

Skal brute force betragtes som en historisk kuriosum? Slet ikke: det er en nødvendig ingrediens i kryptanalysekogebogen. Sjældent er cifre så svage, at de kun kan brydes ved et smart angreb, uden brug af magt i en eller anden grad. Mange vellykkede hacks bruger en algoritmisk metode til først at svække målchifferet og derefter udføre et brute force-angreb.

Frekvensanalyse

Kryptografiske angreb: en forklaring på forvirrede sindDe fleste tekster er ikke volapyk. For eksempel er der i engelske tekster mange bogstaver 'e' og artikler 'the'; i binære filer er der mange nul bytes som udfyldning mellem informationsstykker. Frekvensanalyse er ethvert angreb, der udnytter dette faktum.

Det kanoniske eksempel på en chiffer, der er sårbar over for dette angreb, er den simple substitutionsciffer. I denne chiffer er nøglen en tabel med alle bogstaverne erstattet. For eksempel erstattes 'g' med 'h', 'o' med j, så ordet 'go' bliver 'hj'. Denne chiffer er svær at brute force, fordi der er så mange mulige opslagstabeller. Hvis du er interesseret i matematikken, er den effektive nøglelængde omkring 88 bit: det er
Kryptografiske angreb: en forklaring på forvirrede sind. Men frekvensanalyse får som regel arbejdet gjort hurtigt.

Overvej følgende chiffertekst behandlet med en simpel substitutionskryptering:

XDYLY ALY UGLY XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO

Da Y forekommer hyppigt, også i slutningen af ​​mange ord, kan vi foreløbigt antage, at dette er bogstavet e:

XDeLe ALe UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN ALE FLeAUX GR WN OGQL ZDWBGEGZDO

Par XD gentaget i begyndelsen af ​​flere ord. Især kombinationen XDeLe tyder tydeligt på ordet these eller there, så vi fortsætter:

theLe ALE UGLe thWNKE WN heAJeN ANF eALth DGLAtWG END ALE FLeAUt GR WN OGQL ZDWBGEGZDO

Lad os videre antage det L svarer til r, A — a og så videre. Det vil sandsynligvis tage et par forsøg, men sammenlignet med et fuldt brute force-angreb, genopretter dette angreb den originale tekst på ingen tid:

der er flere ting i himlen og jorden horatio, end du drømmer om i din filosofi

For nogle er det en spændende hobby at løse sådanne "kryptogrammer".

Ideen om frekvensanalyse er mere fundamental, end den ser ud ved første øjekast. Og det gælder meget mere komplekse cifre. Gennem historien har forskellige chifferdesigns forsøgt at imødegå et sådant angreb ved hjælp af "polyalfabetisk substitution". Her, under krypteringsprocessen, ændres bogstaverstatningstabellen på komplekse, men forudsigelige måder, der afhænger af nøglen. Alle disse cifre blev anset for vanskelige at bryde på én gang; og alligevel besejrede beskeden frekvensanalyse dem alle til sidst.

Det mest ambitiøse polyalfabetiske ciffer i historien, og nok det mest berømte, var Enigma-cifferet fra Anden Verdenskrig. Det var relativt komplekst i forhold til dets forgængere, men efter meget hårdt arbejde knækkede britiske kryptoanalytikere det ved hjælp af frekvensanalyse. Selvfølgelig kunne de ikke udvikle et elegant angreb som det, der er vist ovenfor; de var nødt til at sammenligne kendte par af klartekst og chiffertekst (det såkaldte "klartekstangreb"), hvilket endda provokerede Enigma-brugere til at kryptere visse meddelelser og analysere resultatet ("det valgte klartekstangreb"). Men dette gjorde ikke skæbnen for de besejrede fjendtlige hære og sænkede ubåde lettere.

Efter denne triumf forsvandt frekvensanalyse fra kryptoanalysens historie. Chiffere i den moderne digitale tidsalder er designet til at arbejde med bits, ikke bogstaver. Endnu vigtigere er disse cifre designet med den mørke forståelse af, hvad der senere blev kendt som Schneiers lov: Enhver kan oprette en krypteringsalgoritme, som de ikke selv kan bryde. Det er ikke nok for krypteringssystemet syntes svært: for at bevise sit værd, skal det gennemgå en nådesløs sikkerhedsgennemgang af mange kryptoanalytikere, som vil gøre deres bedste for at knække chifferen.

Foreløbige beregninger

Kryptografiske angreb: en forklaring på forvirrede sindTag den hypotetiske by Precom Heights med 200 indbyggere. Hvert hjem i byen indeholder et gennemsnit på $000 værdigenstande, men ikke mere end $30. Sikkerhedsmarkedet i Precom er monopoliseret af ACME Industries, som producerer de legendariske Coyote™-klasse dørlåse. Ifølge ekspertanalyse kan en Coyote-klasselås kun brydes af en meget kompleks hypotetisk maskine, hvis oprettelse kræver omkring fem år og $000 i investering. Er byen sikker?

Mest sandsynligt nej. Til sidst vil en ret ambitiøs kriminel dukke op. Han vil ræsonnere sådan: "Ja, jeg vil pådrage mig store forudgående omkostninger. Fem års tålmodig ventetid og 50 $. Men når jeg er færdig, har jeg adgang til al denne bys rigdom. Hvis jeg spiller mine kort rigtigt, vil denne investering betale sig mange gange tilbage.”

Det samme gælder i kryptografi. Angreb mod en bestemt chiffer er genstand for en hensynsløs cost-benefit-analyse. Hvis forholdet er gunstigt, vil angrebet ikke forekomme. Men angreb, der virker mod mange potentielle ofre på én gang, giver næsten altid pote, i hvilket tilfælde bedste designpraksis er at antage, at de startede fra dag ét. Vi har i det væsentlige en kryptografisk version af Murphys lov: "Alt, der faktisk kan bryde systemet, vil bryde systemet."

Det enkleste eksempel på et kryptosystem, der er sårbart over for et forudberegningsangreb, er en konstant-nøglefri chiffer. Dette var tilfældet med Cæsars chiffer, som blot flytter hvert bogstav i alfabetet tre bogstaver fremad (tabellen er sløjfet, så det sidste bogstav i alfabetet er krypteret tredje). Her kommer igen Kerchhoffs princip i spil: når et system først er hacket, bliver det hacket for altid.

Konceptet er enkelt. Selv en nybegynder kryptosystemudvikler vil sandsynligvis genkende truslen og forberede sig derefter. Når man ser på udviklingen af ​​kryptografi, var sådanne angreb upassende for de fleste ciphers, fra de første forbedrede versioner af Cæsar cipher indtil tilbagegangen af ​​polyalfabetiske ciphers. Sådanne angreb vendte først tilbage med fremkomsten af ​​den moderne æra af kryptografi.

Dette afkast skyldes to faktorer. For det første dukkede der endelig tilstrækkeligt komplekse kryptosystemer op, hvor muligheden for udnyttelse efter hacking ikke var indlysende. For det andet blev kryptografi så udbredt, at millioner af lægfolk hver dag tog beslutninger om, hvor og hvilke dele af kryptografi, der skulle genbruges. Det tog noget tid, før eksperter indså risiciene og slog alarm.

Husk precomputation-angrebet: i slutningen af ​​artiklen vil vi se på to virkelige kryptografiske eksempler, hvor det spillede en vigtig rolle.

Interpolation

Her er den berømte detektiv Sherlock Holmes, der udfører et interpolationsangreb på den ulykkelige Dr. Watson:

Jeg gættede med det samme, at du var kommet fra Afghanistan... Min tankegang var som følger: “Denne mand er læge af type, men han har en militær pejling. Altså en militærlæge. Han er lige ankommet fra troperne - hans ansigt er mørkt, men det er ikke den naturlige nuance af hans hud, da hans håndled er meget hvidere. Ansigtet er udslidt - åbenbart har han lidt meget og lidt af sygdom. Han blev såret i venstre hånd – han holder den ubevægelig og lidt unaturligt. Hvor i troperne kunne en engelsk militærlæge udholde strabadser og blive såret? Selvfølgelig i Afghanistan." Hele tankegangen tog ikke engang et sekund. Så jeg sagde, at du kom fra Afghanistan, og du blev overrasket.

Holmes kunne udtrække meget lidt information fra hvert enkelt bevis. Han kunne kun nå sin konklusion ved at overveje dem alle sammen. Et interpolationsangreb fungerer på samme måde ved at undersøge kendte klartekst- og chiffertekstpar, der er resultatet af den samme nøgle. Fra hvert par uddrages individuelle observationer, der gør det muligt at drage en generel konklusion om nøglen. Alle disse konklusioner er vage og virker ubrugelige, indtil de pludselig når en kritisk masse og fører til den eneste mulige konklusion: uanset hvor utroligt det er, må det være sandt. Herefter afsløres enten nøglen, eller også bliver dekrypteringsprocessen så raffineret, at den kan replikeres.

Lad os illustrere med et simpelt eksempel, hvordan interpolation fungerer. Lad os sige, at vi vil læse vores fjendes personlige dagbog, Bob. Han krypterer hvert tal i sin dagbog ved hjælp af et simpelt kryptosystem, han lærte om fra en annonce i magasinet "A Mock of Cryptography." Systemet fungerer således: Bob vælger to tal, som han kan lide: Kryptografiske angreb: en forklaring på forvirrede sind и Kryptografiske angreb: en forklaring på forvirrede sind. Fra nu af, for at kryptere et hvilket som helst nummer Kryptografiske angreb: en forklaring på forvirrede sind, beregner den Kryptografiske angreb: en forklaring på forvirrede sind. For eksempel hvis Bob valgte Kryptografiske angreb: en forklaring på forvirrede sind и Kryptografiske angreb: en forklaring på forvirrede sind, derefter nummeret Kryptografiske angreb: en forklaring på forvirrede sind vil blive krypteret som Kryptografiske angreb: en forklaring på forvirrede sind.

Lad os sige, at vi den 28. december bemærkede, at Bob kradsede noget i sin dagbog. Når han er færdig, samler vi den stille og roligt op og ser det sidste indlæg:

Dato: 235/520

Kære dagbog,

I dag var en god dag. igennem 64 i dag har jeg en date med Alisa, som bor i en lejlighed 843. Det tror jeg virkelig, hun kan være 26!

Da vi er meget seriøse med at følge Bob på hans date (vi er begge 15 i dette scenarie), er det vigtigt at kende datoen såvel som Alices adresse. Heldigvis bemærker vi, at Bobs kryptosystem er sårbart over for et interpolationsangreb. Det ved vi måske ikke Kryptografiske angreb: en forklaring på forvirrede sind и Kryptografiske angreb: en forklaring på forvirrede sind, men vi kender dagens dato, så vi har to almindelig tekst-cifertekst-par. Det ved vi nemlig Kryptografiske angreb: en forklaring på forvirrede sind krypteret ind Kryptografiske angreb: en forklaring på forvirrede sindOg Kryptografiske angreb: en forklaring på forvirrede sind - ind Kryptografiske angreb: en forklaring på forvirrede sind. Dette er hvad vi vil skrive ned:

Kryptografiske angreb: en forklaring på forvirrede sind

Kryptografiske angreb: en forklaring på forvirrede sind

Da vi er 15 år, kender vi allerede til et system af to ligninger med to ubekendte, som i denne situation er nok til at finde Kryptografiske angreb: en forklaring på forvirrede sind и Kryptografiske angreb: en forklaring på forvirrede sind uden problemer. Hvert par i klartekst og chiffertekst sætter en begrænsning på Bobs nøgle, og de to begrænsninger tilsammen er tilstrækkelige til fuldstændigt at genskabe nøglen. I vores eksempel er svaret Kryptografiske angreb: en forklaring på forvirrede sind и Kryptografiske angreb: en forklaring på forvirrede sind (på Kryptografiske angreb: en forklaring på forvirrede sind Kryptografiske angreb: en forklaring på forvirrede sind, så 26 i dagbogen svarer til ordet 'den ene', altså "den samme" - ca. bane).

Interpolationsangreb er naturligvis ikke begrænset til sådanne simple eksempler. Ethvert kryptosystem, der reducerer til et velforstået matematisk objekt og en liste over parametre, risikerer et interpolationsangreb - jo mere forståeligt objektet er, jo højere er risikoen.

Nybegyndere klager ofte over, at kryptografi er "kunsten at designe ting så grimme som muligt." Interpolationsangreb er nok i høj grad skylden. Bob kan enten bruge et elegant matematisk design eller holde sin date med Alice privat – men ak, du kan normalt ikke have det begge veje. Dette vil blive helt klart, når vi til sidst kommer til emnet offentlig nøglekryptering.

Krydsprotokol/nedgradering

Kryptografiske angreb: en forklaring på forvirrede sindI Now You See Me (2013) forsøger en gruppe illusionister at snyde den korrupte forsikringsmagnat Arthur Tressler ud af hele sin formue. For at få adgang til Arthurs bankkonto skal illusionisterne enten oplyse hans brugernavn og adgangskode eller tvinge ham til at møde personligt op i banken og deltage i ordningen.

Begge muligheder er meget vanskelige; Fyrene er vant til at optræde på scenen og ikke deltage i efterretningsoperationer. Så de vælger den tredje mulige mulighed: deres medskyldige ringer til banken og udgiver sig for at være Arthur. Banken stiller flere spørgsmål for at bekræfte identiteten, såsom onklens navn og navnet på det første kæledyr; vores helte på forhånd de udtrækker nemt disse oplysninger fra Arthur ved hjælp af smart social engineering. Fra dette tidspunkt betyder fremragende adgangskodesikkerhed ikke længere noget.

(Ifølge en urban legende, som vi personligt har verificeret og verificeret, stødte kryptografen Eli Beaham engang på en banktæller, som insisterede på at stille et sikkerhedsspørgsmål. Da tælleren spurgte efter navnet på sin mormor, begyndte Beaham at diktere: "Capital X, lille y, tre...").

Det er det samme i kryptografi, hvis to kryptografiske protokoller bruges parallelt til at beskytte det samme aktiv, og den ene er meget svagere end den anden. Det resulterende system bliver sårbart over for et krydsprotokolangreb, hvor en svagere protokol angribes for at komme til præmien uden at røre den stærkere.

I nogle komplekse tilfælde er det ikke nok blot at kontakte serveren ved hjælp af en svagere protokol, men kræver ufrivillig deltagelse af en legitim klient. Dette kan organiseres ved hjælp af det såkaldte nedgraderingsangreb. For at forstå dette angreb, lad os antage, at vores illusionister har en sværere opgave end i filmen. Lad os antage, at en bankmedarbejder (kasserer) og Arthur stødte på nogle uforudsete omstændigheder, hvilket resulterede i følgende dialog:

Indbrudstyv: Hej? Dette er Arthur Tressler. Jeg vil gerne nulstille min adgangskode.

Kasserer: Store. Tag et kig på din personlige hemmelige kodebog, side 28, ord 3. Alle følgende beskeder vil blive krypteret med dette specifikke ord som nøglen. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV...

Indbrudstyv: Hej, vent, vent. Er dette virkelig nødvendigt? Kan vi ikke bare tale som normale mennesker?

Kasserer: Jeg anbefaler ikke at gøre dette.

Indbrudstyv: Jeg har bare... se, jeg havde en elendig dag, okay? Jeg er en VIP-klient, og jeg er ikke i humør til at grave igennem disse dumme kodebøger.

Kasserer: Bøde. Hvis du insisterer, hr. Tressler. Hvad vil du have?

Indbrudstyv: Jeg vil gerne donere alle mine penge til Arthur Tressler National Victims Fund.

(Pause).

Kasserer: Er det klart nu. Angiv venligst din pinkode ved store transaktioner.

Indbrudstyv: Min hvad?

Kasserer: På din personlige anmodning kræver transaktioner af denne størrelse en PIN-kode til store transaktioner. Denne kode blev givet til dig, da du åbnede din konto.

Indbrudstyv:... Jeg tabte det. Er dette virkelig nødvendigt? Kan du ikke bare godkende handlen?

Kasserer: Ingen. Jeg er ked af det, hr. Tressler. Igen, dette er den sikkerhedsforanstaltning, du bad om. Hvis du ønsker det, kan vi sende en ny pinkode til din postkasse.

Vores helte udsætter operationen. De aflurer flere af Tresslers store transaktioner i håb om at høre pinkoden; men hver gang bliver samtalen til kodet volapyk, før der bliver sagt noget interessant. Endelig, en skønne dag, bliver planen sat i værk. De venter tålmodigt på det øjeblik, hvor Tressler skal foretage en stor transaktion over telefonen, han kommer på linjen, og så...

Tressler: Hej. Jeg vil gerne gennemføre en fjerntransaktion, tak.

Kasserer: Store. Tag et kig på din personlige hemmelige kodebog, side...

(Indbrudstyven trykker på knappen; kassererens stemme bliver til uforståelig støj).

Kasserer: - #@$#@$#*@$$@#* vil blive krypteret med dette ord som nøglen. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Undskyld, jeg forstod det ikke helt. En gang til? På hvilken side? Hvilket ord?

Kasserer: Dette er siden @#$@#*$)#*#@()#@$(#@*$(#@*.

Tressler: Hvad?

Kasserer: Ord nummer tyve @$#@$#%#$.

Tressler: Helt seriøst! Nu er det nok! Du og din sikkerhedsprotokol er en slags cirkus. Jeg ved, at du bare kan tale med mig normalt.

Kasserer: Jeg anbefaler ikke…

Tressler: Og jeg råder dig ikke til at spilde min tid. Jeg ønsker ikke at høre mere om dette, før du har løst dine telefonlinjeproblemer. Kan vi afslutte denne aftale eller ej?

Kasserer:… Ja. Bøde. Hvad vil du have?

Tressler: Jeg vil gerne overføre $20 til Lord Business Investments, kontonummer...

Kasserer: Et minut tak. Det er en stor ting. Angiv venligst din pinkode ved store transaktioner.

Tressler: Hvad? Åh, præcis. 1234.

Her er et nedadgående angreb. Den svagere protokol "bare tal direkte" blev forestillet som valgmulighed i nødstilfælde. Og alligevel er vi her.

Du kan undre dig over, hvem der ved deres rette sind ville designe et rigtigt "safe indtil spurgt om andet"-system som det, der er beskrevet ovenfor. Men ligesom en fiktiv bank tager risici for at fastholde kunder, der ikke kan lide kryptografi, drager systemer generelt ofte mod krav, der er ligeglade eller ligefrem fjendtlige over for sikkerhed.

Det er præcis, hvad der skete med SSLv2-protokollen i 1995. Den amerikanske regering er længe begyndt at se kryptografi som et våben, der bedst holdes væk fra udenlandske og indenlandske fjender. Kodestykker blev individuelt godkendt til eksport fra USA, ofte med den betingelse, at algoritmen var bevidst svækket. Netscape, udvikleren af ​​den mest populære browser, Netscape Navigator, fik kun tilladelse til SSLv2 med den iboende sårbare 512-bit RSA-nøgle (og 40-bit til RC4).

Ved udgangen af ​​årtusindet var reglerne lempet, og adgang til moderne kryptering blev bredt tilgængelig. Imidlertid har klienter og servere understøttet svækket "eksport"-kryptografi i årevis på grund af den samme inerti, som opretholder understøttelse af ethvert ældre system. Klienter troede, at de kunne støde på en server, der ikke understøttede andet. Serverne gjorde det samme. Selvfølgelig dikterer SSL-protokollen, at klienter og servere aldrig bør bruge en svag protokol, når en bedre er tilgængelig. Men den samme præmis gjaldt for Tressler og hans bank.

Denne teori fandt vej til to højprofilerede angreb, der rystede sikkerheden i SSL-protokollen i 2015, begge opdaget af Microsoft-forskere og INRIA. Først blev detaljer om FREAK-angrebet afsløret i februar, efterfulgt tre måneder senere af et andet lignende angreb kaldet Logjam, som vi vil diskutere mere detaljeret, når vi går videre til angreb på offentlig nøglekryptografi.

Kryptografiske angreb: en forklaring på forvirrede sindSårbarhed FREAK (også kendt som "Smack TLS") kom frem, da forskere analyserede TLS klient/server implementeringer og opdagede en mærkelig fejl. I disse implementeringer, hvis klienten ikke engang beder om at bruge svag eksportkryptografi, men serveren stadig reagerer med sådanne nøgler, siger klienten "Nåååååååååååååååååååå vis" og skifter til en svag krypteringspakke.

På det tidspunkt blev eksportkryptografi i vid udstrækning betragtet som forældet og off-limits, så angrebet kom som et komplet chok og påvirkede mange vigtige domæner, herunder Det Hvide Hus, IRS og NSA-websteder. Endnu værre viser det sig, at mange sårbare servere optimerede ydeevnen ved at genbruge de samme nøgler i stedet for at generere nye for hver session. Dette gjorde det muligt, efter at have nedgraderet protokollen, at udføre et pre-computation-angreb: at knække én nøgle forblev relativt dyrt ($100 og 12 timer på udgivelsestidspunktet), men de praktiske omkostninger ved at angribe forbindelsen blev væsentligt reduceret. Det er nok at vælge servernøglen én gang og knække krypteringen for alle efterfølgende forbindelser fra det øjeblik af.

Og før vi går videre, er der et avanceret angreb, der skal nævnes...

Oracle angreb

Kryptografiske angreb: en forklaring på forvirrede sindMoxie Marlinspike bedst kendt som faderen til den cross-platform kryptobesked-app Signal; men vi personligt kan lide en af ​​hans mindre kendte innovationer - princippet om kryptografisk undergang (Kryptografisk Doom Princip). For at parafrasere lidt kan vi sige dette: "Hvis protokollen fungerer nogen udfører en kryptografisk operation på en besked fra en potentielt ondsindet kilde og opfører sig forskelligt afhængigt af resultatet, er det dømt." Eller i en skarpere form: "Tag ikke information fra fjenden til behandling, og hvis du er nødt til det, så vis i det mindste ikke resultatet."

Lad os tilsidesætte bufferoverløb, kommandoindsprøjtninger og lignende; de er uden for rammerne af denne diskussion. Overtrædelse af "doom-princippet" fører til alvorlige kryptografiske hacks på grund af, at protokollen opfører sig nøjagtigt som forventet.

Lad os som et eksempel tage et fiktivt design med en sårbar substitutions-chiffer og derefter demonstrere et muligt angreb. Selvom vi allerede har set et angreb på en substitutionsciffer ved hjælp af frekvensanalyse, er det ikke bare "en anden måde at bryde den samme ciffer." Tværtimod er orakelangreb en meget mere moderne opfindelse, anvendelig til mange situationer, hvor frekvensanalyse fejler, og det vil vi se en demonstration af i næste afsnit. Her er den simple chiffer kun valgt for at gøre eksemplet tydeligere.

Så Alice og Bob kommunikerer ved hjælp af en simpel substitutions-chiffer ved hjælp af en nøgle, som kun de kender. De er meget strenge med hensyn til længden af ​​beskeder: de er nøjagtigt 20 tegn lange. Så de blev enige om, at hvis nogen ville sende en kortere besked, skulle de tilføje noget dummy-tekst til slutningen af ​​beskeden for at få den til præcis 20 tegn. Efter nogen diskussion besluttede de, at de kun ville acceptere følgende dummy-tekster: a, bb, ccc, dddd osv. Således kendes en dummy-tekst af enhver påkrævet længde.

Når Alice eller Bob modtager en besked, tjekker de først, at beskeden har den korrekte længde (20 tegn), og at suffikset er den korrekte dummy-tekst. Hvis dette ikke er tilfældet, så svarer de med en passende fejlmeddelelse. Hvis tekstlængden og dummy-teksten er ok, læser modtageren selv beskeden og sender et krypteret svar.

Under angrebet efterligner angriberen sig som Bob og sender falske beskeder til Alice. Beskederne er komplet nonsens – angriberen har ikke nøglen, og kan derfor ikke forfalske en meningsfuld besked. Men da protokollen overtræder undergangsprincippet, kan en angriber stadig fange Alice til at afsløre nøgleinformationen, som vist nedenfor.

Indbrudstyv: PREWF ZHJKL MMMN. LA

Alice: Ugyldig dummy-tekst.

Indbrudstyv: PREWF ZHJKL MMMN. LB

Alice: Ugyldig dummy-tekst.

Indbrudstyv: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Tyven aner ikke, hvad Alice lige har sagt, men bemærker, at symbolet C skal svare a, da Alice accepterede dummy-teksten.

Indbrudstyv: REWF ZHJKL MMMN. LAA

Alice: Ugyldig dummy-tekst.

Indbrudstyv: REWF ZHJKL MMMN. LBB

Alice: Ugyldig dummy-tekst.

Efter en del forsøg...

Indbrudstyv: REWF ZHJKL MMMN. LGG

Alice: Ugyldig dummy-tekst.

Indbrudstyv: REWF ZHJKL MMMN. LHH

Alice: TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.

Igen aner angriberen ikke, hvad Alice lige har sagt, men bemærker, at H skal matche b, da Alice accepterede dummy-teksten.

Og så videre, indtil angriberen kender betydningen af ​​hver karakter.

Ved første øjekast ligner metoden et valgt klartekstangreb. Til sidst vælger angriberen chifferteksterne, og serveren behandler dem lydigt. Den største forskel, der gør disse angreb levedygtige i den virkelige verden, er, at angriberen ikke har brug for adgang til selve transskriptionen – et serversvar, selv et så uskadeligt som "Ugyldig dummy-tekst", er tilstrækkeligt.

Selvom dette særlige angreb er lærerigt, skal du ikke blive for hængt op i detaljerne i "dummy text"-skemaet, det specifikke kryptosystem, der bruges, eller den nøjagtige rækkefølge af meddelelser sendt af angriberen. Grundtanken er, hvordan Alice reagerer forskelligt baseret på klartekstens egenskaber, og gør det uden at verificere, at den tilsvarende chiffertekst faktisk kom fra en betroet part. Alice tillader således angriberen at presse hemmelige oplysninger ud af hendes svar.

Der er meget, der kan ændres i dette scenarie. De symboler, som Alice reagerer på, eller selve forskellen i hendes adfærd, eller endda det anvendte kryptosystem. Men princippet vil forblive det samme, og angrebet som helhed vil forblive levedygtigt i en eller anden form. Den grundlæggende implementering af dette angreb hjalp med at afdække adskillige sikkerhedsfejl, som vi vil se på om kort tid; men først er der nogle teoretiske lektioner at lære. Hvordan bruger man dette fiktive "Alice-script" i et angreb, der kan fungere på en ægte moderne chiffer? Er dette overhovedet muligt, selv i teorien?

I 1998 besvarede den schweiziske kryptograf Daniel Bleichenbacher dette spørgsmål bekræftende. Han demonstrerede et orakelangreb på det udbredte offentlige nøglekryptosystem RSA ved hjælp af et specifikt meddelelsesskema. I nogle RSA-implementeringer reagerer serveren med forskellige fejlmeddelelser afhængigt af, om klarteksten matcher skemaet eller ej; dette var nok til at udføre angrebet.

Fire år senere, i 2002, demonstrerede den franske kryptograf Serge Vaudenay et orakelangreb, der var næsten identisk med det, der er beskrevet i Alice-scenariet ovenfor - bortset fra at han i stedet for en fiktiv cipher brød en hel respektabel klasse af moderne cifre, som folk faktisk bruges. Vaudenays angreb retter sig især mod chiffer med fast inputstørrelse ("blokcifre"), når de bruges i såkaldt "CBC-krypteringstilstand" og med et bestemt populært udfyldningsskema, som stort set svarer til det i Alice-scenariet.

Også i 2002, den amerikanske kryptograf John Kelsey - medforfatter To fisk — foreslået forskellige orakelangreb på systemer, der komprimerer meddelelser og derefter krypterer dem. Mest bemærkelsesværdig blandt disse var et angreb, der udnyttede det faktum, at det ofte er muligt at udlede den oprindelige længde af klarteksten ud fra længden af ​​chifferteksten. I teorien giver dette mulighed for et orakelangreb, der genskaber dele af den originale klartekst.

Nedenfor giver vi en mere detaljeret beskrivelse af Vaudenay- og Kelsey-angrebene (vi vil give en mere detaljeret beskrivelse af Bleichenbacher-angrebet, når vi går videre til angreb på offentlig nøglekryptografi). Trods vores bedste indsats bliver teksten noget teknisk; så hvis ovenstående er nok for dig, så spring de næste to afsnit over.

Vodenes angreb

For at forstå Vaudenay-angrebet skal vi først tale lidt mere om blokchiffere og krypteringstilstande. En "blokchiffer" er som nævnt en kode, der tager en nøgle og et input af en bestemt fast længde ("bloklængde") og producerer en krypteret blok af samme længde. Blokcifre er meget udbredt og betragtes som relativt sikre. Den nu pensionerede DES, der betragtes som den første moderne chiffer, var en blokcifre. Som nævnt ovenfor gælder det samme for AES, som er meget udbredt i dag.

Desværre har blokcifre en iøjnefaldende svaghed. Den typiske blokstørrelse er 128 bit eller 16 tegn. Det er klart, at moderne kryptografi kræver arbejde med større inputdata, og det er her krypteringstilstande kommer i spil. Krypteringstilstand er i bund og grund et hack: det er en måde at på en eller anden måde anvende en blokchiffer, der kun accepterer input af en vis størrelse til input af en vilkårlig længde.

Vodenes angreb er fokuseret på den populære CBC (Cipher Block Chaining) funktionsmåde. Angrebet behandler den underliggende blokchiffer som en magisk, uindtagelig sort boks og omgår fuldstændig dens sikkerhed.

Her er et diagram, der viser, hvordan CBC-tilstand fungerer:

Kryptografiske angreb: en forklaring på forvirrede sind

Kryptografiske angreb: en forklaring på forvirrede sind

Det cirklede plus angiver XOR-operationen (eksklusiv ELLER). For eksempel modtages den anden blok med chiffertekst:

  1. Ved at udføre en XOR-operation på den anden almindelig tekstblok med den første chiffertekstblok.
  2. Kryptering af den resulterende blok med en blokcifre ved hjælp af en nøgle.

Da CBC gør så stor brug af den binære XOR-operation, lad os tage et øjeblik på at huske nogle af dens egenskaber:

  • Idempotens: Kryptografiske angreb: en forklaring på forvirrede sind
  • Kommutativitet: Kryptografiske angreb: en forklaring på forvirrede sind
  • Associativitet: Kryptografiske angreb: en forklaring på forvirrede sind
  • Selvreversibilitet: Kryptografiske angreb: en forklaring på forvirrede sind
  • Bytestørrelse: byte n af Kryptografiske angreb: en forklaring på forvirrede sind = (byte n af Kryptografiske angreb: en forklaring på forvirrede sind) Kryptografiske angreb: en forklaring på forvirrede sind (byte n af Kryptografiske angreb: en forklaring på forvirrede sind)

Typisk indebærer disse egenskaber, at hvis vi har en ligning, der involverer XOR-operationer og en ukendt, kan den løses. For eksempel hvis vi ved det Kryptografiske angreb: en forklaring på forvirrede sind med det ukendte Kryptografiske angreb: en forklaring på forvirrede sind og berømt Kryptografiske angreb: en forklaring på forvirrede sind и Kryptografiske angreb: en forklaring på forvirrede sind, så kan vi stole på de førnævnte egenskaber ovenfor til at løse ligningen for Kryptografiske angreb: en forklaring på forvirrede sind. Ved at anvende XOR på begge sider af ligningen med Kryptografiske angreb: en forklaring på forvirrede sind, vi får Kryptografiske angreb: en forklaring på forvirrede sind. Det hele bliver meget relevant om et øjeblik.

Der er to mindre forskelle og en stor forskel mellem vores Alice-scenarie og Vaudenays angreb. To mindre:

  • I manuskriptet forventede Alice, at klartekster sluttede med karaktererne a, bb, ccc og så videre. I Wodene-angrebet forventer offeret i stedet, at klarteksterne slutter N gange med N byte (det vil sige hexadecimal 01 eller 02 02, eller 03 03 03, og så videre). Dette er udelukkende en kosmetisk forskel.
  • I Alice-scenariet var det let at se, om Alice havde accepteret beskeden ved at svare "Forkert dummy-tekst." I Vodenes angreb kræves der flere analyser, og præcis implementering på ofrets side er vigtig; men lad os for korthedens skyld tage det som givet, at denne analyse stadig er mulig.

Hovedforskel:

  • Da vi ikke bruger det samme kryptosystem, vil forholdet mellem de angriberkontrollerede chiffertekstbytes og hemmelighederne (nøgle og almindelig tekst) naturligvis være anderledes. Derfor bliver angriberen nødt til at bruge en anden strategi, når han opretter chiffertekster og fortolker serversvar.

Denne store forskel er den sidste brik i puslespillet for at forstå Vaudenay-angrebet, så lad os tage et øjeblik på at tænke over, hvorfor og hvordan et orakelangreb på CBC kan monteres i første omgang.

Antag, at vi får en CBC-chiffertekst på 247 blokke, og vi ønsker at dekryptere den. Vi kan sende falske beskeder til serveren, ligesom vi kunne sende falske beskeder til Alice før. Serveren vil dekryptere meddelelserne for os, men vil ikke vise dekrypteringen - i stedet vil serveren igen, som med Alice, kun rapportere én bit information: om klarteksten har gyldig udfyldning eller ej.

Tænk på, at vi i Alices scenarie havde følgende forhold:

$$display$$text{SIMPLE_SUBSTITUTION}(tekst{ciphertext},tekst{key}) = tekst{plaintext}$$display$$

Lad os kalde dette "Alices ligning." Vi kontrollerede chifferteksten; serveren (Alice) lækkede vag information om den modtagne klartekst; og dette gjorde det muligt for os at udlede information om den sidste faktor - nøglen. Analogt, hvis vi kan finde en sådan forbindelse til CBC-scriptet, kan vi måske også udtrække nogle hemmelige oplysninger der.

Heldigvis er der virkelig relationer derude, som vi kan bruge. Overvej outputtet fra det endelige kald for at dekryptere en blokchiffer og angiv dette output som Kryptografiske angreb: en forklaring på forvirrede sind. Vi betegner også blokke af klartekst Kryptografiske angreb: en forklaring på forvirrede sind og chiffertekstblokke Kryptografiske angreb: en forklaring på forvirrede sind. Tag endnu et kig på CBC-diagrammet og læg mærke til, hvad der sker:

Kryptografiske angreb: en forklaring på forvirrede sind

Lad os kalde dette "CBC-ligningen."

I Alices scenarie, ved at overvåge chifferteksten og se den tilsvarende klartekst-lækage, var vi i stand til at starte et angreb, der genfandt det tredje led i ligningen - nøglen. I CBC-scenariet overvåger vi også chifferteksten og observerer informationslækager på den tilsvarende klartekst. Hvis analogien holder, kan vi få oplysninger om Kryptografiske angreb: en forklaring på forvirrede sind.

Lad os antage, at vi virkelig genoprettede Kryptografiske angreb: en forklaring på forvirrede sind, Hvad så? Nå, så kan vi udskrive hele den sidste blok af klartekst på én gang (Kryptografiske angreb: en forklaring på forvirrede sind), blot ved at indtaste Kryptografiske angreb: en forklaring på forvirrede sind (som vi har) og
modtaget Kryptografiske angreb: en forklaring på forvirrede sind ind i CBC-ligningen.

Nu hvor vi er optimistiske med hensyn til den overordnede angrebsplan, er det tid til at finde ud af detaljerne. Vær venligst opmærksom på præcis, hvordan almindelig tekst information lækkes på serveren. I Alices script opstod lækagen, fordi Alice kun ville svare med den korrekte besked, hvis $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ sluttede med linjen a (eller bb, og så videre, men chancerne for, at disse tilstande blev udløst ved en tilfældighed, var meget lille). I lighed med CBC accepterer serveren polstringen hvis og kun hvis Kryptografiske angreb: en forklaring på forvirrede sind ender på hexadecimal 01. Så lad os prøve det samme trick: at sende falske chiffertekster med vores egne falske værdier Kryptografiske angreb: en forklaring på forvirrede sindindtil serveren accepterer fyldet.

Når serveren accepterer en polstring for en af ​​vores falske beskeder, betyder det, at:

Kryptografiske angreb: en forklaring på forvirrede sind

Nu bruger vi byte-byte XOR egenskaben:

Kryptografiske angreb: en forklaring på forvirrede sind

Vi kender det første og tredje led. Og vi har allerede set, at dette giver os mulighed for at gendanne den resterende term - den sidste byte fra Kryptografiske angreb: en forklaring på forvirrede sind:

Kryptografiske angreb: en forklaring på forvirrede sind

Dette giver os også den sidste byte af den sidste klartekstblok via CBC-ligningen og byte-for-byte-egenskaben.

Vi kunne lade det ligge og være tilfredse med, at vi har udført et angreb på en teoretisk stærk chiffer. Men faktisk kan vi gøre meget mere: Vi kan faktisk gendanne al teksten. Dette kræver et trick, der ikke var i Alices originale manuskript og ikke er påkrævet til orakelangrebet, men det er stadig værd at lære.

For at forstå det, skal du først bemærke, at resultatet af udlæsning af den korrekte værdi af den sidste byte er Kryptografiske angreb: en forklaring på forvirrede sind vi har en ny evne. Nu, når vi forfalsker chiffertekster, kan vi manipulere den sidste byte af den tilsvarende klartekst. Igen er dette relateret til CBC-ligningen og byte-for-byte-egenskaben:

Kryptografiske angreb: en forklaring på forvirrede sind

Da vi nu kender det andet udtryk, kan vi bruge vores kontrol over det første til at kontrollere det tredje. Vi beregner blot:

Kryptografiske angreb: en forklaring på forvirrede sind

Vi kunne ikke gøre dette før, fordi vi ikke havde den sidste byte endnu Kryptografiske angreb: en forklaring på forvirrede sind.

Hvordan vil dette hjælpe os? Antag, at vi nu opretter alle chiffertekster således, at den sidste byte i de tilsvarende klartekster er lig med 02. Serveren accepterer nu kun udfyldning, hvis klarteksten slutter med 02 02. Da vi korrigerede den sidste byte, vil dette kun ske, hvis den næstsidste byte i klarteksten også er 02. Vi bliver ved med at sende falske chiffertekstblokke, og ændrer den næstsidste byte, indtil serveren accepterer udfyldningen for en af ​​dem. På dette tidspunkt får vi:

Kryptografiske angreb: en forklaring på forvirrede sind

Og vi gendanner den næstsidste byte Kryptografiske angreb: en forklaring på forvirrede sind ligesom den sidste blev restaureret. Vi fortsætter i samme ånd: vi retter de sidste to bytes af klarteksten til 03 03, gentager vi dette angreb for den tredje byte fra slutningen og så videre, og i sidste ende gendannes fuldstændigt Kryptografiske angreb: en forklaring på forvirrede sind.

Hvad med resten af ​​teksten? Bemærk venligst, at værdien Kryptografiske angreb: en forklaring på forvirrede sind er faktisk $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Vi kan sætte en hvilken som helst anden blok i stedet for Kryptografiske angreb: en forklaring på forvirrede sind, og angrebet vil stadig være vellykket. Faktisk kan vi bede serveren om at lave $inline$text{BLOCK_DECRYPT}$inline$ for alle data. På dette tidspunkt er spillet slut - vi kan dekryptere enhver krypteringstekst (tag et nyt kig på CBC-dekrypteringsdiagrammet for at se dette; og bemærk, at IV'en er offentlig).

Denne særlige metode spiller en afgørende rolle i det orakelangreb, som vi vil støde på senere.

Kelseys angreb

Vores sympatiske John Kelsey fremlagde principperne bag mange mulige angreb, ikke kun detaljerne i et specifikt angreb på en specifik chiffer. Hans Årets 2002 artikel er en undersøgelse af mulige angreb på krypterede komprimerede data. Troede du, at informationen om, at dataene blev komprimeret før kryptering, ikke var nok til at udføre et angreb? Det viser sig, at det er nok.

Dette overraskende resultat skyldes to principper. For det første er der en stærk sammenhæng mellem længden af ​​klarteksten og længden af ​​chifferteksten; for mange cifre nøjagtig lighed. For det andet, når der udføres komprimering, er der også en stærk sammenhæng mellem længden af ​​den komprimerede meddelelse og graden af ​​"støj" af klarteksten, det vil sige andelen af ​​ikke-gentagende tegn (det tekniske udtryk er "høj entropi" ).

Overvej to klartekster for at se princippet i aktion:

Klartekst 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Klartekst 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Lad os antage, at begge klartekster er komprimeret og derefter krypteret. Du får to resulterende chiffertekster og skal gætte hvilken chiffertekst der matcher hvilken almindelig tekst:

Chiffertekst 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Chiffertekst 2: DWKJZXYU

Svaret er klart. Blandt klarteksterne kunne kun klartekst 1 komprimeres til den ringe længde af den anden chiffertekst. Vi fandt ud af dette uden at vide noget om kompressionsalgoritmen, krypteringsnøglen eller endda selve chifferen. Sammenlignet med hierarkiet af mulige kryptografiske angreb, er dette noget skørt.

Kelsey påpeger endvidere, at dette princip under visse usædvanlige omstændigheder også kan bruges til at udføre et orakelangreb. Det beskriver især, hvordan en angriber kan gendanne den hemmelige klartekst, hvis han kan tvinge serveren til at kryptere formulardataene (klarteksten efterfulgt af Kryptografiske angreb: en forklaring på forvirrede sindmens han har kontrol Kryptografiske angreb: en forklaring på forvirrede sind og kan på en eller anden måde kontrollere længden af ​​det krypterede resultat.

Igen, ligesom andre orakelangreb, har vi forholdet:

Kryptografiske angreb: en forklaring på forvirrede sind

Igen kontrollerer vi et udtryk (Kryptografiske angreb: en forklaring på forvirrede sind), ser vi en lille læk af information om et andet medlem (chiffertekst) og forsøger at gendanne det sidste (klartekst). På trods af analogien er dette en noget usædvanlig situation sammenlignet med andre orakelangreb, vi har set.

For at illustrere, hvordan et sådant angreb kan fungere, lad os bruge et fiktivt komprimeringsskema, vi lige har fundet på: TOYZIP. Den leder efter tekstlinjer, der tidligere har optrådt i teksten, og erstatter dem med tre pladsholderbytes, der angiver, hvor man kan finde en tidligere forekomst af linjen, og hvor mange gange den vises der. For eksempel linjen helloworldhello kan komprimeres til helloworld[00][00][05] 13 bytes lang sammenlignet med de oprindelige 15 bytes.

Antag, at en angriber forsøger at gendanne en formulars almindelige tekst password=..., hvor selve adgangskoden er ukendt. Ifølge Kelseys angrebsmodel kunne en angriber bede serveren om at komprimere og derefter kryptere formularmeddelelser (klartekst efterfulgt af Kryptografiske angreb: en forklaring på forvirrede sind), hvor Kryptografiske angreb: en forklaring på forvirrede sind - fri tekst. Når serveren er færdig med at arbejde, rapporterer den længden af ​​resultatet. Angrebet går sådan her:

Indbrudstyv: Komprimer og krypter venligst almindelig tekst uden udfyldning.

Server: Resultatlængde 14.

Indbrudstyv: Komprimer og krypter den almindelige tekst, som er tilføjet password=a.

Server: Resultatlængde 18.

Knækkeren noterer: [original 14] + [tre bytes, der erstattede password=] + a

Indbrudstyv: Komprimer og krypter den almindelige tekst, som er tilføjet password=b.

Server: Resultatlængde 18.

Indbrudstyv: Komprimer og krypter den almindelige tekst, som er tilføjet password=с.

Server: Resultatlængde 17.

Knækkeren noterer: [original 14] + [tre bytes, der erstattede password=c]. Dette forudsætter, at den originale klartekst indeholder strengen password=c. Det vil sige, at adgangskoden begynder med et bogstav c

Indbrudstyv: Komprimer og krypter den almindelige tekst, som er tilføjet password=сa.

Server: Resultatlængde 18.

Knækkeren noterer: [original 14] + [tre bytes, der erstattede password=с] + a

Indbrudstyv: Komprimer og krypter den almindelige tekst, som er tilføjet password=сb.

Server: Resultatlængde 18.

(… Noget tid senere…)

Indbrudstyv: Komprimer og krypter den almindelige tekst, som er tilføjet password=со.

Server: Resultatlængde 17.

Knækkeren noterer: [original 14] + [tre bytes, der erstattede password=co]. Ved hjælp af samme logik konkluderer angriberen, at adgangskoden begynder med bogstaverne co

Og så videre, indtil hele adgangskoden er gendannet.

Læseren ville blive tilgivet for at tro, at dette er en rent akademisk øvelse, og at et sådant angrebsscenarie aldrig ville opstå i den virkelige verden. Ak, som vi snart vil se, er det bedre ikke at give op på kryptografi.

Brandsårbarheder: KRIMINALITET, PUDLE, DRUNNE

Endelig, efter at have studeret teorien i detaljer, kan vi se, hvordan disse teknikker anvendes i virkelige kryptografiske angreb.

FORBRYDELSE

Kryptografiske angreb: en forklaring på forvirrede sindHvis angrebet er rettet mod offerets browser og netværk, vil nogle være nemmere, og nogle vil være sværere. For eksempel er det nemt at se ofrets trafik: bare sidde med ham på den samme cafe med WiFi. Af denne grund rådes potentielle ofre (dvs. alle) generelt til at bruge en krypteret forbindelse. Det vil være sværere, men stadig muligt, at lave HTTP-anmodninger på vegne af offeret til et tredjepartswebsted (f.eks. Google). Angriberen skal lokke offeret til en ondsindet webside med et script, der laver anmodningen. Webbrowseren vil automatisk levere den tilsvarende sessionscookie.

Det virker fantastisk. Hvis Bob gik til evil.com, kunne scriptet på denne side bare bede Google om at e-maile Bobs adgangskode til [email protected]? Nå, i teorien ja, men i virkeligheden nej. Dette scenarie kaldes et forfalskningsangreb på tværs af websteder (Forfalskning af anmodninger på tværs af websteder, CSRF), og det var populært omkring midten af ​​90'erne. I dag hvis evil.com prøver dette trick, vil Google (eller et hvilket som helst websted med respekt for sig selv) normalt svare med: "Fantastisk, men dit CSRF-token for denne transaktion vil være... um... три триллиона и семь. Gentag venligst dette nummer." Moderne browsere har noget, der kaldes en "same-origin policy", hvorved scripts på websted A ikke har adgang til information sendt af websted B. Så scriptet på webstedet B. evil.com kan sende anmodninger til google.com, men kan ikke læse svarene eller faktisk gennemføre transaktionen.

Vi skal understrege, at medmindre Bob bruger en krypteret forbindelse, er alle disse beskyttelser meningsløse. En angriber kan blot læse Bobs trafik og gendanne Googles sessionscookie. Med denne cookie vil han blot åbne en ny Google-fane uden at forlade sin egen browser og efterligne Bob uden at støde på irriterende politikker med samme oprindelse. Men desværre for en indbrudstyv bliver dette mindre og mindre almindeligt. Internettet som helhed har længe erklæret krig mod ukrypterede forbindelser, og Bobs udgående trafik er sandsynligvis krypteret, uanset om han kan lide det eller ej. Hertil kommer, fra begyndelsen af ​​implementeringen af ​​protokollen, trafik var også krympede før kryptering; dette var almindelig praksis for at reducere latens.

Det er her, det kommer i spil FORBRYDELSE (Compression Ratio Infoleak Made Easy, enkel lækage gennem kompressionsforholdet). Sårbarheden blev afsløret i september 2012 af sikkerhedsforskerne Juliano Rizzo og Thai Duong. Vi har allerede undersøgt hele det teoretiske grundlag, som giver os mulighed for at forstå, hvad de gjorde og hvordan. En angriber kan tvinge Bobs browser til at sende anmodninger til Google og derefter lytte til svarene på det lokale netværk i en komprimeret, krypteret form. Derfor har vi:

Kryptografiske angreb: en forklaring på forvirrede sind

Her styrer angriberen anmodningen og har adgang til trafiksnifferen, inklusive pakkestørrelsen. Kelseys fiktive scenarie kom til live.

For at forstå teorien skabte forfatterne af CRIME en udnyttelse, der kan stjæle sessionscookies til en lang række websteder, herunder Gmail, Twitter, Dropbox og Github. Sårbarheden påvirkede de fleste moderne webbrowsere, hvilket resulterede i, at patches blev frigivet, der stille begravede komprimeringsfunktionen i SSL, så den slet ikke ville blive brugt. Den eneste, der blev beskyttet mod sårbarheden, var den ærværdige Internet Explorer, som aldrig brugte SSL-komprimering overhovedet.

POODLE

Kryptografiske angreb: en forklaring på forvirrede sindI oktober 2014 lavede Googles sikkerhedsteam bølger i sikkerhedsfællesskabet. De var i stand til at udnytte en sårbarhed i SSL-protokollen, som var blevet rettet for mere end ti år siden.

Det viser sig, at mens serverne kører den skinnende nye TLSv1.2, har mange efterladt understøttelse af den gamle SSLv3 til bagudkompatibilitet med Internet Explorer 6. Vi har allerede talt om nedgraderingsangreb, så du kan forestille dig, hvad der foregår. En velorkestreret sabotage af håndtryksprotokollen og serverne er klar til at vende tilbage til gode gamle SSLv3, hvilket i det væsentlige fortryder de sidste 15 års sikkerhedsforskning.

Til historisk sammenhæng, her er en kort oversigt over historien om SSL op til version 2 fra Matthew Green:

Transport Layer Security (TLS) er den vigtigste sikkerhedsprotokol på internettet. [..] næsten alle transaktioner, du foretager på internettet, afhænger af TLS. [..] Men TLS var ikke altid TLS. Protokollen begyndte sit liv i Netscape kommunikation kaldet "Secure Sockets Layer" eller SSL. Rygtet siger, at den første version af SSL var så forfærdelig, at udviklerne samlede alle udskrifterne af koden og begravede dem på en hemmelig losseplads i New Mexico. Som en konsekvens er den første offentligt tilgængelige version af SSL faktisk version SSL 2. Det er ret skræmmende, og [..] det var et produkt fra midten af ​​90'erne, som moderne kryptografer betragter som "mørke tidsaldre af kryptografi" Mange af de mest afskyelige kryptografiske angreb, vi kender til i dag, er endnu ikke blevet opdaget. Som et resultat blev udviklerne af SSLv2-protokollen i det væsentlige overladt til at fumle sig vej i mørket, og de stod over for masser af frygtelige monstre - til deres ærgrelse og vores fordel, da angrebene på SSLv2 efterlod uvurderlige erfaringer til næste generation af protokoller.

Efter disse begivenheder, i 1996, redesignede et frustreret Netscape SSL-protokollen fra bunden. Resultatet blev SSL version 3, som løst flere kendte sikkerhedsproblemer af sin forgænger.

Heldigvis for indbrudstyve betyder "nogle få" ikke "alle". Samlet set leverede SSLv3 alle de nødvendige byggeklodser til at starte et Vodene-angreb. Protokollen brugte en CBC-tilstands blokchiffer og et usikkert udfyldningsskema (dette blev rettet i TLS; derfor behovet for et nedgraderingsangreb). Hvis du husker polstringsskemaet i vores originale beskrivelse af Vaudenay-angrebet, er SSLv3-skemaet meget ens.

Men desværre for indbrudstyve betyder "lignende" ikke "identisk". SSLv3-udfyldningsskemaet er "N tilfældige bytes efterfulgt af tallet N". Prøv, under disse forhold, at vælge en imaginær blok med chiffertekst og gennemgå alle trinene i Vaudenes oprindelige skema: du vil opdage, at angrebet med succes udtrækker den sidste byte fra den tilsvarende blok af klartekst, men går ikke længere. At dekryptere hver 16. byte af chifferteksten er et godt trick, men det er ikke en sejr.

Stillet over for fiasko greb Google-teamet til en sidste udvej: de skiftede til en mere kraftfuld trusselsmodel - den, der blev brugt i CRIME. Hvis man antager, at angriberen er et script, der kører i offerets browserfane og kan udtrække sessionscookies, er angrebet stadig imponerende. Mens den bredere trusselsmodel er mindre realistisk, så vi i det foregående afsnit, at netop denne model er gennemførlig.

Givet disse mere kraftfulde angriberkapaciteter kan angrebet nu fortsætte. Bemærk, at angriberen ved, hvor den krypterede sessionscookie vises i overskriften og kontrollerer længden af ​​HTTP-anmodningen forud for den. Derfor er den i stand til at manipulere HTTP-anmodningen, så den sidste byte af cookien er justeret med slutningen af ​​blokken. Nu er denne byte velegnet til dekryptering. Du kan blot tilføje et tegn til anmodningen, og den næstsidste byte af cookien forbliver på samme sted og er egnet til valg ved hjælp af samme metode. Angrebet fortsætter på denne måde, indtil cookie-filen er fuldstændig gendannet. Det hedder POODLE: Padding Oracle on Downgraded Legacy Encryption.

DRUKNE

Kryptografiske angreb: en forklaring på forvirrede sindSom vi nævnte, havde SSLv3 sine mangler, men den var fundamentalt anderledes end sin forgænger, da den utætte SSLv2 var et produkt fra en anden æra. Der kunne du afbryde beskeden i midten: соглашусь на это только через мой труп forvandlet til соглашусь на это; klienten og serveren kunne mødes online, etablere tillid og udveksle hemmeligheder foran angriberen, som så nemt kunne efterligne begge. Der er også problemet med eksportkryptografi, som vi nævnte, da vi overvejede FREAK. Disse var kryptografiske Sodoma og Gomorra.

I marts 2016 kom et team af forskere fra forskellige tekniske områder sammen og gjorde en overraskende opdagelse: SSLv2 bruges stadig i sikkerhedssystemer. Ja, angribere kunne ikke længere nedgradere moderne TLS-sessioner til SSLv2, da det hul blev lukket efter FREAK og POODLE, men de kan stadig oprette forbindelse til servere og selv starte SSLv2-sessioner.

Du kan spørge, hvorfor er vi ligeglade med, hvad de laver der? De har en sårbar session, men det burde ikke påvirke andre sessioner eller sikkerheden på serveren – vel? Nå, ikke helt. Ja, sådan burde det være i teorien. Men nej - fordi generering af SSL-certifikater pålægger en vis byrde, hvilket resulterer i, at mange servere bruger de samme certifikater og som følge heraf de samme RSA-nøgler til TLS- og SSLv2-forbindelser. For at gøre tingene værre, på grund af en OpenSSL-fejl, virkede "Deaktiver SSLv2"-indstillingen i denne populære SSL-implementering faktisk ikke.

Dette muliggjorde et krydsprotokolangreb på TLS, kaldet DRUKNE (Dekryptering af RSA med forældet og svækket kryptering, dekryptering af RSA med forældet og svækket kryptering). Husk at dette ikke er det samme som et kort angreb; angriberen behøver ikke at fungere som en "mand i midten" og behøver ikke involvere klienten for at deltage i en usikker session. Angribere starter simpelthen en usikker SSLv2-session med serveren selv, angriber den svage protokol og gendanner serverens private RSA-nøgle. Denne nøgle er også gyldig for TLS-forbindelser, og fra dette tidspunkt vil ingen mængde TLS-sikkerhed forhindre den i at blive kompromitteret.

Men for at knække det, har du brug for et fungerende angreb mod SSLv2, som giver dig mulighed for at gendanne ikke kun specifik trafik, men også den hemmelige RSA-servernøgle. Selvom dette er en kompleks opsætning, kunne forskerne vælge enhver sårbarhed, der blev fuldstændig lukket efter SSLv2. De fandt til sidst en passende mulighed: Bleichenbacher-angrebet, som vi nævnte tidligere, og som vi vil forklare i detaljer i den næste artikel. SSL og TLS er beskyttet mod dette angreb, men nogle tilfældige funktioner i SSL, kombineret med korte nøgler i eksport-grade kryptografi, gjorde det muligt en specifik implementering af DROWN.

På tidspunktet for offentliggørelsen var 25 % af internettets topsider berørt af DROWN-sårbarheden, og angrebet kunne udføres med beskedne ressourcer til rådighed for selv drilske ensomme hackere. Hentning af serverens RSA-nøgle krævede otte timers beregning og $440, og SSLv2 gik fra forældet til radioaktivt.

Vent, hvad med Heartbleed?

Dette er ikke et kryptografisk angreb i den forstand beskrevet ovenfor; Dette er et bufferoverløb.

Lad os holde en pause

Vi startede med nogle grundlæggende teknikker: brute force, interpolation, nedgradering, krydsprotokol og forudberegning. Derefter så vi på en avanceret teknik, måske hovedkomponenten i moderne kryptografiske angreb: orakelangrebet. Vi brugte ret lang tid på at finde ud af det – og forstod ikke kun det underliggende princip, men også de tekniske detaljer i to specifikke implementeringer: Vaudenay-angrebet på CBC-krypteringstilstanden og Kelsey-angrebet på præ-komprimeringskrypteringsprotokoller.

I gennemgangen af ​​nedgraderings- og forudberegningsangreb skitserede vi kort FREAK-angrebet, som bruger begge metoder ved at få målwebsteder til at nedgradere til svage nøgler og derefter genbruge de samme nøgler. Til den næste artikel gemmer vi det (meget lignende) Logjam-angreb, som er rettet mod offentlige nøglealgoritmer.

Vi så på yderligere tre eksempler på anvendelsen af ​​disse principper. Først forbrydelse og puddel: to angreb, der var afhængige af angriberens evne til at injicere vilkårlig klartekst ved siden af ​​målklarteksten, undersøg derefter serverens svar og derefterUdnyt denne sparsomme information ved hjælp af orakelangrebsmetodologi til delvist at gendanne klarteksten. CRIME gik vejen for Kelseys angreb på SSL-komprimering, mens POODLE i stedet brugte en variant af Vaudenays angreb på CBC med samme effekt.

Vi rettede derefter vores opmærksomhed mod DROWN-angrebet på tværs af protokoller, som etablerer en forbindelse til serveren ved hjælp af den ældre SSLv2-protokol og derefter gendanner serverens hemmelige nøgler ved hjælp af Bleichenbacher-angrebet. Vi har sprunget de tekniske detaljer over dette angreb over for nu; ligesom Logjam, vil det vente, indtil vi har en god forståelse af offentlige nøglekryptosystemer og deres sårbarheder.

I den næste artikel vil vi tale om avancerede angreb såsom møde-i-midten, differentiel kryptoanalyse og fødselsdagsangreb. Lad os tage et hurtigt indblik i sidekanalangreb og derefter gå videre til den sjove del: offentlige nøglekryptosystemer.

Kilde: www.habr.com

Tilføj en kommentar