Blok zincir tabanlı elektronik seçim sistemi tasarımı ve kısmi uygulaması
Blockchain based electronic voting system design and partial application
Yazar: BİLAL GÜLTEKİN
Danışman: PROF. DR. ERTUĞRUL KARAÇUHA
İstanbul Teknik Üniversitesi / Bilişim Enstitüsü / Bilişim Uygulamaları Ana Bilim Dalı / Bilişim Bilim Dalı
Derece: Yüksek Lisans, 2019
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control ; Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering
Dizin: Bilgi aktarım sistemi = Information transfer system ; Bilgi sistemleri = Information systems ; Bilgisayar destekli sistemler = Computer aided systems

Özet:
Elektronik seçim sistemleri, elektronik sistemlerdeki gelişmenin ve insan hayatındaki dijitalleşmenin etkisiyle, ülkeler tarafından tercih edilmeye başlanmıştır. Ancak güvenlik ve şeffaflık endişeleri, tartışmalara ve hatta bazı ülkelerde geri adım atılmasına sebep olmuştur.
Bu çalışmada, şeffaf, denetlenebilir ve doğrulanabilir bir seçim sistemi tasarlanmaya çalışılmıştır. Seçim kurumları yerine seçmenlerin merkezi konumda olduğu, seçim kurumlarının siyasi partiler ile birlikte gözlemci ve doğrulayıcı bir rol oynadığı bir süreç oluşturulmuştur.
Tasarımda, finans alanında kendini ispatlamış ve bir çok farklı alandaki uygulamalarda kullanılmaya başlanmış blok zinciri veritabanı tercih edilmiştir. Dağıtık ve şeffaf yapısı sayesinde, tüm bilginin herkes tarafından okunabilmesi ve doğrulanabilmesi sağlanmaya çalışılmıştır. Temel tasarımda, seçmenlerin elektronik kimlik kartlarıyla kimlik doğrulaması yapabildiği ve her seçmenin açık/gizli anahtar çifti olduğu varsayılmıştır. Farklı kimlik doğrulama yöntemleri ve anahtar çiftine sahip olmama durumu için sistem üzerinde yapılabilecek değişiklikler önerilmiştir. Süreç, baskı ve yasadışı teşvik ile oy kullanımını engellemek adına, seçmenlerin oylarını belirli merkezlerde bulunan oy verme makineleri (OVM) üzerinden kullanacakları ve seçmenlere kullandıkları oy ile ilgili herhangi bir belge verilmeyecek şekilde tasarlanmıştır.
Tasarlanan sistem, seçim öncesi bir takım hazırlıklar yapılmasını gerektirmektedir. Hazırlık süresince, seçmen ve seçim listeleri hazırlanır, seçmenlerin açık anahtarları toparlanır. Madencilik faaliyeti yaparak, seçim sürecine ve sistemin güvenilirliğine katkıda bulunmak isteyen kişi ve kurumların bir portal üzerinden açık anahtarlarını kaydetmeleri istenir. Aynı zamanda OVM'lerin açık anahtarları da blok zincirine eklenmek üzere toparlanır.
Yapılan hazırlıklar sonrasında, parti temsilcilerinin ve bilişim uzmanlarının gözlemci ve denetleyici olarak katılım gösterdikleri kök blok üretim süreci başlar. Süreç başlangıcında, seçim için açık/gizli anahtar çifti üretilir. Sonrasında, her seçmenin kullanacağı oy ile ilgili, elektronik oy pusulaları oluşturulur. Elektronik oy pusulası oluşturulduktan sonra özeti alınır ve bu özet elektronik oy pusulası kanıtı olarak saklanır. Aynı pusula, ilgili seçmenin açık anahtarıyla da şifrelenir. Elektronik oy pusulası işlendikten sonra, seçmen ile oyu arasında ilişki kurulmasını önlemek adına, silindiğinden emin olunmalıdır. Bu veriler, hazırlık sürecinde toparlanan açık anahtarlarla birlikte, kök blok içerisine, herkesin erişimine açık bir şekilde kaydedilir. Kök blok seçimin gizli anahtarı ile şifrelendikten sonra, gizli anahtar şifreleme yöntemleriyle parçalanarak siyasi partiler arasında dağıtılır. Açık anahtar ise OVM'lere girilmek ve madenciler tarafından kullanılmak üzere yayınlanır.
Seçim süresince, seçmenler OVM'lere kimliklerini PIN, biyometrik yöntemler vb. ile ispatlayarak, şifreli pusulayı deşifre eder ve oylarını kullanırlar. Verilen oylar, seçim bitmeden önce oy sayımını engellemek için, seçimin açık anahtarıyla şifrelenir. Blok zinciri ağına gönderilen verinin içine, deşifre edilen pusula içeriği de kanıt olarak eklenir. OVM'ler kullanılan her oyu, şeffaf bir hazne içinde çıktı alarak seçmene onaylatır ve çıktıyı gizli haznede saklar.
Madenciler, blok zinciri ağına gönderilen oyların, geçerli bir OVM tarafından gönderildiğini, oy içerisindeki elektronik oy pusulasının özetinin, kanıt listesinde olduğunu doğrularlar. Önceki blokların da kayıtlı madenciler tarafından oluşturulup oluşturulmadığını kontrol ederler.
Süreç sonunda, siyasi partilerin kendilerinde bulunan parçaları birleştirmeleriyle seçimin gizli anahtarı tekrar oluşturulur. Blok zinciri veritabanında biriken oylar bu anahtarla deşifre edilerek sayılır. Sayım işlemi müstakil olarak yapılabileceği gibi blok zinciri ağında madenciler tarafından da yapılabilir. Sayım işleminden sonra elektronik yapıya müdahale olup olmadığını doğrulamak için, OVM'lerin her oy için aldıkları çıktılar, rastgele OVM belirlenerek blok zincirindeki sonuçlar ile karşılaştırılır.
Sistem tasarımı sunulmadan önce, dünyadaki elektronik seçim uygulamalarından, sistemde kullanılan şifreleme yöntemlerinden ve blok zincirinden bahsedilmiş daha sonra da günümüz şartları çerçevesinde tasarım ilkeleri belirlenmiştir. Tasarlanan sistem, kısmi olarak gerçeklenmiş ve çalışmaya eklenmiştir.

