Previene il riempimento dell'attacco oracle al processo di scambio delle chiavi

1

Ho trovato nelle mie ricerche che il padding oracle attack può essere usato contro RSA con PKCS1PAdding o OAEP padding, e ho usato questo algoritmo per uno scambio di chiavi simmetriche.
Come posso evitare un attacco oracle di padding quando si usano chiavi pubbliche per lo scambio di chiavi segrete? Encrypt-then-MAC non può essere utilizzato perché la generazione del MAC richiede una chiave segreta condivisa e la chiave non è stata scambiato ancora.

    
posta hyda 19.05.2015 - 17:05
fonte

1 risposta

3

L'attacco "padding oracle" di cui parli è meglio conosciuto come l'attacco di Bleichenbacher contro RSA . L'utente malintenzionato invia chiavi crittografate malformate; alcuni continueranno (per puro caso) a decifrare correttamente, anche se con un contenuto decodificato che l'attaccante non può sapere. Se il comportamento del server cambia, a seconda che la decrittografia non sia riuscita ("bad padding") o meno (il server utilizza il risultato della decrittografia e continua), l'utente malintenzionato può ottenere alcune informazioni sulla chiave privata RSA.

Una soluzione alternativa è, in realtà, nascondere la modifica del comportamento: quando la decifrazione fallisce, il server utilizza semplicemente un valore casuale invece del risultato della decrittografia. Pertanto, l'utente malintenzionato non è più in grado di distinguere tra "bad padding" e "padding era corretto e risultava in una certa posta indesiderata decrittografata". Questo è, in effetti, piuttosto difficile da implementare correttamente, specialmente dal momento che gli aggressori laboriosi possono applicare attacchi temporali e notare quando il server utilizza una sostituzione casuale, a causa del tempo extra necessario per generare la sostituzione.

OAEP è nominalmente immune all'attacco di Bleichenbacher ed è stato progettato proprio in quell'obiettivo; tuttavia, ciò richiede ancora che sia implementato correttamente, che è, ancora una volta, non così facile come sembra. La solita raccomandazione vale: se stai scrivendo il tuo protocollo crittografico o implementazione, allora stai sbagliando. Dovresti utilizzare un protocollo esistente e implementazioni esistenti in cui dettagli quali resistenza agli attacchi temporali sono stati esplorati e risolti in anni di test sul campo.

    
risposta data 19.05.2015 - 17:50
fonte

Leggi altre domande sui tag