patrick mylund nielsen bloghoved

Unittests af vores e-valgssystem kan vente

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:

#!/usr/bin/python2.7
# -<em>- coding: UTF8 -</em>-
 
"""
Copyright: Eesti Vabariigi Valimiskomisjon
(Estonian National Electoral Committee), www.vvk.ee
Written in 2004-2013 by Cybernetica AS, www.cyber.ee
 
This work is licensed under the Creative Commons
Attribution-NonCommercial-NoDerivs 3.0 Unported License.
To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc-nd/3.0/.
"""
 
def analyze(ik, vote, votebox):
 
    #   TODO: implement security checks
    #   such as verifying the correct size
    #   of the encrypted vote
 
    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.

Kommentarer (19)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Peter Makholm Blogger

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.

  • 3
  • 0
#7 Patrick Mylund Nielsen

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.

  • 1
  • 3
#10 Joe Sørensen

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.

  • 1
  • 0
#11 Joseph Kiniry

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+...

  • 8
  • 0
#13 Morten Hansen

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.

  • 0
  • 0
#14 Lars Tørnes Hansen

Det er en ualmindeligt dårligt skrevet garbage collector der bruger reference counting som basis. Så hvem kan være sikre på at deres stemmer er bleven talt?

Hej jlouis.

Jeg er ikke datalog, og er nysgerrig.

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

Er det en dårlig idé sådan generelt at benytte sig af software der bruger en ref counting GC?

  • 0
  • 0
#17 Joe Sørensen

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

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.

  • 1
  • 0
#19 Jesper Louis Andersen

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-rea...

  • 0
  • 0
Log ind eller Opret konto for at kommentere