Abstract:
Electronic voting systems have been started to be tried by countries with the development of electronic systems and digitalization in human life. However, concerns about security and transparency have led to discussions and even step back in some countries.
In this thesis, a transparent, auditable and verifiable electronic voting system is designed and presented. In this system, voters have the responsibilities of observation and validation of the system instead of election offices. People and institutions can contribute to the system and validate votes by mining activity during the election.
In the design, there are preparation, genesis block generation, election, tallying and verifying stages. In the preparation stage, all necessary data is collected. In genesis block generation stage, this data is processed and first, genesis block of the blockchain is generated. Genesis block contains all the information which is needed for the whole process. In the election stage, votes can be cast only through voting machines which are placed in polling stations and verified by the miners. After the election is done, tallying and verifying stage is performed.
Blockchain database, which has proven itself in the field of finance and has been used in many different fields, is preferred in the design. With its transparent and distributed structure, all information of an election can be read and verified by everyone. For an electronic voting system, the blockchain database should be private to let only eligible voters vote. Since elections may determine countries' destiny, it may get the attention of malicious parties which have high computing power. That's why mining activity is kept also private and let only registered miners do. Additionally, the consensus method is derived from proof of stake to consume less energy and avoid centralization in the mining process.
In the primary design, it is assumed that voters can prove their identities with an electronic ID card and have a public/private key pair. Some modifications on primary design are proposed for cases which may have different ID verification methods and lack of key pair. In order to prevent coercion, votes can be cast only through voting machines which are placed in polling stations. Additionally, no receipt is given by the machines to voters for voting.
In the preparation stage, a list of eligible voters is published and checked by political parties. Public keys of eligible voters are collected to limit voting activity on the blockchain network. In order to show candidates and limit voters for voting only they are authorized, candidate lists are prepared as a digital document. People and institutions willing to do mining activity register their public keys through a web portal and these keys are collected. In this way, mining activity is limited among the known participants. Also, public keys of voting machines are collected.
Genesis block generation stage is operated after the preparation stage. In this stage, all collected data is processed, electronic ballots and proofs are generated for every voter. This stage should be observed and audited by political party representatives and IT professionals. Auditing is crucial for providing anonymity of voters.
At the beginning of the genesis block generation stage, a public/private key pair for the election is generated. Electronic ballots are generated which involve random ballot ID, sub election ID for every voter. Hashes of ballots are saved as proof of ballot. Ballots are also encrypted with voter's public key. Both encrypted ballots and hashes of ballots are saved into the genesis block with the collected public keys of voting machines and miners. Generated electronic ballots are deleted after this process.
At the end of the generation stage, the public key of election is published to be entered in voting machines and used by miners. After the private key of election is used for signing the genesis block, it is distributed between political parties by using threshold cryptosystem so that no one even the election office can decrypt used votes and know the intermediate results before the end of the election.
During the election, voters prove their identities to voting machines by using their electronic ID card with some extra steps such as entering a PIN, using biometric data etc. After the authentication process, voting machines decrypt their encrypted ballots and ask for casting it. When voters cast a vote, voting machines print the choice onto a paper inside a closed transparent part and shows to the voter to get approval. After approval, voting machines move printed paper to closed hidden part. Once the voting process is done, voting machines encrypt just choice of voters with the public key of the election and send this information with the content of encrypted ballots to blockchain network after signing. Printed papers help to check if there is any intervention to the election after tallying is done.
Once a vote is cast and sent to blockchain network, it is verified by miners. Miners check if it is signed by authorized voting machine by checking the existence of the public key among the public keys of voting machines and if the hash of the content of decrypted electronic ballot exists among the ballot proofs. Miners apply same verification steps to previous blocks with an extra step to check if blocks are generated and signed by authorized miners.
After the election, the private key of the election is generated by gathering pieces from political parties and is used to decrypt choices in used electronic ballots. Since the tallying process may take a long time for elections have many voters, using the blockchain network is proposed as an option. After tallying, a number of voting machines are selected randomly and their printed votes are compared with their sent votes to the blockchain database in order to check if there is any intervention or failure in the electronic voting system.
It will be appropriate to develop all software and hardware used in the system as open source to provide more transparency. It is known there are some concerns about open source in terms of security and business. However, there are plenty of works show that these concerns are unfounded.
The designed system can be used without voting machines with personal devices by just removing voting machines from the design and miners' checklist. Since proofs are exposed after first voting, repetitive voting should not be let and just first one should be tallied. Additionally, to prevent Sybil attacks, received votes can be broadcasted with timestamp and miners' sign. A transaction ID can be given to voters to let them check if their votes are tallied at the final results. Removing voting machines is not preferred and kept out of scope in the primary design, because this may lead to coercion in some countries in the world.
The size of the blockchain database may cause some problems for mining activity and the application of the design itself. When calculated roughly, the final size is 75 GB for 50,000,000 voters. The size can be decreased by reducing the sizes of keys and output of hashes. Putting sub election IDs inside electronic ballot lets voters cast their votes wherever they want. However, this makes detecting repetitive votes hard at the voting machine level. That's why it should be done at the blockchain network level by miners while producing new blocks or at the tallying stage.
Within the scope of the study, a partial application of the system is developed using Python language. Since it was not possible to create an application for the whole system in this study, blockchain network and vote casting machines are represented by simple classes.