Criptosistemul Nakasha-Stern
Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită pe 10 octombrie 2019; verificările necesită
4 modificări .
Criptosistemul Nakasha - Stern este un algoritm criptografic cu cheie publică bazat pe complexitatea computațională a problemei logaritmului discret . Spre deosebire de RSA , este omomorfă în ceea ce privește adunarea și scăderea, nu înmulțirea .
Dezvoltat de David Nakache și Jacques Stern în 1998 [1] în două versiuni: deterministă și probabilistică. Este o îmbunătățire a schemei Benalo [2] - autorii au reușit să construiască un criptosistem homomorf probabilist cu securitate semantică și să reducă semnificativ raportul dintre dimensiunea textului cifrat și dimensiunea textului simplu .
Există o implementare (python3) a algoritmilor de generare a cheilor, criptare și decriptare [3] .
Comparație cu RSA
Asemănări
Diferențele
- Utilizarea diferitelor funcții unidirecționale cu o intrare secretă . După cum subliniază autorii lui [1] , acest punct este de mare interes teoretic, deoarece, în opinia lor, în prezent există doar o mică varietate de funcții unidirecționale cu o intrare secretă, iar acest lucru afectează direct viteza de creare. noi criptosisteme cu cheie publică [1] .
- Puterea acestui algoritm nu este direct legată de puterea algoritmului de criptare al criptosistemului RSA . Și anume, securitatea RSA este legată de complexitatea problemei factorizării întregi , iar securitatea criptosistemului Nakas-Stern este legată de complexitatea problemei logaritmului discret [4] .
- Criptosistemul RSA este homomorf în ceea ce privește înmulțirea, în timp ce criptosistemul Nakas-Stern este homomorf în ceea ce privește adunarea [1] .
Descrierea variantei deterministe a criptosistemului
În general, o versiune deterministă a criptosistemului Nakasha-Stern poate fi descrisă după cum urmează: să fie un B-neted (B este mic - de obicei un număr de 10 biți), un număr impar, fără pătrat și să fie un RSA număr (de obicei considerat a fi un număr de cel puțin 768 de biți) astfel încât împarte și este coprim cu , unde este funcția Euler . În continuare, lăsați comanda . Apoi triplul numerelor formează o cheie privată. Un mesaj mai mic decât este criptat ca . Decriptarea se bazează pe utilizarea divizorilor primi ai numărului [1] .














Generare cheie
- Alegeți „ prime mici ” unde este par. Aici expresia „primuri mici” înseamnă că fie primul dintre numerele prime (1, 3, 5, ...) este luată, fie generată în alt mod decât folosind algoritmi pentru generarea de numere prime mari.



- Lasă , și



- Alegeți 2 „primuri mari” astfel încât , sunt prime. Aici expresia „primuri mari” este folosită în sensul în care este folosită în algoritmii de generare a numerelor prime mari.



- Lasă . În literatură, numărul - produsul „primelor mari” - se numește număr RSA.


- Alegeți un număr aleatoriu astfel încât y să fie ordinea



Apoi cheia publică este formată dintr-un triplu de numere . Și închis - [1]
Pe măsură ce numărul crește, generarea cheilor devine o operațiune care necesită foarte mult timp, deoarece numărul a trebuie să fie într-un interval adecvat și, în plus, să satisfacă testele de primalitate împreună cu numărul . Pentru a evita această dificultate, autorii propun să se genereze mai întâi numere prime și apoi, prin selectarea numerelor prime auxiliare , să se obțină egalitatea și , unde sunt prime [1] .







Criptare
Criptarea constă într-o singură operație de exponențiere modulo : un mesaj mai mic decât , este criptat ca . Și aici nu sunt folosite în niciun fel . [unu]



Decriptare
Decriptarea se bazează pe teorema chineză a restului . Fie divizori primi . Algoritmul calculează și apoi decriptează mesajul m folosind teorema chineză a restului [1] .



Pentru a găsi m i dat textul cifrat , algoritmul calculează , care este exact . Aceasta rezultă din următoarele calcule - aici : . Comparând acest rezultat cu toate puterile posibile ale , se poate găsi valoarea lui . Mai formal, funcția de decriptare este reprezentată de pseudocod [1] :







pentru = 1 la :

pentru = 0 la - 1:

daca :
=Memento chinezesc( , )


