I messaggi codificati sono diversi per lo stesso testo in chiaro ma modulo diverso in RSA?

1

Sto cercando di riprodurre l'attacco RSA in cui il CRT è usato per un esponente di e = 3 e nessun padding. Voglio codificare lo stesso messaggio semplice (cioè "HI") con tre diverse chiavi pubbliche, (e1, n1) (e2, n2) (e3, n3). Tuttavia, ottengo c1 = c2 = c3 uguale, anche se n1! = N2! = N3. I tre esponenti RSA sono e1 = e2 = e3 = 3.

Tuttavia, se uso un testo in chiaro più grande (cioè "Ciao il mio nome è"), i tre codici sono quindi diversi c1! = c2! = c3

Questo comportamento normale? Perché sta succedendo?

Inoltre, quando eseguo l'operazione CRT, posso solo recuperare "Ciao mio", invece l'intera stringa. C'è qualche limite nella dimensione di m? O mi sto prendendo in giro con precisione o conversione di tipo?

L'esempio è:

Tasto Pub 1: 3

521319240222107884689410763002651770477

Tasto Pub 2: 3

971942073666717835868044797161302855351

Tasto Pub 3: 3

1130117127193245273914627104538121346723

Sto andando a codice: "Ciao il mio nome è"

controlla m0=5736962829656840785174168889715

Codice1:

189327048722959219131229293322701756239

Code2:

655706385250016486665327564357017094773

Code3:

109975795916415293594862048607166887857

il m ottenuto dopo il calcolo è: m1=5736962829656818723003509506048 quale m0! = m1

Qualche idea?

    
posta muni_es 24.09.2016 - 00:09
fonte

1 risposta

1

Per m ed e sufficientemente piccoli, sì, i testi cifrati saranno gli stessi. Inoltre, possono essere decifrati banalmente.

Come dici tu, non stai usando alcun padding. RSA deve essere utilizzato con padding; non è sicuro crittografare valori non imbottiti che sono molto più piccoli delle dimensioni del modulo ( m < n^(1/e) , cioè il tuo messaggio è inferiore alla radice cubica del modulo).

Da Wikipedia:

When encrypting with low encryption exponents (e.g., e = 3) and small values of the m, (i.e., m < n^1/e) the result of m^e is strictly less than the modulus n. In this case, ciphertexts can be easily decrypted by taking the eth root of the ciphertext over the integers.

Questo implica che i testi cifrati ( m ^ e mod n ) saranno gli stessi per i messaggi molto piccoli, sì. Se m ^ e < n1 , n2 e n3 , quindi (m ^ e mod n1) = (m ^ e mod n2) = (m ^ e mod n3) = m ^ e , e puoi recuperare m portandolo a 1 / e (prendendo la radice eth).

Vedi Attacca contro la semplice RSA e controlla OAEP per il solito algoritmo di riempimento.

    
risposta data 24.09.2016 - 03:24
fonte

Leggi altre domande sui tag