logo

Advanced Encryption Standard (AES)

Advanced Encryption Standard (AES) er en spesifikasjon for kryptering av elektroniske data etablert av U.S. National Institute of Standards and Technology (NIST) i 2001. AES er mye brukt i dag da det er mye sterkere enn DES og trippel DES til tross for at det er vanskeligere å implementere.

Poeng å huske



  • AES er et blokkchiffer.
  • Nøkkelstørrelsen kan være 128/192/256 biter.
  • Krypterer data i blokker på 128 bit hver.

Det betyr at den tar 128 biter som input og sender ut 128 biter med kryptert chiffertekst som utdata. AES er avhengig av substitusjon-permutasjonsnettverksprinsippet som betyr at det utføres ved hjelp av en serie koblede operasjoner som involverer erstatning og stokking av inngangsdata.

omvendt streng java

Arbeidet med chifferen:
AES utfører operasjoner på byte med data i stedet for i biter. Siden blokkstørrelsen er 128 biter, behandler chifferen 128 biter (eller 16 byte) av inngangsdataene om gangen.

Antall runder avhenger av nøkkellengden som følger:



  • 128 bit nøkkel – 10 runder
  • 192 bit nøkkel – 12 runder
  • 256 bit nøkkel – 14 runder

Oppretting av rundnøkler:
En Key Schedule-algoritme brukes til å beregne alle runde nøkler fra nøkkelen. Så den første nøkkelen brukes til å lage mange forskjellige rundnøkler som vil bli brukt i den tilsvarende runden av krypteringen.

Kryptering:
AES betrakter hver blokk som et 16 byte (4 byte x 4 byte = 128 ) rutenett i en kolonne hovedarrangement.



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

Hver runde består av 4 trinn:

  • SubByte
  • ShiftRows
  • Bland kolonner
  • Legg til rundnøkkel

Den siste runden har ikke MixColumns-runden.

SubBytes utfører substitusjonen og ShiftRows og MixColumns utfører permutasjonen i algoritmen.

SubByte:
Dette trinnet implementerer substitusjonen.

I dette trinnet erstattes hver byte med en annen byte. Den utføres ved hjelp av en oppslagstabell også kalt S-boksen. Denne substitusjonen gjøres på en måte at en byte aldri erstattes av seg selv og heller ikke erstattes av en annen byte som er et kompliment til den nåværende byten. Resultatet av dette trinnet er en 16 byte (4 x 4) matrise som før.

De neste to trinnene implementerer permutasjonen.

ShiftRows:
Dette trinnet er akkurat som det høres ut. Hver rad forskyves et bestemt antall ganger.

  • Den første raden er ikke forskjøvet
  • Den andre raden flyttes én gang til venstre.
  • Den tredje raden flyttes to ganger til venstre.
  • Den fjerde raden flyttes tre ganger til venstre.

(Et venstre sirkulært skifte utføres.)

 [ 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 ]>

Bland kolonner:
Dette trinnet er i utgangspunktet en matrisemultiplikasjon. Hver kolonne multipliseres med en spesifikk matrise og dermed endres posisjonen til hver byte i kolonnen som et resultat.

Dette trinnet hoppes over i siste runde.

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

Legg til rundnøkler:
Nå er den resulterende utgangen fra forrige trinn XOR-ed med den tilsvarende runde nøkkelen. Her regnes ikke de 16 bytene som et rutenett, men bare som 128 biter med data.

Etter alle disse rundene blir 128 biter med kryptert data gitt tilbake som utdata. Denne prosessen gjentas til alle dataene som skal krypteres, gjennomgår denne prosessen.

Dekryptering:
Stadiene i rundene kan enkelt angres da disse stadiene har en motsetning til seg som når de utføres reverserer endringene. Hver 128 blokker går gjennom de 10,12 eller 14 rundene avhengig av nøkkelstørrelsen.

Stadiene i hver runde i dekryptering er som følger:

  • Legg til rund nøkkel
  • Inverse blandingskolonner
  • ShiftRows
  • Invers SubByte

Dekrypteringsprosessen er krypteringsprosessen som gjøres omvendt, så jeg vil forklare trinnene med bemerkelsesverdige forskjeller.

Inverse blandingskolonner:
Dette trinnet ligner på MixColumns-trinnet i kryptering, men er forskjellig i matrisen som brukes til å utføre operasjonen.

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

Inverse subbytes:
Invers S-boks brukes som en oppslagstabell og bruker som bytene erstattes under dekryptering.

Applikasjoner:

mysql show-brukere

AES er mye brukt i mange applikasjoner som krever sikker datalagring og overføring. Noen vanlige brukstilfeller inkluderer:

    Trådløs sikkerhet: AES brukes til å sikre trådløse nettverk, for eksempel Wi-Fi-nettverk, for å sikre datakonfidensialitet og forhindre uautorisert tilgang. Databasekryptering: AES kan brukes for å kryptere sensitive data som er lagret i databaser. Dette bidrar til å beskytte personlig informasjon, økonomiske poster og andre konfidensielle data mot uautorisert tilgang i tilfelle et databrudd. Sikker kommunikasjon: AES er mye brukt i protokoller som internettkommunikasjon, e-post, direktemeldinger og tale-/videosamtaler. Det sikrer at dataene forblir konfidensielle. Datalagring: AES brukes til å kryptere sensitive data som er lagret på harddisker, USB-stasjoner og andre lagringsmedier, og beskytter dem mot uautorisert tilgang i tilfelle tap eller tyveri. Virtuelle private nettverk (VPN): AES brukes ofte i VPN-protokoller for å sikre kommunikasjonen mellom en brukers enhet og en ekstern server. Det sikrer at data som sendes og mottas gjennom VPN forblir private og ikke kan tydes av avlyttere. Sikker lagring av passord: AES-kryptering brukes ofte for å lagre passord sikkert. I stedet for å lagre passord i ren tekst, lagres den krypterte versjonen. Dette legger til et ekstra lag med sikkerhet og beskytter brukerlegitimasjon i tilfelle uautorisert tilgang til lagringen. Fil- og diskkryptering: AES brukes til å kryptere filer og mapper på datamaskiner, eksterne lagringsenheter og skylagring. Den beskytter sensitive data som er lagret på enheter eller under dataoverføring for å forhindre uautorisert tilgang.

Sammendrag:
AES instruksjonssett er nå integrert i CPU (tilbyr gjennomstrømning på flere GB/s) for å forbedre hastigheten og sikkerheten til applikasjoner som bruker AES for kryptering og dekryptering. Selv om det har gått 20 år siden introduksjonen, har vi ikke klart å bryte AES-algoritmen siden den er umulig selv med dagens teknologi. Til dags dato gjenstår den eneste sårbarheten i implementeringen av algoritmen.