Come funziona un attacco di testo cifrato scelto su RSA da manuale?

4

Sono molto nuovo alla crittografia e sono confuso con qualcosa. Ecco la domanda sui compiti a casa con cui ho problemi:

Write a program to attack the Textbook RSA Encryption Scheme, in order to decrypt the encrypted file key_enc.txt which contains the 128 bits AES secret key together with the initialisation vector (IV) for Question 2.

You must explain and show how the attack is done.

The RSA parameters are as follows:

N: 92001629535369949668182190680140710002429961412439471184834723194899969898404162 82428855806975402440064473888135838545187330646754494062187654035542047167435016 34608863342073173012508616123265965429721791336874605919036975439595316606713189 21259313523852555003517715050369476348174980850810194157624985747443

e: 65537

Le mie domande sono:

  • è possibile utilizzare la formula nel link per trovare la risposta con un valore così grande?
  • all'interno del collegamento, viene fornito il valore di testo in chiaro ma i compiti a casa non forniscono un testo in chiaro. Devo indovinarlo?
posta Shinji Kagawa 11.08.2014 - 18:42
fonte

3 risposte

1

Dato che hai il tuo n ed e, dovresti ottenere d e il tuo totiario. che è ϕ(n) .

Ecco l'esempio:

Uso: e(d) mod ϕ(n) ≡ 1 , puoi usare un algoritmo euclideo per risolvere questa equazione per ottenere d.

Come ottenere il n? Di solito prendi i tuoi due grandi numeri primi. ad es. (p = 7 e q = 11) Il tuo n in questo caso sarà p*q-(7*11 = 77) .

Come ottenere ϕ(n)-totient ? Di solito prendi (p-1)*(q-1) = ϕ(n) . Questo è (7-1)*(11-1) = 60 , quindi il tuo totiario è 60: ϕ(n) = 60 .

La tua e deve essere < n e non deve condividere fattori comuni con ϕ(n) , quindi e = 17

Quindi, e(d) mod ϕ(n) ≡ 1 ----------- > e=17, d=? , ϕ(n) = 60

sostituisci 17(d) mod 60 ≡ 1 < ---- in questo caso stai cercando d che è 53, perché 17*53 mod 60 ti darà il resto 1 che soddisfa questa equazione --- > e(d) mod ϕ(n) ≡ 1

Per decrittografare il tuo testo cifrato usa questo:
m=c^e mod n
dove:
m = testo semplice
c = testo crittografato e = chiave di crittografia
n = prodotto di due numeri primi grandi.

    
risposta data 06.09.2015 - 20:55
fonte
0
  • n è il prodotto di due numeri primi grandi, quindi per definizione n è sempre un numero elevato.
  • La domanda vuole che tu scriva un programma che decrittografa il cipehertext, che per definizione significa che il programma deve restituire il testo in chiaro.
risposta data 12.08.2014 - 12:06
fonte
0

Vorrei provare un attacco "meet-in-the-middle.

Dato una chiave pubblica (N,e) e il testo cifrato c e conoscendo il suo RSA da manuale su una chiave a 128 bit, puoi recuperare il messaggio originale (la chiave segreta) una buona frazione del tempo nel tempo O (2 68 ).

Fondamentalmente, si presume che il messaggio in chiaro sia ridimensionabile in due valori inferiori a 2 68 - cioè ( m = a*b ), dove a < b < 2 68 . Nota che sappiamo che da m < 2 128 se è fattore il fattore minore è inferiore a 2 64 .

Nota c = m^e (mod N) o c = a^e b^e (mod N) o c / a^e = b^e (mod N) per i valori corretti di a e b .

Costruisci due tabelle - la prima composta da c/a^e mod N per tutti i possibili valori di a (da 1 a 2 64 ), la seconda composta da b^e mod N per tutti i possibili valori di b (da 1 a 2 68 ).

Ora ordina i tuoi due elenchi e vedi se ci sono coppie a, b tali che a^e = C/b^e mod N . Se c'è una corrispondenza, hai preso i valori corrispondenti di a e b e il messaggio originale (la chiave AES 128 bit crittografata) sarà il loro prodotto m = a*b .

    
risposta data 19.05.2016 - 06:13
fonte

Leggi altre domande sui tag