RSA O PTIMAL A SYMMETRIC E NCRYPTION P ADDING Tecnologie per la Sicurezza LS Anno 2007 / 2008 Alessio Della Motta Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS
C ARATTERISTICHE DI RSA Cifrario asimmetrico deterministico A blocchi di testo in chiaro identici corrispondono blocchi uguali di testo cifrato Occorre rendere il cifrario probabilistico Esistono due standard: PKCS #1 v. 1.5 – Padding Casuale PKCS #1 v. 2.0 (OAEP) – Codifica più Complessa Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS
PKCS #1 V. 1.5 Lo standard impone di premettere al messaggio un padding di 88 bit Il formato è il seguente: 0x00 || 0x02 || r || 0x00 || m con r un numero casuale e m il messaggio da inviare. Oggi è sconsigliato e si raccomanda luso di OAEP In [1] viene mostrato un attacco CCA2 in grado di rompere il cifrario con PKCS #1 v Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS
C HOSEN C IPHERTEXT A TTACK Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS Lavversario dispone di un decryption oracle al quale può sottoporre testi cifrati a sua scelta; tuttavia, per non rendere banale lattacco, si suppone che il malintenzionato non possa sottoporre alloracolo il testo cifrato a cui è interessato. Non è una prospettiva puramente di studio: ad esempio un attaccante può avere a disposizione una macchina a cui sono dati i permessi di decifrare solo certe tipologie di messaggi. Questo attacco può essere svolto secondo due modalità: CCA1 – Indifferent Chosen Ciphertext Attack Accesso alloracolo prima di scegliere il testo cifrato di interesse CCA2 – Adaptive Chosen Ciphertext Attack Accesso alloracolo dopo aver scelto il testo cifrato di interesse
O PTIMAL A SYMMETRIC E NCRYPTION P ADDING (OAEP) Procedimento di codifica (EME – Encoding Method for Encryption) parametrizzabile Garantisce una buona soglia di casualità Stesso messaggio codificato in modi diversi Padding deterministico per il controllo dellintegrità Sicuro a fronte di attacchi del tipo CCA2 Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS
EME-OAEP-E NCODE Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS Primitiva di codifica: EME-OAEP-Encode (M, P, emLen) Opzioni: Hash – Hash Function MGF – Mask Generation Function Ingressi: M P emLen Uscita: EM – Messaggio codificato – Messaggio da codificare – Parametri di codifica, ovvero una stringa di byte – Lunghezza totale in byte del messaggio codificato
M ASK G ENERATION F UNCTION Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS MGF (Z, l) Opzioni: Hash – Funzione Hash, con output lungo hLen byte Ingressi: Z l Uscita: mask – Maschera di lunghezza l byte Tale funzione accetta in ingresso una stringa e ne restituisce unaltra di lunghezza specificata in input. Il comportamento di questa funzione è deterministico, ovvero per stringhe in ingresso identiche, si ottengono maschere identiche in uscita. Loutput deve essere pseudo-casuale, cioè, data una sua parte, non deve essere possibile prevedere il seguito. – Seed dal quale verrà generata la maschera – Lunghezza in byte della maschera che verrà generata, al massimo 2 32 hLen Lindice del ciclo non può essere contenuto nei registri macchina...
A LGORITMO MGF Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS string MGF (string Z, int l) { string T = ; if (l > exp (2, 32) * hLen) then { generate_error(mask too long); exit(1); } for (int i = 0; i < sup_int(l div hLen); i++) T = T || Hash (Z || i); return T; }
E NCODING P ASSO P ASSO... (1) Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 1)Poiché la stringa di parametri andrà in input alla funzione hash scelta, se la sua lunghezza eccede quella prevista da tale funzione verrà generato il seguente errore: 2)Se: mLen > emLen – 2hLen – 1, genera il seguente errore e termina: message too long parameter string too long Si vuole codificare tramite lo standard il seguente messaggio: M = d4 36 e fd 32 a7 c8 a0 5b bc 90 d3 2c 49 Si suppone che non ci siano parametri di ingresso e di volere in uscita un messaggio codificato lungo 127 byte. Invochiamo la funzione in questo modo: EME-OAEP-Encode (M, NULL, 127) Lalgoritmo di codifica prevede i seguenti passi:
E NCODING P ASSO P ASSO... (2) Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 3)Si genera una stringa PS di byte nulli (con tutti i bit a zero). In particolare: 4)Si fa lhash (SHA-1) dei parametri P:pHash = hash (P) len (PS) = emLen – mLen – 2hLen – Nel nostro esempio: len (PS) = 127 – 16 – 2*20 – 1 = 70 NOTA: la lunghezza di PS può essere anche zero. da 39 a3 ee 5e 6b 4b 0d bf ef af d hash (NULL) = La lunghezza dellimpronta è costante (dipendendo dalla funzione) e nel nostro caso pari a 20.
E NCODING P ASSO P ASSO... (3) Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 5)Si forma un blocco di dati DB nella maniera seguente: DB = pHash || PS || 01 || M Proseguendo con i dati dellesempio si ottiene il seguente blocco dati: da 39 a3 ee 5e 6b 4b 0d bf ef af d d4 36 e fd 32 a7 c8 a0 5b bc 90 d3 2c 49 NOTE: Il byte 01 è necessario nel caso in cui M iniziasse per 00; PS serve per avere in uscita un messaggio esattamente lungo quanto specificato in ingresso.
E NCODING P ASSO P ASSO... (4) Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 6)Si genera un seed casuale di lunghezza hLen: aa fd 12 f6 59 ca e b4 79 e5 07 6d de c2 f0 6c b5 8f Il seed garantisce una codifica differente anche per messaggi identici. seed = 7)Si calcola:dbMask = MGF (seed, emLen – hLen) 06 e1 de b2 36 9a a5 a5 c7 07 d8 2c 8e 4e a c7 83 de e0 b2 c f5 af f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f b4 a1 b7 c1 36 2b aa d2 9a b4 8d d b e3 92 f9 82 fb 3e 87 d0 95 ae b db 97 2f 3a c1 4e af f4 9c 8c 3b 7c fc 95 1a 51 ec d1 dd e Proseguendo lesempio:dbMask = MGF (seed, 107)
E NCODING P ASSO P ASSO... (5) Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 8)Si calcola:maskedDB = XOR (DB, dbMask) dc d8 7d 5c 68 f1 ee a8 f c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c f5 af f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f b4 a1 b7 c1 36 2b aa d2 9a b4 8d d b e3 92 f9 82 fb 3e 87 d0 95 ae b db 97 2f 3a c1 4f 7b c ce 32 d2 f1 b7 6d 4d 35 3e 2d 9)Si calcola: seedMask = MGF (maskedDB, hLen) = MGF (maskedDB, 20) b 5a b0 29 e6 57 d b5 4c 28 3c d be a9 10) Si calcola:maskedSeed = XOR (seed, seedMask) eb 7a 19 ac e9 e e b 45 e2 ca b 26
E NCODING P ASSO P ASSO... (6) Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 11) Si ottiene il messaggio finale codificato nel modo seguente: EM = maskedSeed || maskedDB eb 7a 19 ac e9 e e b 45 e2 ca b 26 dc d8 7d 5c 68 f1 ee a8 f c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c f5 af f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f b4 a1 b7 c1 36 2b aa d2 9a b4 8d d b e3 92 f9 82 fb 3e 87 d0 95 ae b db 97 2f 3a c1 4f 7b c ce 32 d2 f1 b7 6d 4d 35 3e 2d Tale messaggio andrà quindi cifrato con la chiave pubblica di RSA {e, n} e quindi trasmesso al diretto interessato.
S CHEMA DI C ODIFICA Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS seed pHash PS M M DB MGF XOR maskedDB MGF XOR maskedSeed EM
EME-OAEP-D ECODE Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS Primitiva di decodifica: EME-OAEP-Decode (EM, P) Opzioni: Hash – Hash Function MGF – Mask Generation Function Ingressi: EM – Messaggio codificato P – Parametri di codifica, ovvero una stringa di byte Uscita: M – Messaggio ripristinato
D ECODING Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS 1)Se P è maggiore della limitazione in input della funzione Hash genera un errore decoding error e termina 2)Se emLen < 2hLen + 1 genera un errore decoding error e termina 3)I primi venti byte di EM costituiscono il maskedSeed, mentre il resto costituisce il maskedDB 4)Calcola: seedMask = MGF (maskedDB, hLen) 5)Ottieni: seed = XOR (maskedSeed, seedMask) 6)Calcola: dbMask = MGF (seed, emLen – hLen) 7)Calcola: DB = XOR (maskedDB, dbMask) 8)Calcola: pHash = Hash (P) 9)Separa DB nelle stringhe: pHash || PS || 01 || M Se non cè il byte 01 genera un errore decoding error e termina 10)Se pHash pHash genera un errore decoding error e termina 11)Restituisci il messaggio originale M La procedura di decoding è speculare a quella di encoding. Questi sono i passi dellalgoritmo:
S CHEMA DI D ECODIFICA Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS seed pHash PS M M DB MGF XOR maskedDB MGF XOR maskedSeed EM
C ARATTERISTICHE RSA-OAEP Introduce elementi di casualità È in grado di prevenire decifrazioni parziali del testo cifrato Per ottenere il testo in chiaro, lattaccante deve necessariamente invertire completamente la funzione pseudo-unidirezionale di RSA Si ha sicurezza a fronte di attacchi di tipo CCA2 se si utilizzano determinati accorgimenti [2] Shoup [3] ha mostrato altre vulnerabilità dello standard ed ha proposto una versione più sicura, denominata OAEP+. Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS
R IFERIMENTI [1] D. Bleichenbacher, Chosen Ciphertext Attacks Against Protocols Based on RSA Encryption Standard PKCS#1, Advances in CryptologyCRYPTO 98 Proceedings, Springer-Verlag, 1998, pp. 1–12. [2] J. Manger, A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0, Proceedings of the 21st Annual International Cryptology Conference on Advances in Cryptology, Springer- Verlag, 2001, pp. 230 – 238. [3] V. Shoup, OAEP Reconsidered. In J. Kilian, editor, Advances in Cryptology - Crypto 2001, volume 2139 of Lecture Notes in Computer Science, pp Springer Verlag, Optimal Asymmetric Encryption Padding Tecnologie per la Sicurezza LS