Cryptology Academy · Lektion

Grundprincipper i blokchifre og padding

Forstå blokstørrelse, PKCS7-padding og chifferstruktur.

Lektion 1 af 413 trin

Grundprincipper i blokchifre og padding er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Velkommen

Blokchiffre krypterer blokke med en fast størrelse. Når klarteksten ikke udfylder en hel blok, har vi brug for padding. I denne lektion lærer du blokchifferets struktur, padding-metoderne og deres betydning grundigt.

Gennemgang af blokstørrelser

AES bruger blokke på 128 bit (16 byte). DES brugte blokke på 64 bit (8 byte). Hvis klarteksten er præcis 16 byte, er den én blok. 17 byte kræver to blokke.

Hvorfor padding er nødvendig

Hvis klarteksten er 20 byte, indeholder den anden blok kun 4 byte. Chifferet kræver en hel blok på 16 byte. Vi udfylder de resterende 12 byte med en deterministisk og reversibel metode.

PKCS#7-padding

PKCS#7 udfylder med N byte, som hver har værdien N: - Der mangler 3 byte → tilføj: 03 03 03 - Der mangler 12 byte → tilføj: 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C - Der mangler 0 byte → tilføj en hel blok på 16: 10×16

Tilføj altid en hel blok med padding

Hvis klarteksten er præcis 16 byte, tilføjer PKCS#7 en ekstra hel blok bestående af 0x10×16. Det sikrer, at modtageren altid ved, hvor padding slutter: den sidste byte angiver, hvor mange byte der skal fjernes.

PKCS#7 i Python

def pkcs7_pad(data: bytes, block_size: int = 16) -> bytes: n = block_size - (len(data) % block_size) return data + bytes([n] * n) def pkcs7_unpad(data: bytes) -> bytes: n = data[-1] return data[:-n]

Padding-orakelangreb

Hvis en server afslører, om padding er gyldig efter dekryptering (via en fejlmeddelelse eller timing), kan en angriber dekryptere chiffertekst byte for byte uden at kende nøglen. Det ramte ASP.NET ViewState i 2010.

Nul-padding og ANSI X.923

Nul-padding: udfyld med 0x00-byte (tvetydigt — de oprindelige data kan slutte med nuller). ANSI X.923: udfyld med nuller, sidste byte = antal. ISO 7816-4: første padding-byte = 0x80, resten = 0x00. PKCS#7 er entydig og foretrækkes.

Bitvis padding (CTS)

Ciphertext Stealing (CTS) undgår padding helt: den omarrangerer de sidste to blokke for at håndtere inddata, der ikke fylder en hel blok. Bruges i diskkryptering (Kerberos og visse AES-implementeringer).

Blokstørrelsens sikkerhedsmæssige betydning

Med 64-bit-blokke (DES, 3DES, Blowfish): opstår der en fødselsdagskollision efter 2^32 blokke (~32 GB). Browsere deaktiverede 3DES i TLS, efter at SWEET32-angrebet påviste dette i 2016. AES' 128-bit-blokke kræver 2^64 blokke — praktisk sikkert.

Tilstande uden padding

AES-CTR og AES-GCM kræver ikke padding: de bruger blokchifferet som en nøglestrømsgenerator og XOR'er inddata med vilkårlig længde. Blokgrænsen er kun en intern implementeringsdetalje.

Hurtigt tjek

Ved brug af PKCS#7 med blokke på 16 byte, hvilken padding tilføjes til en meddelelse på 13 byte?

Opsummering

Du har nu styr på padding til blokchiffre! Dernæst sammenligner vi ECB- og CBC-tilstande — begyndende med det berømte ECB-pingvinangreb.
Gratis at komme i gang

Lær Cryptology Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “Grundprincipper i blokchifre og padding” gratis?

Ja — hele teksten til “Grundprincipper i blokchifre og padding” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Grundprincipper i blokchifre og padding”?

Forstå blokstørrelse, PKCS7-padding og chifferstruktur. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Grundprincipper i blokchifre og padding”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?

Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Grundprincipper i blokchifre og padding
  2. ECB kontra CBC: Mønstre og IV'er
  3. CTR-tilstand og strømchifferadfærd
  4. GCM og autentificeret kryptering
← Tilbage til Cryptology Academy