Cryptology Academy · Lektion

OAEP: optimal asymmetrisk krypteringsutfyllnad

Gå igenom OAEP-kodning och hur den uppnår IND-CCA2-säkerhet.

Lektion 3 av 413 steg

OAEP: optimal asymmetrisk krypteringsutfyllnad ä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

OAEP (Optimal Asymmetric Encryption Padding) ger RSA-kryptering med bevisad IND-CCA2-säkerhet. Det använder en randomiserad kodning som gör orakelfrågor kryptografiskt värdelösa.

OAEP:s mål

OAEP utformades av Bellare och Rogaway (1994) med två mål: (1) förhindra alla textbook RSA-attacker genom randomisering, (2) uppnå IND-CCA2-säkerhet med ett formellt säkerhetsbevis i modellen med slumpmässiga orakel.

OAEP:s indata

M: meddelande som ska krypteras (|M| ≤ |n| - 2*hLen - 2 byte) L: valfri etikett (vanligtvis tom) MGF: Mask Generation Function (baserad på SHA-256) r: slumpmässigt frö (hLen byte)

OAEP-kodning steg 1: datablock

DB = lHash || PS || 0x01 || M där: - lHash = Hash(L) (hash av etiketten) - PS = nollbyte som fyller ut till fast längd - 0x01 markerar meddelandets början

OAEP-kodning steg 2: maskering

maskedDB = DB XOR MGF(r, len(DB)) maskedSeed = r XOR MGF(maskedDB, hLen) EM = 0x00 || maskedSeed || maskedDB Detta är det paddade meddelande som matas in i RSA-krypteringen.

MGF1: Mask Generation Function

MGF1(Z, L) = Hash(Z || 0x00000000) || Hash(Z || 0x00000001) || ... MGF1 med SHA-256 genererar pseudorandom output av godtycklig längd från ett frö. Det används i OAEP och RSA-PSS.

OAEP-avkodning

Givet EM: 1. Dela upp i maskedSeed och maskedDB 2. r = maskedSeed XOR MGF(maskedDB, hLen) 3. DB = maskedDB XOR MGF(r, len(DB)) 4. Verifiera att lHash stämmer, hitta avgränsaren 0x01 och extrahera M 5. Alla fel → dekrypteringen misslyckades (alltid samma fel)

Varför OAEP står emot orakelattacker

OAEP:s slumpmässiga frö r ändras vid varje kryptering. En modifierad chiffertext dekrypteras med överväldigande sannolikhet till ett likformigt slumpmässigt paddat meddelande. Oraklet ser ”ogiltig” för alla modifieringar.

IND-CCA2-säkerhet

IND-CCA2 (outrskiljbarhet under vald chiffertextattack 2): en angripare kan inte skilja Enc(M0) från Enc(M1), även med tillgång till ett dekrypteringsorakel för alla chiffertexter utom utmaningen. OAEP uppnår detta.

OAEP jämfört med v1.5 i praktiken

Python cryptography-biblioteket: använd padding.OAEP(), inte padding.PKCS1v15(). Java: använd chiffret 'RSA/ECB/OAEPWithSHA-256AndMGF1Padding'. Använd aldrig 'RSA/ECB/PKCS1Padding' i ny kod.

OAEP:s maximala meddelandelängd

För RSA-2048 med SHA-256: Maximal meddelandelängd = 256 - 2×32 - 2 = 190 byte OAEP:s overhead är 2×hLen + 2 byte. För längre meddelanden används hybridkryptering med AES: kryptera AES-nyckeln med OAEP och data med AES-GCM.

Snabb kontroll

Vilken egenskap gör OAEP motståndskraftigt mot padding-orakelattacker?

Sammanfattning

OAEP ger bevisad säkerhet för RSA-kryptering. Härnäst studerar vi RSA-PSS – den motsvarande förbättringen för RSA-signaturer.
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 ”OAEP: optimal asymmetrisk krypteringsutfyllnad” gratis?

Ja – hela texten till ”OAEP: optimal asymmetrisk krypteringsutfyllnad” 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 ”OAEP: optimal asymmetrisk krypteringsutfyllnad”?

Gå igenom OAEP-kodning och hur den uppnår IND-CCA2-säkerhet. 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 ”OAEP: optimal asymmetrisk krypteringsutfyllnad”?

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. RSA enligt läroboken och varför det är osäkert
  2. PKCS#1 v1.5-utfyllnad och Bleichenbacher
  3. OAEP: optimal asymmetrisk krypteringsutfyllnad
  4. RSA-PSS för digitala signaturer
← Tillbaka till Cryptology Academy