hvorfor stole på e-valg 2011/13?
DESCRIPTION
TRANSCRIPT
© Computas AS 11.09.13
Hvorfor stolepå e-valg 2011/13?
Filip van Laenen@filipvanlaenenJavazone 2013
Hvorfor stole på e-valg 2011/2013?
— Fordi vi har verifisert det…
og Quality AS og PROMIS
Hvorfor stole på e-valg 2011/2013?
Kan man stole på e-valg?
Hvorfor stole på e-valg 2011/2013?
Kan man stole på e-valg?
— Nei.
Hvorfor stole på e-valg 2011/2013?
Kan man stole på e-valg?
— Tja…
Hvorfor stole på e-valg 2011/2013?
Kan man stole på e-valg?
— Kan man stole på p-valg da?
Hvorfor stole på e-valg 2011/2013?
Kan man stole på e-valg?
— Tja…
Hvorfor stole på e-valg 2011/2013?
Kan man stole på e-valg?
— Tja…
Hvorfor stole på e-valg 2011/2013?
— Fordi vi har verifisert det…
26 © Computas AS 11.09.13
Matematisk verifikasjon
• Er det som ligger i valgurnen det samme som det som velgerne ønsket å stemme på?• Identiske kvitteringer
27 © Computas AS 11.09.13
Matematisk verifikasjon
• Er det som ligger i valgurnen det samme som det som velgerne ønsket å stemme på?• Identiske kvitteringer
• Er det som ligger i valgurnen etter at vi «ristet» den uendret?• Korrekt mixing
28 © Computas AS 11.09.13
Matematisk verifikasjon
• Er det som ligger i valgurnen det samme som det som velgerne ønsket å stemme på?• Identiske kvitteringer
• Er det som ligger i valgurnen etter at vi «ristet» den uendret?• Korrekt mixing
• Er det som vi tar ut av valgurnen det samme som det som ble puttet inn?• Korrekt dekryptering
29 © Computas AS 11.09.13
Vår kildekode
https://github.com/KRD-KOMM-VL/verifikasjonsprogramvare
30 © Computas AS 11.09.13
http://www.slideshare.net/filipvanlaenen/hvorfor-stole-p-evalg-201113
http://goo.gl/oB2UlS
31 © Computas AS 11.09.13
E-valgsystemet
32 © Computas AS 11.09.13
Identiske kvitteringer?
33 © Computas AS 11.09.13
Korrekt cleansing?
34 © Computas AS 11.09.13
Korrekt dekryptering?
35 © Computas AS 11.09.13
Hvordan bevise korrekt dekryptering
• Problem:• Ingen utvetydig kobling mellom klartekst og
kryptert tekst• Krever derfor bevisføring• Men ønsker ikke å måtte bruke privatnøkkelen
• «Zero-knowledge proof»
36 © Computas AS 11.09.13
ElGamal-kryptering
• Syklisk gruppe G ⊂ ℤp
• Generator g, ordre q• Privat nøkkel x {0, 1, …, q – 1}• Offentlig nøkkel h = gx
• Kryptering av melding m:• Velg y {0, 1, …, q – 1}• Beregn e = gy
• Beregn s = hy og c = m · s• Kryptert melding: (e, c) = (gy, m · hy)
37 © Computas AS 11.09.13
ElGamal-dekryptering
• Dekryptering av melding (e, c) = (gy, m · hy):• Beregn s = ex
• Beregn m' = c · s-1
• Er m' = m?• m' = c · s-1
= m · hy · e-x
= m · (gx)y · (gy)-x
= m · gxy · g-xy
= m
38 © Computas AS 11.09.13
Problemet med ElGamal-kryptering
• «Efemeral» nøkkel y:• Velg y {0, 1, …, q – 1}• Beregn e = gy
• Beregn s = hy
• Beregn c = m · s• Kryptert melding: (e, c) = (gy, m · hy)
• Derfor: (e, c) ≠ (e', c') = (gy', m · hy')
39 © Computas AS 11.09.13
Problemet med ElGamal-krypteringFordelen
• «Efemeral» nøkkel y:• Velg y {0, 1, …, q – 1}• Beregn e = gy
• Beregn s = hy
• Beregn c = m · s• Kryptert melding: (e, c) = (gy, m · hy)
• Derfor: (e, c) ≠ (e', c') = (gy', m · hy')
40 © Computas AS 11.09.13
Problemet med ElGamal-krypteringFordelenProblemet• «Efemeral» nøkkel y:
• Velg y {0, 1, …, q – 1}• Beregn e = gy
• Beregn s = hy
• Beregn c = m · s• Kryptert melding: (e, c) = (gy, m · hy)
• Men: y = y' (⇒ e, c) = (e', c')
43 © Computas AS 11.09.13
Problemet med ElGamal-krypteringFordelenProblemet• «Efemeral» nøkkel y:
• Velg y {0, 1, …, q – 1}
44 © Computas AS 11.09.13
Problemet med ElGamal-krypteringFordelenProblemet• «Efemeral» nøkkel y:
• Velg y {0, 1, …, q – 1}• Beregn e = gy
• Beregn s = hy
• Beregn c = m · s• Kryptert melding: (e, c) = (gy, m · hy)
• Men: y = y' (⇒ e, c) = (e', c')
45 © Computas AS 11.09.13
Korrekt dekryptering???
46 © Computas AS 11.09.13
E-valgsystemet
47 © Computas AS 11.09.13
Zero-knowledge proofs
• Bevise kunnskap om eller tilgang til en hemmelighet uten å avsløre selve hemmeligheten overfor kontrolløren
48 © Computas AS 11.09.13
Zero-knowledge proofs
• Bevise kunnskap om eller tilgang til en hemmelighet uten å avsløre selve hemmeligheten overfor kontrolløren• Å ha en privat nøkkel• Å ha brukt en privat nøkkel
49 © Computas AS 11.09.13
Zero-knowledge proofs
• Bevise kunnskap om eller tilgang til en hemmelighet uten å avsløre selve hemmeligheten overfor kontrolløren• Å ha en privat nøkkel• Å ha brukt en privat nøkkel
• Krav:• Completeness• Soundness• Zero-knowledge
50 © Computas AS 11.09.13
Zero-knowledge proofs«Ali Babas grotte»
51 © Computas AS 11.09.13
Kryptering av en stemme
• Hver opsjon er et primtall ci
• Partier• Kandidater
• hEB
= gzEB
• hEB
offentlig nøkkel
• zEB
privat nøkkel
• Hver opsjon kryptert for seg selv:
• (ai, b
i) = (gri, c
i · h
EB
ri)
52 © Computas AS 11.09.13
Homomorf kryptering
• Definisjon:• En operasjon på en klartekst er ekvivalent
med en (muligens annen) operasjon på den krypterte teksten
• ElGamal:
• E(m1) · E(m
2) = E(m
1· m
2)
53 © Computas AS 11.09.13
Komprimering av stemmene
• Reduserer antall bevis:
• C = ∏ci
• (A, B) = ∏(ai, b
i)
54 © Computas AS 11.09.13
Bevisføring for korrekt dekryptering
• Ikke-interaktiv utfordring: u = SHA-256(∥ci)
• Beregn f = (B/C)u · hEB
• Beregn d = Au · g
• Velg k ℤq
• Beregn w = dk
• Beregn t = SHA-256(w∥g∥hEB
)
• Beregn s = k – zEB
· t
• Bevis: (s, t)
55 © Computas AS 11.09.13
Bevisføring for korrekt dekrypteringZero-knowledge
• Ikke-interaktiv utfordring: u = SHA-256(∥ci)
• Beregn f = (B/C)u · hEB
• Beregn d = Au · g
• Velg k ℤq
• Beregn w = dk
• Beregn t = SHA-256(w∥g∥hEB
)
• Beregn s = k – zEB
· t
• Bevis: (s, t)
56 © Computas AS 11.09.13
Bevisføring for korrekt dekrypteringTilgang til privat nøkkel
• Ikke-interaktiv utfordring: u = SHA-256(∥ci)
• Beregn f = (B/C)u · hEB
• Beregn d = Au · g
• Velg k ℤq
• Beregn w = dk
• Beregn t = SHA-256(w∥g∥hEB
)
• Beregn s = k – zEB
· t
• Bevis: (s, t)
57 © Computas AS 11.09.13
Bevisføring for korrekt dekrypteringKorrekt dekryptering
• Ikke-interaktiv utfordring: u = SHA-256(∥ci)
• Beregn f = (B/C)u · hEB
• Beregn d = Au · g
• Velg k ℤq
• Beregn w = dk
• Beregn t = SHA-256(w∥g∥hEB
)
• Beregn s = k – zEB
· t
• Bevis: (s, t)
58 © Computas AS 11.09.13
Bevisføring for korrekt dekrypteringKontrollberegning
• Ikke-interaktiv utfordring: u = SHA-256(∥ci)
• Beregn f = (B/C)u · hEB
• Beregn d = Au · g• Beregn v = ds · ft
• Kontroller at SHA-256(v∥g∥hEB
) ≡ t
59 © Computas AS 11.09.13
Bevisføring for korrekt dekrypteringKontrollberegning (1)
• Beregn f = (B/C)u · hEB
• f = (B/C)u · hEB
= (∏bi/∏c
i)u · h
EB
= (∏ci·h
EB
ri/∏ci)u · h
EB
= (∏hEB
ri)u · hEB
= (hEB
∑ri)u · h
EB
• Kun hvis bi ≡ c
i·h
EB
ri (korrekt dekryptering)
• d = Au · g = ∏ai
u · g = (∏gri)u · g = (g∑r
i)u · g
60 © Computas AS 11.09.13
Bevisføring for korrekt dekrypteringKontrollberegning (2)
• f = (hEB
∑ri)u · hEB
• d = (g∑ri)u · g
• s = k – zEB
· t
• v = ds · ft
= ((g∑ri)u · g)s · ((hEB
∑ri)u · hEB
)t
= ((g∑ri)u · g)k · ((g∑ri)u · g)-zEB·t · (((gzEB)∑ri)u · gzEB)t
= ((g∑ri)u · g)k
= dk ≡ w
• Hvis v ≡ w, så SHA-256(v∥g∥hEB
) ≡ t
61 © Computas AS 11.09.13
Korrekt dekryptering
62 © Computas AS 11.09.13
Hvordan bevise korrekt mixing
• Problemstilling:• Hvordan vet vi at to mengder med krypterte
stemmer representerer samme innhold?• Endret rekkefølge• Rekryptering
63 © Computas AS 11.09.13
ElGamal-rekryptering
• Kryptering av melding m:• Velg y {0, 1, …, q – 1}• Beregn e = gy
• Beregn s = hy og c = m · s• Kryptert melding: (e, c) = (gy, m · hy)
• Rekryptering av (e, c):• Velg ŷ {0, 1, …, q – 1}• Rekryptert melding:
• (ê, ĉ) = (e · gŷ, c · hŷ) = (gy+ŷ, m · hy+ŷ)
64 © Computas AS 11.09.13
Komprimering av stemmene
• Reduserer antall bevis:
• (Ai, B
i) = ∏(a
i, b
i)
• (Ao, B
o) = ∏(â
i,b ̂
i)
65 © Computas AS 11.09.13
Bevisføring for korrekt rekryptering
• Utfordring: u = SHA-256(Ai∥A
o∥B
i∥B
o∥g∥h
EB)
• Beregn f = (Bo/B
i)u · (A
o/A
i)
• Beregn d = hEB
u · g
• Beregn ỹ = ∑ŷi
• Velg k ℤq
• Beregn w = dk
• Beregn t = SHA-256(w∥g∥hEB
)
• Beregn s = k – ỹ · t• Bevis: (s, t)
66 © Computas AS 11.09.13
Bevisføring for korrekt rekrypteringKontrollberegning
• Utfordring: u = SHA-256(Ai∥A
o∥B
i∥B
o∥g∥h
EB)
• Beregn f = (Bo/B
i)u · (A
o/A
i)
• Beregn d = hEB
u · g
• Beregn v = ds · ft
• Kontroller at SHA-256(v∥g∥hEB
) ≡ t
67 © Computas AS 11.09.13
Bevisføring for korrekt rekryptering
• Bevis for at to krypterte meldinger har samme innhold• Uten å se innholdet• Uten å bruke privatnøkkelen
68 © Computas AS 11.09.13
Fra korrekt rekryptering av én stemme til korrekt mixing
• Beviset gjelder også for en mengde stemmer:
• (Ai, B
i) = ∏∏(a
ij, b
ij)
• (Ao, B
o) = ∏∏(â
ij,b ̂
ij)
• Oppdeling av urnen i bunker• Bunkvis korrekt rekryptering• Oppdeling i bunker gjort av en auditør
69 © Computas AS 11.09.13
Bevisføring for korrekt mixing
• Bevis for at to grupper med krypterte meldinger har samme innhold• Uten å se innholdet• Uten å bruke privatnøkkelen• Uten å vite hvilken melding fra den ene
gruppen korresponderer med hvilken melding fra den andre gruppen
70 © Computas AS 11.09.13
Korrekt mixing
71 © Computas AS 11.09.13
E-valgsystemet
Hvorfor stole på e-valg 2011/2013?
— Fordi vi har verifisert det…
73 © Computas AS 11.09.13
Praktiske utfordringer
• Life kjøring under valgnatten
74 © Computas AS 11.09.13
Praktiske utfordringer
• Life kjøring under valgnatten• Gode, informative logger
75 © Computas AS 11.09.13
Praktiske utfordringer
• Life kjøring under valgnatten• Gode, informative logger• Autoflushing mot resultatfilen
76 © Computas AS 11.09.13
Praktiske utfordringer
• Life kjøring under valgnatten• Gode, informative logger• Autoflushing mot resultatfilen• Parallellisering
77 © Computas AS 11.09.13
Praktiske utfordringer
• Life kjøring under valgnatten• Gode, informative logger• Autoflushing mot resultatfilen• Parallellisering• Minneforbruk
78 © Computas AS 11.09.13
Praktiske utfordringer
• Life kjøring under valgnatten• Gode, informative logger• Autoflushing mot resultatfilen• Parallellisering• Minneforbruk• Håndtering av filer
79 © Computas AS 11.09.13
Egne valg
• Operativsystem: Ubuntu 13.04
80 © Computas AS 11.09.13
Egne valg
• Operativsystem: Ubuntu 13.04• Ikke glem Bash!
81 © Computas AS 11.09.13
Egne valg
• Operativsystem: Ubuntu 13.04• Ikke glem Bash!
• Kommandolinje interface
82 © Computas AS 11.09.13
http://www.slideshare.net/filipvanlaenen/hvorfor-stole-p-evalg-201113
http://goo.gl/oB2UlS
Takk for meg!
83 © Computas AS 11.09.13
Relevante lenker
• http://www.tu.no/it/2013/09/05/feil-i-krypteringen-av-e-stemmer
• http://www.regjeringen.no/nb/dep/krd/prosjekter/ e-valg-2011-prosjektet/kildekode.html?id=645239
• https://github.com/KRD-KOMM-VL/verifikasjonsprogramvare
• http://xkcd.com/221/