Exemplu
Generare cheie pentru 
[cm. „Descrierea unei variante deterministe a unui criptosistem”]
conţine
|
i=1
|
i=2
|
i=3
|
i=4
|
i=5
|
i=6
|
j = 0
|
unu
|
unu
|
unu
|
unu
|
unu
|
unu
|
j = 1
|
1966
|
6544
|
1967
|
6273
|
6043
|
372
|
j = 2
|
9560
|
3339
|
4968
|
7876
|
4792
|
7757
|
j = 3
|
|
9400
|
1765
|
8720
|
262
|
3397
|
j = 4
|
|
|
6488
|
8651
|
6291
|
702
|
j = 5
|
|
|
2782
|
4691
|
677
|
4586
|
j = 6
|
|
|
|
9489
|
1890
|
8135
|
j = 7
|
|
|
|
8537
|
6878
|
3902
|
j = 8
|
|
|
|
2312
|
2571
|
5930
|
j = 9
|
|
|
|
7701
|
7180
|
6399
|
j = 10
|
|
|
|
|
8291
|
9771
|
j = 11
|
|
|
|
|
678
|
9771
|
j = 12
|
|
|
|
|
|
609
|
j = 13
|
|
|
|
|
|
7337
|
j = 14
|
|
|
|
|
|
6892
|
j = 15
|
|
|
|
|
|
3370
|
j = 16
|
|
|
|
|
|
3489
|
Criptare 
Decriptare
Apoi, folosind tabelul de mai sus:
iar prin teorema chineză a restului obținem: [1]
Descrierea variantei probabilistice a criptosistemului
O variantă probabilistică a unui criptosistem este o îmbunătățire față de criptosistemele probabilistice anterioare (de exemplu, criptosistemul Benalo).
Criptosistemele anterioare aveau un dezavantaj foarte semnificativ: pentru a cripta un set mic de date (de exemplu, voturi 0, 1 în votul electronic), criptosistemele deterministe, precum RSA, nu sunt potrivite [1] , deoarece pentru decriptare va fi suficient să compara textul cifrat cu elementele criptate ale setului . Această proprietate a criptosistemelor - incapacitatea de a distinge textele cifrate ale diferitelor elemente ale mulțimii S, se numește securitate semantică [5] . Dar cu o combinație de homomorfism și putere semantică, criptosistemele anterioare au început să genereze aproximativ un kilobyte de text cifrat pentru a cripta textul simplu în câțiva biți [1] . În criptosistemul Nakasha-Stern, pe lângă faptul că are proprietățile homomorfismului, puterea semantică, raportul dintre dimensiunea textului cifrat și dimensiunea textului simplu este exact egal cu . Autorii afirmă că este sigur să luați [1] .




Generare cheie
- Alegeți „prime mici” unde este par. Aici expresia „primuri mici” înseamnă că fie primul dintre numerele prime (1, 3, 5, ...) este luată, fie generată în alt mod decât folosind algoritmi pentru generarea de numere prime mari.



- Lasă , și



- Alegeți 2 „primuri mari” astfel încât , sunt prime. Aici expresia „primuri mari” este folosită în sensul în care este folosită în algoritmii de generare a numerelor prime mari.



- Să fie un număr RSA.

- Alegeți un număr aleatoriu astfel încât y să fie ordinea



Apoi cheia publică este formată dintr-un triplu de numere . Și închis - [1]
Criptare
Criptarea probabilistică este foarte asemănătoare cu criptarea deterministă . „Descrierea unei variante deterministe a unui criptosistem”] . Și anume, să fie un număr pozitiv ales aleatoriu din inelul de resturi modulo : . Atunci algoritmul este scris ca [1]


Decriptare
Decriptarea în varianta probabilistică a algoritmului de către D. Nakache și J. Stern rămâne neschimbată în comparație cu versiunea deterministă [vezi. „Descrierea unei variante deterministe a unui criptosistem”] . Efectul înmulțirii prin criptare este luat în considerare atunci când ridicăm textul cifrat la puterea . Să facem câteva calcule pentru a verifica acest lucru.


Fie divizori primi . Algoritmul calculează și apoi decriptează mesajul folosind teorema chineză a restului.




Pentru a găsi , având în vedere textul cifrat , algoritmul calculează , care este exact . Aceasta rezultă din următoarele calcule:




