logo

Napredni šifrirni standard (AES)

Napredni šifrirni standard (AES) je specifikacija za šifriranje elektronskih podatkov, ki jo je leta 2001 vzpostavil Nacionalni inštitut za standarde in tehnologijo ZDA (NIST). AES se danes pogosto uporablja, saj je veliko močnejši od DES in trojnega DES, čeprav je težji izvajati.

Točke, ki si jih je treba zapomniti



  • AES je blokovna šifra.
  • Velikost ključa je lahko 128/192/256 bitov.
  • Šifrira podatke v blokih po 128 bitov.

To pomeni, da sprejme 128 bitov kot vhod in odda 128 bitov šifriranega šifriranega besedila kot izhod. AES temelji na principu substitucijsko-permutacijske mreže, kar pomeni, da se izvaja z nizom povezanih operacij, ki vključujejo zamenjavo in mešanje vhodnih podatkov.

niz v char Javi

Delovanje šifre:
AES izvaja operacije na bajtih podatkov in ne na bitih. Ker je velikost bloka 128 bitov, šifra naenkrat obdela 128 bitov (ali 16 bajtov) vhodnih podatkov.

Število krogov je odvisno od dolžine ključa, kot sledi:



  • 128 bitni ključ – 10 krogov
  • 192 bitni ključ – 12 krogov
  • 256 bitni ključ – 14 krogov

Izdelava okroglih ključev:
Algoritem razporeda ključev se uporablja za izračun vseh okroglih ključev iz ključa. Tako se začetni ključ uporablja za ustvarjanje številnih različnih okroglih ključev, ki bodo uporabljeni v ustreznem krogu šifriranja.

Šifriranje:
AES obravnava vsak blok kot mrežo s 16 bajti (4 bajti x 4 bajti = 128) v glavni razporeditvi stolpcev.



 [ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>

Vsak krog je sestavljen iz 4 korakov:

  • Podbajti
  • ShiftRows
  • MixColumns
  • Dodajte okrogel ključ

Zadnji krog nima kroga MixColumns.

SubBytes izvede zamenjavo, ShiftRows in MixColumns pa izvedeta permutacijo v algoritmu.

Podbajti:
Ta korak izvaja zamenjavo.

V tem koraku je vsak bajt nadomeščen z drugim bajtom. Izvaja se z uporabo iskalne tabele, imenovane tudi S-box. Ta zamenjava se izvede tako, da bajt nikoli ni zamenjan sam po sebi in tudi ne zamenjan z drugim bajtom, ki je dodatek trenutnemu bajtu. Rezultat tega koraka je 16-bajtna (4 x 4) matrika kot prej.

Naslednja dva koraka izvajata permutacijo.

ShiftRows:
Ta korak je tako kot se sliši. Vsaka vrstica se premakne določeno število krat.

  • Prva vrsta ni premaknjena
  • Druga vrstica je enkrat premaknjena v levo.
  • Tretja vrsta je dvakrat premaknjena v levo.
  • Četrta vrstica je trikrat premaknjena v levo.

(Izvede se levi krožni premik.)

 [ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | ->| b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]>

MixColumns:
Ta korak je v bistvu matrično množenje. Vsak stolpec se pomnoži z določeno matriko in tako se posledično spremeni položaj vsakega bajta v stolpcu.

Ta korak se v zadnjem krogu preskoči.

 [ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]>

Dodajte okrogle ključe:
Zdaj je rezultat prejšnje stopnje XOR-ed z ustreznim okroglim ključem. Tu se 16 bajtov ne obravnava kot mreža, temveč le kot 128 bitov podatkov.

Po vseh teh krogih se vrne 128 bitov šifriranih podatkov kot izhod. Ta postopek se ponavlja, dokler vsi podatki, ki jih je treba šifrirati, niso podvrženi temu postopku.

java razčleni niz na int

Dešifriranje:
Stopnje v krogih je mogoče preprosto razveljaviti, saj imajo te stopnje nasprotje, ki po izvedbi razveljavi spremembe. Vsakih 128 blokov gre skozi 10, 12 ali 14 krogov, odvisno od velikosti ključa.

Faze vsakega kroga dešifriranja so naslednje:

  • Dodajte okrogel ključ
  • Inverzni mešani stolpci
  • ShiftRows
  • Inverzni podbajt

Postopek dešifriranja je postopek šifriranja, ki poteka v obratni smeri, zato bom razložil korake z opaznimi razlikami.

Inverzni mešani stolpci:
Ta korak je podoben koraku MixColumns pri šifriranju, vendar se razlikuje po matriki, ki se uporablja za izvedbo operacije.

 [ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>

Inverzni podbajti:
Inverzni S-box se uporablja kot iskalna tabela in s pomočjo katere se med dešifriranjem zamenjajo bajti.

Aplikacije:

AES se pogosto uporablja v številnih aplikacijah, ki zahtevajo varno shranjevanje in prenos podatkov. Nekateri običajni primeri uporabe vključujejo:

    Brezžična varnost: AES se uporablja pri varovanju brezžičnih omrežij, kot so omrežja Wi-Fi, da se zagotovi zaupnost podatkov in prepreči nepooblaščen dostop. Šifriranje baze podatkov: AES je mogoče uporabiti za šifriranje občutljivih podatkov, shranjenih v zbirkah podatkov. To pomaga zaščititi osebne podatke, finančne evidence in druge zaupne podatke pred nepooblaščenim dostopom v primeru kršitve podatkov. Varne komunikacije: AES se pogosto uporablja v protokolih, kot so internetna komunikacija, e-pošta, takojšnje sporočanje in glasovni/video klici. Zagotavlja, da podatki ostanejo zaupni. Shranjevanje podatkov: AES se uporablja za šifriranje občutljivih podatkov, shranjenih na trdih diskih, pogonih USB in drugih medijih za shranjevanje, ter jih ščiti pred nepooblaščenim dostopom v primeru izgube ali kraje. Navidezna zasebna omrežja (VPN): AES se pogosto uporablja v protokolih VPN za zaščito komunikacije med uporabnikovo napravo in oddaljenim strežnikom. Zagotavlja, da podatki, poslani in prejeti prek VPN, ostanejo zasebni in jih prisluškovalci ne morejo dešifrirati. Varno shranjevanje gesel: Šifriranje AES se običajno uporablja za varno shranjevanje gesel. Namesto shranjevanja gesel v navadnem besedilu je shranjena šifrirana različica. To dodaja dodatno raven varnosti in ščiti uporabniške poverilnice v primeru nepooblaščenega dostopa do shrambe. Šifriranje datotek in diskov: AES se uporablja za šifriranje datotek in map v računalnikih, zunanjih napravah za shranjevanje in shranjevanju v oblaku. Varuje občutljive podatke, shranjene v napravah ali med prenosom podatkov, da prepreči nepooblaščen dostop.

Povzetek:
Nabor navodil AES je zdaj integriran v CPE (ponuja prepustnost več GB/s) za izboljšanje hitrosti in varnosti aplikacij, ki uporabljajo AES za šifriranje in dešifriranje. Čeprav je od uvedbe minilo že 20 let, nam algoritma AES ni uspelo zlomiti, saj je neizvedljiv tudi s trenutno tehnologijo. Do danes ostaja edina ranljivost v implementaciji algoritma.