Closed synctext closed 5 years ago
Repositories: https://github.com/landgenoot/digital-voting-pass-server https://github.com/landgenoot/digital-voting-pass-app
The research process is tracked in the issues in the server repo.
Project Plan Digital_voting_pass_Project_Plan.pdf
Scope question: partly digital voting. No changes required in legacy procedures and infrastructure. Current law does not permit digital voting, it specifies analog world : 80 gram paper only. Problem of identification and authentication in voting station. Role of smartphone? Private key location, airgapped ? How historic and old is the voting pass (e.g. procedure never changed in decades)? key lib: An Open Source Java Implementation of Machine Readable Travel Documents. Dutch pasport from French company uses Elyptic curve crypto, not compatible with standard binary OpenSSL signature validator. Support challenge response, access photo etc in .apk.
Create fully documented docker Alpine-based image to talk to drivers license or e-passport.
Possible architectures (explore in report):
Perhaps link to our biometric validation basic building block. #2812
We tackled the problem that we were unable to verify a signature from a dutch travel document due to Elliptic Curves signatures instead of RSA. Will update the pypassport library and add support asap.
We are still having an issue with the limit of bytes which can be signed by the travel document. This is limited to exactly 8 bytes according to the ICAO standard. SHA1 or SHA256 hashes have lengths 20 and 32 byte respectively. Therefore these hashes cannot be signed by a travel document.
Hashfunctions with smaller sizes a not recommended for cryptographic usage. @synctext Do you think that it is still secure to sign a hash in parts?
Voornemen is oplossing bieden voor digitaal verkrijgen stem pas.
Tip: Benader het vanuit de functie van de stem pas, niet de stem pas zelf, nl. het persoonlijk kunnen claimen van je recht om te stemmen!
We blijven de stem pas uitdelen a. Papier b. BSN + public key reisdocument = digitaal token
Stemmen a. Zelf aangeven dat je digitaal wilt stemmen i. Reisdocument is het vehicle (omdat elk reisdocument een unieke privé sleutel heeft) ii. Met reisdocument verkrijg je stembiljet door eenmalig uitgave digitaal token b. Papier i. Papieren stem pas inleveren ii. Stembiljet verkrijgen
Met stembiljet stemmen <-- het stemmen zelf is verder buiten scope
Complimenten voor de praktische benadering en tastbaar zoeken naar te realiseren prototype / concept. Realiseer je dat er vele vragen onderweg zijn die (on)bewust een antwoord krijgen. Probeer die te benoemen en formuleer je keuze(s) en overwegingen daarbij.
Attached: research report concludes the research phase of the project. Digital_Voting_Pass_Research_report.pdf Digital_Voting_Pass_Research_report_v2.pdf Digital_Voting_Pass_Research_report_v3.pdf
thnx! good stuff. please include the ICTU argumentation: We have self-driving cars soon. In the future it is likely that the new generation of citizens are not willing willing to vote, unless it is electronic from any place using any approved device.
Please add 4.2 "trust requires uncompromising usage of open source technology" or something. all hardware used should be open hardware licensed to build trust with voters.... it is essential to provide end-to-end integrity checks to ensure correct functioning of the ecosystem.. etc.
Bonus: that 8 Byte sign restriction.. try to get rid of that using a 3DES aanpak (CBC chaining): by using a standard string of specially crafted repeated and chained signatures we are able to iteratively sign standard SHA256 signatures... hash collision.. etc... (argument/proof included..)..
CBC seems to be a really clever solution, thanks! Need to find out if it works with non deterministic signatures.
@synctext Thanks for your feedback, we added the ICTU argument in the introduction and updated 4.2. Digital_Voting_Pass_Research_report_v2.pdf
Please include the foundation for trusted identity: https://en.wikipedia.org/wiki/Physical_unclonable_function That is the key component to guarantee the system integrity.
Tip: use readthedocs approach for details explanation of tech matters in Appendix B.
ToDo: screenshots for presentation at One Conference tomorrow
Pictures of our wall. Our global planning as we drew it in the sprint planning meeting.
@synctext Here are the screenshots of the app, I've included all the possible screens, feel free to use as little or as many as you want. Retrieved data is the signed 8-byte '0a1b2c3d4e5faabb' hexstring, signed with my passport. Starting screen NFC disabled error Retrieved signed data (192 byte) Retrieved signed data 2 (different because non-deterministic) Retrieved signed data 3 with pop-up of BSN from datagroup 1 of passport
Research report updated according to feedback (thanks to @jellelicht !).
The current operational app can now (.apk):
Draft final report: Digital_voting_pass___Final_report.pdf
Overview of the current voting process and the proposed new voting process using the digital voting pass.
Paper voting is far from flawless: Ruim 7.600 stemmen niet meegeteld bij verkiezingen (NRC)
Chapter: Problem description:
Chapter: performance analysis and evaluation
Feedback first SIG upload:
Beste,
Hierbij ontvang je onze evaluatie van de door jou opgestuurde code. De evaluatie bevat een aantal aanbevelingen die meegenomen kunnen worden in de laatste fase van het project.
Deze evaluatie heeft als doel om studenten bewuster te maken van de onderhoudbaarheid van hun code en dient niet gebruikt te worden voor andere doeleinden.
Mochten er nog vragen of opmerkingen zijn dan hoor ik dat graag.
Met vriendelijke groet, Dennis Bijlsma
[Analyse] De code van het systeem scoort 4 sterren op ons onderhoudbaarheidsmodel, wat betekent dat de code bovengemiddeld onderhoudbaar is. De hoogste score is niet behaald door een lagere score voor Unit Size.
Voor Unit Size wordt er gekeken naar het percentage code dat bovengemiddeld lang is. Het opsplitsen van dit soort methodes in kleinere stukken zorgt ervoor dat elk onderdeel makkelijker te begrijpen, te testen en daardoor eenvoudiger te onderhouden wordt. Binnen de langere methodes in dit systeem, zoals bijvoorbeeld de 'Camera2BasicFragment.setUpCameraOutputs'-methode, zijn aparte stukken functionaliteit te vinden welke ge-refactored kunnen worden naar aparte methodes. Commentaarregels zoals bijvoorbeeld 'Find out if we need to swap dimension to get the preview size relative to sensor coordinate' zijn een goede indicatie dat er een autonoom stuk functionaliteit te ontdekken is. Het is aan te raden kritisch te kijken naar de langere methodes binnen dit systeem en deze waar mogelijk op te splitsen.
In bovenstaand voorbeeld valt het overigens op dat het bestand "Copyright 2014 The Android Open Source Project" bevat. De packagenaam (com.digitalvotingpass.camera) is echter van jullie, dus het wekt de indruk dat jullie het oorspronkelijke bestand hebben aangepast. Ik heb dit daarom opzettelijk als voorbeeld genomen: als je er voor kiest om andermans code te adopteren en aan te passen, ben je vanaf nu ook verantwoordelijk voor het onderhoud van deze code.
De aanwezigheid van test-code is in ieder geval veelbelovend, hopelijk zal het volume van de test-code ook groeien op het moment dat er nieuwe functionaliteit toegevoegd wordt.
Over het algemeen scoort de code bovengemiddeld, hopelijk lukt het om dit niveau te behouden tijdens de rest van de ontwikkelfase.
Dennis Bijlsma | Senior Consultant
Digital_voting_pass___Final_report.pdf
Draft report
The SIG rules of code review include: each library you include in your project becomes your responsibility and you need to ensure sufficient quality.
However, this e-voting pass project includes a whole blockchain infrastructure in the form of a library. Fixing numerous person-years of code is not realistic. Stats: X lines includes, of which Y line got modified by us.
Recent publication on voting https://dl.acm.org/citation.cfm?id=3019841 not sure if it's related to this work, but might be interesting
Digital_voting_pass___Final_report.pdf
2nd Draft final report
Thanks Jaap, looks good! Maybe you should also post it to https://github.com/Tribler/tribler/issues/2925
@syntext we have come up with the following structure for the presentation:
Do you have any comments/feedback?
please post .pdf of .ppt... Suggest add problems with paper 14000 vote diff.
Feedback on second SIG upload
[Hermeting]
In de tweede upload zien we dat zowel de omvang van het systeem als de score voor onderhoudbaarheid is gestegen. Op het gebied van Unit Size zien we een bescheiden verbetering ten opzichte van de eerste upload. Let wel op dat je niet aan de ene kant aan het refactoren bent, en vervolgens aan de andere kant weer net zo goed nieuwe lange methodes aan het toevoegen bent.
Ook is het goed om te zien dat jullie naast nieuwe productiecode ook aandacht hebben besteed aan het schrijven van nieuwe testcode. De hoeveelheid nieuwe tests kan nog wel iets beter.
Uit deze observaties kunnen we concluderen dat een deel van de aanbevelingen van de vorige evaluatie zijn meegenomen in het ontwikkeltraject.
Project finished with 91-page final report, see above, closing issue...
Goal is to digitize the current Dutch voting pass (first prototype).
This voting pass prevents double voting and check if this citizen is allowed to vote.
This project is a first step to increase the digital steps in the voting process. Critical requirement is ensuring trust, integrity, security, auditability, etc. Currently it seems to have occurred that people moving between municipalities obtained two voting passes, obviously we want to prevent this irregularity.
Manual counting takes hours to process but is highly trusted, see this stone-age analog process in detail.
specifications of voting pass
Trust is the cardinal issue in this BEP project.
Currently the government is experimenting with creating a smaller and more managable analog voting pass.![image](https://cloud.githubusercontent.com/assets/325224/25444540/cb9d0a96-2aab-11e7-8258-9f92e58bb4d9.png)
blockchain could this solve various fraud issues?