Credeți că schemele de criptare care păstrează formatul (FPE) au vreo limitare în raport cu alte cifruri bloc convenționale?
De fapt, se poate vedea o schemă FPE ca o generalizare a unui cifru bloc convențional. La urma urmei, un cifr de bloc convențional este fixat la o dimensiune specifică a blocului; cu FPE, putem folosi orice dimensiune de bloc pe care o considerăm convenabilă (de exemplu, întregul mesaj).
Are FPE o gamă largă de aplicații pentru a fi un viitor domeniu de cercetare?
Cred că da. Un lucru bun despre FPE (cu o modificare; majoritatea schemelor FPE permit una) este că este ușor să construiți o schemă AEAD care este destul de tolerantă la utilizare greșită:
Pentru a cripta, ai prelua mesajul $M$, și anexați $k$ zerouri și $\ell$ biți aleatori (sau nonce; decriptorul va recupera acești biți și astfel pot fi utilizați ca număr de secvență dacă este necesar). Criptați asta cu schema FPE, folosind AAD ca modificare.
Pentru a decripta, decriptați cu schema FPE folosind AAD ca reglaj; analizați rezultatul și verificați dacă $k$ zerouri apar la sfârșit.
Ar trebui să fie evident că aceasta este o schemă AAD sigură (presupunând că schema FPE este sigură). În plus:
Dacă expeditorul folosește o aleatorie proastă pentru el $\ell$ biți aleatori, devine o schemă deterministă în care adversarul poate determina dacă același mesaj a fost trimis de două ori, dar nu poate determina nimic dincolo de asta.
Dacă receptorul uită să verifice $k$ zerouri, atunci aceasta devine o schemă complet falsificată, în care adversarul poate schimba mesajul decriptat în ceva aleatoriu, dar nu poate face nimic în afară de asta. Acest lucru este în contrast cu multe scheme AEAD, în care dacă decriptorul uită să verifice eticheta, atunci criptarea devine maleabilă (și AAD-ul este în esență ignorat).
Deci, dacă acest lucru este atât de minunat, care este dezavantajul? Ei bine, una importantă este performanța - schemele actuale de FPE sunt destul de lente și, prin urmare, acest design simplu nu este folosit. O schemă FPE mai performantă (dar totuși sigură) ar face acest lucru mult mai atractiv.
Un alt dezavantaj evident este că FPE nu poate fi implementat într-o manieră „o singură trecere” (unde procesăm mesajul în părți); acest lucru este convenabil atunci când trebuie să gestionăm mesaje mari; cu toate acestea, ar trebui să fie evident că posibilitatea de a face criptare tolerantă la utilizare greșită (unde lipsa de entropie nonce se scurge doar dacă mesajele au fost identice) este incompatibilă cu criptarea cu o singură trecere și că a putea face decriptare tolerantă la utilizare greșită (unde uitați să verificați verificarea integrității permite unui atacator activ doar să randomizeze textul simplu) este incompatibil cu decriptarea cu o singură trecere.