0Pricing
Cryptology Academy · Lezione

OAEP: Optimal Asymmetric Encryption Padding

Segua la codifica OAEP e scopra come garantisce la sicurezza IND-CCA2.

OAEP: Optimal Asymmetric Encryption Padding è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuto

OAEP (Optimal Asymmetric Encryption Padding) fornisce una cifratura RSA con sicurezza IND-CCA2 dimostrabile. Utilizza una codifica casuale che rende crittograficamente prive di valore le richieste all'oracolo.

Obiettivi di OAEP

OAEP è stato progettato da Bellare e Rogaway (1994) con due obiettivi: (1) impedire tutti gli attacchi al RSA da manuale tramite la randomizzazione, (2) raggiungere la sicurezza IND-CCA2 con una dimostrazione formale nel modello dell'oracolo casuale.

Input di OAEP

M: messaggio da cifrare (|M| ≤ |n| - 2*hLen - 2 byte) L: etichetta facoltativa (solitamente vuota) MGF: Mask Generation Function (basata su SHA-256) r: seed casuale (hLen byte)

Passaggio 1 della codifica OAEP: blocco dati

DB = lHash || PS || 0x01 || M dove: - lHash = Hash(L) (hash dell'etichetta) - PS = byte zero usati per raggiungere la lunghezza fissa - 0x01 indica l'inizio del messaggio

Passaggio 2 della codifica OAEP: mascheramento

maskedDB = DB XOR MGF(r, len(DB)) maskedSeed = r XOR MGF(maskedDB, hLen) EM = 0x00 || maskedSeed || maskedDB Questo è il messaggio con padding fornito alla cifratura RSA.

MGF1: Mask Generation Function

MGF1(Z, L) = Hash(Z || 0x00000000) || Hash(Z || 0x00000001) || ... MGF1 con SHA-256 genera un output pseudocasuale di lunghezza arbitraria a partire da un seed. Viene utilizzata in OAEP e RSA-PSS.

Decodifica OAEP

Dato EM: 1. Separare maskedSeed e maskedDB 2. r = maskedSeed XOR MGF(maskedDB, hLen) 3. DB = maskedDB XOR MGF(r, len(DB)) 4. Verificare che lHash corrisponda; trovare il separatore 0x01; estrarre M 5. Qualsiasi errore → decifratura non riuscita (sempre lo stesso errore)

Perché OAEP sconfigge gli attacchi agli oracoli

Il seed casuale r di OAEP cambia a ogni cifratura. Con probabilità schiacciante, un testo cifrato modificato viene decifrato in un messaggio con padding uniformemente casuale. L'oracolo vede "non valido" per tutte le modifiche.

Sicurezza IND-CCA2

IND-CCA2 (Indistinguishability under Chosen-Ciphertext Attack 2): l'attaccante non può distinguere Enc(M0) da Enc(M1), anche avendo accesso a un oracolo di decifratura per tutti i testi cifrati tranne quello della sfida. OAEP raggiunge questa proprietà.

OAEP e v1.5 nella pratica

Libreria Python cryptography: utilizzi padding.OAEP(), non padding.PKCS1v15(). Java: utilizzi il cifrario 'RSA/ECB/OAEPWithSHA-256AndMGF1Padding'. Non utilizzi mai 'RSA/ECB/PKCS1Padding' per il nuovo codice.

Dimensione massima del messaggio con OAEP

Per RSA-2048 con SHA-256: Messaggio massimo = 256 - 2×32 - 2 = 190 byte L'overhead di OAEP è di 2×hLen + 2 byte. Per messaggi più lunghi, utilizzi la cifratura ibrida AES: cifri la chiave AES con OAEP e i dati con AES-GCM.

Verifica rapida

Quale proprietà rende OAEP resistente agli attacchi tramite oracolo del padding?

Riepilogo

OAEP fornisce una sicurezza dimostrabile per la cifratura RSA. Ora studieremo RSA-PSS, il miglioramento analogo per le firme RSA.

Domande Frequenti

La lezione «OAEP: Optimal Asymmetric Encryption Padding» è gratuita?

Sì — il testo completo di «OAEP: Optimal Asymmetric Encryption Padding» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «OAEP: Optimal Asymmetric Encryption Padding»?

Segua la codifica OAEP e scopra come garantisce la sicurezza IND-CCA2. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «OAEP: Optimal Asymmetric Encryption Padding»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. RSA teorico e perché è insicuro
  2. Padding PKCS#1 v1.5 e Bleichenbacher
  3. OAEP: Optimal Asymmetric Encryption Padding
  4. RSA-PSS per le firme digitali
← Torna a Cryptology Academy