În criptografie, umplutura este oricare dintre o serie de practici distincte care includ toate adăugarea de date la începutul, mijlocul sau sfârșitul unui mesaj înainte de criptare.
Aceasta este o propoziție condensată;
Modurile de criptare bloc precum CBC și ECB necesită umplutură, astfel încât să se poată cripta corect blocurile de mesaje - nu toate mesajele sunt multiple ale mărimii blocului cifrului. Umplutura comună este PKCS#7 și aplicată în final. Recent, tendința este asupra modurilor precum CTR care nu necesită umplutură. Acest lucru a eliminat un vector de atac; padding oracol atac.
Criptarea cu cheie publică a RSA necesită umplutură pentru a fi sigură împotriva atacurilor, în acest caz, datele prefixate cu unele caractere fixe și aleatorii.
- OAEP: $\text{T=lhash||PS||01||Mesaj}$
- PKCS#1.v5: $\text{EM = 0x00 || 0x02 || PS || 0x00 || Mesaj}$
În timpul hashingului, dacă avem nevoie de concatanarea a două șiruri, nu concatanăm două șiruri într-o concatanare pură, mai degrabă adăugăm niște delimetri speciali, astfel încât să putem evita coliziunea simplă;
$$Hash(\texttt{abcd||efgh}) = Hash(\texttt{abc||defgh})$$ Unde $s_1 = abcd, s_2 = efgh, s_3 = abc, s_4 = defgh$ sunt 4 șiruri diferite, totuși concatanarea lor creează aceeași valoare hash. Pentru a atenua, aplicăm niște padding pe mijloc cu niște valori speciale domeniului;
$$Hash(\texttt{abcd||<sperator>||efgh}) \neq Hash(\texttt{abc||<sperator>||defgh})$$ modificarea coliziunii este neglijabilă pentru un hash criptografic bun.
În criptografia clasică, umplutura poate include adăugarea de fraze fără sens la un mesaj pentru a ascunde faptul că multe mesaje se termină în moduri previzibile.
Acest lucru se datorează faptului că nu vrem să oferim unui atacator un text simplu cunoscut în care aproape toți algoritmii clasici erau nesiguri împotriva acestui lucru.
Luați în considerare cifra de dimensiune Hill $n$ iar dacă ultimul bloc conține doar un caracter din mesaj și dacă îl umpli pe restul cu o valoare fixă cunoscută, atunci i-ai dat adversarului cheia ta. Trebuie doar să rezolve sistemul de ecuație de 26 de ori pentru a obține cheia de criptare.
După cum puteți vedea, căptușeala este mai mult despre securitate și funcționalitate.
Suma de control pare să servească în același mod, care se adaugă în mesaj, iar verificatorul verifică prin sumă și modular divizorul prestabilit.
Suma de verificare se referă la detectarea erorilor. Aici distingem suma de control cu integritate în criptografie unde folosim funcții hash. Funcțiile hash pot oferi detectarea erorilor, cu toate acestea, ele sunt mai puternice decât sumele de verificare.
Rețineți că, deși umplutura poate indica erori, cum ar fi umplutura PKCS#7, asta nu înseamnă că scopul este integritatea (sau suma de control) și, interesant, această eroare este folosită pentru a decripta mesajele de pe serverele care revin. eroarea.