În criptoanaliza , metoda întâlnirii la mijloc sau „ atacul întâlnirii la mijloc ” este o clasă de atacuri asupra algoritmilor criptografici care reduc asimptotic timpul unei enumerari complete datorită principiului „ împărțiți și cuceriți ”. , precum și creșterea cantității de memorie necesară . Această metodă a fost propusă pentru prima dată de Whitfield Diffie și Martin Hellman în 1977 [1] .
Sunt date textele deschise (necriptate) și cifrate . Un criptosistem constă din cicluri de criptare . Cheile ciclice sunt independente și nu au biți comuni. Cheia de sistem este o combinație de taste -ciclice . Sarcina este de a găsi cheia .
Un exemplu simplu este criptarea blocului secvenţial dublu cu două chei diferite şi . Procesul de criptare arată astfel:
,
unde este textul simplu, este textul cifrat și este operația de criptare unică cu cheia . În consecință, operația inversă - decriptare - arată astfel:
La prima vedere, se pare că utilizarea criptării duble crește foarte mult securitatea întregii scheme, deoarece acum trebuie rezolvate două chei, și nu una. În cazul algoritmului DES , securitatea crește de la la . Cu toate acestea, nu este. Un atacator poate crea două tabele:
Apoi, trebuie doar să găsească potriviri în aceste tabele, adică astfel de valori și , că . Fiecare potrivire corespunde unui set de chei care satisface condiția.
Acest atac a necesitat operațiuni de criptare-decriptare (doar de două ori mai multe decât pentru enumerarea unei chei) și memorie. Optimizări suplimentare - utilizarea tabelelor hash , calcule pentru doar jumătate din chei (pentru DES , căutarea exhaustivă, de fapt, necesită doar operații) - pot reduce aceste cerințe. Principalul rezultat al atacului este că criptarea secvenţială cu două chei dublează doar timpul brute-force.
Să notăm transformarea algoritmului ca , unde este textul simplu și este textul cifrat. Poate fi reprezentat ca o compoziție , unde este o transformare ciclică pe cheie . Fiecare cheie este un vector de lungime binar , iar cheia publică a sistemului este un vector de lungime .
Toate valorile sunt sortate , adică primele chei ciclice. Pe fiecare astfel de cheie, criptăm textul simplu - (adică trecem prin cicluri de criptare în loc de ). O vom considera ca o anumită adresă de memorie și vom scrie valoarea la această adresă . Este necesar să se repete peste toate valorile .
Toate posibilele sunt rezolvate . Pe cheile primite , textul cifrat este decriptat - . Dacă adresa nu este goală, atunci obținem cheia de acolo și obținem un candidat cheie .
Cu toate acestea, trebuie menționat că primul candidat primit nu este neapărat cheia adevărată. Da, pentru date și , dar pentru alte valori ale textului cifrat simplu obținut de pe cheia adevărată, egalitatea poate fi încălcată. Totul depinde de caracteristicile specifice ale criptosistemului . Dar uneori este suficient să obțineți o astfel de cheie „pseudo-echivalentă”. În caz contrar, după finalizarea procedurilor, se va obține un anumit set de chei , printre care se numără și cheia adevărată.
Dacă luăm în considerare o anumită aplicație, atunci textul cifrat și textul simplu pot fi mari (de exemplu, fișiere grafice) și reprezintă un număr suficient de mare de blocuri pentru un cifru bloc . În acest caz, pentru a accelera procesul, puteți cripta și decripta nu întregul text, ci doar primul său bloc (care este mult mai rapid) și apoi, după ce ați primit mulți candidați, căutați cheia adevărată în ea, verificând-o. blocurile rămase.
În unele cazuri, poate fi dificil să se separe biții unei secvențe de taste în părți legate de taste diferite. În acest caz, algoritmul de atac MITM cu 3 subseturi propus de Bogdanov și Richberger în 2011 este utilizat pe baza metodei obișnuite de întâlnire la mijloc. Acest algoritm este aplicabil atunci când nu este posibilă împărțirea secvențelor de biți cheie în două părți independente. Se compune din două faze: extragerea și verificarea cheilor [2] .
La începutul acestei faze, cifrul este împărțit în 2 subcifre și , ca și în cazul general al atacului, permițând însă posibila folosire a unor biți dintr-un subcifr în altul. Deci, dacă , atunci ; în acest caz, biții cheii utilizați în vor fi notați cu , iar în — cu . Apoi, secvența de taste poate fi împărțită în 3 părți:
În continuare, un atac este efectuat prin metoda întâlnirii la mijloc conform următorului algoritm:
Pentru a verifica cheile, candidații primiți sunt verificați cu mai multe perechi de texte cunoscute public-privat. De obicei, nu este necesar un număr foarte mare de astfel de perechi de texte pentru verificare [2] .
Ca exemplu, să luăm un atac asupra familiei de cifră KTANTAN [3] , care a făcut posibilă reducerea complexității de calcul a obținerii unei chei de la (atac de forță brută) la [1] .
Pregătirea unui atacFiecare dintre cele 254 de runde de criptare folosind KTANTAN utilizează 2 biți aleatori ai cheii dintr-un set de 80 de biți. Acest lucru face ca complexitatea algoritmului să depindă doar de numărul de runde. Începând atacul, autorii au observat următoarele caracteristici:
Acest lucru a făcut posibilă împărțirea biților cheie în următoarele grupuri:
A existat o problemă în calcularea valorilor și descrise mai sus , deoarece rundele de la 112 la 130 lipsesc în considerare, dar apoi a fost efectuată o comparație parțială : autorii atacului au observat o potrivire de 8 biți în și , verificându-i cu un atac normal folosind metoda întâlnirii la mijloc la runda 127. În acest sens, în această fază, valorile acestor 8 biți din subcifre și au fost comparate . Acest lucru a crescut numărul de candidați cheie, dar nu și complexitatea de calcul.
A doua fază: verificarea cheilorPentru a testa candidații cheie pentru algoritmul KTANTAN32, a fost nevoie în medie de încă două perechi de text public-privat pentru a extrage cheia.
RezultateCu toate acestea, acesta nu este cel mai bun atac asupra familiei de cifrare KTANTAN. În 2011, a fost făcut un atac [4] care a redus complexitatea de calcul a algoritmului la utilizarea a patru perechi de text deschis-închis.
Atacul complet cu graf bipartit este utilizat pentru a crește numărul de încercări de atac proxy prin construirea unui graf bipartit complet . Propus de Diffie și Hellman în 1977.
Algoritmul multidimensional meeting-in-the-middle este utilizat atunci când se utilizează un număr mare de cicluri de criptare cu chei diferite pe cifrurile bloc . În loc de obișnuita „întâlnire la mijloc”, acest algoritm folosește împărțirea criptotextului prin mai multe puncte intermediare [5] .
Se presupune că textul atacat este criptat de un anumit număr de ori cu un cifru bloc:
Apoi, secvența de candidați găsită este testată pe o altă pereche de text public-privat pentru a confirma validitatea cheilor. Trebuie remarcat faptul că algoritmul este recursiv: selecția cheilor pentru stare se bazează pe rezultatele pentru starea . Aceasta introduce un element de complexitate exponențială în acest algoritm [5] .
Complexitatea de timp a acestui atac este
Apropo de utilizarea memoriei, este ușor de observat că , pe măsură ce fiecare crește , sunt impuse din ce în ce mai multe restricții, ceea ce reduce numărul de candidați care i-au scris. Asta înseamnă mult mai puțin .
Limita superioară a cantității de memorie utilizată:
unde este lungimea totală a cheii.Complexitatea utilizării datelor depinde de probabilitatea de a „trece” o cheie falsă. Această probabilitate este egală cu , unde este lungimea primei stări intermediare, care este cel mai adesea egală cu dimensiunea blocului. Având în vedere numărul de candidați cheie după prima fază, complexitatea este de .
Ca rezultat, obținem , unde este dimensiunea blocului.
De fiecare dată când o secvență de chei candidată este testată pe o nouă pereche de text public-privat, numărul de chei care trec testul este înmulțit cu probabilitatea de a trece cheia, care este .
O parte a atacului cu forță brută (verificarea cheilor împotriva noilor perechi de text public-privat) are o complexitate de timp , în care, evident, termenii ulterioare tind să se zero din ce în ce mai repede.
Ca rezultat, complexitatea datelor prin judecăți similare este limitată la aproximativ perechi de chei public-privat.