Elliptic Curve Digital Signature Algorithm: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullata la modifica 103429662 di 91.252.14.66 (discussione)
Etichetta: Annulla
LauBot (discussione | contributi)
m Bot: passaggio degli url da HTTP a HTTPS
Riga 35:
Come stabiliscono gli standard, è cruciale che vengano selezionati <math>k</math> diversi per firme diverse, altrimenti l'equazione al passo 6 può essere risolta per <math>d_A</math>, la chiave privata: date due firme <math>(r, s)</math> e <math>(r, s')</math>, l'impiegare la stessa <math>k</math> per due messaggi differenti <math>m</math> e <math>m'</math> apre ad una vulnerabilità ad attacchi. Un aggressore può calcolare <math>z</math> e <math>z'</math>, e poiché <math>s - s' = k^{-1}(z - z')</math> (tutte le operazioni di questo paragrafo sono svolte in modulo <math>n</math>) l'aggressore può trovare <math>k = \frac{z - z'}{s - s'}</math>. Dato che <math>s = k^{-1}(z + r d_A)</math>, l'aggressore può ora calcolare la chiave privata <math>d_A = \frac{s k - z}{r}</math>. Questa implementazione errata è stata sfruttata, per esempio, per estrarre la firma digitale usata nella console [[PlayStation 3]].<ref>[https://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf Console Hacking 2010 - PS3 Epic Fail], page 123–128</ref>
 
Un'altra situazione in cui la firma ECDSA può lasciare trapelare le chiavi private si ha quando <math>k</math> è generato da un ''[[Generatore di numeri pseudocasuali crittograficamente sicuro|random number generator]]'' difettoso. Una falla simile causò la perdita dei fondi di alcuni portafogli di [[bitcoin]] su piattaforma [[Android]] nell'agosto 2013.<ref>{{Cita web|url=https://bitcoin.org/en/alert/2013-08-11-android|titolo=Android Security Vulnerability|accesso=24 febbraio 2015}}</ref> Per assicurare che <math>k</math> sia unico per ogni messaggio si può bypassare completamente la generazione casuale e ottenere una firma in modo deterministico computando <math>k</math> dal messaggio e dalla chiave privata.<ref>{{Cita web|url=httphttps://tools.ietf.org/html/rfc6979|titolo=RFC 6979 - Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)|accesso=24 febbraio 2015}}</ref>
 
== Algoritmo di verifica della firma ==
Riga 88:
Nel dicembre 2010, un gruppo che si fa chiamare ''fail0verflow'' annunciò di aver scoperto la chiave privata ECDSA usata da Sony per firmare i software della console [[PlayStation 3|Playstation 3]]. Tuttavia, questo attacco funzionò perché Sony non implementò correttamente l'algoritmo, <math>k</math> era statico invece che casuale. Come è sottolineato nella precedente sezione ''Algoritmo di generazione della firma'', ciò rende risolvibile <math>d_A</math> ed inutile l'intero algoritmo.<ref>{{Cita news|cognome=Bendel|nome=Mike|titolo=Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access|editore=Exophase.com|data=29 dicembre 2010|url=http://exophase.com/20540/hackers-describe-ps3-security-as-epic-fail-gain-unrestricted-access/|accesso=5 gennaio 2011}}</ref>
 
Il 29 marzo del 2011, due ricercatori pubblicarono un documento IACR<ref>{{Cita web|url=httphttps://eprint.iacr.org/2011/232|titolo=Cryptology ePrint Archive: Report 2011/232|accesso=24 febbraio 2015}}</ref> dimostrando che è possibile recuperare una chiave privata TLS di un server usando [[OpenSSL]] il quale esegue un'autenticazione ECDSA su un campo binario attraverso un'' timing attack''.<ref>[https://www.kb.cert.org/vuls/id/536044 Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack]</ref> La vulnerabilità ha ricevuto un ''fix'' nella release OpenSSL 1.0.0e.<ref>{{Cita web|url=//www.openssl.org/news/changelog.html|titolo=ChangeLog|editore=OpenSSL Project|accesso=22 aprile 2014}}</ref>
 
Nell'agosto 2013, è stato reso pubblico che alcune implementazioni della classe [[Java (linguaggio di programmazione)|Java]] [httphttps://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html SecureRandom] talvolta generavano collisioni nel valore <math>k</math>. Come discusso sopra, questo ha permesso la risoluzione delle chiavi private, di conseguenza ciò ha aperto alla possibilità di rubare [[bitcoin]] dalle app Wallet Android, le quali erano basate su ECDSA per l'autenticazione delle transazioni.<ref>{{Cita web|url=httphttps://www.theregister.co.uk/2013/08/12/android_bug_batters_bitcoin_wallets/|titolo=Android bug batters Bitcoin wallets|autore=12 Aug 2013 at 00:43, Richard Chirgwin tweet_btn()|accesso=17 gennaio 2017}}</ref>
 
Questo problema può essere risolto da una generazione deterministica di <math>k</math>, come descritto da <nowiki>RFC 6979</nowiki>.
Riga 101:
* Certicom Research, [http://www.secg.org/download/aid-780/sec1-v2.pdf ''Standards for efficient cryptography, SEC 1: Elliptic Curve Cryptography''], Version 2.0, May 21, 2009.
* López, J. and Dahab, R. [http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.2771 ''An Overview of Elliptic Curve Cryptography''], Technical Report IC-00-10, State University of Campinas, 2000.
* [[Daniel Bernstein|Daniel J. Bernstein]], [httphttps://cr.yp.to/papers/pippenger.pdf Pippenger's exponentiation algorithm], 2002.
* Daniel R. L. Brown, ''Generic Groups, Collision Resistance, and ECDSA'', Designs, Codes and Cryptography, '''35''', 119–152, 2005. [httphttps://eprint.iacr.org/2002/026 ePrint version]
* Ian F. Blake, Gadiel Seroussi, and Nigel Smart, editors, ''Advances in Elliptic Curve Cryptography'', London Mathematical Society Lecture Note Series 317, Cambridge University Press, 2005.
* {{Cita libro|ISBN=0-387-95273-X|DOI=10.1007/b97644}}Parametro <code style="color:red;">titolo</code> vuoto o mancante ([[Discussioni modulo:Citazione/Aiuto#citation missing title|aiuto]])