Lo schema standard di RSA CCA e CPA è sicuro?

7

Sto esaminando i vecchi test in un corso sulla sicurezza delle informazioni e c'è una domanda sulla sicurezza CCA e CPA di RSA.

Non riesco a capire come avrei mostrato insicurezza o dimostrato la sicurezza per questo. (Questa non è una domanda per i compiti a casa, è per la mia comprensione personale)

La domanda è la seguente (riguarda lo schema di base RSA):
Per CPA sicuro , esiste un algoritmo A in modo che, dato un testo cifrato c , selezioni m plaintexts pt 1 , pt 2 , pt 3 , pt 4 , ..., ottiene i loro ciphertexts e restituisce il testo in chiaro p per il testo cifrato dato c .

Per CCA secure , esiste un algoritmo B in modo che, dato un testo cifrato c , scegli m ciphertexts ct 1 , ct 2 , ct 3 , ct 4 , ..., ottiene i loro plaintext appropriati e restituisce il p corretto per testo cifrato c .

    
posta Arnon 20.01.2014 - 18:57
fonte

1 risposta

9

Il tuo "basic RSA" è probabilmente non standard RSA come specificato in PKCS # 1 , ma il cosiddetto "libro di testo RSA", che è insicuro perché è ridotto al nucleo di esponenziazione modulare e non include il padding, che è essenziale.

Nel "libro di testo RSA", la chiave pubblica consiste in n (modulo) e e (esponente pubblico). La chiave privata è d (esponente privato). I plaintext sono numeri interi n . La crittografia di m è m e mod n ; la decrittografia si ottiene elevando al potere d perché (m e ) d = m mod n per tutti gli interi m nell'intervallo 0 a n-1 .

In effetti, RSA di testo non è sicuro contro Chosen Ciphertext Attacks a causa del di seguito: per il modulo n e tutti i messaggi m e m , hai:

(mm ') e = (m e ) (m' e ) mod n

In altre parole, la crittografia di un prodotto è il prodotto delle crittografie. Nell'impostazione CCA:

  • C'è un messaggio m e il suo testo cifrato c = m e mod n . L'attaccante conosce c e vuole trovare m .
  • L'attaccante può ottenere la decrittazione dei testi cifrati che sceglie, purché nessuno di essi sia uguale a c .
  • L'attaccante genera un m (modulo n ) casuale e calcola c '= m' e mod n .
  • L'attaccante chiede la decodifica di cc mod n : questo è un modulo intero n , distinto da c , quindi l'autore dell'attacco riceve una risposta.
  • La risposta è necessariamente uguale a mm mod n . L'hacker conosce m ' (lo ha scelto lui stesso) così ha calcolato m facilmente.

Come per Chosen Plaintext Attacks : la crittografia asimmetrica è necessariamente sicuro contro CPA, se è per offrire alcuna sicurezza a tutti. Infatti, la crittografia utilizza la chiave pubblica, che è pubblica, quindi nota a tutti, incluso l'aggressore. Se l'hacker vuole crittografare alcuni messaggi di sua scelta, allora ... lo fa. Non ha bisogno di aiuto dal proprietario della chiave privata, poiché la crittografia utilizza solo elementi pubblici.

Se RSA da manuale non fosse sicuro contro CPA, allora anche standard RSA, con il padding, sarebbe stato debole: usando il suo metodo di rottura, l'attaccante avrebbe recuperato il messaggio riempito, da cui avrebbe ottenuto il messaggio non inserito.

Ora questo non significa che il libro di testo RSA è sicuro contro gli attaccanti che non riescono a ottenere la decrittografia dei testi cifrati personalizzati. Il libro di testo RSA ha (almeno) i seguenti problemi molto seri:

  • Come notato sopra, non è sicuro contro CCA.
  • Se il messaggio è un numero intero piccolo, il problema RSA potrebbe diventare molto semplice. Ad esempio, se m è un numero intero a 200 bit e l'esponente pubblico è e = 3 , allora m e è un numero intero a 600 bit, mentre il modulo è normalmente più grande (almeno 1024 bit). Ciò implica che m può essere recuperato con una semplice radice cubica non modulare (che è facile).
  • Il libro di testo RSA è deterministico; quindi, se il messaggio stesso è suscettibile di forza bruta (ad es. è una password), può essere recuperato provando potenziali valori del messaggio fino a quando non viene trovata una corrispondenza.

Il riempimento standard, come specificato in PKCS # 1, risolve questi problemi: il padding assicura che il numero intero inserito sia sufficientemente grande; il padding include byte casuali. Il padding PKCS # 1 vecchio stile (soprannominato "v1.5") in realtà non è molto strong contro il CCA, anche se è ancora abbastanza buono se usato correttamente, come in SSL (richiede che il server SSL non si lamenta quando la decodifica di ciò che il client invia non ha un riempimento sintatticamente valido). La nuova imbottitura PKCS # 1 (soprannominata "OAEP") è strong (e anche "provata strong" per un significato appropriato di "provato").

    
risposta data 20.01.2014 - 19:48
fonte

Leggi altre domande sui tag