Rețea SP
În criptografie, o rețea SP sau o rețea de substituție-permutare (SPN) este o serie de operații matematice legate între ele, utilizate în algoritmi de cifrare în bloc, cum ar fi AES (Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFER, SHARK și Square.
O astfel de rețea ia un bloc de text în clar și cheia ca intrări și aplică mai multe "runde" sau "straturi" alternative de cutii de substituție (cutii S) și cutii de permutare (cutii P) pentru a produce blocul de text cifrat. Cutiile S și P transformă (sub)blocurile de biți de intrare în biți de ieșire. Este obișnuit ca aceste transformări să fie operații care pot fi efectuate eficient în hardware, cum ar fi XOR (exclusive or) și rotația în sensul biților. Cheia este introdusă în fiecare rundă, de obicei sub forma unor "chei de rundă" derivate din ea. (În unele modele, S-boxurile în sine depind de cheie).
Decriptarea se face prin simpla inversare a procesului (folosind inversul cutiilor S și P și aplicând cheile de rundă în ordine inversă).
O S-box înlocuiește un mic bloc de biți (intrarea S-box-ului) cu un alt bloc de biți (ieșirea S-box-ului). Această substituție trebuie să fie unu la unu, pentru a asigura inversabilitatea (deci decriptarea). În special, lungimea ieșirii ar trebui să fie aceeași cu lungimea intrării (imaginea din dreapta are cutii S cu 4 biți de intrare și 4 biți de ieșire), ceea ce este diferit de cutiile S în general, care ar putea modifica și lungimea, ca în cazul DES (Data Encryption Standard), de exemplu. De obicei, o S-box nu este o simplă permutare a biților. Mai degrabă, o cutie S bună va avea proprietatea că schimbarea unui bit de intrare va schimba aproximativ jumătate din biții de ieșire (sau un efect de avalanșă). De asemenea, va avea proprietatea ca fiecare bit de ieșire să depindă de fiecare bit de intrare.
O cutie P este o permutare a tuturor biților: aceasta ia ieșirile tuturor cutiilor S dintr-o rundă, permută biții și îi introduce în cutiile S din runda următoare. O cutie P bună are proprietatea ca biții de ieșire ai oricărei cutii S să fie distribuiți pe cât mai multe intrări de cutie S posibil.
La fiecare rundă, cheia de rundă (obținută din cheie cu ajutorul unor operații simple, de exemplu, folosind cutii S și cutii P) este combinată folosind o operație de grup, de obicei XOR.
O singură cutie S tipică sau o singură cutie P nu are prea multă putere criptografică: o cutie S poate fi considerată un cifru de substituție, în timp ce o cutie P poate fi considerată un cifru de transpoziție. Cu toate acestea, o rețea SP bine concepută, cu mai multe runde alternante de cutii S și P, satisface deja proprietățile de confuzie și difuzie ale lui Shannon:
- Motivul pentru difuzie este următorul: Dacă se modifică un bit al textului în clar, acesta este introdus într-o cutie S, a cărei ieșire se va modifica pe mai mulți biți, apoi toate aceste modificări sunt distribuite de către cutia P între mai multe cutii S, de unde rezultă că ieșirile tuturor acestor cutii S se modifică din nou pe mai mulți biți, și așa mai departe. În urma mai multor runde, fiecare bit se schimbă de mai multe ori înainte și înapoi, astfel încât, până la sfârșit, textul cifrat s-a schimbat complet, într-un mod pseudo-aleatoriu. În special, pentru un bloc de intrare ales la întâmplare, dacă se întoarce al i-lea bit, atunci probabilitatea ca al j-lea bit de ieșire să se schimbe este de aproximativ jumătate, pentru orice i și j, ceea ce reprezintă criteriul strict de avalanșă. Viceversa, dacă se schimbă un bit al textului cifrat, apoi se încearcă decriptarea acestuia, rezultatul este un mesaj complet diferit de textul în clar original - cifrele SP nu sunt ușor de modificat.
- Motivul confuziei este exact același ca și în cazul difuziei: schimbarea unui bit al cheii modifică mai multe chei rotunde, iar fiecare modificare a fiecărei chei rotunde se difuzează pe toți biții, modificând textul cifrat într-un mod foarte complex.
- Chiar dacă un atacator obține cumva un text în clar corespunzător unui text cifrat - un atac cu text în clar cunoscut sau, mai rău, un atac cu text în clar ales sau cu text cifrat ales - confuzia și difuzarea fac dificilă recuperarea cheii de către atacator.
Deși o rețea Feistel care utilizează cutii S (cum ar fi DES) este destul de asemănătoare cu rețelele SP, există unele diferențe care fac ca aceasta sau aceasta să fie mai aplicabilă în anumite situații. Pentru o anumită cantitate de confuzie și difuzie, o rețea SP are mai mult "paralelism inerent" și astfel - având în vedere o unitate centrală de procesare cu multe unități de execuție - poate fi calculată mai repede decât o rețea Feistel. Unitățile centrale de procesare cu puține unități de execuție - cum ar fi majoritatea cardurilor inteligente - nu pot profita de acest paralelism inerent. De asemenea, cifrele SP necesită ca S-box-urile să fie inversabile (pentru a efectua decriptarea); funcțiile interne Feistel nu au o astfel de restricție și pot fi construite ca funcții unidirecționale.