User Tools

Site Tools


aes

This is an old revision of the document!


AES

AES (Advanced Encryption Standard), poznat i pod svojim originalnim nazivom Rijndael, je sustav simetrične kriptografije temeljen na supstitucijsko-permutacijskim poljima.
 Shema supstitucijsko-permutacijskog polja AES koristi fiksnu veličinu bloka od 128 bitova te veličinu ključa od 128, 192 ili 256 bitova. Provodi se nad matricom 4×4, odnosno nad pravokutnim nizom bajtova u 4 retka i 4 stupca. Na sličan način tretira se i ključ koji je pohranjen u 4 retka i N stupaca, gdje je N ovisan o veličini ključa i može biti 4,6 ili 8. AES se pri enkripciji koristi operacijama zamjene znakova, posmicanja redova, miješanja stupaca te dodavanja potključa.
 AES enkripcijski postupak

Funkcije koje AES koristi matematički su opisane u nastavku:
1) Zamjena znakova

znak = Sbox[znak] 

2) Dodaj potključ

blok = blok ⊕ potključ[i]

3) Posmakni redove
Rotira (kružno posmiče) znakove ulijevo u svim retcima osim prvog za unaprijed poznati broj mjesta koji je ovisan o N.

4) Pomiješaj stupac bloka
Množi se stupac po stupac bloka s fiksnim polinomom:

a(x) = 03Hx3 + 01Hx2 + 01Hx + 02H mod x4+1 

Odnosno, za svaki stupac bloka računa se stupac novog stanja:

Postoje razni načini AES kriptiranja koji određuju kako se ulazni podatci dijele u blokove, kako se blokovi kriptiraju i kombiniraju, kako enkripcija upravlja problemima kao što su integritet podataka ili inicijalizacijski vektori (IV) i slično.

Često korišteni AES načini kriptiranja su:
1) ECB (Electronic Codebook)

  • Svaki blok teksta kriptira se odvojeno s istim ključem
  • Identični blokovi jasnog teksta rezultiraju identičnim blokovima skrivenog teksta
  • Nije siguran za enkripciju većih količina ulaznih podataka zbog mogućnosti ponavljanja uzoraka
  • Korištenje ovog načina kriptiranja se ne preporučuje

 ECB shema

2) CBC (Cipher Block Chaining)

  • Svaki blok jasnog teksta se XOR-a sa skrivenim tekstom prošlo kruga enkripcije
  • Potreban je inicijalizacijski vektor IV koji se mora izabrati nasumično
  • IV se šalje zajedno sa skrivenim tekstom
  • Potrebno nadopuniti poruku tako da je duljina višekratnik veličine bloka
  • Sigurna enkripcija pod razumnim pretpostavkama

 CBC shema

3) CFB (Cipher Feedback) i OFB (Output Feedback)

  • Slični protočnoj enkripciji, tj. jednokratnoj bilježnici
  • Dekripcija jednaka enkripciji
  • Trebalo bi svaki put koristiti različiti IV

 CFB/OFB shema

4) CTR (Counter Mode)

  • sličan protočnoj enkripciji, tj. jednokratnoj bilježnici
  • na temelju ključa i IV izračuna se niz bitova koji se XOR-a s jasnim tekstom
  • može se paralelizirati
  • ne zahtijeva nadopunjavanje poruke (padding)

 CTR shema

5) GCM (Galois/Counter Mode)

  • način autentifikacijskog kriptiranja koji je primjenjiv samo za simetrične blok algoritme s veličinom bloka od 128 bitova
  • samo za autentifikaciju – koristi MAC
  • ulaz: jasni tekst, IV, povezani autentifikacijski podaci (Associated Data, AD ), duljina povezanih podataka i duljina kriptiranog teksta
  • izlaz: autentifikacijska značka (Auth Tag)

 GCM shema

Generalno se ne preporučuje koristiti način kriptiranja ECB. Inicijalizacijski se vektor ne smije ponavljati i mora biti generiran slučajno, a ne smije se ponavljati ni simetrični ključ.

PRIMJER -Zadatak s Hacknite platforme - Encryption service

Markov san bio je napraviti program koji će šifrirati nizove znakova. Spajanjem na 
chal.platforma.hacknite.hr:10001 
možeš isprobati njegov program. Dan ti je kod njegovog programa te šifrirani tekst. Možeš li 
pogoditi što je to Marko zapravo napisao?

Tekst za šifriranje je: 
f44e2a4b2efd98c8b3d1b97c6da4649749ebb799d3c4a7c24bdfe3b36e0a35c6da15b0479f9912c0

Flag je u formatu CTF2021[brojevi]

U prilogu se još nalazi i program koji se smije koristiti za dešifriranje.
Možemo pokušati XOR-ati cijeli tekst za šifriranje s null-byteovima i tako dobiti prvih 40 byteova ključa (jer je to duljina teksta). U Python programu bismo to postigli sljedećom naredbom u terminalu:

python3 -c "print('\x00'*40)" | nc 172.17.0.2 4444

Nakon što smo dobili ključ, XOR-amo ga s tekstom za šifriranje. XOR-anje se može raditi koristeći neki online alat ili tako što stvoimo binarne datoteke ključa i teksta za šifriranje pa pokrenemo python skriptu koju smo dobili.

Izvori

[1] Christof Paar, Jan Pelzl, Understanding Cryptography, Springer-Verlag Berlin Heidelberg, 2009.
[2] https://platforma.hacknite.hr/challenges
[3] Kriptografija i kriptoanaliza, predavanja, FER
[4] Budin, L.; Golub, M; Jakobović, D., Jelenković, L (2010.) (2013.), Operacijski sustavi, Element, Zagreb
[5] https://csrc.nist.gov/csrc/media/projects/cryptographic-standards-and-guidelines/documents/aes-development/rijndael-ammended.pdf

aes.1700474778.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki