{"id":28416,"date":"2020-09-09T16:32:42","date_gmt":"2020-09-09T13:32:42","guid":{"rendered":"https:\/\/forklog.com\/en\/?p=28416"},"modified":"2025-08-27T11:33:05","modified_gmt":"2025-08-27T08:33:05","slug":"part-of-the-source-code-of-russias-blockchain-voting-system-published","status":"publish","type":"post","link":"https:\/\/forklog.com\/en\/part-of-the-source-code-of-russias-blockchain-voting-system-published\/","title":{"rendered":"Part of the source code of Russia&#8217;s blockchain voting system published"},"content":{"rendered":"<p>In the public domain <a href=\\\"https:\/\/t.me\/cikrossii\/616\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b<\/a> the source codes of the key algorithms of the remote electronic voting system (DEG), which is planned to be used for the by-elections to the State Duma of the Russian Federation on 13 September. They include counting servers, smart contracts and internal libraries. An overview of the system <a href=\\\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/518090\/\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d<\/a> in Rostelecom&#8217;s blog on Habr.<!--more--><\/p>\n<p>A public test of the system took place on 31 August.<\/p>\n<p><span style=\\\"font-weight: 400;\\\">Public testing fully replicated all stages of the upcoming electronic voting: application registration, authentication and identification via the state services portal, online voting and vote counting. According to Rostelecom specialists, during the trial voting there were no failures or interruptions in the DEG&#8217;s operation; the system remained stable under peak loads. <\/span><\/p>\n<p><span style=\\\"font-weight: 400;\\\">Following the test, the user interface and ballot display on mobile screens were improved. The dashboard showing the statistics of the voting process was enhanced. A new feature was added \u2014 loading encrypted transactions generated during voting directly from the blockchain. Observers gained the ability to see in real time the number of user authorizations, SMS messages sent, and successful confirmations.<\/span><\/p>\n<p>From a technical standpoint, the DEG system consists of a large number of software and hardware components and allows participants in the electoral process to interact in a unified information environment, according to the developers.<\/p>\n<div id=\\\"attachment_109663\\\" style=\\\"width: 1388px\\\" class=\\\"wp-caption alignnone\\\"><img loading=\\\"lazy\\\" decoding=\\\"async\\\" aria-describedby=\\\"caption-attachment-109663\\\" class=\\\"size-full wp-image-109663\\\" src=\\\"https:\/\/forklog.com\/wp-content\/uploads\/atpmklbrax0roe0fbookt0f6ttw.png\\\" alt=\\\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f\\\" width=\\\"1378\\\" height=\\\"781\\\" srcset=\\\"https:\/\/forklog.com\/wp-content\/uploads\/atpmklbrax0roe0fbookt0f6ttw.png 1378w, https:\/\/forklog.com\/wp-content\/uploads\/atpmklbrax0roe0fbookt0f6ttw-300x170.png 300w, https:\/\/forklog.com\/wp-content\/uploads\/atpmklbrax0roe0fbookt0f6ttw-1024x580.png 1024w, https:\/\/forklog.com\/wp-content\/uploads\/atpmklbrax0roe0fbookt0f6ttw-768x435.png 768w\\\" sizes=\\\"auto, (max-width: 1378px) 100vw, 1378px\\\" \/><\/p>\n<p id=\\\"caption-attachment-109663\\\" class=\\\"wp-caption-text\\\">Diagram of the interaction between components and participants in the DEG PTK system<\/p>\n<\/div>\n<p>The blockchain in the remote voting system ensures immutability of information and transparency of smart-contract execution, protects and stores data in a decentralised manner, including the voter registry and encryption keys, and also enables tracking of transactions within the network.<\/p>\n<blockquote>\n<p>\u201cWithout using this technology, achieving the necessary properties in the voting system, as well as trust in it, is practically impossible,\u201d the developers note.<\/p>\n<\/blockquote>\n<p>Thanks to smart contracts, the electronic and &#8216;blind&#8217; signatures for each transaction with encrypted ballots are verified for authenticity, and a basic check of the encrypted ballot\u2019s correctness is also performed.<\/p>\n<blockquote>\n<p>\u201cDistributed storage and counting of votes is not limited to blockchain nodes. For each node a separate counting server can be deployed. It provides distributed generation of the ballot encryption keys, decryption of results, and tallying of the final votes, which can be verified for correctness,\u201d the review states.<\/p>\n<\/blockquote>\n<p>The following are used at various stages of the voting process:<\/p>\n<ul>\n<li>electronic signature;<\/li>\n<li>blind signature of the voter&#8217;s public key;<\/li>\n<li>ElGamal encryption on elliptic curves;<\/li>\n<li>zero-knowledge proofs;<\/li>\n<li>DKG (Distributed Key Generation) Pedersen 91 protocol;<\/li>\n<li>Shamir&#8217;s secret sharing protocol.<\/li>\n<\/ul>\n<p>A distinctive feature of the system is its use of homomorphic encryption.<\/p>\n<blockquote>\n<p>\u201cEncrypted ballots can be combined without decrypting to obtain the aggregated count for each voting option in the ballots. The system implements mathematical proofs of the correctness of such calculation, which can be verified by observers,\u201d the developers explain.<\/p>\n<\/blockquote>\n<div id=\\\"attachment_109662\\\" style=\\\"width: 1189px\\\" class=\\\"wp-caption alignnone\\\"><img loading=\\\"lazy\\\" decoding=\\\"async\\\" aria-describedby=\\\"caption-attachment-109662\\\" class=\\\"size-full wp-image-109662\\\" src=\\\"https:\/\/forklog.com\/wp-content\/uploads\/99ptcm7xypnr0xl7vbu80ykkjjg.png\\\" alt=\\\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f\\\" width=\\\"1179\\\" height=\\\"1579\\\" srcset=\\\"https:\/\/forklog.com\/wp-content\/uploads\/99ptcm7xypnr0xl7vbu80ykkjjg.png 1179w, https:\/\/forklog.com\/wp-content\/uploads\/99ptcm7xypnr0xl7vbu80ykkjjg-224x300.png 224w, https:\/\/forklog.com\/wp-content\/uploads\/99ptcm7xypnr0xl7vbu80ykkjjg-765x1024.png 765w, https:\/\/forklog.com\/wp-content\/uploads\/99ptcm7xypnr0xl7vbu80ykkjjg-768x1029.png 768w, https:\/\/forklog.com\/wp-content\/uploads\/99ptcm7xypnr0xl7vbu80ykkjjg-1147x1536.png 1147w\\\" sizes=\\\"auto, (max-width: 1179px) 100vw, 1179px\\\" \/><\/p>\n<p id=\\\"caption-attachment-109662\\\" class=\\\"wp-caption-text\\\">Diagram of the voting process<\/p>\n<\/div>\n<p>According to the developers, the key properties of blockchain voting are verifiability and voter anonymity, ballot confidentiality, immutability and verifiability of data, and the reliability of the network architecture.<\/p>\n<blockquote>\n<p>\u201cThe system was initially conceived and technically implemented to be as transparent and verifiable as possible, through the use of blockchain technology and a special cryptographic protocol. After completing all rounds of closed and open testing, the system is ready to conduct the first pilot vote. Moreover, the testing allowed a clear understanding of the points for further scaling of the system,\u201d said Artem Kalikhov, Product Director at Waves Enterprise.<\/p>\n<\/blockquote>\n<p>Ivan Begtin, the director and founder of ANO &#8216;Information Culture&#8217;, came away with the impression that the code was written &#8216;on the knee&#8217;.<\/p>\n<blockquote>\n<p>\u201cThe code is not impressive at all. A superficial check of the cryptolib tool code in Python via pylint yields a score of 3.21 out of 10. For the other &#8216;pieces of code&#8217; the situation is not much better \u2014 the level of programming culture is below average,\u201d Begtin wrote.<\/p>\n<\/blockquote>\n<p>The remote electronic voting is scheduled for the September by-elections to the Russian State Duma in the Yaroslavl and Kursk regions.<\/p>\n<p>The last blockchain voting on amendments to the Constitution of the Russian Federation took place in late June 2020. In the first hours of operation the electronic voting system encountered a fault, attributed to an influx of voters. The next day the fault affected data export.<\/p>\n<p>Subsequently, unknown attackers attempted an attack on the vote-observation service, and a vulnerability found allowed decrypting voters&#8217; votes before counting.<\/p>\n<p>In early July, the database of participants&#8217; passports was made available on one of the forums. The Moscow government denied this information, but the hacked archive later appeared in the open beyond the forum.<\/p>\n<p>Follow ForkLog news on Telegram: <a href=\\\"https:\/\/t.me\/forklogfeed\\\" target=\\\"_blank\\\" rel=\\\"nofollow noopener noreferrer\\\">ForkLog Feed<\/a> \u2014 the full feed of news, <a href=\\\"https:\/\/telegram.me\/forklog\\\" target=\\\"_blank\\\" rel=\\\"nofollow noopener noreferrer\\\">ForkLog<\/a> \u2014 the most important news and polls.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The source code of the key algorithms of the remote electronic voting system (DEG), planned for use in the September 13 by-elections to the Russian State Duma, has been published. They include counting servers, smart contracts and internal libraries. An overview of the system was published in Rostelecom&#8217;s blog on Habr.<\/p>\n","protected":false},"author":1,"featured_media":28417,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"select":"1","news_style_id":"","cryptorium_level":"","_short_excerpt_text":"","creation_source":"","_metatest_mainpost_news_update":false,"footnotes":""},"categories":[3],"tags":[25,27,1419,1928],"class_list":["post-28416","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-analysis","tag-blockchain","tag-russia","tag-source-code","tag-voting-system"],"aioseo_notices":[],"amp_enabled":true,"views":"17","promo_type":"1","layout_type":"","short_excerpt":"","is_update":"","_links":{"self":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts\/28416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/comments?post=28416"}],"version-history":[{"count":1,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts\/28416\/revisions"}],"predecessor-version":[{"id":28418,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts\/28416\/revisions\/28418"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/media\/28417"}],"wp:attachment":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/media?parent=28416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/categories?post=28416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/tags?post=28416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}