logo

Advanced Encryption Standard (AES)

Advanced Encryption Standard (AES) er en specifikation for kryptering af elektroniske data etableret af U.S. National Institute of Standards and Technology (NIST) i 2001. AES er meget udbredt i dag, da det er meget stærkere end DES og triple DES på trods af at det er sværere at implementere.

Punkter at huske



  • AES er en blokcifre.
  • Nøglestørrelsen kan være 128/192/256 bit.
  • Krypterer data i blokke på 128 bit hver.

Det betyder, at den tager 128 bit som input og udsender 128 bit krypteret krypteret tekst som output. AES er afhængig af substitutions-permutationsnetværksprincippet, hvilket betyder, at det udføres ved hjælp af en række forbundne operationer, som involverer udskiftning og blanding af inputdata.

eksempler på java-kode

Funktionen af ​​chifferen:
AES udfører operationer på bytes af data i stedet for i bits. Da blokstørrelsen er 128 bit, behandler chifferen 128 bit (eller 16 bytes) af inputdata ad gangen.

Antallet af runder afhænger af nøglelængden som følger:



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

Oprettelse af runde nøgler:
En Key Schedule-algoritme bruges til at beregne alle runde nøgler fra nøglen. Så den indledende nøgle bruges til at skabe mange forskellige runde nøgler, som vil blive brugt i den tilsvarende runde af krypteringen.

Kryptering:
AES betragter hver blok som et 16 byte (4 byte x 4 byte = 128) gitter i et kolonne hovedarrangement.



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

Hver runde består af 4 trin:

  • Subbytes
  • ShiftRows
  • BlandKolonner
  • Tilføj rundnøgle

Den sidste runde har ikke MixColumns-runden.

SubBytes udfører substitutionen, og ShiftRows og MixColumns udfører permutationen i algoritmen.

Subbytes:
Dette trin implementerer substitutionen.

I dette trin erstattes hver byte med en anden byte. Den udføres ved hjælp af en opslagstabel også kaldet S-boksen. Denne substitution udføres på en måde, så en byte aldrig erstattes af sig selv og heller ikke erstattes af en anden byte, som er et kompliment til den aktuelle byte. Resultatet af dette trin er en 16 byte (4 x 4) matrix som før.

De næste to trin implementerer permutationen.

ShiftRows:
Dette trin er præcis, som det lyder. Hver række flyttes et bestemt antal gange.

  • Den første række er ikke forskudt
  • Den anden række flyttes én gang til venstre.
  • Den tredje række flyttes to gange til venstre.
  • Den fjerde række flyttes tre gange til venstre.

(Et venstre cirkulært skift udfø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 ]>

Blandkolonner:
Dette trin er grundlæggende en matrixmultiplikation. Hver kolonne multipliceres med en bestemt matrix, og dermed ændres placeringen af ​​hver byte i kolonnen som et resultat.

Dette trin springes over i sidste 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 ]>

Tilføj rundnøgler:
Nu er det resulterende output fra det foregående trin XOR-ed med den tilsvarende runde nøgle. Her betragtes de 16 bytes ikke som et gitter, men bare som 128 bits data.

Efter alle disse runder bliver 128 bit krypterede data givet tilbage som output. Denne proces gentages, indtil alle de data, der skal krypteres, gennemgår denne proces.

Dekryptering:
Etaperne i runderne kan nemt fortrydes, da disse stadier har en modsætning til det, som når de udføres, vender ændringerne tilbage. Hver 128 blokke går gennem de 10, 12 eller 14 runder afhængigt af nøglestørrelsen.

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

  • Tilføj rund nøgle
  • Omvendt blandingskolonner
  • ShiftRows
  • Omvendt SubByte

Dekrypteringsprocessen er krypteringsprocessen udført omvendt, så jeg vil forklare trinene med bemærkelsesværdige forskelle.

Inverse blandingskolonner:
Dette trin ligner MixColumns-trinnet i kryptering, men adskiller sig i den matrix, der bruges til at udføre handlingen.

 [ 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:
Omvendt S-boks bruges som en opslagstabel, og ved hjælp af hvilken bytes erstattes under dekryptering.

Ansøgninger:

mysql show brugere

AES er meget udbredt i mange applikationer, som kræver sikker datalagring og transmission. Nogle almindelige brugstilfælde omfatter:

    Trådløs sikkerhed: AES bruges til at sikre trådløse netværk, såsom Wi-Fi-netværk, for at sikre datafortrolighed og forhindre uautoriseret adgang. Databasekryptering: AES kan anvendes til at kryptere følsomme data gemt i databaser. Dette hjælper med at beskytte personlige oplysninger, økonomiske optegnelser og andre fortrolige data mod uautoriseret adgang i tilfælde af et databrud. Sikker kommunikation: AES er meget udbredt i protokoller som f.eks. internetkommunikation, e-mail, instant messaging og stemme-/videoopkald. Det sikrer, at dataene forbliver fortrolige. Datalagring: AES bruges til at kryptere følsomme data, der er gemt på harddiske, USB-drev og andre lagringsmedier, og beskytter dem mod uautoriseret adgang i tilfælde af tab eller tyveri. Virtual Private Networks (VPN'er): AES bruges almindeligvis i VPN-protokoller til at sikre kommunikationen mellem en brugers enhed og en fjernserver. Det sikrer, at data, der sendes og modtages via VPN'en, forbliver private og ikke kan dechifreres af aflurere. Sikker lagring af adgangskoder: AES-kryptering bruges almindeligvis til at opbevare adgangskoder sikkert. I stedet for at gemme kodeord i almindelig tekst, gemmes den krypterede version. Dette tilføjer et ekstra lag af sikkerhed og beskytter brugerlegitimationsoplysninger i tilfælde af uautoriseret adgang til lageret. Fil- og diskkryptering: AES bruges til at kryptere filer og mapper på computere, eksterne lagerenheder og skylager. Det beskytter følsomme data gemt på enheder eller under dataoverførsel for at forhindre uautoriseret adgang.

Resumé :
AES-instruktionssæt er nu integreret i CPU'en (tilbyder en gennemstrømning på flere GB/s) for at forbedre hastigheden og sikkerheden af ​​applikationer, der bruger AES til kryptering og dekryptering. Selvom det er 20 år siden introduktionen, har vi undladt at bryde AES-algoritmen, da den er umulig selv med den nuværende teknologi. Indtil nu er den eneste sårbarhed tilbage i implementeringen af ​​algoritmen.