Puncte:0

Implementarea RSA nu funcționează cu valori mari pentru text simplu

drapel it

În timp ce implementați criptarea/decriptarea RSA (folosind python), textul simplu nu se potrivește cu textul cifrat decriptat pentru valori mari de text simplu. Funcționează bine pentru valori mai mici pentru text simplu (valoare numerică).

Intrare: p=53 q=59 e=3 text simplu = 1000 (cheie privată calculată ca 2011)

Aici, decriptarea dă 1000 ca text simplu, care este corect. Acum dacă

Intrare: p=53 q=59 e=3 text simplu = 10000 (cheie privată calculată ca 2011)

Aici, după decriptare, textul simplu calculat este 619 (care ar trebui să fie 10000)

Codul pentru același lucru este aici,

    def encrypt (text simplu):
            ciphertext = (text simplu**publicKey) % (self.n)
            returnează text cifrat
   def decriptare(text cifrat):
            text clar = (text cifrat**privateKey) % (self.n)
            returnează text simplu

Având în vedere că algoritmul va fi folosit pentru a cripta/decripta textul alfanumeric, care va produce valori numerice mari, ce modificări sunt necesare sau îmi lipsește ceva?

ps: Verificarea mai multor valori ale textului simplu, se poate întâmpla deoarece n=3127 și orice text clar mai mare decât 3127 nu va produce textul simplu original la decriptare. E posibil sa ma insel.

Cum să funcționeze pentru text simplu mai mare decât n, Aici 3127?

kelalaka avatar
drapel in
RSA este o permutare de trapă! Cum vă așteptați să obțineți un text simplu care este mai mare decât dimensiunea modulului criptat și decriptat corect? Mesajul $m$ trebuie să fie $m
kelalaka avatar
drapel in
poate fi o copie a [Cum ar trebui să adresez limitele de dimensiune a mesajelor în criptarea RSA?](https://crypto.stackexchange.com/q/71092/18298)
kelalaka avatar
drapel in
$10000 \pmod{53\cdot 51} = 619$ așa cum era de așteptat!
Maarten Bodewes avatar
drapel in
Cred că am răspuns la asta de mai multe ori, dar [acest răspuns](https://crypto.stackexchange.com/a/50183/1172) indică deja o modalitate de a o ocoli în scopuri practice: împărțiți-vă mesajul și criptați fiecare bucată separat. Atenție că ar trebui să puteți distinge textul cifrat separat (adică dacă nu puteți distinge între 5 urmat de 23 și 52 urmat de 3, atunci aveți probleme).
SAI Peregrinus avatar
drapel si
Cel mai bun mod este să utilizați criptarea hibridă. Alegeți un număr aleatoriu între 0 și N. Apelați acel număr X. Folosiți un KDF pentru a obține o cheie din X. Criptați folosind un AEAD precum ChaCha20-Poly1305. Criptați X cu RSA. Trimiteți X-ul criptat și textul cifrat al mesajului (și IV și eticheta). Destinatarul poate decripta X, poate folosi același KDF, poate verifica eticheta și decripta mesajul. Acest lucru este mai puțin complicat decât utilizarea RSA-OAEP și tratarea RSA ca pe un cifru bloc.
Maarten Bodewes avatar
drapel in
@SAIPeregrinus Asta, în general, nu funcționează pentru sarcinile de practică ca mai sus. Bineînțeles că ați putea crea o cheie și apoi să utilizați un pad de mai multe ori sau un cifru Caesar / Vigenere sau ceva similar - aceia au nevoie doar de o dimensiune mică a cheii și pentru exercițiu faptul că sunt complet nesiguri nu este o problemă.
SAI Peregrinus avatar
drapel si
Da, nu este ceea ce vrea exercițiul. Dar este și sigur, acolo unde ceea ce își dorește exercițiul nu este.Cred că merită menționat modul „lumea reală” de a folosi RSA pentru criptare (deși RSA-OAEP este comun și pentru schemele hibride), chiar dacă nu este răspunsul la exercițiu.
kelalaka avatar
drapel in
Încă nu necesită -1.
ayush7ad6 avatar
drapel it
După ce am citit sugestia dvs. @MaartenBodewes, am împărțit textul simplu numeric în cifre și l-am criptat, iar după decriptare, am blocat cifrele decriptate. De asemenea, vă mulțumesc pentru răspunsurile dvs. SAI și Maarten

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.