Cryptology Academy · Lektion

CTR-läge och strömchifferbeteende

Använd räknarläget för att omvandla ett blockchiffer till en keystream-generator.

Lektion 3 av 413 steg

CTR-läge och strömchifferbeteende är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Välkommen

Counter-läget (CTR) omvandlar vilket blockchiffer som helst till ett strömchiffer. Det kan köras parallellt, kräver ingen padding och utgör grunden för AES-GCM. Nu ska vi behärska det.

CTR-lägets princip

Skapa en keystream genom att kryptera successiva räknarvärden: Keystream[i] = AES(K, Nonce || Counter_i) Ciphertext = Plaintext XOR Keystream Räknaren ökas för varje block. Dekryptering är identisk med kryptering.

CTR kontra CBC

CBC: sekventiell kryptering (varje block beror på föregående block). CTR: helt parallelliserbart (varje block är oberoende). För en fil på 1 GB kan CTR använda alla processorkärnor, medan CBC inte kan det.

Ingen utfyllnad krävs

CTR genererar en nyckelström av valfri längd. XOR:a med klartexten byte för byte. Ett meddelande på 100 byte använder 100 byte nyckelström – ingen utfyllnad behövs. Utmärkt för strömmande data.

Struktur för nonce och räknare

Vanlig uppdelning för ett 128-bitars AES-block: - 64-bitars slumpmässig nonce (unik per meddelande) - 64-bitars räknare (ökas för varje block) Alternativt 96-bitars nonce + 32-bitars räknare (GCM-standarden). Det är avgörande att nonce-värden är unika – återanvänd aldrig ett par av typen (nonce, nyckel).

Attack vid återanvändning av nonce i CTR

CTR med samma (nyckel, nonce) producerar samma nyckelström. Om två olika meddelanden krypteras gäller: C1 XOR C2 = P1 XOR P2. Precis som vid en attack med en engångsnyckel som återanvänds flera gånger. Det leder till ett katastrofalt informationsläckage.

Slumpmässig åtkomst i CTR

CTR tillåter slumpmässig åtkomst: för att dekryptera block 1000 beräknas AES(K, Nonce || 1000) direkt. Tidigare block behöver inte dekrypteras. Idealiskt för databaser och diskkryptering (i kombination med andra lägen).

CTR i Python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os nonce = os.urandom(16) # Used as counter start cipher = Cipher(algorithms.AES(key), modes.CTR(nonce)) enc = cipher.encryptor() ciphertext = enc.update(plaintext) + enc.finalize()

CTR och felpropagering

I CTR-läge vänder en enda förvanskad bit i chiffertexten exakt en bit i klartexten. Fel sprids inte till andra block, till skillnad från CBC där ett skadat block förstör nästa block. Bra för brusiga kanaler.

SIV-läge för motståndskraft mot felaktig nonce-användning

AES-SIV (Synthetic IV) är motståndskraftigt mot felaktig användning av nonce: även om nonce-värdet återanvänds avslöjas endast om klartexterna är identiska – inte de fullständiga klartexterna. Används i situationer där det är svårt att garantera att nonce-värden är unika.

Från CTR till GCM

AES-GCM = AES-CTR + autentisering med GHASH. Räknarläget hanterar krypteringen. GHASH beräknar en autentiseringstagg med hjälp av multiplikation i en Galoisk kropp. Tillsammans ger de autentiserad kryptering.

Snabbkontroll

Vilken är den främsta fördelen med CTR-läge jämfört med CBC-läge vid kryptering av stora datamängder?

Sammanfattning

CTR-läget är nu behärskat! Nästa steg är att kombinera det med autentisering i AES-GCM för att uppnå autentiserad kryptering.
Gratis att börja

Lär dig Cryptology Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
67
Lektioner
261

Vanliga frågor

Är lektionen ”CTR-läge och strömchifferbeteende” gratis?

Ja – hela texten till ”CTR-läge och strömchifferbeteende” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”CTR-läge och strömchifferbeteende”?

Använd räknarläget för att omvandla ett blockchiffer till en keystream-generator. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?

Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”CTR-läge och strömchifferbeteende”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?

Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i blockchiffer och utfyllnad
  2. ECB jämfört med CBC: mönster och IV:er
  3. CTR-läge och strömchifferbeteende
  4. GCM och autentiserad kryptering
← Tillbaka till Cryptology Academy