Algoritmo Blum-Goldwasser: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 11:
===Generazione delle chiavi===
 
Per permettere il decriptaggio, thebisogna modulusche usatoil in Blum-Goldwassermodulo encryptionutilizzato shouldsia be aun [[Blumintero integerdi Blum]]. Questo valore è generato allo stesso modo asche anin [[RSA]] modulus, excepttranne thatper theil primefatto factorsche i fattori primi <math>(p, q)</math> mustdevono beessere congruentcongruenti toa 3 modin modulo 4. (Vedicioè [[RSA]]<math>(p,q) generazione\equiv di3 chiavi\mod per i dettagli.4</math>).
 
#Alice genera casualmente due large [[prime number|primenumeri numbersprimi]] grandi <math>p \,</math> e <math>q \,</math> suchtali thatche <math>p \ne q</math>, randomly e independently of each other, dove <math>(p, q) \equiv 3</math> \mod <math>4</math>.
#Alice calcola <math>N = p q</math> ([[intero di Blum]]).
 
La ''[[chiave pubblica]]'' è <math>N</math>. La ''[[chiave segretaprivata]]'' è thela fattorizzazione di <math>N</math> data factorizationda <math>(p, q)</math>.
 
===Crittazione del messaggio===
=== Message encryption ===
 
Supponiamo che Bob desideri inviare un messaggio ''m'' ad Alice:
 
#Innanziutto Bob codifica <math>m</math> come una stringa iddi <math>L</math> bit <math>(m_0, \dots, m_{L-1})</math>.
#Bob sceglie un elemento casuale <math>r</math>, dove <math>1 < r < N</math>, e calcola <math>x_0 = r^2~mod~N</math>.
#Bob usa il generatore di numeri pseudo-casuali [[Blum Blum Shub|BBS]] con seme <math>s</math> per generare <math>L</math> bit casuali <math>(b_0, \dots, b_{L-1})</math> (la chiave), come segue:
##Increment <math>ix_0 = s^2</math>.
##For <math>i=0</math> to <math>L-1</math>:
##Set <math>b_i</math> equalè toil thebit least-significantmeno bitsignificativo ofdi <math>x_i</math>.
##Increment <math>i</math>.
##Calcola <math>x_i = (x_{i-1})^2~mod~N</math>.
#Calcola theil ciphertextmessaggio bycriptato XORing''c'' themediante plaintextXOR bitsdei withbit thedi keystream''m'' con i bit della chiave ''b'': <math>{\vec c} = {\vec m} \oplus {\vec b}, y=x_{0}^{2^{L}}~mod~N</math>.
 
Bob invia theil ciphertexttesto criptato <math>(c_0, \dots, c_{L-1}), y</math>.
 
Per migliorare la performance, il generatore BBS canpuò securelymandare in output upad toogni ciclo fino a <math>O(\log \log N)</math> ofdei thebit least-significantmeno bitssignificativi ofmantenendo <math>x_i</math>le sue duringcaratteristiche eachdi roundsicurezza. Vedi [[Blum Blum Shub]] per dettagli.
 
=== DecriptaggioDecrittazione del messaggio ===
 
Alice riceve <math>(c_0, \dots, c_{L-1}), y</math>. She can recover <math>m</math> usando la procedura seguente: