{"id":1039,"date":"2021-10-23T15:54:04","date_gmt":"2021-10-23T12:54:04","guid":{"rendered":"http:\/\/esanu.name\/vitalie\/?p=1039"},"modified":"2021-10-23T15:54:04","modified_gmt":"2021-10-23T12:54:04","slug":"magia-din-spatele-amprentei-digitale-intr-un-sistem-de-votare","status":"publish","type":"post","link":"http:\/\/esanu.name\/vitalie\/?p=1039","title":{"rendered":"Magia din spatele amprentei digitale \u00eentr-un sistem de votare"},"content":{"rendered":"<p>\t\t\t\t<em><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1040\" src=\"http:\/\/esanu.name\/vitalie\/wp-content\/uploads\/2021\/10\/code2_generated-1024x576.jpg\" alt=\"\" width=\"625\" height=\"352\" \/>\u201cCum VoteMeApp asigur\u0103 c\u0103 toate voturile au fost contorizate \u0219i nu sunt modificate?\u201d<\/em> este o \u00eentrebare pe care o adreseaz\u0103 cei care voteaz\u0103 \u00eentr-un scrutin secret. Un scrutin online secret se caracterizeaz\u0103 prin faptul c\u0103 platforma afi\u0219eaz\u0103 doar suma voturilor pentru fiecare candidat, nu \u0219i op\u021biunea de vot a fiec\u0103rui votant.<\/p>\n<p>La scrutinele cu votare secret\u0103 este mai dificil s\u0103 convingem participan\u021bii c\u0103 voturile lor sunt luate \u00een calcul \u0219i nu au fost modificate pentru c\u0103 implic\u0103 pu\u021bin\u0103 matematic\u0103. Una din solu\u021bii este ca platforma de votare s\u0103 publice o informa\u021bie par\u021bial\u0103 despre vot, imediat dup\u0103 ce persoana voteaz\u0103. Astfel sistemul transmite fiec\u0103rui votant un cod unic, ca mai apoi s\u0103 nu existe posibilitatea de a modifica cumva voturile.<\/p>\n<p>O op\u021biune destul de simpl\u0103 este amprenta (semn\u0103tura) digital\u0103 a votului. C\u00e2nd serverul prime\u0219te un nou vot, el genereaz\u0103 un num\u0103r unic foarte lung. Acest num\u0103r este compus prin intermediul unui algoritm bine cunoscut \u00een industria criptografic\u0103 \u0219i se nume\u0219te <a href=\"https:\/\/en.wikipedia.org\/wiki\/SHA-2\">SHA256<\/a>. Acest algoritm hash st\u0103 la baza comunica\u021biilor prin Internet, a semn\u0103turilor digitale \u0219i chiar a valutelor criptografice.<\/p>\n<p>O func\u021bie hash transform\u0103 orice cantitate de informa\u021bie \u00eentr-un num\u0103r. Dac\u0103 aplici exact aceea\u0219i informa\u021bie prime\u0219ti acela\u0219i num\u0103r. Dac\u0103 schimbi m\u0103car un bit sau un caracter \u00een acea informa\u021bie &#8211; ob\u021bii cu totul alt num\u0103r. Este de men\u021bionat c\u0103 av\u00e2nd num\u0103rul generat, nu este posibil s\u0103 fie dedus\u0103 care a fost informa\u021bia ini\u021bial\u0103.<\/p>\n<p>S\u0103 prec\u0103ut\u0103m situa\u021bia c\u00e2nd avem un scrutin cu 4 candida\u021bi:<\/p>\n<ul>\n<li>Candidat 1<\/li>\n<li>Candidat 2<\/li>\n<li>Candidat 3<\/li>\n<li>Candidat 4<\/li>\n<\/ul>\n<p>Condi\u021bia votului este c\u0103 dintre cei patru candida\u021bi trebuie s\u0103 fie alese 2 persoane. S\u0103 consider\u0103m c\u0103 op\u021biunea noastr\u0103 este: Candidat 2 \u0219i Candidat 3.<br \/>\nServerul genereaz\u0103 pentru fiecare vot, o parol\u0103 unic\u0103 de 100 de simboluri, ini\u021bializeaz\u0103 algoritmul hash <a href=\"https:\/\/en.wikipedia.org\/wiki\/HMAC\">HMAC<\/a> (versiunea SHA256 cu parol\u0103), apoi aplic\u0103 algoritmul asupra textului <strong>Candidat 2,Candidat 3<\/strong>. Rezultatul este afi\u0219at \u00een fereastra de confirmare a vot\u0103rii \u0219i poate fi trimis \u0219i prin SMS.<\/p>\n<p>Acest num\u0103r unic pare aleator, \u00eens\u0103 el are o proprietate criptografic\u0103 foarte bun\u0103. Dac\u0103 este cunoscut\u0103 parola generat\u0103 de server \u0219i utilizat acela\u0219i text ca \u00een op\u021biunea de votare <strong>Candidat 2,Candidat 3<\/strong>, se va ob\u021bine acela\u0219i cod (rezultat), care a fost afi\u0219at \u00een fereastra de confirmare a vot\u0103rii. Pe de alt\u0103 parte serverul, dup\u0103 ce a trimis acest cod votantului, practic nu mai poate genera (probabil i-ar trebui c\u00e2teva milioane de ani) o alt\u0103 combina\u021bie de parol\u0103 care s\u0103 dea acela\u0219i cod, dar av\u00e2nd alte variante de voturi.<\/p>\n<p>Deci, serverul are parola secret\u0103 cu care a fost generat acest num\u0103r, iar votantul are amprenta digital\u0103 \u0219i \u0219tie care a fost op\u021biunea sa de vot.<\/p>\n<p>Pentru a se asigura c\u0103 votul s\u0103u a fost \u00eenregistrat corect, votantul poate cere de la organizator parola generat\u0103 de server, apoi poate folosi orice site online care ofer\u0103 posibilitatea de hash cu algoritmul HMAC, indic\u00e2nd parola ob\u021binut\u0103 \u0219i textul cu op\u021biunea sa de votare <strong>Candidat 2,Candidat 3<\/strong>. Rezultatul ob\u021binut trebuie s\u0103 fie identic cu codul care a fost afi\u0219at \u00een fereastra de confirmare a vot\u0103rii \u0219i primit prin SMS.<\/p>\n<p>Pentru a exersa aceast\u0103 situa\u021bie pute\u021bi \u00eencerca acest <a href=\"https:\/\/dinochiesa.github.io\/hmachash\/index.html\">site<\/a> sau oricare alt site public (g\u0103si\u021bi pe Internet multe, c\u0103ut\u00e2nd dup\u0103 cuvintele cheie <a href=\"https:\/\/www.google.com\/search?q=HMAC+SHA256+verification\">HMAC SHA256 verification<\/a>).<\/p>\n<p>Mai jos este un exemplu de parol\u0103 de 100 de simboluri generat\u0103 de server, textul din op\u021biunea de votare a votantului \u0219i amprenta digital\u0103.<\/p>\n<p>Parol\u0103: <code>Nsj9BqRqzxGqEpuY0NAXv7gQOOFlRONacbH8ucblp9eW8GmUZSusqMNRt0qMfHIKZiycd6Zu8qKFbyYDd1xJ21C8VYQIJlzU3Wj0<\/code><br \/>\nText: <code>Candidat 2,Candidat 3<\/code><br \/>\nAmprenta digital\u0103: <code>4cb027e6977424074a515a34df0ffc9659d6082394c0bc1fd3d60af9e20c17fb<\/code><\/p>\n<p>PS: Urm\u0103torul articol va fi despre posibilitatea de auditare a rezultatelor vot\u0103rii cu ajutorul criptografiei.\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u201cCum VoteMeApp asigur\u0103 c\u0103 toate voturile au fost contorizate \u0219i nu sunt modificate?\u201d este o \u00eentrebare pe care o adreseaz\u0103 cei care voteaz\u0103 \u00eentr-un scrutin secret. Un scrutin online secret se caracterizeaz\u0103 prin faptul c\u0103 platforma afi\u0219eaz\u0103 doar suma voturilor pentru fiecare candidat, nu \u0219i op\u021biunea de vot a fiec\u0103rui votant. La scrutinele cu votare &#8230; <a title=\"Magia din spatele amprentei digitale \u00eentr-un sistem de votare\" class=\"read-more\" href=\"http:\/\/esanu.name\/vitalie\/?p=1039\" aria-label=\"More on Magia din spatele amprentei digitale \u00eentr-un sistem de votare\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1039","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=\/wp\/v2\/posts\/1039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1039"}],"version-history":[{"count":0,"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=\/wp\/v2\/posts\/1039\/revisions"}],"wp:attachment":[{"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1039"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/esanu.name\/vitalie\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}