Comparând acest rezultat cu toate puterile posibile ale , se poate găsi valoarea [1]
Aplicație
În majoritatea domeniilor de aplicare ale criptosistemului Nakasha-Stern, se utilizează proprietatea de homomorfism a acestui criptosistem în ceea ce privește adunarea și scăderea [6] [2] :
- Să presupunem că un client are un cont bancar și dorește să retragă o sumă mică . De asemenea, presupunem că soldul este stocat în formă criptată , iar reprezentantul băncii, efectuând operațiunea de retragere a sumei din contul clientului , nu are acces la decriptarea datelor contului. Cu ajutorul criptosistemului Nakasha-Stern se propune o soluție simplă la această problemă prin operațiune - aceasta este valoarea soldului noului cont în formă criptată: . Mai formal: să fie algoritmii de criptare a contului , apoi contul egal cu suma și se calculează prin următoarea formulă: [1] .












- Securitate cloud computing . Să presupunem că cloud-ul conține mulți utilizatori (clienți) . Utilizatorul are date sensibile stocate în cloud. Acest serviciu cloud se numește Storage aaS (stocare ca serviciu). Utilizatorul poate aplica în cloud cu o solicitare pentru a calcula valoarea unei anumite funcții în funcție de datele confidențiale. Solicitarea trebuie să conțină o descriere a funcției , ID-ul utilizatorului și cheia publică a utilizatorului . Cloud-ul trebuie să verifice autoritatea de calcul a utilizatorului . O astfel de verificare poate fi implementată utilizând procedura standard de semnătură digitală electronică . Dacă utilizatorul și-a validat drepturile de a calcula funcția , atunci cloud-ul trebuie să calculeze valoarea și să o trimită utilizatorului. După cum se poate lua funcția de criptare a oricărui sistem criptografic homomorf cu cheie publică, cum ar fi, de exemplu, criptosistemul Nakache-Stern. Un utilizator care își depozitează datele sensibile și trimite o solicitare de evaluare a funcției nu are încredere în cloud și trebuie să ia măsuri și cerințe adecvate pentru a le asigura securitatea. Evident, ar fi mult mai sigur să transferați datele în așa fel încât în timpul operațiunilor care se efectuează asupra acestora, informațiile despre aceste date să nu fie difuzate în niciun fel. Prin urmare, în primul rând, datele trebuie să fie criptate și trebuie să ajungă la server deja în formă criptată. Aceasta înseamnă că criptarea trebuie făcută în continuare de către utilizator. În al doilea rând, este necesar să se prelucreze aceste date fără decriptare, deoarece trebuie urmate anumite proceduri pentru transmiterea și stocarea cheii secrete , mai ales complexe dacă informațiile sunt procesate într-un mediu neîncrezat. Criptosistemele cu criptare homomorfă ajută doar la rezolvarea acestor probleme [7] [2] .














- Ofucare pentru a proteja produsele software. Pentru prima dată, utilizarea ofuscării în criptografie a fost menționată în lucrarea lui Diffie și Hellman [8] . În acesta, pentru a construi un criptosistem asimetric, se propune utilizarea complexității sarcinii, care constă în analiza programelor într-un limbaj de programare de nivel scăzut (asamblator, bytecode). Scopul principal al ofuscarii este de a face dificilă înțelegerea funcționării programului. Deoarece toate arhitecturile computerizate tradiționale folosesc șiruri binare, prin aplicarea criptării complet homomorfe pe biți, orice funcție poate fi calculată. Prin urmare, este posibilă criptarea homomorfă a întregului program astfel încât să-și păstreze funcționalitatea [9] .
- Votul electronic. Și anume, Să fie candidați și direcția, care are acest criptosistem, distribuie între participanți un buletin-vector , unde este numele de familie al celui de-al treilea candidat. Și fiecare participant are o cheie publică . Ca rezultat, obținem - fiecare alegător revine în direcția unui vector , unde este vectorul preferințelor. Câștigătorul alegerii este candidatul care a primit cele mai multe voturi în total - acest număr - suma voturilor - se calculează pe vectori criptați ai alegătorilor. Acest lucru este posibil prin homomorfism. Și avantajul acestei abordări este că nu este nevoie să decriptăm datele alegătorilor pentru numărarea voturilor - securitatea alegerilor pentru alegători este crescută [10] .







