I kryptoanalyse er møde-i-midt- metoden eller " møde-i-midt-angrebet " en klasse af angreb på kryptografiske algoritmer , der asymptotisk reducerer tiden for en fuldstændig opregning på grund af " del og hersk " -princippet samt øge den nødvendige mængde hukommelse . Denne metode blev først foreslået af Whitfield Diffie og Martin Hellman i 1977 [1] .
De åbne (ukrypterede) og chiffertekster er givet. Et kryptosystem består af krypteringscyklusser . De cykliske taster er uafhængige og deler ikke fælles bit. Systemnøglen er en kombination af -cykliske taster . Opgaven er at finde nøglen .
Et simpelt eksempel er dobbelt sekventiel blokkryptering med to forskellige nøgler og . Krypteringsprocessen ser sådan ud:
,
hvor er klarteksten, er chifferteksten og er engangskrypteringsoperationen med nøglen . Følgelig ser den omvendte operation - dekryptering - sådan ud:
Umiddelbart ser det ud til, at brugen af dobbeltkryptering i høj grad øger sikkerheden for hele ordningen, da der nu skal sorteres to nøgler fra, og ikke én. I tilfælde af DES-algoritmen øges sikkerheden fra til . Det er det dog ikke. En angriber kan oprette to tabeller:
Så mangler han kun at finde matches i disse tabeller, det vil sige sådanne værdier og , at . Hver kamp svarer til et sæt nøgler , der opfylder betingelsen.
Dette angreb krævede krypterings-dekrypteringsoperationer (kun dobbelt så mange som ved opregning af én nøgle) og hukommelse. Yderligere optimeringer - brug af hashtabeller , beregninger for kun halvdelen af nøglerne (for DES kræver udtømmende søgning faktisk kun operationer) - kan reducere disse krav. Hovedresultatet af angrebet er, at to-nøgle sekventiel kryptering kun fordobler brute-force-tiden.
Lad os betegne transformationen af algoritmen som , hvor er klarteksten og er chifferteksten. Det kan repræsenteres som en komposition , hvor der er en cyklisk transformation på tangenten . Hver nøgle er en binær længdevektor , og systemets offentlige nøgle er en længdevektor .
Alle værdier er sorteret fra , dvs. de første cykliske taster. På hver sådan nøgle krypterer vi klarteksten - (det vil sige, vi gennemgår krypteringscyklusser i stedet for ). Vi vil betragte det som en bestemt hukommelsesadresse og skrive værdien til denne adresse . Det er nødvendigt at gentage alle værdier .
Alt muligt er sorteret fra . På de modtagne nøgler er chifferteksten dekrypteret - . Hvis adressen ikke er tom, så henter vi nøglen derfra og får en nøglekandidat .
Det skal dog bemærkes, at den første kandidat, der modtages , ikke nødvendigvis er den sande nøgle. Ja, for data og , men på andre værdier af den almindelige tekstchiffertekst , der er opnået fra den sande nøgle, kan lighed blive krænket. Det hele afhænger af kryptosystemets specifikke karakteristika . Men nogle gange er det nok at få sådan en "pseudo-ækvivalent" nøgle. Ellers, efter afslutningen af procedurerne, opnås et bestemt sæt nøgler , blandt hvilke den sande nøgle er.
Hvis vi overvejer en specifik applikation, så kan chifferteksten og almindelig tekst være store (for eksempel grafiske filer) og repræsentere et tilstrækkeligt stort antal blokke til en blokchiffer . I dette tilfælde kan du for at fremskynde processen kryptere og dekryptere ikke hele teksten, men kun dens første blok (som er meget hurtigere) og derefter, efter at have modtaget mange kandidater, se efter den sande nøgle i den, kontrollere den på de resterende blokke.
I nogle tilfælde kan det være svært at adskille bits af en nøglesekvens i dele relateret til forskellige nøgler. I dette tilfælde bruges 3-undersæt MITM-angrebsalgoritmen af Bogdanov og Richberger i 2011 baseret på den sædvanlige metode til at mødes i midten. Denne algoritme er anvendelig, når det ikke er muligt at opdele nøglebitsekvenserne i to uafhængige dele. Den består af to faser: udtrækning og verifikation af nøgler [2] .
I begyndelsen af denne fase er chifferen opdelt i 2 subciphers og , som i det generelle tilfælde af angrebet, tillader det dog mulig brug af nogle bits af en subcipher i en anden. Så hvis , så ; i dette tilfælde vil bits af nøglen , der bruges i , blive betegnet med , og i — med . Derefter kan nøglesekvensen opdeles i 3 dele:
Dernæst udføres et angreb ved metoden til at mødes i midten i henhold til følgende algoritme:
For at kontrollere nøglerne, tjekkes de modtagne kandidater mod flere par kendte offentlig-private tekster. Normalt kræves der ikke et meget stort antal af sådanne tekstpar til verifikation [2] .
Lad os som et eksempel tage et angreb på KTANTAN-chifferfamilien [3] , som gjorde det muligt at reducere den beregningsmæssige kompleksitet ved at få en nøgle fra (brute force attack) til [1] .
Forbereder et angrebHver af de 254 runder af kryptering ved hjælp af KTANTAN bruger 2 tilfældige bits af nøglen fra et 80-bit sæt. Dette gør kompleksiteten af algoritmen kun afhængig af antallet af runder. Da angrebet startede, lagde forfatterne mærke til følgende funktioner:
Dette gjorde det muligt at opdele nøglebittene i følgende grupper:
Der var et problem med at beregne værdierne af og beskrevet ovenfor , da runder fra 112 til 130 mangler i betragtningen, men derefter blev der foretaget en delvis sammenligning : forfatterne til angrebet bemærkede en match på 8 bit ind og , kontrollere dem med et normalt angreb ved hjælp af mødet i midten-metoden ved runde 127. I denne henseende, i denne fase, blev værdierne af disse 8 bit i undercifre og sammenlignet . Dette øgede antallet af nøglekandidater, men ikke den beregningsmæssige kompleksitet.
Anden fase: verifikation af nøglerFor at teste nøglekandidater til KTANTAN32-algoritmen tog det i gennemsnit yderligere to offentlig-private tekstpar at udtrække nøglen.
ResultaterDette er dog ikke det bedste angreb på KTANTAN-chifferfamilien. I 2011 blev der foretaget et angreb [4] , der reducerede algoritmens beregningsmæssige kompleksitet til at bruge fire åbne-lukkede tekstpar.
Det fulde todelte grafangreb bruges til at øge antallet af proxyangrebsforsøg ved at bygge en fuld todelt graf . Foreslået af Diffie og Hellman i 1977.
Den multidimensionelle møde-i-midt-algoritme bruges, når der bruges et stort antal krypteringscyklusser med forskellige nøgler på blokcifre . I stedet for det sædvanlige "møde i midten" bruger denne algoritme opdelingen af kryptoteksten med flere mellempunkter [5] .
Det antages, at den angrebne tekst er krypteret et vist antal gange med en blokchiffer:
Dernæst testes den fundne sekvens af kandidater på et andet par offentlig-private tekster for at bekræfte nøglernes gyldighed. Det skal bemærkes, at algoritmen er rekursiv: Udvælgelsen af nøgler for staten er baseret på resultaterne for staten . Dette introducerer et element af eksponentiel kompleksitet i denne algoritme [5] .
Tidskompleksiteten af dette angreb er
Når vi taler om hukommelsesbrug, er det let at se, at efterhånden som hver stigning bliver pålagt flere og flere begrænsninger, hvilket reducerer antallet af kandidater, der skrives til den. Dette betyder meget mindre .
Den øvre grænse for mængden af brugt hukommelse:
hvor er nøglens samlede længde.Kompleksiteten ved at bruge data afhænger af sandsynligheden for at "passere" en falsk nøgle. Denne sandsynlighed er lig med , hvor er længden af den første mellemtilstand, som oftest er lig med blokstørrelsen. I betragtning af antallet af nøglekandidater efter den første fase er kompleksiteten .
Som et resultat får vi , hvor er blokstørrelsen.
Hver gang en kandidatnøglesekvens testes på et nyt offentligt-privat tekstpar, ganges antallet af nøgler, der består testen, med sandsynligheden for at bestå nøglen, hvilket er .
En del af brute-force-angrebet (kontrol af nøgler mod nye offentlig-private tekstpar) har tidskompleksitet , hvor efterfølgende termer naturligvis har en tendens til at nulstilles hurtigere og hurtigere.
Som et resultat er datakompleksitet ved lignende vurderinger begrænset til tilnærmelsesvis offentlig-private nøglepar.