Puncte:2

Cum se calculează inversul AES S-BOX aleatoriu (presupunând că nu știm cum a construit S-BOX)?

drapel in

Studiez recent criptografia și am o sarcină de a colecta s-box-urile pentru AES și apoi implementez acele s-box-uri pentru criptare și decriptare, dar majoritatea S-box-urilor pe care le-am găsit nu includ inversul acesteia.

Știu că cea mai mare parte oferă calculul despre cum să construiesc cutia s și inversul, dar nu cred că pot ajunge la timp dacă fac asta.

Deci, mă întreb dacă există vreo metodă de calculare a inversului S-BOX-urilor AES aleatoare?

Daniel S avatar
drapel ru
În python: dacă `S` este o listă ordonată de intrări S-box `SInverse=[S.index(i) for i in range(256)]`
Puncte:2
drapel in

SageMath are un lucru grozav S-Box pachet care este utilizat intens de designerii S-Box. Dacă aveți de gând să învățați/jucați cu S-Box-uri, puteți beneficia de acest pachet.

Cu pachet Sbox (Încercați online)

din sage.crypto.sbox import SBox

#trebuie să fie puterea a două, altfel eroare
p = Permutări(interval(16)).element_aleatoriu()

S = SBox(p);
print("Permutarea", S)
print(„Permutarea inversă”, S.inverse())

SageMath utilizează în prezent Python3, astfel încât se poate scrie versiunea foarte ușor fie în Python, fie în SageMath (Încercați online);

P = Permutări(interval(16)).element_aleatoriu()

print("Permutarea", P)

InverseP=[P.index(i) pentru i în interval (16)]
print(„Permutarea inversă”, InverseP)

După cum putem vedea pachetul S-Box este mult mai bun, de exemplu, construcția verifică dacă dimensiunea este egală cu o putere de 2 sau nu.


Notă: Am folosit permutări aleatorii pentru a garanta că există inversul.


După cum putem vedea din Sursa pachetului Sbox

m = self.input_size()
L = [self(i) pentru i în interval (1<<m)]
returnează SBox([L.index(i) pentru i în interval(1<<m)], big_endian=self._big_endian)

SageMath convertește S-Box într-o Listă, ia inversul pe listă, apoi construiește un S-Box pe listă. După cum putem vedea, inversul - dacă există - nu este magie.

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.