Dette indlæg er alene udtryk for skribentens egen holdning.

Unittests af vores e-valgssystem kan vente

Af Patrick Mylund Nielsen12. juli 2013 kl. 14:5819
Artiklen er ældre end 30 dage

Estlands e-valgssystem, "ivote-server", er blevet open-sourced, og er tilgængeligt på GitHub.

En af filerne, ivote-server/hes/vote_analyzer.py, har et pudsigt indhold:

  1. #!/usr/bin/python2.7
  2. # -*- coding: UTF8 -*-
  3.  
  4. """
  5. Copyright: Eesti Vabariigi Valimiskomisjon
  6. (Estonian National Electoral Committee), www.vvk.ee
  7. Written in 2004-2013 by Cybernetica AS, www.cyber.ee
  8.  
  9. This work is licensed under the Creative Commons
  10. Attribution-NonCommercial-NoDerivs 3.0 Unported License.
  11. To view a copy of this license, visit
  12. http://creativecommons.org/licenses/by-nc-nd/3.0/.
  13. """
  14.  
  15. def analyze(ik, vote, votebox):
  16.  
  17. # TODO: implement security checks
  18. # such as verifying the correct size
  19. # of the encrypted vote
  20.  
  21. return []

Filen har tilsyneladende set sådan ud i al den tid, systemet har eksisteret.

Det er selvfølgelig en god ting, at koden bag valgsystemet er open sourced, men det er ret urovækkende at man ikke alene skal stole på, at det faktisk er den kode, der kører på valgserverne—det ser også ud til, at folkene bag det ikke er specielt sikre på, om systemet virker korrekt eller ej.

19 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
15
16. juli 2013 kl. 12:55

Nu har jeg lavet unittest https://gist.github.com/fnielsen/6007683 og jeg kan meddele at den går igennem helt uden problemer!

Eventuelt kan der dog være et encoding problem. Anden linies "# -- coding: UTF8 --" burde have været "# -- coding: utf-8 --" jvf. PEP-0263. Har mon kandidater såsom Eiki Nestor haft en fordel i forhold til Karel Rüütli?

16
16. juli 2013 kl. 13:08

Mht. encoding 'problem' er Python dog ganske tilgivelig:

u'Rüütli'.encode('uTf8') 'R\xc3\xbc\xc3\xbctli' u'Rüütli'.encode('utf-8') 'R\xc3\xbc\xc3\xbctli' u'Rüütli'.encode('utF') 'R\xc3\xbc\xc3\xbctli'

13
15. juli 2013 kl. 18:21

Jeg tror ikke at det at du finder en fil med en todo er ensbetydende med at de ikke har udført tests, unittests mm. Manglende unit tests i udgivelsen betyder ikke nødvendigvis at de ikke har været benyttet, selvom det ikke ser godt ud. Der er trods alt heller ikke design dokument, men softwaren er nok lavet ud fra et, ligesom der er en rimelig sandsynlighed for at de har udført mere end bare basale tests.

11
14. juli 2013 kl. 11:16

We'll be adding a snapshot of the system to our DemTech evoting systems repo this week too. https://github.com/demtech/evoting-systems

We have performed audits of several released evoting systems so far: Norway's system, Scantegrity II, The Netherland's KOA system, etc. I'm certain we'll see the same thing with the Estonian system as we have seen the world-over: poor software engineering practices, little-to-no validation (unit/system tests), no verification, no traceability to legal requirements, etc.

I expect to find all the same here, despite the architect of the Estonian system's declarations in public, and to me personally, that the system is fantastic, needs no review, well-tested, etc.

Coincidentally, I'm presenting a paper on system testing evoting tally systems at a conference this week in Surrey. If you are interested in how this should/can be done (generating system tests via model checking/finding), have a read: http://scholar.google.com/scholar?hl=en&q=Formal+Model-based+Validation+for+Tally+Systems&btnG=&as_sdt=1%2C5

6
13. juli 2013 kl. 12:13

