Advanced Encryption Standard (AES) je špecifikácia pre šifrovanie elektronických údajov zavedená americkým Národným inštitútom pre štandardy a technológie (NIST) v roku 2001. AES je dnes široko používaný, pretože je oveľa silnejší ako DES a trojitý DES napriek tomu, že je náročnejší. vykonávať.
Body na zapamätanie
- AES je bloková šifra.
- Veľkosť kľúča môže byť 128/192/256 bitov.
- Šifruje dáta v blokoch po 128 bitoch.
To znamená, že potrebuje 128 bitov ako vstup a výstup 128 bitov šifrovaného textu ako výstup. AES sa spolieha na princíp substitučnej permutačnej siete, čo znamená, že sa vykonáva pomocou série prepojených operácií, ktoré zahŕňajú nahradenie a premiešanie vstupných údajov.
ako čítať zo súboru csv v jave
Fungovanie šifry:
AES vykonáva operácie s bajtmi údajov a nie s bitmi. Keďže veľkosť bloku je 128 bitov, šifra spracováva 128 bitov (alebo 16 bajtov) vstupných dát naraz.
Počet kôl závisí od dĺžky kľúča takto:
- 128-bitový kľúč – 10 kôl
- 192 bitový kľúč – 12 kôl
- 256 bitový kľúč – 14 kôl
Vytvorenie okrúhlych kľúčov:
Algoritmus Key Schedule sa používa na výpočet všetkých okrúhlych kľúčov z kľúča. Počiatočný kľúč sa teda používa na vytvorenie mnohých rôznych okrúhlych kľúčov, ktoré sa použijú v príslušnom kole šifrovania.

Šifrovanie:
AES považuje každý blok za 16 bajtovú (4 bajty x 4 bajty = 128) mriežku v usporiadaní stĺpcov.
[ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>
Každé kolo pozostáva zo 4 krokov:
- SubBytes
- ShiftRows
- MixColumns
- Pridať okrúhly kľúč
Posledné kolo nemá kolo MixColumns.
SubBytes vykoná substitúciu a ShiftRows a MixColumns vykonajú permutáciu v algoritme.
Podbajty:
Tento krok implementuje substitúciu.
V tomto kroku je každý bajt nahradený iným bajtom. Vykonáva sa pomocou vyhľadávacej tabuľky nazývanej aj S-box. Táto substitúcia sa vykonáva tak, že bajt nie je nikdy nahradený sám sebou a tiež nie je nahradený iným bajtom, ktorý je komplimentom aktuálneho bajtu. Výsledkom tohto kroku je matica 16 bajtov (4 x 4 ) ako predtým.
Nasledujúce dva kroky implementujú permutáciu.
ShiftRows:
Tento krok je presne taký, ako znie. Každý riadok je posunutý určitý počet krát.
- Prvý riadok nie je posunutý
- Druhý riadok sa posunie raz doľava.
- Tretí riadok je posunutý dvakrát doľava.
- Štvrtý riadok je posunutý trikrát doľava.
(Vykoná sa kruhový posun doľava.)
[ 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:
Tento krok je v podstate násobením matice. Každý stĺpec je vynásobený špecifickou maticou a tým sa mení pozícia každého bajtu v stĺpci.
Tento krok sa v poslednom kole preskočí.
[ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]>
Pridať okrúhle kľúče:
Teraz je výsledný výstup predchádzajúcej fázy XOR-ed s príslušným okrúhlym kľúčom. Tu sa 16 bajtov nepovažuje za mriežku, ale len za 128 bitov údajov.

Po všetkých týchto kolách sa ako výstup vráti 128 bitov zašifrovaných dát. Tento proces sa opakuje, kým všetky údaje, ktoré sa majú zašifrovať, neprejdú týmto procesom.
Dešifrovanie:
Etapy v kolách sa dajú ľahko vrátiť späť, pretože tieto etapy majú protiklad, ktorý po vykonaní vráti zmeny. Každých 128 blokov prejde 10, 12 alebo 14 kolami v závislosti od veľkosti kľúča.
Fázy každého kola dešifrovania sú nasledovné:
prečítajte si súbor csv v jazyku Java
- Pridajte okrúhly kľúč
- Inverzné MixColumns
- ShiftRows
- Inverse SubByte
Proces dešifrovania je proces šifrovania vykonaný naopak, takže vysvetlím kroky s výraznými rozdielmi.
Inverse MixColumns :
Tento krok je podobný kroku MixColumns v šifrovaní, ale líši sa maticou použitou na vykonanie operácie.
[ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>
Inverzné podbajty:
Inverzný S-box sa používa ako vyhľadávacia tabuľka, pomocou ktorej sa pri dešifrovaní nahrádzajú bajty.
Aplikácie:
AES je široko používaný v mnohých aplikáciách, ktoré vyžadujú bezpečné ukladanie a prenos dát. Niektoré bežné prípady použitia zahŕňajú:
- Bezdrôtové zabezpečenie: AES sa používa na zabezpečenie bezdrôtových sietí, ako sú siete Wi-Fi, aby sa zabezpečila dôvernosť údajov a zabránilo sa neoprávnenému prístupu. Šifrovanie databázy: AES možno použiť na šifrovanie citlivých údajov uložených v databázach. Pomáha to chrániť osobné informácie, finančné záznamy a ďalšie dôverné údaje pred neoprávneným prístupom v prípade porušenia údajov. Bezpečná komunikácia: AES sa široko používa v protokoloch, ako je internetová komunikácia, e-mail, okamžité správy a hlasové/video hovory. Zabezpečuje, že údaje zostanú dôverné. Ukladanie údajov: AES sa používa na šifrovanie citlivých údajov uložených na pevných diskoch, USB diskoch a iných pamäťových médiách, čím ich chráni pred neoprávneným prístupom v prípade straty alebo krádeže. Virtuálne súkromné siete (VPN): AES sa bežne používa v protokoloch VPN na zabezpečenie komunikácie medzi zariadením používateľa a vzdialeným serverom. Zabezpečuje, že dáta odosielané a prijímané cez VPN zostanú súkromné a nemôžu byť dešifrované odposluchmi. Bezpečné ukladanie hesiel: Na bezpečné ukladanie hesiel sa bežne používa šifrovanie AES. Namiesto ukladania hesiel s obyčajným textom sa ukladá šifrovaná verzia. To pridáva ďalšiu vrstvu zabezpečenia a chráni používateľské poverenia v prípade neoprávneného prístupu k úložisku. Šifrovanie súborov a diskov: AES sa používa na šifrovanie súborov a priečinkov v počítačoch, externých úložných zariadeniach a cloudových úložiskách. Chráni citlivé údaje uložené v zariadeniach alebo počas prenosu údajov, aby sa zabránilo neoprávnenému prístupu.
Zhrnutie:
Inštrukčná sada AES je teraz integrovaná do CPU (ponúka priepustnosť niekoľkých GB/s), aby sa zvýšila rýchlosť a bezpečnosť aplikácií, ktoré používajú AES na šifrovanie a dešifrovanie. Aj keď od jeho predstavenia ubehlo už 20 rokov, nepodarilo sa nám prelomiť algoritmus AES, keďže je nerealizovateľný ani so súčasnou technológiou. Doposiaľ jedinou slabinou zostáva implementácia algoritmu.