Puncte:2

Este aceasta o reordonare validă a instrucțiunilor AES?

drapel nl

Încerc să înțeleg o implementare Verilog AES. Știu că ordinea pașilor de criptare AES este așa cum se arată: introduceți descrierea imaginii aici

Cu toate acestea, codul pe care îl văd nu face acest lucru. Ei fac următorul grafic de flux: la începutul criptării stat este încărcat cu newstate sau textul simplu. The rundă este setat sa max și este decrementată la fiecare rundă.

Ei fac apoi următorul set de operații pentru fiecare rundă până când rundă ajunge la 0. Variabilele interne sunt între paranteze, iar operațiile sunt fără.

(stat) -> (sbbi) -> sbox -> (sbbo) -> shift -> (shro) -> mix -> (mxco)

Ei selectează ieșirea fiecărei runde pe baza variabilei rotunde, aceasta este folosită pentru a seta newstate care setează noua stare de intrare:

dacă rotund == 0:
    (stat)
daca rotund == max:
    (shro)
altfel
    (mxco)

Problema pe care o am este că mă aștept să văd operațiunile Sub, Schimb, Keyadd pentru ultima rundă (0 în acest cod). Dar nu este ceea ce face și chiar luând rezultatul rundei 1 și văzând că „ultima rundă” este greșită, deoarece se adaugă o cheie dublă.

Maarten Bodewes avatar
drapel in
Putem presupune că codul AES rulează conform intenției (de exemplu, împotriva altor vectori de implementare/testare)? Dacă îmi amintesc corect, ultima rundă de AES *este* puțin diferită, mă întreb dacă diagrama este corectă, dar nu am timp să o caut acum.
Tarick Welling avatar
drapel nl
@MaartenBodewes Da atunci când se folosește, textul cifrat este verificat și astfel funcționează corect. Ultima rundă ar trebui să rateze operațiunea de amestecare coloane. Imaginea este din Understanding Cryptography de C Paar și pseudo-cod identic este dat în specificația AES.
Fractalice avatar
drapel in
Sunteți sigur că „round” scade? poate asta provine din setarea de decriptare? probabil că ați ratat, de asemenea, cheia de adăugare undeva (bitflips-uri codificate, probabil?). Altfel pare legitim
Tarick Welling avatar
drapel nl
@Fractalice ai perfecta dreptate.Criptarea se face în starea `KEYSCHED` și nu în starea `DECRYPT` (pe care o interpretasem ca fiind dublu scop cu o etichetă groaznică). Astfel, contorul este într-adevăr în creștere și astfel codul funcționează conform așteptărilor
Maarten Bodewes avatar
drapel in
Aceasta pare să răspundă la întrebare. Dacă este cazul, @Fractalice ai putea să dai un răspuns din comentariul tău?
Puncte:1
drapel in

Ești sigur că runda scade? Contorul reamintește setarea de decriptare. Probabil că ați ratat și AddRoundKey undeva. Altfel descrierea pare corecta.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.