Det ligner en gang makværk der er blevet smidt sammen over en weekend.

5
13. juli 2013 kl. 11:32

Bare vent til tabloidpressen opdager at de har skrevet deres valgsystem i et programmeringssprog der bruger "garbage collection" :-)

19
16. juli 2013 kl. 23:44

Kan du (eller andre) beskrive over for mig hvorfor en ref. counting GC er et problem?

Reference counting er ikke et problem, men det er den langt svageste måde at lave en GC på. Den koster rigtigt mange instruktioner hvis du hele tiden ændrer refcounts og er væsentligt dyrere end bedre GC-strategier som copying-collection eller mark-n-sweep. Der er også fordele i et kunne tage store drøje hug hvor man rydder en masse op i stedet for at skulle gøre det lidt hen af vejen hele tiden.

Python benytter iøvrigt ikke ren ref-counting. En svaghed ved det er at hvis objekter A og B peger på hinanden, så kan de aldrig deallokeres thi de begge har et count på 1. Men Python kører jævnligt et run for at bryde cycles af den slags.

Det er dog ikke specielt vigtigt for et e-valgssystem. Det primære problem der må være at sikre sig mod lange pause-times så e-valgssystemet kan svare tids nok. Men hård realtid som det kendes fra a-kraftværker, fly mm, er der nok ikke tale om.

for den slags skal du bruge en RTGC, se f.eks., http://michaelrbernste.in/2013/06/03/real-time-garbage-collection-is-real.html

17
16. juli 2013 kl. 22:30

Kan du (eller andre) beskrive over for mig hvorfor en ref. counting GC er et problem?</p>
<p>Er det en dårlig idé sådan generelt at benytte sig af software der bruger en ref counting GC?

Du skal nok læse det med ref. counting GC som et flamebait. GC algoritmen har stor betydning for hvor effektiv en platform performer og reference counting er en af de simple algoritmer.

Mange programmører på platformer med automatisk GC, som fx Python, er ligeglade eller ved ikke hvad GC er. GC algoritmen er kun et emne i en sikkerhedsanalyse, hvis systemet skal styre et Jetfly eller et a-kraftværk.

7
13. juli 2013 kl. 22:59

Bare vent til tabloidpressen opdager at de har skrevet deres valgsystem i et programmeringssprog der bruger "garbage collection" :-)

Forstår ikke helt--siger du at tests af et e-valgssystem er irrelevante?

Jeg er ikke tabloidpresse, og synes stadig det er mærkeligt, at et e-valgssystem ikke betragtes som "high assurance": er skrevet i et sprog med en gigantisk runtime, et fesent type-system, uden nogen form for testing--hverken fuzz eller unit tests--og at ingen af delene har ændret sig i over 8 år.

10
14. juli 2013 kl. 10:58

Kunne kun grine af PHKs kommentar.

Hoster J2EE systemer til dagligt. Nogen havde endda valgt at reklamerer med at vi brugte Oracle Java, fordi Oracle jo er så seriøs en virksomhed at dette måtte smitte af på os, hvis vi namedrop'ede.

Det smittede også af på os. Men først efter Javas browser plugin blev berygtet som browser plugin, og markedsføringsafdelingen har også spurgt om det ikke svart var tid til at vi afinstallerer Java på vores servere, fordi det bekymrer vores kunder at systemet kører i Java.

Der er lidt svært at forklarer almindelige mennesker at det kun er Javas browser plugin som ikke er cool.

2
12. juli 2013 kl. 18:26

Hvis du vil bruge det estiske navn, er det såvidt jeg husker "Eesti".

3
12. juli 2013 kl. 18:33

Ups.. rettet. Har været udenlands for længe!

1
12. juli 2013 kl. 15:55

I det mindste er kommentaren på engelsk.

Resten af koden er kun meget overfladisk kommenteret på estisk (gætter jeg på) og selve koden er på et miskmask af engelsk og estisk. Yikes.