- Zona de filigran [11] . Omomorfismul criptosistemului vă permite să aplicați un filigran datelor criptate [12] .
- Dovada de cunoștințe zero . Sistemele omomorfe sunt utilizate atunci când devine necesară confirmarea deținerii oricăror informații care pot fi verificate fără a dezvălui informațiile în sine [13] [14] .
Atacurile
Atacurile larg cunoscute asupra acestui criptosistem nu sunt documentate. Autorii înșiși încurajează munca de distrugere a criptosistemului. Articolul original a oferit [1] 768 USD cuiva care ar putea descifra textul cifrat și să publice metoda criptoanalizei . Mai jos sunt datele pentru această sarcină.

= 13370fe62d81fde356d1842fd7e5fc1ae5b9b449
bdd00866597e61af4fb0d939283b04d3bb73f91f
0d9d61eb0014690e567ab89aa8df4a9164cd4c63
6df80806c7cdceda5cfda97bf7c42cc702512a49
dd196c8746c0e2f36ca2aee21d4a36a 16
= 0b9cf6a789959ed4f36b701a5065154f7f4f1517
6d731b4897875d26a9e244415e111479050894ba7
c532ada1903c63a84ef7edc29c208a8ddd3fb5f7
d43727b730f20d8e12c17cd5cf9ab4358147cb62
a9fb887bf15204e444ba6ade6132743 16
= 1459b9617b8a9df6bd54341307f1256dafa241bd
65b96ed14078e80dc6116001b83c5f88c7bbcb0b
db237daac2e76df5b415d089baa0fd078516e60e
2cdda7c26b858777604c5fbd19f0711bc75ce00a
5c37e2790b0d9d0ff9625c5ab9c7511d 16
Aici ( — se formează din primele prime, cu excepția lui 2) [1] .



Link -uri
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Jacques, Stern. Un nou criptosistem cu cheie publică bazat pe reziduuri mai mari // ACM . - 1998. - P. 59–66 . Arhivat din original pe 6 decembrie 2006.
- ↑ 1 2 3 A.I. Troubey. Criptare homomorfă: securitate cloud computing și alte aplicații (recenzie) (rusă) // Informatică. - 2015. - ianuarie. Arhivat din original pe 26 noiembrie 2018.
- ↑ Implementarea algoritmilor de criptare, decriptare, generare de chei în criptosistemul Nakashe-Stern . Preluat la 16 decembrie 2018. Arhivat din original la 28 decembrie 2020. (nedefinit)
- ↑ Thomas W. Cusick. O comparație între RSA și criptosistemul cu cheie publică Naccache-Stern // Protocoale de securitate. — Berlin, Heidelberg: Springer Berlin Heidelberg, 1997. — P. 111–116 . — ISBN 9783540624943 , 9783540680475 . - doi : 10.1007/3-540-62494-5_10 . Arhivat din original pe 2 decembrie 2018.
- ↑ S. Goldwasser, S. Micali. Criptare probabilistică (engleză) // JCSS. - 1984. - Aprilie. - P. 270-299 .
- ↑ O scurtă prezentare a criptosistemului homomorf și a aplicațiilor lor // International Journal of Computer Applications. — 2015.
- ↑ R. L. Rivest, L. Adleman, M. L. Dertouzos. Despre băncile de date și homomorfismele de confidențialitate // Bazele calculului securizat.
- ↑ W. Diffie, M. Hellman. Noi direcții în criptografie // IEEE Trans. inf. teorie.
- ↑ J. Alwen [et al.] Despre relația dintre criptarea funcțională, ofuscarea și criptarea complet homomorfă // Cryptography and Coding – 14th IMA Intern. Conf., IMACC-2013..
- ↑ JD Cohen Benaloh. Alegeri cu vot secret verificabile (engleză) // Universitatea Yale: teză de doctorat. — 1988.
- ↑ B. Pfitzmann, M. Schunter. Amprentare asimetrică (engleză) // Spinger-Verlag. - 1996. - P. 84-95 .
- ↑ Construirea unei scheme securizate de filigranare dependentă de conținut folosind criptarea homomorfă.
- ↑ O. Goldreich, S. Micali, A. Wigderson. Dovezi care nu dau nimic altceva decât validitatea lor și o metodologie de proiectare a protocolului criptografic . - 1986. - P. 174-187 .
- ↑ G. Brassard, D. Chaum, C. Crepeau. Discuții minime de dovezi de cunoștințe // JCSS. - 1988. Arhivat la 27 septembrie 2011.