')
RST.content(" NB!")
RST.content(" See on HTML-versioon dokumendist.")
RST.content(" Tellijale antakse üle PDF-versioon.")
RST.content("
")
RST.newline()
RST.content(".. toctree::")
RST.content(" :maxdepth: 4")
RST.newline()
output_intro(RST, "Overview", "introduction.inc")
CMD_COMMON, CMD_UNIQUE = remove_common(CMD_EVENTS)
SRV_COMMON, SRV_UNIQUE = remove_common(SRV_EVENTS)
MOD_COMMON, MOD_UNIQUE = remove_common(MOD_EVENTS)
INT_COMMON, INT_UNIQUE = remove_common(INT_EVENTS)
RST.h1("Commands")
output_section_common(
CMD_COMMON, RST, "Common events", "Commands", "Typedef for common event"
)
output_section_unique(CMD_UNIQUE, RST, "Specific events", "Command")
RST.h1("Services")
output_section_common(
SRV_COMMON, RST, "Common events", "Services", "Typedef for common event"
)
output_section_unique(SRV_UNIQUE, RST, "Specific events", "Service")
RST.h1("Modules")
output_section_common(
MOD_COMMON, RST, "Common events", "Modules", "Typedef for common event"
)
output_section_unique(MOD_UNIQUE, RST, "Specific events", "Module")
RST.h1("Internal modules")
output_section_common(
INT_COMMON, RST, "Common events", "Modules", "Typedef for common event"
)
output_section_unique(INT_UNIQUE, RST, "Specific events", "Module")
================================================
FILE: Documentation/en/backendlogs/introduction.inc
================================================
The purpose of this document is to provide a reference to all possible log
messages in the IVXV backend.
This document is partially auto-generated from the comments in the source code.
This is necessary to keep the document up to date through the evolution of the
software. The document is written in english, since the source code is written
in english for improved readability and availability to wider audiences.
IVXV systematically logs based on the protocol description and the service
status diagram. We describe general principles that are followed.
At a minimum, the following should be logged:
* The fact of receiving each request and the start of processing
* The handover of processing to an external component
* The return of the processing sequence to the component
* The end of the request processing and the result
* Additionally, passing through significant stages in the process state model together with important facts about the process
General Principles:
* The rsyslog service is used for logging, which records the timestamp of the log message with millisecond precision.
* At the start of each session, the system generates a unique identifier, which the client application uses in its requests to the central system.
* All log entries belonging to a single session contain the same session identifier. Validity of the session identifier is checked, requests with unknown, invalid or expired session identifiers are not served.
* Each log entry must be uniquely identifiable.
* For each log message, it must be possible to unambiguously identify the location in the source code where the message originated. To ensure this, each logged message must have a unique phrasing or contain a unique identifier. In IVXV all event identifiers and corresponding data structures are generated before the compilation. This makes it easier to follow unified pattern.
* The log entry should preferably be in JSON format, where machine readability is primary and human readability is secondary for automated monitoring.
* The log entries may be stacked, to include information from more technical contexts.
* If in doubt - log, one can filter unnecessary information, but cannot regenerate missing information.
Requirements:
* The information logged must be sanitized (e.g., URL encoding) and subject to length restrictions (both overall and per parameter).
* Information originating from outside the system perimeter must only be logged in a sanitized form and within a predefined length.
* Certificates and the agreed cipher used during TLS handshake must be logged.
* Sensitive data must not be logged Directly, it must be protected by e.g. hashing.
================================================
FILE: Documentation/et/audiitor/Makefile
================================================
include ../../common.mk
================================================
FILE: Documentation/et/audiitor/annotatsioon.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
Annotatsioon
------------
Juhend annab suunised IVXV andmeauditi teostamiseks Ubuntu 20.04 platvormil.
Kasulik on tutvuda järgmiste dokumentidega.
* https://www.valimised.ee/sites/default/files/uploads/eh/IVXV_raamistiku_yldkirjeldus_29052017.pdf
* https://www.valimised.ee/sites/default/files/uploads/eh/IVXV-seadistuste-koostejuhend.pdf
* https://www.valimised.ee/sites/default/files/uploads/eh/IVXV-protokollid.pdf
Juhendiga kaasneb näidisandmekomplekt ning vabas vormis `history` fail.
================================================
FILE: Documentation/et/audiitor/audit.rst
================================================
================================================================================
IVXV juhend audiitorile
================================================================================
Rakenduste kompileerimine
================================================================================
EELDUSED
--------------------------------------------------------------------------------
Kõik tegevused viime läbi tavakasutaja -- näidetes `ubuntu` -- õigustes,
kasutades vajadusel käsklust `sudo`.
Üldjuhul viime kõik tegevused läbi kasutaja kodukaustas::
cd $HOME
Paigaldame tarkvara, mis on vajalik audiitori tööriistade ehitamiseks::
sudo apt-get install --no-install-recommends -y autoconf automake build-essential libgmp-dev libtool git openjdk-11-jdk-headless python unzip zip wget make
INTCHECK
--------------------------------------------------------------------------------
Verificatum miksneti tervikluskontroll toimub rakendusega `intcheck`::
wget https://github.com/vvk-ehk/intcheck/archive/master.zip
unzip master.zip
rm master.zip
mv intcheck-master intcheck
chmod +x intcheck/src/intcheck.py
Veendume et rakendus on paigaldatud korrektselt::
./intcheck/src/intcheck.py -h
JAVA RAKENDUSED
--------------------------------------------------------------------------------
Andmeauditi läbiviimiseks läheb vaja rakendust `auditor`, mille lähtekood on
avalikustatud IVXV repositooriumis::
wget https://github.com/vvk-ehk/ivxv/archive/master.zip
unzip master.zip
rm master.zip
mv ivxv-master ivxv
Paigaldame Java sõltuvuspaketid::
cd $HOME/ivxv/common/external
wget -O gradle-8.11.zip https://services.gradle.org/distributions/gradle-8.11-bin.zip
unzip gradle-8.11.zip
rm gradle-8.11.zip
cd $HOME/ivxv/common/java
make sync
Veendume, et ettevalmistused on tehtud korrektselt::
cd $HOME/ivxv
make clean-java
Ehitame Java rakendused::
make java
RVT'le tarnitavad rakendused::
$HOME/ivxv/auditor/build/distributions/auditor-1.10.3.zip
$HOME/ivxv/key/build/distributions/key-1.10.3.zip
$HOME/ivxv/processor/build/distributions/processor-1.10.3.zip
Käivitatavad failid::
$HOME/ivxv/auditor/build/install/auditor/bin/auditor
$HOME/ivxv/key/build/install/key/bin/key
$HOME/ivxv/processor/build/install/processor/bin/processor
VERIFICATUM
--------------------------------------------------------------------------------
Verificatum miksneti adapter on vajalik miksimistõendi kontrolliks::
cd $HOME
wget https://github.com/vvk-ehk/ivxv-mixnet-adapter/archive/master.zip
unzip master.zip
rm master.zip
mv ivxv-mixnet-adapter-master ivxv-verificatum
Verificatum tarkvara allalaadmine::
git clone https://github.com/verificatum/verificatum-gmpmee gmpmee
git clone https://github.com/verificatum/vmgj
git clone https://github.com/verificatum/vcr
git clone https://github.com/verificatum/vmn
Tarkvara täpse versiooni hankimine ning tervikluse kontroll::
cd gmpmee
git checkout 4aafc31
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify gmpmee ivxv-verificatum/doc/gmpmee.dirsha256sum
cd vmgj
git checkout 8d7d412
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify vmgj ivxv-verificatum/doc/vmgj.dirsha256sum
cd vcr
git checkout af9fd82
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify vcr ivxv-verificatum/doc/vcr.dirsha256sum
cd vmn
git checkout bb00543
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify vmn ivxv-verificatum/doc/vmn.dirsha256sum
Verificatumi adapteri ehitamine::
cd $HOME/ivxv-verificatum
make zipext
Juhuarvugeneraatori initsialiseerimine Verificatumi jaoks::
cd $HOME
./vcr/bin/vog -rndinit RandomDevice /dev/urandom
Auditeerimine
================================================================================
Siit edasi eeldame, et lugeja on tuttav dokumendiga "IVXV seadistuste
koostamise juhend" järgmises ulatuses:
* Ptk. 2, IVXV seadistused valimise korraldamise protsessis
* Ptk. 3, IVXV rakendused
* Ptk. 6, Auditirakendus
* Ptk. 10, E-häälte miksimine
Olgu samuti paigaldatud pakk `audit-examples.tar`, millel on järgmine
struktuur::
audit-conv
|-- auditor.yaml -- konfinäide
|-- inputs
| |--
|-- process
| |--
|
audit-mix
|-- auditor.yaml -- konfinäide
|-- inputs
| |--
|-- process
| |--
|
audit-mixver
|-- inputs
| |--
|
audit-pdec
|-- auditor.yaml -- konfinäide
|-- inputs
| |--
|-- process
| |--
|
audit-vertally
|-- inputs
| |--
|
processor
|--
Tegutsemine on üldjuhul järgmine:
* Tutvuge konfinäitega
* Veenduge, et on olemas vajalik RVT sisend
* Tehke kausta `process` konfinäitest lähtuv failistruktuur
* Käivitage kaustas `process` rakendus ja tööriist (eelvalmendatud seadistused on seal
juba ees)
Täpsemad juhised järgnevad.
Genereeritud avalike võtmete kooskõlalisuse kontroll
--------------------------------------------------------------------------------
Võtmete genereerimise ajal tekib kaks võtit - tulemusfaili signeerimisvõti ja
häälte salastamise võti.
Tulemusfaili signeerimisvõti on kodeeritud X509 sertifikaadina failis
`RK2051-sign.pem`. Häälte salastamise võti on antud kolmes kodeeringus:
* X509 sertifikaadina failis `RK2051-enc.pem`
* DER-kodeeritud avaliku võtmena failis `RK2051-pub.der`
* PEM-kodeeritud avaliku võtmena failis `RK2051-pub.pem`
On võimalik kontrollida, et sertifikaat, mis sisaldab tulemusfaili
signeerimisvõtit, on korrektselt isesigneeritud. Seda saab teha järgnevalt::
openssl verify -CAfile RK2051-sign.pem -check_ss_sig RK2051-sign.pem
Korrektse sertifikaadi korral on väljund::
RK2051-sign.pem: OK
On võimalik kontrollida, et sertifikaat, mis sisaldab häälte salastamise võtit,
on korrektselt signeeritud tulemusfaili signeerimisvõtmega. Seda saab
teha järgnevalt::
openssl verify -CAfile RK2051-sign.pem -check_ss_sig RK2051-enc.pem
Korrektselt allkirjastatud sertifikaadi korral on väljund::
RK2051-enc.pem: OK
.. note:: Teadaoleva OpenSSL vea tõttu ei suuda OpenSSL versioonist `1.1.1b`
vanemad versioonid sertifikaadi usaldusahelat kontrollida. Eelneva kontrolli
õnnestumise jaoks on eelduseks vähemalt OpenSSL versioon `1.1.1b`.
Lisaks on võimalik kontrollida, et häälte salastamise võtme eri kodeeringud
vastavad üksteisele. Me kontrollime, et X509 sertifikaadis olev võti vastab
DER-kodeeritud võtmele ning lisaks, et PEM-kodeeritud võti vastab DER-kodeeritud
võtmele. Transitiivsuse tõttu on seega kõik kolm kodeeringut kooskõlalised.
Esiteks tuleb eraldada häälte salastamise võti vastavast sertifikaadist. Kuna
OpenSSL ei toeta kasutatavad ElGamali krüptoskeemi, siis tuleb avaliku võtme
eksportimiseks kasutada OpenSSL `asn1parse` tööriista.
Kõigepealt tuleb leida avaliku võtme nihe sertifikaadis::
openssl asn1parse -in RK2051-enc.pem
Avalik võti on vastavas `SubjectPublicKeyInfo` väljal::
156:d=2 hl=4 l= 816 cons: SEQUENCE
160:d=3 hl=4 l= 415 cons: SEQUENCE
164:d=4 hl=2 l= 9 prim: OBJECT :1.3.6.1.4.1.3029.2.1
175:d=4 hl=4 l= 400 cons: SEQUENCE
179:d=5 hl=4 l= 385 prim: INTEGER :FFFFFFFFFFFFFFFFC90FDA
A22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08
798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B5
76625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24
117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163F
A8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C35
4E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783
A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D226
1898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB85
0458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94
E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B
18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5B
FCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF
568:d=5 hl=2 l= 1 prim: INTEGER :02
571:d=5 hl=2 l= 6 prim: GENERALSTRING
579:d=3 hl=4 l= 393 prim: BIT STRING
Näeme, et `SubjectPublicKeyInfo` välja nihe on 156 baiti. Eraldame avaliku
võtme ja kontrollime vastavust väljastatud avaliku võtmega::
openssl asn1parse -in RK2051-enc.pem -strparse 156 -noout -out extracted.der
diff -s extracted.der RK2051-pub.der
Samaväärsete võtmete korral on väljundiks::
Files extracted.der and RK2051-pub.der are identical
Teiseks kontrollime DER-kodeeritud võtme vastavust PEM-kodeeritud võtmele.
Selleks teisendame PEM-kodeeritud võtme DER-kodeeringusse ja võrdleme::
openssl asn1parse -in RK2051-pub.pem -noout -out converted.der
diff -s converted.der RK2051-pub.der
Samaväärsete võtme korral on väljundiks::
Files converted.der and RK2051-pub.der are identical
Hääletamistulemuse allkirja verifitseerimine
--------------------------------------------------------------------------------
Nii tavalise dekrüpteerimise kui tõestatava dekrüpteerimise käigus tekib kaks
faili:
* Tulemusfail `RK2051.1.tally`
* Signatuurifail `RK2051.1.tally.signature`
Koos häälte salastamise võtmega genereeritakse tulemusfaili signeerimisvõti ja
vastav sertifikaat (`RK2051-sign.pem`). Dekrüpteeritud tulemusele antakse selle
võtmega signatuur, mida tuleb kontrollida.
Eraldame signeerimisvõtme sertifikaadist avaliku võtme::
openssl x509 -in RK2051-sign.pem -noout -pubkey > sign.pub
Kasutame avalikku võtit tulemusfaili allkirja kontrollimiseks::
openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:32 -sigopt rsa_mgf1_md:sha256 -verify sign.pub -signature RK2051.1.tally.signature RK2051.1.tally
NB! Tavalise dekrüpteerimise ja tõestatava dekrüpteerimise käigus tekkivad
tulemusfailid peavad olema identsed. Kontrollimiseks UNIXi tööriist `diff`::
diff decout/RK2051.1.tally pdecout/RK2051.1.tally
Näitefailid on pakis::
cd $HOME/audit-examples/audit-vertally
IVXV <-> Verificatum teisenduste korrektsuse kontroll
--------------------------------------------------------------------------------
Teisenduste korrektsuse kontroll toimub tööriistaga `convert`. NB! Kaust
`process` tuleb `auditor.yaml` põhjal sisenditest ettevalmistada::
cd $HOME/audit-examples/audit-conv/process
$HOME/ivxv/auditor/build/install/auditor/bin/auditor convert -c conf.bdoc -p auditor.yaml.bdoc
Miksimistõendi kontroll tööriistaga `auditor`
--------------------------------------------------------------------------------
Miksimistõendi kontroll toimub tööriistaga `mixer`. NB! Kaust `process` tuleb
`auditor.yaml` põhjal sisenditest ettevalmistada::
cd $HOME/audit-examples/audit-mix/process
$HOME/ivxv/auditor/build/install/auditor/bin/auditor mixer -c conf.bdoc -p auditor.yaml.bdoc
Lugemistõendi kontroll
--------------------------------------------------------------------------------
Lugemistõendi kontroll toimub tööriistaga `decrypt`. NB! Kaust `process` tuleb
`auditor.yaml` põhjal sisenditest ettevalmistada::
cd $HOME/audit-examples/audit-pdec/process
$HOME/ivxv/auditor/build/install/auditor/bin/auditor decrypt -c conf.bdoc -p auditor.yaml.bdoc
Miksimistõendi kontroll Verificatumi originaaltööriistaga
--------------------------------------------------------------------------------
Miksimistõendi kontroll Verificatumi abil::
cd $HOME/audit-examples/audit-mixver
$HOME/ivxv-verificatum/release/mixer/bin/mix.py verify --proof-zipfile shuffle_proof.zip
Töötlemise audit
--------------------------------------------------------------------------------
Täiendavalt on lisatud pakki kõik töötlemisrakenduse sisendid ja väljundid
lihtsustamaks töötlemisprotsessi auditit. Täiendavad auditeerimistööriistad,
nt. `integrity` on kirjeldatud dokumendis "IVXV seadistuste koostamise juhend".
================================================
FILE: Documentation/et/audiitor/history.rst
================================================
`.history`
---------------
.. literalinclude:: history.txt
:linenos:
================================================
FILE: Documentation/et/audiitor/history.txt
================================================
sudo apt update
sudo apt upgrade
tar xvf audit-examples.tar
sudo apt-get install --no-install-recommends -y autoconf automake build-essential libgmp-dev libtool git openjdk-11-jdk-headless python unzip zip wget make
java -version
javac -version
sudo apt install openjdk-11-jre-headless
sudo update-alternatives --config java
java -version
javac -version
wget https://github.com/vvk-ehk/intcheck/archive/master.zip
unzip master.zip
rm master.zip
mv intcheck-master/ intcheck
chmod +x intcheck/src/intcheck.py
./intcheck/src/intcheck.py -h
./intcheck/src/intcheck.py verify -h
wget https://github.com/vvk-ehk/ivxv/archive/master.zip
unzip master.zip
rm master.zip
mv ivxv-master/ ivxv
cd ivxv/common/external/
wget -O gradle-8.11.zip https://services.gradle.org/distributions/gradle-8.11-bin.zip
unzip gradle-8.11.zip
rm gradle-8.11.zip
cd ..
cd java/
make sync
ls ../external/
cd ..
cd ..
make clean-java
make java
auditor/build/install/auditor/bin/auditor -h
ls auditor/build/distributions/*.zip
ls key/build/distributions/*.zip
ls processor/build/distributions/*.zip
ls processor/build/install/processor/bin/processor
ls key/build/install/key/bin/key
ls auditor/build/install/auditor/bin/auditor
cd ..
wget https://github.com/vvk-ehk/ivxv-mixnet-adapter/archive/master.zip
unzip master.zip
rm master.zip
mv ivxv-mixnet-adapter-master ivxv-verificatum
git clone https://github.com/verificatum/verificatum-gmpmee gmpmee
git clone https://github.com/verificatum/vmgj
git clone https://github.com/verificatum/vcr
git clone https://github.com/verificatum/vmn
cd gmpmee/
git checkout 4aafc31
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify gmpmee ivxv-verificatum/doc/gmpmee.dirsha256sum
cd vmgj/
git checkout 8d7d412
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify vmgj ivxv-verificatum/doc/vmgj.dirsha256sum
cd vcr/
git checkout af9fd82
rm -rf .git/
cd ..
./intcheck/src/intcheck.py verify vcr ivxv-verificatum/doc/vcr.dirsha256sum
cd vmn/
git checkout bb00543
rm -rf .git
cd ..
./intcheck/src/intcheck.py verify vmn ivxv-verificatum/doc/vmn.dirsha256sum
cd ivxv-verificatum/
make zipext
cd ..
./vcr/bin/vog -rndinit RandomDevice /dev/urandom
openssl verify -CAfile initout/RK2051-sign.pem -check_ss_sig initout/RK2051-sign.pem
openssl verify -CAfile initout/RK2051-sign.pem -check_ss_sig initout/RK2051-enc.pem
openssl asn1parse -in initout/RK2051-enc.pem
openssl asn1parse -in initout/RK2051-enc.pem -strparse 156 -noout -out extracted.der
diff -s extracted.der initout/RK2051-pub.der
openssl asn1parse -in initout/RK2051-pub.pem -noout -out converted.der
diff -s converted.der initout/RK2051-pub.der
diff decout/RK2051.1.tally pdecout/RK2051.1.tally
openssl x509 -in initout/RK2051-sign.pem -noout -pubkey > sign.pub
openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:32 -sigopt rsa_mgf1_md:sha256 -verify sign.pub -signature decout/RK2051.1.tally.signature decout/RK2051.1.tally
cd $HOME/audit-examples/audit-conv
cd process
$HOME/ivxv/auditor/build/install/auditor/bin/auditor
$HOME/ivxv/auditor/build/install/auditor/bin/auditor convert -c conf.bdoc -p auditor.yaml.bdoc
cat ../auditor.yaml
cp ../inputs/bb-4.json* .
mkdir initout
cp ../inputs/RK2051-pub.pem initout/
cp ../inputs/shuffled.json .
$HOME/ivxv/auditor/build/install/auditor/bin/auditor convert -c conf.bdoc -p auditor.yaml.bdoc
unzip -l ../inputs/shuffle_proof.zip
cd ..
unzip inputs/shuffle_proof.zip
cd process/
$HOME/ivxv/auditor/build/install/auditor/bin/auditor convert -c conf.bdoc -p auditor.yaml.bdoc
$HOME/ivxv/auditor/build/install/auditor/bin/auditor mixer -c conf.bdoc -p auditor.yaml.bdoc
$HOME/ivxv/auditor/build/install/auditor/bin/auditor decrypt -c conf.bdoc -p auditor.yaml.bdoc
$HOME/ivxv-verificatum/release/mixer/bin/mix.py verify --proof-zipfile shuffle_proof.zip
$HOME/ivxv/processor/build/install/processor/bin/processor
================================================
FILE: Documentation/et/audiitor/index.rst
================================================
.. IVXV seadistuste koostamise juhend
IVXV audiitori juhend
==========================================================================
.. raw:: html
NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 2
:numbered:
ylevaade
annotatsioon
audit
history
================================================
FILE: Documentation/et/audiitor/spelling_wordlist.txt
================================================
PEM
RVT'le
konfinäitega
konfinäitest
ubuntu
================================================
FILE: Documentation/et/audiitor/ylevaade.rst
================================================
Miksimistõendi ülevaade
=======================
Ilma juhuslikkust kasutamata oleks iga krüpteerimise algoritm deterministlik,
st. valija valiku krüpteerimisel oleks tulemuseks alati sama väljund. See
lubaks ründajal tuvastada esialgse valiku, kui ta krüpteeriks kõikvõimalikud
valikud ja võrdleks seda nimekirja nähtud krüpteeritud valikuga. Seega,
krüpteerimine peab kasutama juhuslikkust.
Juhuslikkuse kasutamine teeb krüptogrammid unikaalseks - isegi kui kaks korda
on krüpteeritud sama valik, siis krüptogrammid on erinevad. See tähendab, et
kui ründaja on võimeline mingil ajahetkel seostama krüptogrammi ja selle
krüpteerinud isikut, siis on tal võimalik hiljem ainult krüptogrammi nähes
tuletada seda andnud isik. Kuna sobivate parameetrite kasutamisel on ElGamali
avaliku võtme krüptosüsteem pikaajaliselt turvaline, siis see ei ole otseselt
probleemiks.
Probleem tekib siis, kui on tarvis tõestada, et krüptogramm on korrektselt
dekrüpteeritud. Kui kasutatav valikute agregeerimise algoritm töötab avateksti
kujul sõnede peal (nagu see IVXVs on), siis iga krüptogrammi kohta tekib üks
dekrüpteeritud avatekst. Korrektse dekrüpteerimise tõestus peab nii
krüptogrammi kui dekrüpteeritud avateksti siduma. Seega on võimalik ründajal
tekitada seos isiku ja krüptogrammi, ning krüptogrammi ja vastava avateksti
vahel, st. ta saab teada, mis valiku isik tegi.
Et seda seost eemaldada, kasutatakse IVXVs krüptogrammide segamist (miksnet).
Miksnet teeb korraga kahte operatsiooni -- järjestab sisendkrüptogrammid ümber
(permuteerib) ja uuendab krüptogrammis olevad juhuslikkust (rerandomiseerib).
See tähendab, et krüptogrammid, mis lähevad miksneti sisse on väliselt täiesti
sõltumatud krüptogrammidest, mis tulevad miksnetist välja. Kuna välise
sõltumatuse tõttu võiks teoreetiliselt miksnet krüptogramme asendada, siis on
tarvis lisada miksimistõend, mis tõestab krüptograafiliselt, et operatsioonid
on tehtud korrektselt ja ühtegi täiendavat operatsiooni pole tehtud.
Kontrollides miksimistõendit, on võimalik garanteerida, et miksnet on töötanud
korrektselt.
Väikeste parameetritega kirjutatud näide
----------------------------------------
IVXV kasutab valikute krüpteerimiseks ElGamali avaliku võtme krüptosüsteemi.
ElGamali krüptosüsteemi korral on fikseeritud algebralise rühma parameetrid
koos generaatoriga :math:`g`. Salajane võti :math:`x` valitakse vahemikus
:math:`[0, q-1]` ühtlase jaotusega, kus :math:`q` on rühma multiplikatiivse
alamrühma järk. Salajasele võtmele avalik võti on defineeritud:
.. math::
pk = (g, g^x) = (g, y).
Krüpteerimaks sõne kujul valikut `V`, tuleb see kõigepealt kodeerida rühma
elemendiks
.. math::
m = encode(V)
ja seejärel arvutatakse krüptogramm kasutades ühekordset juhuarvu
:math:`0<=rNB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 2
annotatsioon
ylevaade
yldseisund
nimekirjad
statistika
kasutajad
teenused
allalaadimised
seadistused
logi
================================================
FILE: Documentation/et/haldusteenus/kasutajad.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Kasutajate haldus
=================
Kasutajate halduse leht avaneb menüüvalikust ``Kasutajad``.
Kasutajate nimekiri
-------------------
Kasutajate nimekirjas kuvatakse kõigi haldusteenuses registreeritud kasutajate
andmeid sordituna kasutaja ID-kaardi üldnime (CN - *Common Name*) järgi:
#. Järjekorranumber nimekirjas;
#. Üldnimi;
#. Kasutaja rollid.
Kasutaja volituste laadimise vorm
---------------------------------
Kasutaja volituste laadimiseks kogumisteenusesse on lehe allosas laadimisvorm.
Laadida on lubatud ainult volitatud kasutajate poolt digitaalselt signeeritud
volitusi.
================================================
FILE: Documentation/et/haldusteenus/logi.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Haldussündmuste logi jälgimine
==============================
Kogumisteenuse sündmuste logi sirvimise leht avaneb menüüvalikust
``Logiraamat``.
Logis on järgmised väljad:
#. ``Aeg`` - sündmuse registreerimise aeg;
#. ``Teenus`` - teenuse identifikaator;
#. ``Tase`` - logisündmuse tase (``INFO`` või ``ERROR``);
#. ``Sündmus`` - sündmuse liigi identifikaator;
#. ``Kirjeldus`` - sündmuse tekstiline kirjeldus.
Logi on võimalik filtreerida ja välja väärtuse järgi sortida.
Logisündmused
-------------
Kogumisteenuse olekud:
:COLLECTOR_INIT:
Kogumisteenuse lähtestamine (käsuga :command:`ivxv-collector-init`);
:COLLECTOR_RESET:
Kogumisteenuse seadistuste lähtestamine (usaldusjuure laadimine);
:COLLECTOR_STATE_CHANGE:
Kogumisteenuse olekumuutus;
Korralduste laadimine:
:CMD_LOAD:
Korraldusfaili haldusteenusesse laadimine;
:CMD_LOADED:
Edukalt laaditud korraldusfaili registreerimine haldusteenuses;
:CMD_REMOVED:
Korraldusfaili eemaldamine haldusteenusest;
:VOTER_LIST_DOWNLOADED:
Valijate muudatusnimekirja allalaadimine;
:VOTER_LIST_DOWNLOAD_FAILED:
Valijate muudatusnimekirja nurjunud allalaadimine;
:VOTER_LIST_NOT_FOUND:
Valijate järgmist muudatusnimekirja ei leitud Valimiste Infosüsteemis;
Kasutajaõiguste muutused:
:PERMISSION_SET:
Kasutajale õiguse määramine;
:PERMISSION_RESET:
Kasutaja õiguste lähtestamine;
Hääletusperioodi registreerimine:
:SET_ELECTION_TIME:
Hääletusperioodi algus- ja lõpuaegade registreerimine;
Mikroteenuste haldus:
:SERVICE_REGISTER:
Teenuse registreerimine haldusteenuses;
:SERVICE_CONFIG_APPLY:
Seadistuse rakendamine teenusele;
:SERVICE_STATE_CHANGE:
Teenuse olekumuutus;
:SECRET_INSTALL:
Saladuse laadimine teenusele.
================================================
FILE: Documentation/et/haldusteenus/nimekirjad.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Nimekirjade haldamine
=====================
Nimekirjade haldamise leht avaneb menüüvalikust ``Nimekirjad``.
Valikute nimekiri
-----------------
Valikute nimekirja kohta kuvatakse nimekirja seisundit ja laaditud nimekirja
korral selle versiooni (nimekirja signeerija andmed koos digiallkirja
ajatempliga).
Nimekirja võimalikud seisundid on:
#. Laadimata;
#. Laaditud haldusteenusesse;
#. Rakendatud kogumisteenusele.
Valijate nimekirjad
-------------------
Valijate nimekirjade kohta kuvatakse nimekirjade koguarvu, nimekirjade arvu
seisundi kaupa ning loetelu kõigi kogumisteenuses registreeritud nimekirjade
kohta (versioon ja seisund).
Valijate algnimekirja korral on nimekirja versioon nimekirja signeerija andmed
koos digiallkirja ajatempliga; muudatusnimekirja korral nimekirja allalaadimise
URL koos allalaadimise hetke ajatempliga.
Nimekirja võimalikud seisundid on:
#. Rakendamise ootel;
#. Rakendatud kogumisteenusele;
#. Vigane;
#. Vahele jäetud.
Ringkondade nimekiri
--------------------
Ringkondade nimekirja kohta kuvatakse nimekirja seisundit ja laaditud nimekirja
korral selle versiooni (nimekirja signeerija andmed koos digiallkirja
ajatempliga).
Nimekirja võimalikud seisundid on:
#. Laadimata;
#. Laaditud haldusteenusesse;
#. Rakendatud kogumisteenusele.
Nimekirjade laadimine kogumisteenusesse
---------------------------------------
Nimekirjade laadimiseks kogumisteenusesse on lehe allosas laadimisvorm. Laadida
on lubatud ainult volitatud kasutajate poolt digitaalselt signeeritud
nimekirju.
.. note::
Nimekirjade laadimise järjekord ei ole oluline. Enne nimekirjade laadimist
tuleb laadida valimiste seadistused.
.. important::
Valikute nimekirja on võimalik kogumisteenusele rakendada ainult üks kord!
================================================
FILE: Documentation/et/haldusteenus/seadistused.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Seadistuste rakendamise seisundid
=================================
Seadistuste seisundite jälgimise leht avaneb menüüvalikust ``Seadistused``.
Seisundit kuvatakse järgmiste seadistuste kohta:
* Usaldusjuure seadistused;
* Tehniline seadistus;
* Valimiste seadistus;
* Valikute nimekiri;
* Ringkondade nimekiri;
* Valijate nimekirjad.
Seisundit ei kuvata järgmiste seadistuste kohta:
* Kasutaja volitused (on laadimisel kohe rakendatud).
Haldusteenusesse laaditud seadistuste kohta kuvatakse:
* Seadistuse rakendamise seisundit;
* Aktiivse seadistuse versiooni;
* Seadistuste rakendamise katsete arvu;
* Rakendamisele saadetud seadistuse kohta ka rakendamise logi.
Seadistuste laadimine kogumisteenusesse
---------------------------------------
Tehnilise seadistuse ja valimiste seadistuste laadimiseks kogumisteenusesse on
lehe allosas laadimisvorm. Laadida on lubatud ainult volitatud kasutajate poolt
digitaalselt signeeritud seadistuspakke. Seadistuste laadimise järjekord ei ole
oluline. Valimiste seadistuse laadimine on eelduseks valimiste nimekirjade
laadimisele.
.. note::
Usaldusjuure seadistuse laadib kogumisteenuse haldur käsurealt. Enne
usaldusjuure laadimist pole kogumisteenuse haldusliidest võimalik kasutada.
================================================
FILE: Documentation/et/haldusteenus/spelling_wordlist.txt
================================================
================================================
FILE: Documentation/et/haldusteenus/statistika.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Statistika jälgimine
====================
Statistika jälgimise leht avaneb menüüvalikust ``Statistika``.
Hääletamise detailstatistika allalaadimine on kirjeldatud lõigus
:ref:`allalaadimised`.
Statistika genereerimine
------------------------
Statistika vaates kuvatavad andmed genereeritakse ja uuendatakse korrapäraselt
logimonitoris ning laaditakse automaatselt haldusliidesesse.
Haldusliideses kuvatav statistika kajastab kogumisteenuse seisundit mõningase
viivitusega (harilikult kuni 10 minutit).
Statistika sisu
---------------
Kuvatavad andmed on järgmised:
#. Kogutud häälte arv;
#. Hääletajate arv;
#. Kontrollitud häälte arv;
#. Hääle kontrollijate arv;
#. Hääletajate jaotumine:
#. Sugude kaupa;
#. Vanusegruppide kaupa;
#. Autentimisvahendite kaupa;
#. Operatsioonisüsteemide kaupa;
#. Riikide kaupa (vastavalt hääletaja IP-aadressile).
#. Korduvhääletamiste statistika.
Statistikat on võimalik filtreerida ringkondade ja jaoskondade kaupa (juhul,
kui ringkondade nimekiri on laaditud haldusteenusesse).
================================================
FILE: Documentation/et/haldusteenus/teenused.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Teenuste haldus
===============
Teenuste haldamise leht avaneb menüüvalikust ``Teenused``.
Teenuste kokkuvõte
------------------
Teenuste kokkuvõttes kuvatakse kõikide registreeritud teenuste ülevaadet
seisundi kaupa. Iga seisundi järel kuvatakse selles seisundis olevate teenuste
arvu:
#. Paigaldamata – teenus pole paigaldatud;
#. Paigaldatud – teenus on paigaldatud ja sellele on rakendatud usaldusjuure
seadistus, kogumisteenuse tehniline seadistus. Valimiste seadistus on
teenusele rakendamata;
#. Seadistatud – teenusele on rakendatud kõik seadistused ja teenus on töökorras;
#. Tõrge – teenuse toimimises on avastatud tõrge;
#. Eemaldatud – teenuse on kogumisteenuse koosseisust eemaldatud.
Teenuste nimekiri
-----------------
Teenuste nimekirjas kuvatakse kõiki haldusteenuses registreeritud teenuseid.
Iga teenuse kohta kuvatakse:
Teenuste halduse vaates kuvatakse alamteenuste nimekirja, mis on sorditud
teenuse identifikaatori järgi:
#. Teenuse identifikaator;
#. Teenuse alamvõrk;
#. Teenuse liik;
#. Teenuse seisund;
Kui haldusteenus on alamteenuse kohta tuvastanud seadistuste puudumise või
veaolukorra, siis vastav teave kuvatakse teenuse all. Iga teenuse kohta
kuvatakse korraga vaid ühte teadet.
Nimekirjas teenuse kirjel klõpsates avaneb kirje all tabel täpsema infoga:
#. Teenuse korrasoleku kontrolli poolt tuvastatud järjestikune vigade arv
(ainult teenustel, mis on olekus ``seadistatud`` või ``tõrge``);
#. Teenuse korrasoleku kontrolli viimase läbiviimise aeg
(ainult teenustel, mis on olekus ``seadistatud`` või ``tõrge``);
#. Teenusele rakendadud tehnilise seadistuse versioon;
#. Teenusele rakendadud valimiste seadistuse versioon;
#. Teenuse IP-aadress ja port;
#. Teenuse TLS-sertifikaadi kontrollsumma (SHA256);
#. Teenuse TLS-sertifikaadile vastava võtme kontrollsumma (SHA256);
#. Mobiil-ID/Smart-ID/Web eID tugiteenuste jagatud krüptimissaladuse kontrollsumma
(SHA256);
================================================
FILE: Documentation/et/haldusteenus/yldseisund.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Üldseisund
==========
Üldseisundi leht avaneb menüüvalikust ``Üldseisund``.
Kogumisteenuse üldseisund
-------------------------
Kogumisteenuse üldseisundi vaates kuvatakse järgnevaid andmeid:
#. Valimiste identifikaator;
#. Kogumisteenuse seisund;
#. Käimasolev hääletusetapp;
#. Kogumisteenusele rakendatud seadistuste ja nimekirjade versioonid;
#. Mikroteenuste seisundite kokkuvõte;
#. Kogumisteenuse tarkvarapakkide seisund;
#. Kogumisteenuses registreeritud kasutajate arv;
#. Kogumisteenusesse laaditud korralduste arv.
Kogumisteenuse üldseisundi tuvastamiseks kogub haldusteenus korrapäraselt
alamteenustelt nende seisundi kohta andmeid ja peab selle üle arvestust.
.. note::
Kogumisteenusesse laaditud korraldused jagunevad aktiivseteks ja
arhiveeritud korraldusteks. Aktiivsed korraldused on hetkel teenusele
rakendatud. Arhiveeritud korraldused on süsteemi laaditud, kuid pole
rakendatud - näiteks uuema versiooniga asendatud korraldused.
================================================
FILE: Documentation/et/haldusteenus/ylevaade.rst
================================================
.. IVXV kogumisteenuse haldusliidese kasutusjuhend
Ülevaade
========
Haldusliidese funktsionaalsus
-----------------------------
Haldusliides on kogumisteenuse haldamise teenuse veebipõhine kasutajaliides ja
sellel on järgmised funktsioonid:
* Kogumisteenuse seisundi ja ajaloo kohta ülevaate esitamine:
* Koondülevaade;
* Teenuste seisund;
* Valmisnimekirjade seisund;
* Üldstatistika;
* Kogumisteenuse haldussündmuste logi;
* Korralduste laadimine kogumisteenusesse;
* Kasutajate haldamine;
* Väljavõtete allalaadimine:
* Hääletamise detailstatistika allalaadimine;
* Hääletamisseansside nimekirja allalaadimine;
* E-valimiskasti allalaadimine.
Ligipääse haldusliidesele
-------------------------
Kogumisteenuse haldusliides on kasutatav veebisirviku abil. Haldusliidesele
ligipääsuks vajaliku ``URL-i`` annab kasutajatele IVXV süsteemihaldur.
Haldusliidesele pääsevad ligi ainult volitatud kasutajad, kes on ennast
autentinud ID-kaardiga. Kasutajale pakutavate funktsioonide hulk sõltub
kasutaja volitustest.
Kasutajaliidese ülevaade
------------------------
Lehe ülaosas asub lehe päis, kus on kirjas haldusliidese nimi ja ikoon
sisselogitud kasutaja andmete vaatamiseks.
Lehe vasakus servas asub menüüriba, mille abil saab navigeerida alamlehtede vahel.
.. note::
Kasutajaliides skaleerub ka madala resolutsiooniga ekraanidele, siis
peidetakse menüüosa vaikimisi vaatest ja see on avatav lehe päisest.
Seadistuste, nimekirjade ja volituste koostamine ning laadimine
---------------------------------------------------------------
Kasutajaliides kaudu on võimalik süsteemi laadida kogumisteenuse seadistusi,
valikute- ja valijate nimekirju ning kasutajate volitusi.
Nende andmete peavad olema vormistatud digitaalselt signeeritud korraldusena.
Seadistuspakkide ettevalmistamine on kirjeldatud dokumendis ``IVXV seadistuste
koostamise juhend``.
Süsteemi laaditud seadistuspakke on võimalik alla laadida, kui klõpsata
kasutajaliideses seadistuspaki versiooniandmetel.
================================================
FILE: Documentation/et/kasutusmall/Makefile
================================================
include ../../common.mk
================================================
FILE: Documentation/et/kasutusmall/index.rst
================================================
.. IVXV kasutusmallid
IVXV kasutusmallid
==========================================================
.. raw:: html
NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 3
:numbered:
sissejuhatus
tegijad
kasutusmallid
================================================
FILE: Documentation/et/kasutusmall/kasutusmallid.rst
================================================
.. IVXV kasutusmallid
Kasutusmallid
=============
Hääletamiseelne etapp
---------------------
Korraldaja - Valimise defineerimine
```````````````````````````````````
Kirjeldus
'''''''''
Rangelt võttes ei ole tegemist elektroonilise hääletamise infosüsteemi kasutusmalliga, kuid see on elektroonilise hääletamise alguspunkt - Korraldaja kirjeldab valimise, küsimused, ringkonnad, valijad ning erinevate rollide täitjad e-hääletamise põhiprotsessides - Lugeja, Koguja, Töötleja jt.
Lugeja - Häälte salastamise ja avamise võtme genereerimine
``````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Lugeja genereerib võtmepaari e-häälte salastamiseks ja avamiseks. Avamisvõtme osakud jagatakse Võtmehaldurite vahel.
Eeltingimus
'''''''''''
#. Lugejal on olemas Võtmerakendus.
#. Läviskeemi tehniline seadistus on olemas.
#. Leidub Läviskeemi rakendamiseks vajalik hulk Võtmehaldureid ning võtmekandjaid.
Päästik
'''''''
Lugeja algatab võtmepaari genereerimise Võtmerakenduses.
Põhiprotsess
''''''''''''
#. Võtmerakendus verifitseerib konfiguratsiooni digitaalallkirja.
#. Võtmerakendus genereerib võtmeosakud vastavalt läviskeemi spetsifikatsioonile.
#. Võtmerakendus küsib Lugejalt võtmekandjaid osakute talletamiseks.
#. Võtmerakendus talletab osakud võtmekandjatele.
#. Võtmerakendus kasutab häälte salastamise võtit sõnumi krüpteerimiseks.
#. Võtmerakendus testib võtmekandjaid ning taastab 2 erineva kvoorumiga võtme sõnumi dekrüpteerimiseks.
#. Võtmerakendus allkirjastab krüpteerimisvõtme allkirjastamisvõtmega.
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhivoo sammudes logitakse sündmus tehniliste vigade logisse. Kasutajale väljastatakse teade veasituatsiooni kohta..
Järeltingimus
'''''''''''''
Häälte salastamise ja avamise võtmepaar on edukalt genereeritud, avamise võti on talletatud osakutena võtmekandjatel.
Korraldaja - Valijarakenduse seadistuse loomine
```````````````````````````````````````````````
Kirjeldus
'''''''''
Korraldaja konfigureerib Valijarakenduse poolt kasutatavad tekstid, sertifikaadid, ikoonid ja valimise parameetrid.
Eeltingimus
'''''''''''
Seadistamiseks on täidetud järgmised tingimused:
- Korraldaja on Valijarakenduse tekstid ette valmistanud
- Korraldaja on valimise parameetrid ette valmistanud
- Häälte salastamise võti on olemas.
Põhiprotsess
''''''''''''
#. Korraldaja käivitab Seadistamisrakenduse.
#. Korraldaja sisestab valimise ja küsimuste identifikaatorid ning tüübid.
#. Korraldaja sisestab valimise küsimused.
#. Korraldaja laadib häälte salastamise võtme.
#. Korraldaja konfigureerib Valijarakenduse kasutajaliidese – tekstid, fondid, värvid, ikoonid.
#. Korraldaja kontrollib kõigi Valijarakenduse vaadete vastavust soovitule.
#. Korraldaja salvestab loodud konfiguratsiooni.
Laiendid
''''''''
Järeltingimus
'''''''''''''
Seadistamise lõpuks on olemas Valijarakenduse konfiguratsioon, millest on puudu Kogumisteenuse tehniline info.
Korraldaja - Kontrollrakenduse seadistuse loomine
`````````````````````````````````````````````````
Eeltingimus
'''''''''''
Korraldajal on olemas
#. Hääletaja allkirja kontrolliks vajalikud sertifikaadid
#. Registreerimisteenuse kinnituse kontrolliks vajalikud sertifikaadid
#. Kogumisteenuse allkirja kontrolliks vajalikud sertifikaadid
#. Käimasoleval valimisel häälte krüpteerimiseks kasutatav avalik võti
#. Kontrollrakenduse tekstid HTML kujul
#. Kontrollrakenduse fondid
#. Kontrollrakenduse värvid
#. Käimasoleva valimise identifikaator ja küsimused
Põhiprotsess
''''''''''''
1. Korraldaja loob Kontrollrakenduse seadistuse
2. Korraldaja veendub seadistamise õnnestumises vaadates läbi rakenduse vaated
Laiendid
''''''''
1. Vaadete mittesobivuse korral muudab Korraldaja seadistusi ning alustab põhiprotsessi algusest.
Koguja - Kogumisteenuse seadistamine
````````````````````````````````````
Kirjeldus
'''''''''
Koguja valmistab Kogumisteenuse valimiseks ette.
Eeltingimus
'''''''''''
#. Kogumisteenuse operatsioonisüsteem on paigaldatud
#. Kogumisteenuse tarkvarapakid on paigaldatud.
Päästik
'''''''
Kasutusmall algab kui Koguja logib enne hääletamisperioodi algust Kogumisteenusesse.
Põhiprotsess
''''''''''''
1. Koguja viib läbi alljärgnevad sammud:
a. Laeb konfiguratsioonipakkide verifitseerimiseks vajaliku sertifikaatide konfiguratsiooni.
b. Laeb Tuvastusteenuse konfiguratsiooni.
c. Laeb Allkirjastamisteenuse konfiguratsiooni.
d. Laeb Registreerimisteenuse konfiguratsiooni.
e. Laeb mikroteenuste võrgukonfiguratsiooni.
f. Laeb talletustehnoloogia konfiguratsiooni.
g. Laeb volitatud nimekirjade laadijate konfiguratsiooni.
h. Laeb digitaalselt allkirjastatud jaoskondade/ringkondade nimekirja.
i. Laeb digitaalselt allkirjastatud valikute nimekirja.
j. Laeb signeeritud valijate nimekirja.
k. Kogumisteenus kontrollib digitaalallkirju konfiguratsioonipakkidel ja nimekirjadel (tehniline kasutusmall Digitaalallkirja kehtivuse kontroll Kogumisteenuses).
l. Kogumisteenus kontrollib tuvastatud allkirjastaja volitusi süsteemis.
m. Kogumisteenus kontrollib konfiguratsiooni vormilist ja sisulist kooskõlalisust ning initsialiseerib sisemised andmestruktuurid.
Laiendid
''''''''
- Kui põhiprotsessi sammus 1.k ei tuvastata digitaalallkirja kehtivust, siis väljastatakse veateade, sündmus logitakse vigade logisse, ühtegi muudatust ei rakendata.
- Kui põhiprotsessi sammus 1.l ei tuvastata digitaalallkirjastaja vastavat volitust volitatud isikute nimekirjast, siis väljastatakse veateade, sündmus logitakse vigade logisse, ühtegi muudatust ei rakendata.
- Kui põhivoo sammus 1.m tuvastatakse vorminguprobleemid, siis väljastatakse veateade, sündmus logitakse vigade logisse, ühtegi muudatust ei rakendata.
- Kui põhivoo sammus 1.m tuvastatakse ebakooskõla konfiguratsioonis – valed valimised, korduv jaoskond, korduv ringkond, jaoskond olematus ringkonnas, korduv kandidaat, olematu ringkonnaga kandidaat, korduv valija, olematu jaoskonnaga Hääletaja vms. – siis väljastatakse veateade, sündmus logitakse vigade logisse, ühtegi muudatust ei rakendata.
- Tehniliste vigade tekkimisel kõigis põhivoo sammudes logitakse sündmus tehniliste vigade logisse. Kasutajale väljastatakse teade veasituatsiooni kohta..
Järeltingimus
'''''''''''''
Kogumisteenus on kooskõlaliselt seadistatud ning seda on võimalik viia hääletamisetappi.
Koguja - Valijarakenduse valmendamine
`````````````````````````````````````
Kirjeldus
'''''''''
Koguja valmendab Valijarakenduse.
Eeltingimus
'''''''''''
Valmendamiseks on täidetud järgmised tingimused:
- Korraldaja on loonud omapoolse Valijarakenduse konfiguratsioonifaili
- Valijarakendus on kompileeritud kõigi toetatavate platvormide jaoks.
- Valijarakendus on seadistamata.
- Kogumisteenuse TLS-sertifikaadi usaldamiseks vajalikud sertifikaadid on olemas.
- Kogumisteenuse URI on teada.
Põhiprotsess
''''''''''''
#. Koguja käivitab Seadistamisrakenduse.
#. Koguja laadib Korraldaja loodud Valijarakenduse konfiguratsioonifaili.
#. Koguja laadib Kogumisteenuse TLS-sertifikaadi usaldamiseks vajalikud sertifikaadid.
#. Koguja rakendab loodud seadistuse Valijarakendusele.
#. Koguja kontrollib kõigi Valijarakenduse vaadete vastavust soovitule.
Laiendid
''''''''
Mõne vajaliku ressurssi puudumisel seadistamine katkestatakse ning protsessi alustatakse uuesti kui kõik eeltingimused on täidetud.
Järeltingimus
'''''''''''''
Seadistamise lõpuks Valijarakendus käivitub ning kasutab seadistatud ressursse.
Koguja - Kontrollrakenduse valmendamine
```````````````````````````````````````
Eeltingimus
'''''''''''
Kogujal on olemas
1. Kompileeritud Kontrollrakendus
2. Kontrollrakenduse allkirjastamiseks sobiv võtmepaar
3. Kogumisteenuse võrguaadress
4. Kogumisteenuse sertifikaadi verifitseerimiseks vajalikud sertifikaadid
Põhiprotsess
''''''''''''
1. Koguja seadistab Kontrollrakenduse Kogumisteenuse võrguaadressi ja vastavate sertifikaatidega.
2. Koguja pakendab rakenduse
3. Koguja allkirjastab pakendatud rakenduse
Korraldaja - Proovihääletamine
``````````````````````````````
Kirjeldus
'''''''''
Korraldaja koostöös Koguja, Töötleja, Lugeja ning Võtmehalduritega veendub Kogumisteenuse valmisolekus elektrooniliseks hääletamiseks ning kõigi komponentide kooskõlalises seadistatuses.
Eeltingimus
'''''''''''
#. e-häälte salastamise võti on loodud ja testitud
#. Kogumisteenus on seadistatud
#. Valijarakendus on seadistatud
#. Kontrollrakendus on seadistatud
Põhiprotsess
''''''''''''
1. Korraldaja viib läbi testhääletamise
#. Koguja viib Kogumisteenuse hääletamisetappi
#. Korraldaja annab Valijarakenduse abil ühe või mitu häält
#. Korraldaja kontrollib Kontrollrakenduse abil hääli
#. Koguja peatab Kogumisteenuse ja väljastab e-valimiskasti
#. Töötleja genereerib e-hääletanute nimekirja
#. Töötleja loob lugemisele minevate anonüümistatud e-häälte nimekirja
#. Lugeja koos Võtmehalduritega aktiveerib Võtmerakenduse ja häälte avamise võtme
#. Lugeja dekrüpteerib anonüümistatud hääled ja väljastab hääletamistulemuse
2. Koguja lõpetab testhääletamise ning viib Kogumisteenuse algsesse olekusse, kus talletatud häälte andmebaas on tühi.
Laiendid
''''''''
- Testhääletamine võib sisaldada ka miksimise ja auditeerimise töövooge.
Järeltingimus
'''''''''''''
Elektroonilise hääletamise süsteemi komponendid on kontrollitult kooskõlaliselt seadistatud.
Hääletamisetapp
---------------
Korraldaja - Hääletamise alustamine
```````````````````````````````````
Kirjeldus
'''''''''
Hääletamise alustamine viib Kogumisteenuse hääletamisetappi - algab valikute nimekirjade väljastamine, häälte talletamine ja kontrollpäringutele vastamine.
Päästik
'''''''
#. Valimise seadistustes näidatud hääletamise algusaeg jõuab kätte.
#. Korraldaja edastab Haldusteenuse vahendusel digitaalallkirjastatud korralduse hääletamise alustamiseks.
Põhiprotsess
''''''''''''
1. Kogumisteenus alustab valikute nimekirjade väljastamist, häälte talletamist ja kontrollpäringutele vastamist.
Järeltingimus
'''''''''''''
Kogumisteenus väljastab valikute nimekirju, talletab hääli ning vastab kontrollpäringutele.
Hääletaja - Elektrooniline hääletamine Valijarakendusega
````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Hääletaja kasutab Valijarakendust elektroonilise hääle andmiseks käimasoleval valimisel, mille valijate nimekirja ta kuulub.
Eeltingimus
'''''''''''
Hääletaja on laadinud oma arvutisse käimasoleva valimise jaoks seadistatud Valijarakenduse.
Päästik
'''''''
Kasutusmall käivitub kui Hääletaja on käivitanud Valijarakenduse.
Põhiprotsess
''''''''''''
#. Hääletaja autendib ennast elektroonilise isikutunnistusega (tehniline kasutusmall Autentimine Valijarakenduses) Kogumisteenusele.
#. Kogumisteenus saadab isikukoodi alusel Valijarakendusele (tehniline kasutusmall Valikute nimekirjade väljastamine Valijarakendusele):
- Hääletaja elukohajärgse valimisringkonna küsimuste ja valikute nimekirja valimisel,
- teavituse varasema hääletamise kohta, kui sellel valimisel on sama isikukoodi kohta juba talletatud elektrooniline hääl.
3. Valijarakendus esitab Hääletaja isikuandmed, käimasoleva valimise kirjelduse ning küsimused.
#. Valijarakendus esitab Hääletaja elukohajärgse valimisringkonna valikute nimekirja.
#. Hääletaja teeb kõigi küsimuste kontekstis kuvatud valikute hulgast valiku.
#. Valijarakendus esitab Hääletajale tehtud valikute andmed (valiku nimi, valiku number, teatud valimistel ka valimisnimekirja nimi või üksikkandidaat) ning küsib kinnitust valikutele.
#. Hääletaja kinnitab tehtud valikud.
#. Valijarakendus krüpteerib Hääletaja valikud valimise avaliku võtmega ning algatab hääle digitaalse allkirjastamise (tehniline kasutusmall Digitaalne allkirjastamine Valijarakenduses) Hääletaja elektroonilise isikutunnistusega. Valijarakendus saadab digitaalselt allkirjastatud hääle Kogumisteenusele talletamiseks (tehniline kasutusmall Hääle talletamine Kogumisteenuses).
#. Valijarakendus verifitseerib Kogumisteenuse poolt vastusena saadetud Registreerimiskinnitust, kuvab Hääletajale teate hääle edukast talletamisest ning hääle kontrollimiseks vajaliku kontrollkoodi.
Laiendid
''''''''
- Hääletaja võib põhiprotsessi läbiviimisel kasutada ligipääsetavustehnoloogiaid (nt. ekraanilugerid).
- Põhiprotsessi mis tahes etapis asetleidvad vead on fataalsed ning toovad kaasa hääletamisprotsessi katkestamise. Vea põhjuse kõrvaldamise korral tuleb kasutusmall uuesti käivitada.
Olulisimad vead:
- Elektroonilise isikutunnistuse kasutamine ebaõnnestus
- Sidehäire Valijarakenduse ja Kogumisteenuse vahel
- Autentimine ebaõnnestus
- Hääletajal ei ole hääleõigust käimasoleval valimisel
- Digitaalne allkirjastamine ebaõnnestus
- Tehnilised vead
Järeltingimus
'''''''''''''
Õnnestunud elektroonilise hääletamise korral kuvatakse Hääletajale kontrollkood, mille alusel on võimalik kontrollida elektroonilise hääle jõudmist Kogumisteenusesse ning vastavust Hääletaja tahtele.
Kasutusmalli katkestamine enne elektroonilise hääle digitaalset allkirjastamist ei mõjuta Hääletaja Kogumisteenuses eelnevalt talletatud häält.
Hääletaja - Elektroonilise hääle kontrollimine Kontrollrakendusega
``````````````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Hääletaja kasutab vahetult peale hääletamist Valijarakendusega Kontrollrakendust elektroonilise hääle korrektse jõudmise Kogumisteenusesse kontrollimiseks.
Eeltingimus
'''''''''''
#. Hääletaja valduses on Kontrollrakendusega mobiilseade.
#. Hääletaja on kasutanud Valijarakendust hääletamiseks.
#. Hääle kontrollimise ajaaken ei ole veel möödunud.
#. Valijarakenduse viimane vaade on ekraanil avatud ning kuvab kontrollimiseks vajalikku infot sisaldavat QR-koodi.
Päästik
'''''''
Kasutusmall käivitub kui Hääletaja on käivitanud Kontrollrakenduse.
Põhiprotsess
''''''''''''
Põhiprotsess on ühesuunaline, tagasi liikumised protsessis eeldavad Kontrollrakenduse töö lõpetamist.
#. Kontrollrakendus laadib Kogumisteenusest seadistused.
#. Kontrollrakendus kuvab tervitusteksti.
#. Hääletaja suunab mobiilseadme kaamera Valijarakenduses kuvatavale QR-koodile.
#. Kontrollrakendus analüüsib QR-koodi ning tuvastab sealt hääle krüpteerimiseks kasutatud juhuarvu ning häält Kogumisteenuses identifitseeriva sessiooniidentifikaatori.
#. Kontrollrakendus pöördub sessiooniidentifikaatoriga Kogumisteenuse poole.
#. Kontrollrakendus verifitseerib Kogumisteenuse sertifikaadi ning kuvab Hääletajale info verifitseerimise õnnestumise kohta.
#. Kontrollrakendus laadib Kogumisteenusest alla Kogumisteenuse allkirjastatud hääle, Registreerimisteenuse kinnituse ja häälega seotud valikute nimekirjad (tehniline kasutusmall Hääle väljastamine kontrollimiseks Kogumisteenusest).
#. Kontrollrakendus veendub, et hääl vastab kontrollprotokolli nõuetele. Kontrollrakendus verifitseerib Registreerimisteenuse kinnitust ning Hääletaja allkirja. Kontrollrakendus kuvab Hääletajale info verifitseerimiste õnnestumise kohta, hääle allkirjastanud Hääletaja andmed ning küsimused, mille kohta antud hääles leidub krüpteeritud tahteavaldus.
#. Hääletaja käivitab kontrollalgoritmi.
#. Kontrollrakendus puhastab vaate hääle allkirjastanud Hääletaja andmetest.
#. Kontrollrakendus tuvastab krüpteeritud tahteavalduse sisu kasutades kontrollalgoritmi ja QR-koodist saadud juhuarvu.
#. Kontrollrakendus kuvab iga krüpteeritud tahteavalduse kohta Hääletajale küsimuse identifikaatorit ja tuvastatud valikut.
Laiendid
''''''''
#. Kui Kontrollrakendus tuvastab võrguühenduse puudumise, siis suunatakse Hääletaja võrguühendust aktiveerima.
#. Kui Kontrollrakendus tuvastab vea Kogumisteenuse sertifikaadis, siis lõpetatakse rakenduse töö veateatega.
#. Kui Kogumisteenusest ei saadud häält või Registreerimisteenuse kinnitust, siis juhendatakse Hääletajat Kliendituge informeerima ja lõpetatakse rakenduse töö veateatega.
#. Kui Kogumisteenusest tuleb teade, et konkreetse hääle kontrollimine ei ole enam võimalik (aeg või korrad ületatud), siis lõpetatakse rakenduse töö vastavasisulise teatega.
#. Kui Kogumisteenusest saadud hääl ei vasta nõuetele, siis lõpetatakse rakenduse töö veateatega.
#. Kui Hääletaja allkirja verifitseerimine ebaõnnestub, siis lõpetatakse rakenduse töö veateatega.
#. Kui Registreerimisteenuse kinnituse verifitseerimine ebaõnnestub, siis lõpetatakse rakenduse töö veateatega.
#. Kui kontrollalgoritm ei leia kandidaatide nimekirjast sobivat valikut, siis kuvatakse konkreetse valimise ja küsimuse identifikaatori järel veateade.
#. Kui QR koodis sisaldub rohkem kui ühe küsimuse kontrollkood, siis teostatakse kontroll kõigi viidatud küsimuste jaoks.
#. Kui Kogumisteenusest saadetud allkirjastatud hääles on krüpteeritud hääli, mille kohta puudub kontrollkood, siis esitab Kontrollrakendus Hääletajale nende valimiste/küsimuste identifikaatorid ning vastavasisulise hoiatuse. Ülejäänud hääled kontrollitakse.
#. Kui Kogumisteenusest saadetud allkirjastatud hääles ei ole kõiki hääli, mille kohta on kontrollkood, siis esitab Kontrollrakendus Hääletajale nende valimiste/küsimuste identifikaatorid ning vastavasisulise hoiatuse. Ülejäänud hääled kontrollitakse.
#. Kui kontrollalgoritm lõpetab veateatega, siis juhendatakse Hääletajat Kliendituge informeerima.
Järeltingimus
'''''''''''''
Kui hääle kontrollimisega ületatakse lubatud kontrollimiste limiit, siis Kogumisteenus rohkem häält kontrollida ei võimalda.
Kogumisteenuse Haldur - Kogumisteenuse seisundi kuvamine
````````````````````````````````````````````````````````
Päästik
'''''''
Kogumisteenuse Haldur siseneb Kogumisteenuse Haldusteenusesse.
Põhiprotsess
''''''''''''
#. Haldusteenus autendib kasutaja ning tuvastab autenditud kasutaja volitused Haldusteenuses
#. Vastavalt volituste määrale kuvab Kogumisteenus alamhulka järgmisest informatsioonist:
#. Valimise identifikaator, küsimused, hääletusetapp
#. Töötavad teenusserverid
#. Laetud nimekirjad - ringkonnad, valijad, valikud
#. Hääletamise statistika
#. Kogumisteenuse volitatud kasutajad
#. Kogumisteenuse tehniline logi
Korraldaja - Hääletamise lõpetamine
```````````````````````````````````
Kirjeldus
'''''''''
Hääletamise lõpetamine lõpetab häälte vastuvõtmise Kogumisteenuse poolt. Hääletamise lõpetamine toimub järk-järgult – Hääletajad, kes on saanud kandidaatide nimekirja enne hääletamise ametlikku lõppu, peavad saama mõistliku aja jooksul hääletada.
Päästik
'''''''
#. Valimise seadistustes näidatud hääletamise lõpetamise aeg jõuab kätte.
#. Korraldaja edastab Haldusteenuse vahendusel digitaalallkirjastatud korralduse hääletamise lõpetamiseks.
Põhiprotsess
''''''''''''
1. Kogumisteenus vastab kõigile kandidaatide nimekirjade päringutele veateatega, kuid jätkab häälte talletamispäringute teenindamist.
2. Kogumisteenus lõpetab korralduses/konfiguratsioonis näidatud aja möödudes häälte vastuvõtmise.
3. Kogumisteenus vastab kõigile Valijarakendustelt tulevatele päringutele veateatega.
Järeltingimus
'''''''''''''
Kogumisteenus ei võta enam uusi hääli vastu.
Töötlusetapp
------------
Koguja - E-valimiskasti väljastamine
````````````````````````````````````
Kirjeldus
'''''''''
Koguja ekspordib e-valimiskasti Kogumisteenuse andmebaasist.
Eeltingimus
'''''''''''
Elektrooniline hääletamine on lõpetatud.
Päästik
'''''''
Koguja valib Haldusteenusest e-valimiskasti eksportimise funktsionaalsuse.
Põhiprotsess
''''''''''''
#. Kogumisteenus teeb häälte andmebaasist väljavõtte, mis sisaldab kogu talletamisteenuses sisalduvat häältega seotud infot.
Järeltingimus
'''''''''''''
E-valimiskast on eksporditud.
Töötleja - E-valimiskasti verifitseerimine
``````````````````````````````````````````
Kirjeldus
'''''''''
Töötleja verifitseerib Kogujalt saadud e-valimiskasti kooskõlalisust ning selle vastavust Registreerimisteenuselt saadud informatsioonile.
Eeltingimus
'''''''''''
- E-valimiskast on väljastatud
- Registreerimiskinnitused on väljastatud
Päästik
'''''''
Töötleja käivitab vastava funktsionaalsuse Töötlemisrakenduse kasutajaliideses.
Põhiprotsess
''''''''''''
#. Töötlemisrakendus laadib seadistused
#. Töötlemisrakendus kontrollib seadistuste digitaalallkirja
#. Töötlamisrakendus kontrollib seadistuste kooskõlalisust
#. Töötlemisrakendus laadib e-valimiskasti
#. Töötlemisrakendus kontrollib e-häälte digitaalallkirja
#. Töötlemisrakendus laadib registreerimiskinnitused
#. Töötlemisrakendus verifitseerib registreerimiskinnitused
#. Töötlemisrakendus kontrollib e-valimiskasti ja registreerimiskinnituste kooskõlalisust
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhiprotsessi sammudes logitakse sündmus tehniliste vigade logisse. Kasutajale väljastatakse teade veasituatsiooni kohta ning protsess peatatakse.
- Kasutajal on võimalus viia protsess läbi selliselt et vigadega seotud Hääletajad eraldatakse muust e-valimiskastist. Tulemuseks on probleemsete häälte raport ja puhastatud e-valimiskast.
Järeltingimus
'''''''''''''
E-valimiskasti verifitseerimise raport identifitseerib üheselt korrektsed ja probleemsed hääled.
Töötleja - Elektrooniliselt hääletanute nimekirja koostamine
````````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Peale hääletamisperioodi lõppu koostab Töötleja valimisjaoskondade kaupa nimekirjad elektrooniliselt hääletanud isikutest. Nimekirjad on nii inim- kui masinloetavad.
Eeltingimus
'''''''''''
E-valimiskast on edukalt verifitseeritud.
Päästik
'''''''
Töötleja käivitab vastava funktsionaalsuse Töötlemisrakenduse kasutajaliideses.
Põhiprotsess
''''''''''''
1. Töötlemisrakendus tühistab korduvad hääled, jättes iga Hääletaja kohta alles ajaliselt kõige viimasena antud hääle.
2. Töötlemisrakendus sorteerib kehtivad hääled valimisjaoskondade kaupa.
3. Töötlemisrakendus loob elektrooniliselt hääletanute nimekirjade faili.
1. Iga kehtiva hääle kohta lisab Töötlemisrakendus faili ühe kirje, kus sisaldub isikukood, nimi, valimisjaoskonna number ja rea number valimisringkonna nimekirjas. Andmed võetakse valijate nimekirjast.
4. Töötlemisrakendus esitab vastuvõetud häälte koguarvu ning elektrooniliselt hääletanute arvu.
5. Töötleja salvestab nimekirja välisele andmekandjale.
Laiendid
''''''''
Kui põhiprotsessi sammus 3 ei tuvastata isikukoodi valijate nimekirjast, siis logitakse vastavasisuline informatsioon ning jätkatakse põhiprotsessiga.
Järeltingimus
'''''''''''''
Kehtivad hääled on kantud e-hääletanute nimekirja. Korduvad hääled on tühistatud.
Töötleja - Miksimisele/Lugemisele minevate e-häälte anonümiseerimine
````````````````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Töötleja rakendab tühistus- ja ennistusnimekirju ning loob lugemisele minevate e-häälte anonümiseeritud hulga.
Eeltingimus
'''''''''''
E-valimiskast on edukalt verifitseeritud ning elektrooniliselt hääletanute nimekiri koostatud.
Päästik
'''''''
Töötleja käivitab vastava funktsionaalsuse Töötlemisrakenduse kasutajaliideses.
Põhiprotsess
''''''''''''
Töötlemisrakendus verifitseerib tühistus- ja ennistusnimekirjade digitaalallkirjad.
Töötlemisrakendus kontrollib tühistus- ja ennistusnimekirjade kooskõlalisust järjekorras.
Töötlemisrakendus rakendab tühistus- ja ennistusnimekirju järjekorras.
Töötlemisrakendus koostab miksimisele/lugemisele minevate häälte nimekirja eraldades krüptogrammid digitaalallkirjadest.
Töötlemisrakendus väljastab lõpliku elektrooniliselt hääletanute nimekirja masinloetavas vormingus.
Laiendid
''''''''
- Kui põhiprotsessi sammus 1 Korraldaja allkirja verifitseerimine või volituse kontroll ebaõnnestuvad, siis väljastatakse veateade Ühtegi muudatust ei rakendata.
Järeltingimus
'''''''''''''
Miksimisele/lugemisele minevate häälte hulk on koostatud, elektrooniliselt hääletanute nimekiri on väljastatud.
Miksija - Miksimine
```````````````````
Kirjeldus
'''''''''
Eeltingimus
'''''''''''
Päästik
'''''''
Põhiprotsess
''''''''''''
#. Miksija käivitab Miksimisrakenduse ning laadib anonüümistatud e-hääled
#. Miksimisrakendus rerandomiseerib ning permuteerib e-hääled, tulemuseks on uued e-hääled
#. Miksimisrakendus genereerib tõestuse, et uued e-hääled on algsete e-häältega sisuliselt samaväärsed
#. Miksimisrakendus väljastab nii miksitud hääled kui Miksimistõendi
Laiendid
''''''''
Järeltingimus
'''''''''''''
Algsete häältega tõestatavalt samaväärsed, miksitud hääled on väljastatud.
Lugemisetapp
------------
Lugeja - Elektroonilise hääletamise tulemuse kindlaks tegemine
``````````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Tühistusperioodi lõppedes sorteeritakse ümbrikud valimisringkondade kaupa. Välised ümbrikud avatakse. s.t. digitaalallkirjad eemaldatakse, järgi jäävad häälte salastamise võtmega krüpteeritud hääled, mis dekrüpteeritakse Võtmerakendusega.
Põhiprotsess
''''''''''''
#. Lugeja algatab häälte kokku lugemise Võtmerakendusega.
#. Võtmehaldurid aktiveerivad vastavalt võtmehalduse protseduuridele häälte avamise võtme.
#. Võtmerakendus loeb krüpteeritud hääled väliselt andmekandjalt.
#. Võtmerakendus teostab häältefaili tehnilise kontrolli ning algatab häälte krüpteerimise.
#. Võtmerakendus kontrollib dekrüpteeritud hääle vastavust avakujul hääle vormingule.
#. Võtmerakendus kontrollib hääle kehtivust, veendudes et dekrüpteerimisel selgunud kandidaat kuulus antud ringkonnas valikute hulka.
#. Võtmerakendus summeerib arvesse minevad hääled jaoskondade, ringkondade ja kandidaatide kaupa.
#. Võtmerakendus kannab hääletamistulemuse andmekandjale.
#. Hääletamistulemus imporditakse valimiste infosüsteemi.
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhiprotsessi sammudes logitakse sündmus tehniliste vigade logisse. Kasutajale väljastatakse teade veasituatsiooni kohta ning protsess peatatakse.
- Põhiprotsessi sammudes 4 ja 5 tehtavate kontrollide ebaõnnestumise korral loetakse antud hääl kehtetuks ning protsessi jätkatakse järgmise krüpteeritud hääle juurest.
Järeltingimus
'''''''''''''
Hääletamistulemus on sisestatud valimiste infosüsteemi.
Auditeerimisetapp
-----------------
Audiitor - Auditeerimine
````````````````````````
Kirjeldus
'''''''''
Peale hääletamistulemuse väljaselgitamist on Audiitoril võimalik kontrollida Miksimistõendit ja Lugemistõendit.
Eeltingimus
'''''''''''
- Hääletamistulemus, krüptogrammid ning lugemistõend on olemas
- Miksimiseelsed krüptogrammid, miksimisjärgsed krüptogrammid ning miksimistõend on olemas
Põhiprotsess
''''''''''''
1. Audiitor kasutab Auditirakendust Lugemistõendi kontrollimiseks
2. Audiitor kasutab Auditirakendust Miksimistõendi kontrollimiseks
Laiendid
''''''''
Järeltingimus
'''''''''''''
Lugemistõend ja Miksimistõend on kontrollitud.
Tehnilised kasutusmallid
------------------------
Autentimine Valijarakenduses
````````````````````````````
Kirjeldus
'''''''''
Valijarakenduse vahendusel ja elektroonilise isikutunnistuse abil tuvastab Kogumisteenus Hääletaja isiku.
Päästik
'''''''
Kasutusmall käivitatakse kui Hääletaja käivitab Valijarakenduse ning suundub hääletama.
Põhiprotsess – ID kaart
'''''''''''''''''''''''
1. Hääletaja sisestab ID-kaardi lugejasse.
2. Valijarakendus pöördub Kogumisteenuse poole protokolli algatamiseks.
3. Kogumisteenus saadab Valijarakendusele oma sertifikaadi.
4. Valijarakendus kontrollib Kogumisteenuse sertifikaati.
5. Kogumisteenus nõuab Hääletaja autentimist TLS-protokolli kohaselt.
6. Valijarakendus küsib valijalt ID-kaardi autentimisvõtme kasutamiseks PIN1 koodi.
7. Hääletaja sisestab PIN1 koodi.
8. Valijarakendus ja Kogumisteenus viivad läbi TLS-protokolli, Kogumisteenuse saadetakse Hääletaja sertifikaat.
9. Kogumisteenus kontrollib Hääletaja sertifikaati.
10. Kogumisteenus tuvastab Hääletaja isikukoodi.
Põhiprotsess – Mobiil-ID
''''''''''''''''''''''''
1. Hääletaja sisestab Valijarakendusse oma Mobiil-ID SIM kaarti sisaldava mobiiltelefoni numbri.
2. Valijarakendus pöördub Kogumisteenuse poole protokolli algatamiseks.
3. Kogumisteenus saadab Valijarakendusele oma sertifikaadi.
4. Valijarakendus kontrollib Kogumisteenuse sertifikaati.
5. Valijarakendus saadab telefoninumbri Kogumisteenusele.
6. Kogumisteenus algatab autentimise Mobiil-ID teenuse kaudu.
7. Kogumisteenus saadab Mobiil-ID kontrollkoodi Valijarakendusele, mis kuvab seda valijale.
8. Hääletaja saab mobiiltelefonile autentimissõnumi.
9. Hääletaja võrdleb autentimissõnumi kontrollkoodi Valijarakenduses kuvatavaga.
10. Hääletaja sisestab autentimisvõtme kasutamiseks PIN1 koodi.
11. Kogumisteenus ja Mobiil-ID teenus viivad läbi autentimise, Kogumisteenuse saadetakse Hääletaja sertifikaat.
12. Kogumisteenus kontrollib Hääletaja sertifikaati.
13. Kogumisteenus tuvastab Hääletaja isikukoodi.
14. Valijarakendus küsib regulaarselt, kas autentimine on toimunud, Kogumisteenus vastab.
Laiendid
''''''''
- Kui ID-kaarti ei ole lugejas, siis katkestab Valijarakendus töö veateatega (ID-kaart).
- Kui Kogumisteenus ei ole kättesaadav, siis katkestab Valijarakendus töö veateatega.
- Kui Kogumisteenuse sertifikaadi kehtivust ei õnnestu kontrollida või kui sertifikaat ei vasta Kogumisteenuse nimele, siis katkestab Valijarakendus töö veateatega.
- Kui ID-kaardi kasutamine ebaõnnestub, siis katkestab Valijarakendus töö veateatega. (ID-kaart)
- Kui Kogumisteenuses annab Hääletaja sertifikaadi kontroll negatiivse tulemuse, siis saadetakse Valijarakendusele veateade ning autentimine katkestatakse.
- Kui Mobiil-ID protokolli läbiviimine ebaõnnestub, siis vastab Kogumisteenus Valijarakenduse päringule veateatega ning autentimine katkestatakse. (Mobiil-ID)
Järeltingimus
'''''''''''''
Kogumisteenus teab Hääletaja sertifikaati ning on tuvastanud sellest isikukoodi.
Digitaalne allkirjastamine Valijarakenduses
```````````````````````````````````````````
Kirjeldus
'''''''''
Valijarakenduse abil antakse digitaalallkirja vahendi abil krüpteeritud häälele digitaalallkiri.
Eeltingimus
'''''''''''
Hääletaja on teinud oma valikud ja kinnitanud need. Valijarakendus on valikud krüpteerinud Kogumisteenuse avaliku võtmega.
Mobiil-ID korral teab Kogumisteenus juba Hääletaja Mobiil-ID SIM kaardiga mobiiltelefoninumbrit, kuna autentimine on edukalt toimunud.
Päästik
'''''''
Hääletaja on valinud Valijarakenduses hääletamise funktsionaalsuse, kõik valikud on krüpteeritud Kogumisteenuse avaliku võtmega.
Põhiprotsess – ID-kaart
'''''''''''''''''''''''
1. Valijarakendus moodustab BES vormingus BDOC konteineri.
2. Valijarakendus lisab konteinerisse andmefailidena krüpteeritud valikud.
3. Valijarakendus moodustab allkirjastatava räsi BDOC standardi kohaselt.
4. Valijarakendus algatab räsi signeerimise ID-kaardiga.
5. Hääletaja sisestab PIN2 koodi allkirjastamisvõtme kasutamiseks.
6. Valijarakendus lisab Hääletaja signatuuri ja allkirjastamissertifikaadi BDOC konteinerile.
Põhiprotsess – Mobiil-ID
''''''''''''''''''''''''
1. Valijarakendus moodustab BES vormingus BDOC konteineri.
2. Valijarakendus lisab konteinerisse andmefailidena krüpteeritud valikud.
3. Valijarakendus saadab konteineri Kogumisteenusele.
4. Kogumisteenus moodustab allkirjastatava räsi BDOC standardi kohaselt.
5. Kogumisteenus algatab räsi signeerimise Mobiil-ID teenusega.
6. Kogumisteenus saadab Mobiil-ID kontrollkoodi Valijarakendusele, mis kuvab seda valijale.
7. Hääletaja saab mobiiltelefonile allkirjastamissõnumi.
8. Hääletaja võrdleb allkirjastamissõnumi kontrollkoodi Valijarakenduses kuvatavaga.
9. Hääletaja sisestab allkirjastamisvõtme kasutamiseks PIN2 koodi.
10. Kogumisteenus ja Mobiil-ID teenus viivad läbi allkirjastamise, Kogumisteenuse saadetakse digitaalselt allkirjastatud ja kehtivuskinnitusega TS vormingus BDOC konteiner.
11. Valijarakendus küsib regulaarselt, kas allkirjastamine on toimunud, Kogumisteenus vastab.
12. TS vormingus BDOC konteiner edastatakse Valijarakendusele verifitseerimiseks.
Laiendid
''''''''
- Kui ID-kaarti ei ole lugejas, siis katkestab Valijarakendus töö veateatega (ID-kaart).
- Kui Kogumisteenus ei ole kättesaadav, siis katkestab Valijarakendus töö veateatega.
- Kui ID-kaardi kasutamine ebaõnnestub, siis katkestab Valijarakendus töö veateatega. (ID-kaart)
- Kui Mobiil-ID protokolli läbiviimine ebaõnnestub, siis vastab Kogumisteenus Valijarakenduse päringule veateatega ning allkirjastamine katkestatakse. (Mobiil-ID)
Järeltingimus
'''''''''''''
Hääletaja hääl on digitaalselt allkirjastatud.
Digitaalallkirja kehtivuse kontroll Kogumisteenuses
```````````````````````````````````````````````````
Kirjeldus
'''''''''
Kogumisteenus kontrollib digitaalallkirju ID-kaardi ja Mobiil-ID'ga allkirjastatud e-häältel ning seadistamisel ja tühistamisel kasutatavatel sisendfailidel.
Eeltingimus
'''''''''''
Kogumisteenusede sertifikaatide konfiguratsioon on tehtud. Kogumisteenuse kehtivuskinnitusteenuse konfiguratsioon on tehtud.
Päästik
'''''''
Kogumisteenus algatab digitaalallkirja kehtivuse kontrolli.
Põhiprotsess
''''''''''''
1. Kogumisteenus tuvastab profiili, millest lähtudes kontroll läbi viia:
1. ID-kaardiga allkirjastatud hääl võib olla BES või TS vormingus, tohib sisaldada mitut andmefaili ja täpselt ühte allkirja.
2. Mobiil-ID'ga allkirjastatud hääl peab olema TS vormingus, tohib sisaldada mitut andmefaili ja täpselt ühte allkirja.
3. Muud failid peavad olema TS vormingus, tohivad sisaldada täpselt ühte andmefaili ja täpselt ühte allkirja.
2. Kogumisteenus veendub allkirja vastavuses nõutud profiilile.
3. Kui allkiri on BES vormingus, siis pöördub Kogumisteenus kehtivuskinnitusteenuse poole sertifikaadi kehtivuse kontrolliks. Kogumisteenus liidab kehtivuskinnituse digitaalallkirjale, tulemuseks on TS vormingus allkiri.
4. Kogumisteenus kontrollib TS vormingus allkirja:
1. Signatuuri.
2. Sertifikaadi kehtivuskinnitust.
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhiprotsessi sammudes logitakse sündmus tehniliste vigade logisse. Välja kutsuvale protsessile väljastatakse teade veasituatsiooni kohta.
- Kehtivuskinnituse laadimise ebaõnnestumisel põhiprotsessi sammus 3 logitakse sündmus tehniliste vigade logisse. Välja kutsuvale protsessile väljastatakse teade veasituatsiooni kohta.
- Kontrollide ebaõnnestumisel põhiprotsessi sammus 4 logitakse sündmus tehniliste vigade logisse. Välja kutsuvale protsessile väljastatakse teade veasituatsiooni kohta.
Valikute nimekirjade väljastamine Valijarakendusele
```````````````````````````````````````````````````
Kirjeldus
'''''''''
Kogumisteenus väljastab Valijarakendusele valikute nimekirja.
Eeltingimus
'''''''''''
Hääletaja autentimine on õnnestunult toimunud.
Päästik
'''''''
Valijarakendus on pöördunud Kogumisteenuse poole valikute nimekirja alla laadimiseks.
Põhiprotsess
''''''''''''
1. Kogumisteenus kontrollib isikukoodi kasutades, millisesse valimisringkonda Hääletaja kuulub.
2. Kogumisteenus kontrollib, kas Hääletaja kohta on juba mõni hääl talletatud.
3. Kogumisteenus saadab Valijarakendusele ringkonnakohase kandidaatide nimekirja kõigi valimise kohta, kus isikukood on nimekirja kantud ning informatsiooni võimaliku korduvhääletamise kohta.
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhiprotsessi sammudes logitakse sündmus tehniliste vigade logisse. Valijarakendust teavitatakse protsessi ebaõnnestumisest.
- Kui põhiprotsessi sammus 2 on selge, et Hääletaja ei kuulu käimasoleva valimise valijate nimekirja, siis saadetakse Valijarakendusele vastavasisuline veateade.
Hääle talletamine Kogumisteenuses
`````````````````````````````````
Kirjeldus
'''''''''
Kogumisteenus talletab Hääletaja hääle.
Eeltingimus
'''''''''''
Hääle digitaalne allkirjastamine Valijarakenduses on edukalt toimunud.
Päästik
'''''''
Valijarakendus on saatnud hääle talletamisele.
Põhiprotsess
''''''''''''
1. Kogumisteenus kontrollib hääle digitaalallkirja (tehniline kasutusmall Digitaalallkirja kehtivuse kontroll Kogumisteenuses). Kontrolli käigus tagatakse muu hulgas kehtivuskinnituse lisamine allkirjale.
2. Kogumisteenus kontrollib hääle allkirjastanud ja valikute nimekirja laadimisel TLS protokollis autenditud isikukoodide samasust.
3. Kogumisteenus registreerib hääle vastuvõtmise Registreerimisteenuses.
4. Kogumisteenus genereerib häälega seostatud unikaalse identifikaatori.
5. Kogumisteenus salvestab hääle koos unikaalse identifikaatoriga.
6. Kogumisteenus tagastab Valijarakendusele õnnestumise teate koos häälele viitava unikaalse identifikaatoriga ja Registreerimisteenuse kinnitusega
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhiprotsessi sammudes logitakse sündmus tehniliste vigade logisse. Valijarakendust teavitatakse protsessi ebaõnnestumisest. Häält ei talletata.
- Kui põhiprotsessi sammus 1 digitaalallkirja kontroll ebaõnnestub, siis logitakse sündmus tehniliste vigade logisse. Valijarakendust teavitatakse protsessi ebaõnnestumisest. Häält ei talletata.
- Kui põhiprotsessi sammus 2 isikukoodid erinevad, siis logitakse sündmus tehniliste vigade logisse. Valijarakendust teavitatakse protsessi ebaõnnestumisest. Häält ei talletata.
Järeltingimus
'''''''''''''
Digitaalselt allkirjastatud hääl on varustatud kehtivuskinnitusega, Kogumisteenuse poolse kinnitusega ning talletatud Kogumisteenuses seostatuna unikaalse identifikaatoriga.
Hääle väljastamine kontrollimiseks Kogumisteenusest
```````````````````````````````````````````````````
Kirjeldus
'''''''''
Kogumisteenus väljastab Kontrollrakendusele kontrollimiseks allkirjastatud hääle ja registreerimiskinnituse.
Päästik
'''''''
Kontrollrakendus on esitanud Kogumisteenusele unikaalse identifikaatoriga hääle kontrollimise päringu.
Põhiprotsess
''''''''''''
1. Kogumisteenus kontrollib, kas unikaalsele identifikaatorile vastab elektrooniline hääl.
2. Kogumisteenus kontrollib, kas unikaalsele identifikaatorile vastava hääle kontrollimine on veel võimalik vastavalt aja ja kordade tingimustele.
3. Kogumisteenus suurendab konkreetse hääle kontrollimise kordade loendurit.
4. Kogumisteenus väljastab Kontrollrakendusele unikaalse identifikaatori poolt viidatud hääle koos ringkonna valikute nimekirjaga ning häälele vastava registreerimiskinnitusega.
Laiendid
''''''''
- Tehniliste vigade tekkimisel kõigis põhiprotsessi sammudes logitakse sündmus tehniliste vigade logisse. Kontrollrakendust teavitatakse protsessi ebaõnnestumisest. Häält ei väljastata.
- Kui põhiprotsessi sammus 1 ei leita unikaalsele identifikaatorile vastavat häält, siis logitakse sündmus tehniliste vigade logisse. Kontrollrakendust teavitatakse protsessi ebaõnnestumisest. Häält ei väljastata.
- Kui põhiprotsessi sammus 2 tehtavad kontrollid annavad negatiivse tulemuse, siis logitakse sündmus tehniliste vigade logisse. Kontrollrakendust teavitatakse protsessi ebaõnnestumisest. Häält ei väljastata.
Elektrooniliste häälte avalduse alusel tühistamine/ennistamine
``````````````````````````````````````````````````````````````
Kirjeldus
'''''''''
Korraldaja poolt kinnitatud digitaalallkirjastatud tühistus-/ennistuskannete faili import Töötleja poolt. Töötlemisrakendus teostab tühistused/ennistused, logides tegevused. Töötlejale kuvatakse tühistamise/ennistamise tulem – aruanne tühistustest/ennistustest koos tulemusega.
Päästik
'''''''
Töötlemisrakendus käivitab vastava funktsionaalsuse.
Põhiprotsess
''''''''''''
#. Töötlemisrakendus verifitseerib avalduse digitaalallkirja.
#. Töötlemisrakendus kontrollib, et avaldus oleks allkirjastatud volitatud kasutaja poolt.
#. Töötlemisrakendus loeb failist kandeid ning viib operatsioonid täide märkides hääle kas tühistatuks või ennistatuks.
#. Kogumisteenus kuvab avalduse rakendamise tulemusi.
Laiendid
''''''''
- Kui põhiprotsessi sammus 1 tuvastatakse digitaalallkirja mittekehtivus, siis logitakse tehniliste vigade logisse vastav kanne ning protsess peatatakse.
- Kui põhiprotsessi sammus 2 tuvastatakse, et avalduse allkirjastajal ei ole vastavaid volitusi, siis logitakse tehniliste vigade logisse vastav kanne ning protsess peatatakse.
- Kui põhiprotsessi sammus 3 tuvastatakse, et isikukoodiga identifitseeritud Hääletaja hääl on mittesobivas olekus või Hääletaja ei ole hääletanud, siis logitakse aruandesse vastav kanne ning protsessi jätkatakse järgmise kandega.
- Tehniliste vigade tekkimisel kõigis põhivoo sammudes logitakse sündmus tehniliste vigade logisse. Kasutajale väljastatakse teade veasituatsiooni kohta ning protsess peatatakse.
Järeltingimus
'''''''''''''
Tühistatud hääled ei lähe lugemisele, ennistatud hääled lähevad lugemisele.
================================================
FILE: Documentation/et/kasutusmall/sissejuhatus.rst
================================================
.. IVXV kasutusmallid
Sissejuhatus
============
Dokument kirjeldab elektroonilise hääletamise süsteemi kasutusmallimudeli. Dokument on jaotatud kaheks osaks: tegijad ja kasutusmallid. Esimeses osas on kirjeldatud kasutusmallimudeli tegijad. Teises osas on kirjeldatud elektroonilise hääletamise süsteemi kasutusmallid.
Viited
------
1. [UML] – UMLi kontsentraat. Objektmodelleerimise standardkeele UML 2.0 lühijuhend. Martin Fowler. Cybernetica AS.
Kasutatud metoodika
-------------------
Kasutusmallimudel
`````````````````
Kasutusmallid on abivahend, mis aitab aru saada süsteemi talitlusnõuetest. Kasutusmallid esitavad süsteemi välisvaate kirjeldades süsteemi kasutajate ja süsteemi vahelisi interaktsioone kasutajate eesmärkide täitmiseks. Kasutusmallimudel koondab endas kõik analüüsitava süsteemi olulised kasutusmallid [UML].
Tegija
``````
Tegija on roll, mida kasutaja mängib süsteemi suhtes. Tegija ei pea olema inimene. Kui modelleeritav süsteem annab mingit teenust teisele arvutisüsteemile, on see teine süsteem tegija.
Kasutusmall
```````````
Kirjeldus
'''''''''
Kasutusmall on kogum stsenaariume, mida omavahel ühendab ühine kasutaja eesmärk. Iga stsenaarium on süsteemis tehtavate toimingute jada, mis annab tegijale nähtava ja kasuliku tulemuse.
Eeltingimus
'''''''''''
Eeltingimus kirjeldab tingimusi, mille täidetuse peab süsteem tagama, enne kui ta laseb alustada kasutusmalli täitmist.
Päästik
'''''''
Päästik spetsifitseerib sündmuse, mis käivitab kasutusmalli.
Põhiprotsess
''''''''''''
Põhiprotsess kirjeldab kasutusmalli peastsenaariumi.
Laiendid
''''''''
Laiend kasutusmallis nimetab oleku, mis tuleneb teistsugustest interaktsioonidest kui need, mis on kirjeldatud õnnestumise peastsenaariumis, ja ütleb, millised on need erinevused.
Järeltingimus
'''''''''''''
Järeltingimuse täidetus garanteeritakse süsteemi poolt kasutusmalli täitmise lõpus.
E-hääletamise etapid
--------------------
E-hääletamine jaguneb korralduslikult viieks etapiks:
- hääletamiseelne etapp
- hääletamisetapp
- töötlusetapp
- lugemisetapp
- auditeerimisetapp
Mõisted
-------
Mõiste *isik* võib tähistada nii füüsilist kui juriidilist isikut. Eeldame, et konkreetsete toimingute läbiviija on alati üheselt indentifitseeritav füüsiline isik, kes võib tegutseda juriidilise isiku volitatud esindajana.
Mõiste *serverisüsteem* tähistab terviklikku kogumit tarkvaralisi ja riistvaralisi komponente, mis koostoimes realiseerivad konkreetset protokolli ning osutavad pikema aja vältel teenust paljudele kasutajatele.
Mõiste *liides* tähistab selgelt spetsifitseeritud kokkupuutepunkti süsteemi komponentide vahel, mis võimaldab komponentide vahelist infovahetust.
Mõiste *rakendus* tähistab tarkvaralist komponenti, mida käivitatakse konkreetsel ajahetkel ühel riistvaralisel komponendil ühe kasutaja poolt. Rakendus võib oma ülesande täitmiseks suhelda servrisüsteemiga.
Mõiste *teenus* tähistab süsteemivälist komponenti, millega süsteem oma ülesannete täitmiseks konkreetsete liideste kaudu andmeid vahetab.
================================================
FILE: Documentation/et/kasutusmall/tegijad.rst
================================================
.. IVXV kasutusmallid
Tegijad
=======
Korraldaja
----------
*Korraldaja* on isik, kes korraldab valimisi mille raamides elektroonilise hääletamise süsteemi kasutatakse. Korraldaja määrab elektroonilise hääletamise seadistuse, sealhulgas kõik ülejäänud rollitäitjad. Korraldaja haldab Kogumisteenust sisuliselt.
Korraldaja tegeleb hääletamiseelsel etapil valijate, valimisjaoskondade, ringkondade ja valikute- kandidaatide (valimistel) või vastusevariantide (rahvahääletusel) nimekirja koostamise ja/või kinnitamisega.
Korraldaja loob ja/või kinnitab Valimisrakenduse ning Kontrollrakenduse seadistused.
Korraladaja tegeleb hääletamisetapil valijate nimekirjade täiendamise ja/või täienduste kinnitamisega.
Korraldaja tegeleb töötlusetapil e-häälte tühistamis- ja ennistamisavalduste koostamise ja/või kinnitamisega.
Korraldaja võib täita ka elektroonilise hääletamise põhiprotsesside toimimisega seotud konkreetseid rolle. Näiteks hoiab Korraldaja tavajuhtumitel ka e-hääletamise süsteemi põhisaladust – häälte avamise võtit ning seega täidab ta ka häälte avaja ja summeerija ehk Lugeja rolli.
Hääletaja
---------
*Hääletaja* on isik, kes kasutab elektroonilise hääletamise süsteemi hääletamisetapil
- hääletamiseks Valijarakendusega,
- hääle kontrollimiseks Kontrollrakendusega.
Hääletajal on elektrooniline isikutunnistus – ID-kaart, Mobiil-ID, Smart-ID või Web eID.
Koguja
------
*Koguja* on isik, kes haldab Kogumisteenust, Valijarakendust ja Kontrollrakendust tehniliselt.
*Kogumisteenus* on serverisüsteem, mis tuvastab hääleõiguslikkust Tuvastusteenuse abil, väljstab kandidaatide nimekirja, aitab Valijarakendusel Allkirjastamisteenuse abil e-häält moodustada, talletab hääli e-valimiskasti ning registreerib neid Registreerimisteenuses. Kogumisteenus vastab Kontrollrakenduse poolt tehtud hääle tervikluse kontrollpäringutele.
*Kogumisteenuse Haldur* on kas Korraldaja, Koguja või Klienditugi. Koguja on Kogumisteenuse tehniline haldur. Kogumisteenuse sisuline haldur on Korraldaja. Kogumisteenus pakub informatiivset liidest Klienditoele.
*Haldusteenus* on teenus, mida Kogumisteenuse Haldur kasutab Kogumisteenuselt informatsiooni saamiseks või Kogumisteenusele korralduste edastamiseks.
*Valijarakendus* on rakendus, mida Hääletaja kasutab e-hääle andmiseks käimasolevatel valimistel. Valijarakendus suhtleb Kogumisteenusega ning võimaldab Hääletajal teha valikut, seda krüpteerida ja digitaalselt allkirjastada. Valijarakendus kuvab QR-koodi, mille alusel saab Hääletaja Kontrollrakendusega kontrollida e-hääle korrektset jõudmist Kogumisteenusesse.
Koguja valmistab kompileeritud valijarakendusest ette seadistatud valijarakenduse, mis allkirjastatakse ja levitatakse valijateni.
*Kontrollrakendus* on rakendus, mis võimaldab Hääletajal arvutist erineval nutiseadme platvormil veenduda, et tema e-hääl jõudis Kogumisteenusesse ja Registreermisteenusesse ning väljendas tema tahet korrektselt.
Koguja seadistab kontrollrakenduse selliselt, et too on võimeline võrgust tegelikke seadistusi laadima ning allkirjastab kontrollrakenduse.
Koguja on Valijarakenduse ja Kontrollrakenduse tehniline haldur, sisuline haldur on Korraldaja.
Koguja poolt täidetavad põhiprotsessid leiavad aset hääletamisetapil, alustavad ning lõpetavad tegevused toimuvad nii hääletamiseelsel kui töötlusetapil.
Koguja digiallkirjastab hääletamisperioodi lõpul Töötlejale üle antavad andmed (e-hääled ja logid).
Töötleja
--------
*Töötleja* on isik, kes kasutades Töötlemisrakendust töötleb töötlusetapil hääletamisperioodil kogutud e-hääli:
- kontrollib digitaalallkirju ja Kogujalt saadud andmete täielikkust,
- tühistab korduvad e-hääled ning paralleelhääletamise kasutamisel ka nende Hääletajate e-hääled, kes hääletasid jaoskonnas eelhääletamise ajal,
- anonüümistab e-hääled, eemaldades nendelt isikulised digitaalallkirjad, olles eelnevalt need sorteerinud ringkondade kaupa
Töötleja võib e-hääli täiendavalt krüptograafiliselt anonüümistada kasutades Miksimisrakendust.
*Töötlemisrakendus* on rakendus, mille abil kontrollitakse häälte individuaalset terviklust ja e-valimiskasti terviklust, tühistatakse hääli, väljastatakse hääletanute nimekirju ning ringkondade kaupa rühmitatud anonüümistatud hääli. Töötlemisrakenduse sisendi annavad Koguja, Registreerimisteenus ja Korraldaja. Töötlemisrakendust võib käitada ka Audiitor Töötleja töötulemuste kontrollimiseks.
Miksija
-------
*Miksija* on isik, kes töötlusetapil anonüümistab e-hääled krüptograafiliselt kasutades Miksimisrakendust.
*Miksimisrakendus* on rakendus, mille sisendiks on ringkondade kaupa rühmitatud anonüümistatud krüpteeritud hääled ning mis väljastab krüptograafiliselt segatud hääled selliselt, et neid ei ole võimalik sisendiga vastavusse viia. Miksimine toimub sellisel moel, et nii sisend- kui ka väljundhäälte dekrüpteerimine ja tulemi summeerimine annab sama resultaadi. Miksimirakendus väljastab lisaks segatud häältele miksimistõendi, mis kinnitab sisend- ja väljundhäälte semantilist samaväärsust.
Lugeja
------
*Lugeja* on isik, kes kasutades Võtmerakendust
- hääletamiseelsel etapil genereerib häälte salastamise ja avamise võtme,
- lugemisetapil avab krüpteeritud hääled ning summeerib need e-hääletamise tulemusteks.
Lugeja võib toimetada ainuisikuliselt, üldjuhul kaitstakse e-hääletamise salastamise võti läviskeemiga, kus ühe tervikvõtme asemel luuakse mitu võtmeosakut ning võtmeoperatsioonid on teostatavad ainult teatud kvoorumi võtmeosakute osavõtul. Sellisel juhul assisteerivad Lugejat Võtmehaldurid.
*Võtmehaldur* on isik, kelle ülesandeks on talle usaldatud võtmeosaku alalhoidmine ning selle andmine Lugeja käsutusse ainult siis kui selleks on seaduslik alus.
*Võtmerakendus* on rakendus, millega genereeritakse iga hääletamise jaoks häälte salastamise ja häälte avamise võti. Võtmerakenduse abil toimub ka häälte lugemine ja tulemuse väljastamine.
Audiitor
--------
*Audiitor* on isik, kes auditeerimisetapil kontrollib süsteemi kirjelduse ja Korraldaja poolt avaldatud süsteemi kesksete osapoolte vahel liikunud andmete põhjal andmete terviklust ning kooskõlalisust. Audiitor kasutab oma töös Auditirakendust. Kui Audiitor kontrollib ka Töötleja toimimise korrektsust, siis kasutab Audiitor ka Töötlemisrakendust.
*Auditirakendus* on rakendus mis võimaldab kontrollida Lugeja ja Miksija töö korrektsust. Lugeja töö korrektsust on võimalik kontrollida ka avalikult.
Klienditugi
-----------
*Klienditugi* on isik, kelle poole Hääletaja hääletamisetapil probleemide korral pöördub. Klienditugi abistab Kogumisteenusest saadud info abil Hääletajat probleemide lahendamisel.
Tuvastusteenus
--------------
*Tuvastusteenus* on teenus, mida kasutatakse vajadusel hääletaja identiteedi tuvastamiseks.
Allkirjastamisteenus
--------------------
*Allkirjastamisteenus* on teenus, mida kasutatakse vajadusel hääle
allkirjastamisel ja sellele kehtivuskinnituse saamisel. Vajadus
Allkirjastamisteenuse järele sõltub allkirja andmise vahendist - Mobiil-ID,
Smart-ID, Web eID ja ID-kaardi korral on nende teenuste ülesehitus erinev.
Registreerimisteenus
--------------------
*Registreerimisteenus* on teenus, mille abil Kogumisteenus peab registreerima kõik Valijarakendustelt saadud hääled. Pärast hääletamisperioodi lõppu edastab teenuseosutaja info registreeritud häälte kohta Töötlejale.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/Makefile
================================================
include ../../common.mk
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/algseadistamine.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Süsteemi algseadistamine
========================
Süsteemi algseadistamine tähendab süsteemi paigaldamist ning seadistamist
läbiviidavate valimiste tarbeks.
.. _nouded-platvormile:
Nõuded kasutatavale platvormile
-------------------------------
Kogumisteenus töötab platvormil ``Ubuntu 20.04 LTS (Focal Fossa)``.
Väliste teenuste kaardistamine
------------------------------
Kogumisteenuse poolt toetatavate ja läbiviidavas hääletamises kasutatavate
väliste teenuste (Mobiil-ID, Smart-ID, OCSP jms) kaardistamise käigus koostatakse
nimekiri välistest teenustest ja nendega andmevahetuseks vajalikest andmetest
(võrguaadress, port jms).
Väliste teenuste andmed on sisendiks kogumisteenuse tehnilise seadistuse
koostamisel (:ref:`seadistuste_koostamine`).
Väliste teenuste kaardistamise tulemusena on kogumisteenuse osutajal olemas
nimekiri kogumisteenuse poolt kasutatavatest välistest teenustest koos teenuste
kasutamiseks vajalike parameetritega.
Tugiteenuste ettevalmistamine
-----------------------------
Kogumisteenuse tugiteenusteks on:
#. Tehnilise seire teenus;
#. Logiseire teenus;
#. Varundusteenus.
Tehnilise seire ettevalmistamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. important::
Kogumisteenuse osutaja peab kogumisteenuse töötamiseks eraldatud riistvara
jälgimiseks läbi viima riistvara tehnilist seiret.
Tehnilise seire teenus on `Zabbix `_ tarkvaral põhinev
seire- ja teavitussüsteem. Zabbix serveri paigaldab ja seadistab
kogumisteenuse osutaja iseseisvalt.
Tehnilisse seiresse võib hõlmata ka kogumisteenuse tarkvaralisi komponente nagu
kirjeldatud lõigus ":ref:`etcd-zabbix`".
Seire toimimiseks on tarvis määrata seire eest vastutavad isikud ning tagada
nende vahetu teavitamine seireprogrammi poolt avastatud kõrvalekalletest.
Lisaks standardsele tehnilisele seirele (teenusmasinate
protsessori-/kettakasutus jms.) viib kogumisteenuse haldusteenus läbi
alamteenuste seiret ja teavitab tehnilise seire serverit avastatud
kõrvalekalletest.
.. todo::
Lisada haldusteenusele tehnilise seire teavituste tugi!
Tehnilise seire ettevalmistamise tulemusena on kogumisteenuse osutajal olemas
tehnilise seire server, kuhu on paigaldatud seiretarkvara ning kus on
kirjeldatud tehnilise seire eest vastutavad isikud ja nende teavitamise
meetodid.
Logiseire ettevalmistamine
^^^^^^^^^^^^^^^^^^^^^^^^^^
Logiseire teenus koosneb rsyslog logiserverist koos analüüsi- ja
visualiseerimistarkvaraga (Log Monitor, `Grafana `_).
Logiseire ettevalmistamine ja integreerimine kogumisteenusega on kirjeldatud
dokumendis ``IVXV tegevuslogi
seirelahendus``.
Logiseire ettevalmistamise tulemusena on kogumisteenuse osutajal olemas
logiseire server, kuhu on paigaldatud logiseire tarkvara ning kus on
kirjeldatud logiseire andmetele ligipääsevad isikud.
Varunduse ettevalmistamine
^^^^^^^^^^^^^^^^^^^^^^^^^^
Varundusteenus on kogumisteenuse osutaja poolt paigaldatud ja seadistatud
varundusserver, mis vastutab kogumisteenuse sisemises varundusserveris
koostatud varukoopiate säilimise eest.
Varunduse ettevalmistamise tulemusena on kogumisteenuse osutajal olemas
varundusserver, mis on suuteline kogumisteenuse varundusliidese kaudu andmeid
varundama.
.. _seadistuste_koostamine:
Kogumisteenuse seadistuste koostamine
-------------------------------------
Kogumisteenuse seadistused koosnevad kolmest eraldiseisvast osast:
#. **Usaldusjuure seadistus** sisaldab andmed seadistuste (kaasa arvatud
usaldusjuure enda) allkirjade kontrollimiseks ja nimekirja kogumisteenuse
haldurite volitustest.
#. **Kogumisteenuse tehniline seadistus** määrab kogumisteenuse tehnilised
parameetrid, hääletuse läbiviimiseks kasutatavad teenused, samuti ka
kogumisteenuse koosseisu kuulvad alamteenused.
#. **Valimiste seadistus** määrab ühe valimise seadistuse.
Seadistuste koostamine on kirjeldatud dokumendis IVXV-JSK-\* "Elektroonilise hääletamise
infosüsteemi IVXV seadistuste koostamise juhend". Kogumisteenusele
rakendatavad seadistused peavad olema pakendatud ASiC-E konteinerisse ja olema
signeeritud volitatud kasutaja poolt.
Kogumisteenuse seadistuste koostamise tulemusena on kogumisteenuse osutajal
olemas kogumisteenuse seadistamiseks vajalikud seadistuspakid. Kõik seadistused
on signeeritud isiku(te) poolt, kelle volitused on kirjeldatud usaldusjuure
seadistustes või kelle volitused on määratud eraldiseisvate korralduste abil.
.. _taristu-paigaldamine:
Kogumisteenuse taristu paigaldamine
-----------------------------------
Kogumisteenuse taristu eraldatakse teenuse osutamiseks vastavalt koostatud
seadistustele (:ref:`seadistuste_koostamine`).
Igas teenusmasinas:
#. peab olema seadistatud hostinimi (fail :file:`/etc/hostname`);
#. peab olema paigaldatud SSH teenus (tarkvarapakk ``openssh-server``);
#. peab olema paigaldatud tehnilise seire teenuse agent
(tarkvarapakk ``zabbix-agent``);
#. peab olema tagatud õige kellaaeg
(näiteks õige kellaaja teenuse ``ntp`` abil).
#. peab olema seadistatud nimelahendus, mis võimaldab kõikide teenusmasinate
aadresse lahendada;
#. peab olema seadistatud Eesti lokaat koos UTF-8 kooditabeli toega
``et_EE.UTF-8`` (kas tarkvarapakk ``locales`` koos nimetatud lokaadi
seadistamisega või tarkvarapakk ``locales-all``, mis paigaldab kõik toetatud
lokaadid).
.. note::
Iga teenusmasina poolt kasutatav nimelahendus peab tagama, et suhtluseks
kasutatavate hostide nimed lahenduvad korrektselt.
Vältima peab olukordi, kus hostinimi lahendub mitmeks aadressiks või
teistele hostidele kättesaamatuks aadressiks.
Järgnev näide kirjeldab võimalikku olukorda failis :file:`/etc/hosts`, kus
operatsioonisüsteemi paigalduse järel on hostinimi ``ivxv123`` määratud kahele
liidesele. Sellise seadistuse puhul võib tekkida olukord, kus aadressile
``ivxv123`` ühendusi vastu võtma seadistatud teenus hakkab kuulama kohalikul
liidesel ``127.0.0.1`` ja pole avaliku liidese ``192.168.10.1`` kaudu
teistele teenustele kättesaadav.
.. code-block:: text
# /etc/hosts
127.0.0.1 ivxv123
192.168.10.1 ivxv123
Kogumisteenuse taristu jaoks eraldatud hostidest tuleb koostada nimekiri, kus
on kirjas hosti asukohaks olev alamvõrk, hosti nimi, IP-aadress, SSH-serveri
avalik võti ja hostile plaanitud teenused.
Kogumisteenuse taristu nimekirja näide:
.. code-block:: text
Valimiste infrastruktuuri andmed
Alamvõrk: zone1
IP-aadress: 172.16.238.10
Hostinimi: admin
SSH-serveri avalik võti:
ecdsa-sha2-nistp256 AAAAE2VjZHNhLX...SgtbbE= root@admin
IP-aadress: 172.16.238.41
Hostinimi: ivxv1
SSH-serveri avalik võti:
ecdsa-sha2-nistp256 AAAAE2VjZHNhLX...mN8ul0= root@ivxv1
Alamvõrk: zone2
IP-aadress: 172.16.100.63
Hostinimi: ivxv2
SSH-serveri avalik võti:
ecdsa-sha2-nistp256 AAAE2VjZHNhLXN...rtWT7A= root@ivxv2
Kogumisteenuse taristusse kuuluvad hostid tuleb lisada tehnilisse seiresse.
Kogumisteenuse taristu paigaldamise tulemusena on kogumisteenuse osutajal
olemas dokumenteeritud platvorm kogumisteenuse paigaldamiseks ettenähtud
konfiguratsiooniga. Kõik taristusse kuuluvad (virtuaal)masinad on tehnilise
seire teenuse poolt kättesaadavad ja nende seisundis pole tuvastatud probleeme.
Võrgupääsude loomine
--------------------
Kogumisteenuse paigaldamiseks ja seadistamiseks on vajalik seadustustele
vastavate võrgupääsude olemasolu.
Süsteemiülemad ja kasutajad
^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Kogumisteenuse süsteemiülemate arvutitest haldusteenusesse
(protokoll SSH, port 22);
#. Haldusteenuse kasutajate arvutitest haldusteenusesse
(protokoll HTTPS, port 443);
#. Kogumisteenuse süsteemiülemate arvutitest logiseire teenusesse
(protokoll SSH, port 22);
#. Logiseire kasutajate arvutitest logiseire teenusesse
(protokoll HTTPS, port 443).
Teenuste omavaheline suhtlus
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Haldusteenusest kõikidesse mikroteenustesse
(protokoll SSH, port 22);
#. Haldusteenusest logiseire teenusesse
(protokoll SSH, port 22);
#. Kõigist mikroteenuste hostidest kõikidesse logikogumisteenustesse
(protokoll RELP, port 20514);
#. Kõigist mikroteenuste hostidest kõikidesse välistesse logikogumisteenustesse
(sh, ka logiseire teenusesse)
(protokoll RELP, port 20514);
#. Kõigist mikroteenuste hostidest logiseire teenusesse
(protokoll SSH, port 22);
#. Kõigist logikogumisteenuste hostidest logiseire teenusesse
(protokoll SSH, port 22);
#. Vahendusteenusest teistesse mikroteenustesse peale talletusteenuse
(protokoll TLS, port vastavalt tehnilisele seadistusele);
#. Nimekirjateenusest talletusteenustesse
(protokoll TLS, port vastavalt tehnilisele seadistusele);
#. Hääletamisteenusest talletusteenustesse
(protokoll TLS, port vastavalt tehnilisele seadistusele);
#. Kontrolliteenusest talletusteenustesse
(protokoll TLS, port vastavalt tehnilisele seadistusele);
#. Talletusteenusest teistesse talletusteenustesse
(protokoll TLS, port vastavalt tehnilisele seadistusele);
#. Mobiil-ID tugiteenusest välisesse Mobiil-ID teenusesse
(protokoll HTTP(S), port vastavalt tehnilisele seadistusele);
#. Smart-ID tugiteenusest välisesse Smart-ID teenusesse
(protokoll HTTP(S), port vastavalt tehnilisele seadistusele);
#. Teistest mikroteenustest Session status tugiteenusesse
(protokoll RPC, port vastavalt tehnilisele seadistusele);
#. Hääletamisteenusest välisesse kvalifitseerimisteenusesse
(protokoll HTTP(S), port vastavalt tehnilisele seadistusele);
#. Varundusteenusest haldusteenusesse
(protokoll SSH, port 22);
#. Varundusteenusest logikogumisteenustesse
(protokoll SSH, port 22);
#. Varundusteenusest talletusteenustesse
(protokoll SSH, port 22);
Hääletaja
^^^^^^^^^
#. Hääletaja kasutatavast seadmest vahendusteenusesse
(protokoll TLS, port vastavalt tehnilisele seadistusele, eeldatavalt 443).
Haldusteenuse paigaldamine
--------------------------
Haldusteenuse paigaldamine toimub haldusteenuse hostil.
Haldusteenuse paigaldamiseks tuleb kopeerida **kõik** kogumisteenuse
tarkvarapakid haldusteenuse masina kataloogi :file:`/etc/ivxv/debs/`. Nendest pakkidest
paigaldatakse haldusteenus, samuti kasutab haldusteenus neid pakke alamteenuste
paigaldamiseks.
Haldusteenuse sõltuvuste paigaldamine:
.. include:: genereeritud-failid/haldusteenuse_soltuvuste_paigaldamine.inc
Haldusteenuse paigaldamine:
.. include:: genereeritud-failid/haldusteenuse_paigaldamine.inc
.. important::
Haldusteenuse edasine kasutamine toimub haldusteenuse konto alt. Selleks
tuleb halduril luua SSH-ligipääs haldusteenuse kontole ``ivxv-admin``.
Soovitav on autentimine teha ID-kaardi põhiseks (vaata
:ref:`configure-ssh-idcard-auth`).
Haldusteenuse paigaldamise tulemusena on kogumisteenuse osutajal teenuse
haldamiseks vajalik liides.
Haldusteenuse seadistamine
^^^^^^^^^^^^^^^^^^^^^^^^^^
Osad haldusteenuse protsessid käivitatakse korrapärase intervalliga cron
teenuse abil. Nende protsesside puhul väljastatakse võimalik tõrkeinfo
standardväljunditesse ja cron edastab selle e-posti teel käivitaja konto
aadressile. Seetõttu tuleb haldusteenuse masinasse paigaldada meiliserver ja
seadistada see nii, et kõigile masinas asuvatele kontodele (nt.
``root@localhost``) saadetavad sõnumid edastatakse teenuse halduritele.
Kogumisteenuse taristu hõlmamine haldusesse
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusteenus kasutab kogumisteenuse haldamiseks SSH protokolli. Selleks, et
haldusteenusel oleks võimalik teisi teenushoste usaldada, tuleb
haldusteenusesse lisada hallatavate teenushostide SSH-serveri võtmed.
Näide hosti ``ivxv1`` SSH-võtmete lisamisest haldusteenuse usaldatavate hostide
hulka::
ivxv-admin@admin $ ssh-keyscan ivxv1 >> ~/.ssh/known_hosts
# ivxv1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
# ivxv1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
# ivxv1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
Selleks, et haldusteenusel oleks võimalik teenushostidesse tarkvara paigaldada,
tuleb haldusteenuse kontole ``ivxv-admin`` luua SSH-ligipääs teenushostide
juurkasutaja kontole.
.. note::
Haldusteenus vajab juurkasutaja ligipääsu alamteenuse tarkvara
paigaldamiseks. Pärast edukat paigaldamist ühel hostil eemaldab
haldusteenus ligipääsu selle hosti juurkasutaja kontole.
Haldusteenuse konto SSH-võtmepaari avalik võti asub kasutaja ``ivxv-admin``
kodukataloogi all failis :file:`.ssh/id_ed25519.pub` ja see on genereeritud
haldusteenuse paigaldamise käigus. Vajadusel võib haldur selle võtme asendada
(kuid see peab toimuma enne, kui võti on üle kantud hallatavatesse
teenusmasinatesse).
Teenusmasinas tuleb haldusteenuse konto SSH avalik võti panna faili
:file:`/root/.ssh/authorized_keys`. See fail peab kuuluma juurkasutajale ja
olema loetav ainult juurkasutaja poolt (faili pääsuõigused ``0600``).
Kogumisteenuse taristu haldusesse hõlmamise tulemusena on haldusteenusel
usaldusväärne ligipääs kogumisteenuse taristusse kuuluvatele teenusmasinate
juurkasutaja kontodele.
Logiseire lahenduse ühendamine haldusteenusega
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Logiseire lahenduse kasutamise korral peab haldusteenusel olema ligipääs
logiseire lahendusele, et sealt kogutud statistikat alla laadida ja vajadusel
värskendada logiseire poolt analüüsitavaid logisid.
Selleks, et haldusteenusel oleks usaldus logiseire teenuse vastu, tuleb
haldusteenusesse lisada logiseire teenuse hosti (käesolevas näites nimega
``logmonitor``) SSH-serveri võtmed::
ivxv-admin@admin $ ssh-keyscan -t ecdsa logmonitor >> ~/.ssh/known_hosts
Selleks, et haldusteenus pääseks logiseire kontole ligi, tuleb haldusteenuse
konto SSH avalik võti panna logiseire konto ``logmon`` volitatud võtmete faili
:file:`~logmon/.ssh/authorized_keys`. See fail peab kuuluma logimonitori
kasutajale ja olema loetav ainult selle kasutaja poolt (faili pääsuõigused
``0600``).
Logiseire lahenduse haldusteenusega ühendamise tulemusena on tegevuslogi
seirelahendus haldusteenusele kättesaadav ning haldusteenusel on võimalik
seirelahendusest statistikaandmeid laadida ning seirelahenduse andmehoidlasse
ajakohaseid logiandmeid üle kanda.
Haldusteenuse veebiliidese vaikimisi TLS-sertifikaadi asendamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusteenuse paigalduse käigus genereeritakse kasutajaliidese veebiserveri
TLS-sertifikaat koos krüptovõtmega ja tugeva Diffie-Hellman grupifailiga (vaata
https://weakdh.org/). Vajadusel on halduril võimalik need asendada.
Failide asukohad:
* Veebiserveri TLS-sertifikaadi võti:
:file:`/etc/ssl/private/ivxv-admin-default.key`
* Veebiserveri TLS-sertifikaat: :file:`/etc/ssl/certs/ivxv-admin-default.crt`
* Diffie-Hellmani grupifail: :file:`/etc/ssl/dhparams.pem`
Asendatud failide rakendamiseks tuleb veebiserver taaskäivitada käsuga
:command:`service apache2 restart` ja veenduda, et veebiliides töötab.
Haldusteenuse veebiliidese vaikimisi TLS-sertifikaadi asendamise tulemusena
kasutab haldusteenuse veebiliides turvalist sertifikaati.
Haldusteenuse vaikimisi autentimissertifikaadi asendamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusteenuse paigalduse käigus genereeritakse haldusteenuse
autentimissertifikaat koos krüptovõtmega (haldusteenus kasutab seda Valimiste
Infosüsteemiga infovahetusel autentimiseks). Vajadusel on halduril võimalik
need asendada.
Failide asukohad:
* Autentimissertifikaadi võti: :file:`/etc/ssl/private/ivxv-admin-client.key`
* Autentimissertifikaat: :file:`/etc/ssl/certs/ivxv-admin-client.crt`
Haldusteenuse vaikimisi autentimissertifikaadi asendamise tulemusena kasutab
haldusteenus Valimiste Infosüsteemi autentimiseks turvalist sertifikaati.
Autentimissertifikaadi testimine:
.. code-block:: shell-session
$ openssl s_client -connect vis-address:443 \
-cert /etc/ssl/certs/ivxv-admin-client.crt \
-key /etc/ssl/private/ivxv-admin-client.key
Haldusteenuse lähtestamine
--------------------------
Haldusteenuse lähtestamine toimub käsuga :ref:`ivxv-collector-init`. Selle
käigus puhastatakse haldusteenuse andmekataloogid ja lähtestatakse andmebaas.
Seadistuste ja valimisnimekirjade rakendamine kogumisteenusele
--------------------------------------------------------------
.. note::
Käesolevas lõigus ja alamlõikudes tähendab "seadistuspakk" nii seadistusi
sisaldavat faili kui valimisnimekirja faili, mis on signeeritud volitatud
isiku poolt.
Kogumisteenusele tuleb rakendada järgmised seadistuspakid:
#. Usaldusjuur – laaditakse alati esimesena;
#. Kogumisteenuse tehniline seadistus – laaditakse enne valimiste seadistust;
#. Valimiste seadistus – laaditakse enne nimekirju;
#. Valikute nimekiri;
#. Ringkondade nimekiri;
#. Valijate algnimekiri.
Ettevalmistatud seadistuspakkide rakendamiseks tuleb läbi viia järgmised
tegevused:
#. Ülekandmine haldusteenuse masinasse;
#. Laadimine haldusteenusesse;
#. Rakendamine alamteenustele.
.. hint::
Seadistuspakkide ettevalmistamine on kirjeldatud lõigus
":ref:`seadistuste_koostamine`".
.. attention::
Usaldusjuure seadistuse laadimisega kaasneb alati ka
kogumisteenuse haldusteenuse andmebaasi lähtestamine!
Seadistuste ja valimisnimekirjade kogumisteenusele rakendamise tulemusena on
kogumisteenus seadistatud ettenähtud perioodil osutama nõuetekohast häälte
kogumise teenust.
Seadistuspaki ülekandmine haldusteenuse masinasse
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Seadistuspaki ülekandmine haldusteenuse masinasse toimub üle `SCP
`_ protokolli. Seadistuspakk peab
olema kättesaadav haldusteenuse kasutajakontole ``ivxv-admin``.
Näide::
$ scp seadistus.asice ivxv-admin@admin:
seadistus.asice 100% 15KB 79.5KB/s 00:00
.. note::
Kogumisteenus osutaja võib seadistuspakkide ülekandmiseks kasutada ka muid
meetodeid, näiteks irdmeediat.
Seadistuspaki ülekandmise tulemusena on seadistuspakk haldusteenuse poolt
ligipääsetaval andmekandjal.
Seadistuspaki laadimine haldusteenusesse
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Seadistuspakk laaditakse haldusteenusesse käsuga :ref:`ivxv-cmd-load`. Selle
käigus kontrollib haldusteenus seadistuspaki signeerinud isiku volitusi ja
valideerib seadistuste sisu ning kooskõlalisust. Laadimise tulemusena on
seadistuspakk valmis rakendamiseks hallatavatele teenustele.
Näide: Usaldusjuure laadimine haldusteenusesse:
.. include:: genereeritud-failid/haldusteenus-laadi_usaldusjuure_seadistused.inc
Seadistuspaki haldusteenusesse laadimise tulemusena on haldusteenus valmis
rakendama seadistuspakki alamteenustele. Seadistuspaki versiooni kuvatakse
haldusteenuse olekuandmetes.
.. seealso:: * :ref:`korralduste-valideerimine`
Seadistuste rakendamine alamteenustele
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusteenusesse laaditud seadistuspakid rakendatakse hallatavatele teenustele
käsuga :ref:`ivxv-config-apply`. Rakendamine on võimalik tehniliste seadistuse
laadimise järel, kuna tehnilise seadistusega tekivad haldusteenusesse andmed
hallatavate teenuste kohta.
Seadistuste rakendamise käigus haldusteenus:
* Paigaldab seadistatava teenuse tarkvara (tehnilise seadistuse laadimisel, kui
pole eelnevalt paigaldatud);
* Kannab seadistuspaki üle hallatava teenuse hosti failisüsteemi;
* Valimiste seadistuse laadimisel lubab ja käivitab seadistatava teenuse.
.. note::
Seadistuste rakendamise järjekord on kirjeldatud utiliidi ivxv-config-apply
abiteabe lõigus (vaata :ref:`ivxv-config-apply`).
Näide: Haldusteenusesse laaditud seadistuste rakendamine hallatavatele
teenusele::
ivxv-admin@admin $ ivxv-config-apply
INFO: Technical config is signed by ÕIGE,VALIK,44444444444 2017-06-07T12:05:44Z
INFO: Service choices@choices1.ivxv.ee: Applying technical config
SERVICE choices@choices1.ivxv.ee: Installing service to host "ivxv1"
SERVICE choices@choices1.ivxv.ee: Querying state of the service software package "ivxv-choices"
SERVICE choices@choices1.ivxv.ee: Copying software package files to service host
SERVICE choices@choices1.ivxv.ee: Checking state of dpkg database in service host
SERVICE choices@choices1.ivxv.ee: Installing dependencies for package "ivxv-common"
Reading package lists...
Building dependency tree...
Reading state information...
...
SERVICE voting@voting3.ivxv.ee: Set trust config file permissions in service host
SERVICE voting@voting3.ivxv.ee: Trust root config successfully applied to service
SERVICE voting@voting3.ivxv.ee: Applying technical config to service
SERVICE voting@voting3.ivxv.ee: Copying technical config to service host
SERVICE voting@voting3.ivxv.ee: Set technical config file permissions in service host
SERVICE voting@voting3.ivxv.ee: Technical config successfully applied to service
SERVICE voting@voting3.ivxv.ee: Registering technical config version "ÕIGE,VALIK,44444444444 2017-06-07T12:05:44Z" in management database
SERVICE voting@voting3.ivxv.ee: Registering service state as "INSTALLED" in management database
INFO: Service voting@voting3.ivxv.ee: technical config config applied successfully
INFO: 15 configuration packages successfully applied
Seadistuste alamteenustele rakendamise tulemusena on hallatavad teenused
seadistatud ja nende seisund on haldusteenusest jälgitav.
.. seealso:: * :ref:`korralduste-laadimine-rakendamine`
Kogumisteenuse krüptovõtmete rakendamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Teenuste krüptovõtmete ja TLS-sertifikaatide** rakendamine toimub käsuga
:ref:`ivxv-secret-load`.
.. hint::
Teenuse krüptovõtmete seisundit on võimalik väljastada käsuga
:command:`ivxv-status --service=` (vaata :ref:`ivxv-status`)
Võtme laadimine teenusele:
.. code-block:: shell-session
$ ivxv-secret-load --service= tls-key tls.key
Sertifikaadi laadimine teenusele:
.. code-block:: shell-session
$ ivxv-secret-load --service= tls-cert tls.pem
.. important::
Igale teenuse isendile tuleb rakendada selle
isendi jaoks genereeritud võti ja sertifikaat!
**Hääletamisteenuse ajatemplipäringute signeerimisvõtme** rakendamine toimub
käsuga :ref:`ivxv-secret-load`:
.. code-block:: shell-session
$ ivxv-secret-load tsp-regkey tspreg.key
.. note::
Hääletamisteenuse ajatemplipäringute signeerimisvõti on vaja rakendada vaid
juhul, kui ajatempliteenust kasutatakse registreerimisteenuseks (valimiste
seadistuses on ``qualification/protocol`` välja väärtuseks ``tspreg``).
**Mobiil-ID/Smart-ID/Web eID identsustõendi võtme** rakendamine toimub
käsuga :ref:`ivxv-secret-load`:
.. code-block:: shell-session
$ ivxv-secret-load mid-token-key mobid-shared-secret.key
.. note::
Mobiil-ID/Smart-ID/Web eID identsustõendi võti on vaja rakendada vaid
juhul, kui Mobiil-ID/Smart-ID/Web eID tugiteenus on kasutusel
(valimiste seadistuses on olemas plokk ``auth.ticket``).
Kogumisteenuse krüptovõtmete rakendamise tulemusena on hallatavate teenuste
suhtluskanalid varustatud kanali turvamiseks vajalike krüptovõtmetega, samuti
on teenustel olemas krüptovõtmed muude oluliste operatsioonide jaoks.
Algseadistamise tulemuse kontrollimine
--------------------------------------
Algseadistamise tegevuste tulemusena on kogumisteenus eeldatavalt valmis
hääletuse läbiviimiseks. Tulemust on võimalik kontrollida kogumisteenuse oleku
jälgimisega, mis on kirjeldatud süsteemi haldustoimingute lõigus
(:ref:`kogumisteenuse-oleku-jälgimine`).
Hääletuse läbiviimiseks seadistatud kogumisteenuse olek on "Seadistatud"
(CONFIGURED). Oleku "Paigaldatud" puhul tuleb kontrollida mikroteenuste
seisundit ja seisundi taustainfot.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/annotatsioon.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Annotatsioon
------------
Käesolev juhend käsitleb tööd elektroonilise hääletamise raamistiku IVXV
kogumisteenuse tarkvaraga süsteemiülema vaatepunktist ning kirjeldab tarkvara
kõiki võimalusi kogu e-hääletusprotsessi ulatuses. Süsteemiülemalt eeldatakse
e-hääletuse põhiterminoloogia tundmist.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/e-valimiskasti_koostamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Valimiste kokkuvõtete tegemine
features/end-to-end-10-collector-ha-setup.feature:892
Step: Haldur ekspordib haldusteenusest kogutud hääled
features/end-to-end-10-collector-ha-setup.feature:970
.. code-block:: text
ivxv-admin@admin $ ivxv-export-votes /output/voting/HA-SETUP/exported-votes.zip
INFO: Creating backup copy from current ballot box
SERVICE backup@backup.ivxv.ee: Copying list of known SSH hosts to service host
# Preparing ballot box backup file in voting service voting@voting1.ivxv.ee
# Creating ballot box backup file ballot-box-20211228_1155.zip
Exporting votes: 0
Exporting votes: 1
Exporting votes: 2
Exporting votes: 3
Exporting votes: 4
Exporting votes: 5
Exporting votes: 6
Exporting votes: 7
Exporting votes: 8
# Copying backup file ballot-box-20211228_1155.zip to backup service
# Removing backup file ballot-box-20211228_1155.zip from voting service
INFO: Copying ballot box to management service
SERVICE backup@backup.ivxv.ee: Copying ballot box from service host
INFO: Collected votes archive is written to '/output/voting/HA-SETUP/exported-votes.zip'
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenus-laadi_kogumisteenuse_tehnilised_seadistused.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Kogumisteenuse tehniliste seadistuste rakendamine
features/end-to-end-10-collector-ha-setup.feature:404
Step: Haldur laadib haldusteenusesse kogumisteenuse tehnilised seadistused
features/end-to-end-10-collector-ha-setup.feature:438
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load technical /output/voting/HA-SETUP/config/HA-SETUP.technical.asice
INFO: Config file is signed by: ROPKA,KIVIVALVUR,32608320001 2021-12-28T11:38:40Z
INFO: User ROPKA,KIVIVALVUR,32608320001 with role 'admin' is authorized to execute 'technical' commands
INFO: Using signature 'ROPKA,KIVIVALVUR,32608320001 2021-12-28T11:38:40Z' as config file version
INFO: Config file version is 'ROPKA,KIVIVALVUR,32608320001 2021-12-28T11:38:40Z'
INFO: Loading command 'collectors technical configuration' from file '/output/voting/HA-SETUP/config/HA-SETUP.technical.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/HA-SETUP.technical.asice' (collectors technical configuration)
command_file:INFO: Validating collectors technical configuration
command_file:INFO: Files in collectors technical configuration package are valid
INFO: Collectors technical configuration file loaded successfully
INFO: Collectors technical configuration file is registered in management service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenus-laadi_ringkondade_nimekiri.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Ringkondade nimekirja rakendamine
features/end-to-end-10-collector-ha-setup.feature:586
Step: Nimekirjade haldur laadib ringkondade nimekirja haldusteenusesse
features/end-to-end-10-collector-ha-setup.feature:630
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load districts /output/voting/HA-SETUP/config/districts.asice
INFO: Config file is signed by: NÕID,VÄIKE,33333333333 2021-12-28T11:49:17Z
INFO: User NÕID,VÄIKE,33333333333 with role 'election-conf-manager' is authorized to execute 'districts' commands
INFO: Using signature 'NÕID,VÄIKE,33333333333 2021-12-28T11:49:17Z' as config file version
INFO: Config file version is 'NÕID,VÄIKE,33333333333 2021-12-28T11:49:17Z'
INFO: Loading command 'districts list' from file '/output/voting/HA-SETUP/config/districts.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/districts.asice' (districts list)
command_file:INFO: Validating districts list
command_file:INFO: Files in districts list package are valid
INFO: Some voting lists are already loaded, executing consistency checks: ivxv-config-validate --election=/etc/ivxv/election.bdoc --choices=/etc/ivxv/choices.bdoc --districts=/output/voting/HA-SETUP/config/districts.asice
INFO: Validating elections configuration file '/etc/ivxv/election.bdoc'
...
command_file:INFO: Files in districts list package are valid
INFO: Config files are valid
INFO: Detected election ID 'HA-SETUP' from election config
INFO: Election ID consistency check succeeded
INFO: Checking districts and choices lists consistency
INFO: Voting lists consistency check succeeded
INFO: Writing simplified district list to '/var/lib/ivxv/admin-ui-data/districts.json'
INFO: Districts list file loaded successfully
INFO: Districts list file is registered in management service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenus-laadi_usaldusjuure_seadistused.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Kogumisteenuse tehniliste seadistuste rakendamine
features/end-to-end-10-collector-ha-setup.feature:404
Step: Haldur laadib haldusteenusesse usaldusjuure seadistused
features/end-to-end-10-collector-ha-setup.feature:412
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load trust /output/voting/HA-SETUP/config/HA-SETUP.trust.asice
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/HA-SETUP.trust.asice' (trust root configuration)
command_file:INFO: Validating trust root configuration
command_file:INFO: Files in trust root configuration package are valid
INFO: Config file is signed by: ORAV,IVAN,30809010001 2021-12-28T11:38:37Z
INFO: User ORAV,IVAN,30809010001 with role 'admin' is authorized to execute 'trust' commands
INFO: Using signature 'ORAV,IVAN,30809010001 2021-12-28T11:38:37Z' as config file version
INFO: Config file version is 'ORAV,IVAN,30809010001 2021-12-28T11:38:37Z'
INFO: Loading command 'trust root configuration' from file '/output/voting/HA-SETUP/config/HA-SETUP.trust.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/HA-SETUP.trust.asice' (trust root configuration)
command_file:INFO: Validating trust root configuration
command_file:INFO: Files in trust root configuration package are valid
INFO: Resetting collector management database
db:INFO: Initializing management database '/var/lib/ivxv/db/ivxv-management.db'
Removing crontab (if exist)
no crontab for ivxv-admin
INFO: Trust root configuration file loaded successfully
INFO: Resetting user permissions
INFO: Trust root configuration file is registered in management service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenus-laadi_valijate_nimekiri.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Valijate algnimekirja rakendamine
features/end-to-end-10-collector-ha-setup.feature:642
Step: Nimekirjade haldur laadib valijate algnimekirja haldusteenusesse
features/end-to-end-10-collector-ha-setup.feature:666
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load voters /output/voting/HA-SETUP/config/voters-0.asice
INFO: Config file is signed by: NÕID,VÄIKE,33333333333 2021-12-28T11:49:37Z
INFO: User NÕID,VÄIKE,33333333333 with role 'election-conf-manager' is authorized to execute 'voters' commands
INFO: Using signature 'NÕID,VÄIKE,33333333333 2021-12-28T11:49:37Z' as config file version
INFO: Config file version is 'NÕID,VÄIKE,33333333333 2021-12-28T11:49:37Z'
INFO: Loading command 'voters list' from file '/output/voting/HA-SETUP/config/voters-0.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/voters-0.asice' (voters list)
command_file:INFO: Validating voters list
command_file:INFO: Files in voters list package are valid
INFO: Some voting lists are already loaded, executing consistency checks: ivxv-config-validate --election=/etc/ivxv/election.bdoc --choices=/etc/ivxv/choices.bdoc --districts=/etc/ivxv/districts.bdoc --voters=/output/voting/HA-SETUP/config/voters-0.asice
INFO: Validating elections configuration file '/etc/ivxv/election.bdoc'
...
command_file:INFO: Files in voters list package are valid
INFO: Config files are valid
INFO: Detected election ID 'HA-SETUP' from election config
INFO: Election ID consistency check succeeded
INFO: Checking districts and choices lists consistency
INFO: Checking districts and voter list changeset #0 consistency
INFO: Voting lists consistency check succeeded
INFO: Voters list file loaded successfully
INFO: Voters list file is registered in management service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenus-laadi_valikute_nimekiri.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Valikute nimekirja rakendamine
features/end-to-end-10-collector-ha-setup.feature:528
Step: Nimekirjade haldur laadib valikute nimekirja haldusteenusesse
features/end-to-end-10-collector-ha-setup.feature:574
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load choices /output/voting/HA-SETUP/config/choices.asice
INFO: Config file is signed by: NÕID,VÄIKE,33333333333 2021-12-28T11:49:03Z
INFO: User NÕID,VÄIKE,33333333333 with role 'election-conf-manager' is authorized to execute 'choices' commands
INFO: Using signature 'NÕID,VÄIKE,33333333333 2021-12-28T11:49:03Z' as config file version
INFO: Config file version is 'NÕID,VÄIKE,33333333333 2021-12-28T11:49:03Z'
INFO: Loading command 'choices list' from file '/output/voting/HA-SETUP/config/choices.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/choices.asice' (choices list)
command_file:INFO: Validating choices list
command_file:INFO: Files in choices list package are valid
INFO: Choices list file loaded successfully
INFO: Choices list file is registered in management service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenus-laadi_valimiste_seadistused.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Lugemisperioodi alustamine
features/end-to-end-10-collector-ha-setup.feature:885
Step: Haldur määrab kogumisteenuse uueks perioodiks "lõpetatud"
features/end-to-end-10-collector-ha-setup.feature:888
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load election /output/voting/HA-SETUP/config/HA-SETUP.election.asice
INFO: Config file is signed by: NÕID,VÄIKE,33333333333 2021-12-28T11:54:10Z
INFO: User NÕID,VÄIKE,33333333333 with role 'election-conf-manager' is authorized to execute 'election' commands
INFO: Using signature 'NÕID,VÄIKE,33333333333 2021-12-28T11:54:10Z' as config file version
INFO: Config file version is 'NÕID,VÄIKE,33333333333 2021-12-28T11:54:10Z'
INFO: Loading command 'elections configuration' from file '/output/voting/HA-SETUP/config/HA-SETUP.election.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/HA-SETUP.election.asice' (elections configuration)
command_file:INFO: Validating elections configuration
command_file:INFO: Files in elections configuration package are valid
INFO: Elections configuration file loaded successfully
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/HA-SETUP.election.asice' (elections configuration)
INFO: Elections configuration file is registered in management service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenuse_paigaldamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Kogumisteenuse haldusteenuse paigaldus
features/end-to-end-10-collector-ha-setup.feature:370
Step: Haldur paigaldab haldusteenuse
features/end-to-end-10-collector-ha-setup.feature:376
.. code-block:: text
root@admin # dpkg -i /etc/ivxv/debs/ivxv-common_1.7.8_all.deb /etc/ivxv/debs/ivxv-admin_1.7.8_amd64.deb
Selecting previously unselected package ivxv-common.
(Andmebaasi lugemine ... 13710 files and directories currently installed.)
Preparing to unpack .../debs/ivxv-common_1.7.8_all.deb ...
Unpacking ivxv-common (1.7.8) ...
Selecting previously unselected package ivxv-admin.
Preparing to unpack .../ivxv-admin_1.7.8_amd64.deb ...
Unpacking ivxv-admin (1.7.8) ...
Paki ivxv-common (1.7.8) paikasättimine ...
# Adding user group 'ivxv'
Adding group `ivxv' (GID 109) ...
...
systemctl restart apache2
# Starting Apache web server
# Restarting rsyslog log server
Created symlink /etc/systemd/system/multi-user.target.wants/ivxv-admin.service → /lib/systemd/system/ivxv-admin.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ivxv-admin-agent.service → /lib/systemd/system/ivxv-admin-agent.service.
/usr/lib/python3/dist-packages/schematics/validate.py:121: SyntaxWarning: "is" with a literal. Did you mean "=="?
if not kwargs or kwargs.pop('context', 0) is 0:
Processing triggers for rsyslog (8.2001.0-1ubuntu1.1) ...
invoke-rc.d: WARNING: No init system and policy-rc.d missing! Defaulting to block.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/haldusteenuse_soltuvuste_paigaldamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Kogumisteenuse haldusteenuse paigaldus
features/end-to-end-10-collector-ha-setup.feature:370
Step: Haldur paigaldab haldusteenuse
features/end-to-end-10-collector-ha-setup.feature:376
.. code-block:: text
root@admin # apt-get install --yes --quiet adduser openssh-server openssl rsync rsyslog rsyslog-relp sudo tzdata locales libc6 python3-bottle python3-dateutil python3-debian python3-docopt python3-fasteners python3-jinja2 python3-jsonschema python3-openssl python3-pkg-resources python3-yaml python3:any apache2 cron fonts-font-awesome javascript-common language-pack-et libapache2-mod-wsgi-py3 libjs-bootstrap libjs-jquery libjs-jquery-datatables libjs-jquery-datatables-extensions python3-gdbm python3-requests ssl-cert
Reading package lists...
Building dependency tree...
Reading state information...
adduser is already the newest version (3.118ubuntu2).
cron is already the newest version (3.0pl1-136ubuntu1).
fonts-font-awesome is already the newest version (5.0.10+really4.7.0~dfsg-1).
javascript-common is already the newest version (11).
libapache2-mod-wsgi-py3 is already the newest version (4.6.8-1ubuntu3).
libjs-jquery is already the newest version (3.3.1~dfsg-3).
libjs-jquery on määratud käsitsi paigaldatuks.
...
Paki apache2-data (2.4.41-4ubuntu3.8) paikasättimine ...
Paki openssl (1.1.1f-1ubuntu2.10) paikasättimine ...
Paki rsync (3.1.3-8ubuntu0.1) paikasättimine ...
invoke-rc.d: WARNING: No init system and policy-rc.d missing! Defaulting to block.
Paki apache2-utils (2.4.41-4ubuntu3.8) paikasättimine ...
Paki apache2 (2.4.41-4ubuntu3.8) paikasättimine ...
invoke-rc.d: WARNING: No init system and policy-rc.d missing! Defaulting to block.
invoke-rc.d: WARNING: No init system and policy-rc.d missing! Defaulting to block.
Processing triggers for systemd (245.4-4ubuntu3.13) ...
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/kasutaja_lisamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Kogumisteenuse tehniliste seadistuste rakendamine
features/end-to-end-10-collector-ha-setup.feature:404
Step: Haldur määrab haldusteenuses kasutajale "NÕID,VÄIKE,33333333333" rolli "election-conf-manager"
features/end-to-end-10-collector-ha-setup.feature:471
.. code-block:: text
ivxv-admin@admin $ ivxv-cmd-load user /output/voting/HA-SETUP/config/user-NÕID,VÄIKE,33333333333-election-conf-manager.asice
INFO: Config file is signed by: ORAV,IVAN,30809010001 2021-12-28T11:46:31Z
INFO: User ORAV,IVAN,30809010001 with role 'admin' is authorized to execute 'user' commands
INFO: Using signature 'ORAV,IVAN,30809010001 2021-12-28T11:46:31Z' as config file version
INFO: Config file version is 'ORAV,IVAN,30809010001 2021-12-28T11:46:31Z'
INFO: Loading command 'user permissions configuration' from file '/output/voting/HA-SETUP/config/user-NÕID,VÄIKE,33333333333-election-conf-manager.asice'
command_file:INFO: Loading command file '/output/voting/HA-SETUP/config/user-NÕID,VÄIKE,33333333333-election-conf-manager.asice' (user permissions configuration)
command_file:INFO: Validating user permissions configuration
command_file:INFO: Files in user permissions configuration package are valid
INFO: User permissions configuration file loaded successfully
INFO: Resetting user 'NÕID,VÄIKE,33333333333' permissions
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/mikroteenuse_kaivitamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Mikroteenuse seiskamine ja käivitamine
features/end-to-end-10-collector-ha-setup.feature:512
Step: Haldur käivitab teenuse "voting@voting2.ivxv.ee"
features/end-to-end-10-collector-ha-setup.feature:518
.. code-block:: text
ivxv-admin@admin $ ivxv-service restart voting@voting2.ivxv.ee
INFO: Restarting service voting@voting2.ivxv.ee
SERVICE voting@voting2.ivxv.ee: Restarting service
SERVICE voting@voting2.ivxv.ee: Registering service state as 'CONFIGURED' in management database (last state: 'FAILURE')
SERVICE voting@voting2.ivxv.ee: Service restarted successfully
INFO: Service voting@voting2.ivxv.ee restarted
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/mikroteenuse_seiskamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Mikroteenuse seiskamine ja käivitamine
features/end-to-end-10-collector-ha-setup.feature:512
Step: Haldur seiskab teenuse "voting@voting2.ivxv.ee"
features/end-to-end-10-collector-ha-setup.feature:515
.. code-block:: text
ivxv-admin@admin $ ivxv-service stop voting@voting2.ivxv.ee
INFO: Stopping service voting@voting2.ivxv.ee
SERVICE voting@voting2.ivxv.ee: Stopping service
SERVICE voting@voting2.ivxv.ee: Service stopped successfully
INFO: Service voting@voting2.ivxv.ee stopped
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/mikroteenuse_seisundi_tuvastamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Mikroteenuse seiskamine ja käivitamine
features/end-to-end-10-collector-ha-setup.feature:512
Step: Haldur tuvastab teenuse "voting@voting2.ivxv.ee" seisundi
features/end-to-end-10-collector-ha-setup.feature:516
.. code-block:: text
ivxv-admin@admin $ ivxv-service ping voting@voting2.ivxv.ee
INFO: Pinging service voting@voting2.ivxv.ee
SERVICE voting@voting2.ivxv.ee: Registering background info: Ping error: * ivxv-voting@voting@voting2.ivxv.ee.service - IVXV voting service
SERVICE voting@voting2.ivxv.ee: ERROR: Pinging service failed
ERROR: Failed to query service voting@voting2.ivxv.ee status
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/genereeritud-failid/töötlemisrakenduse_sisendi_koostamine.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * steps/test_util/report.py
.. Feature: Kogumisteenuse käivitamine kõrgkäideldava konfiguratsiooniga
features/end-to-end-10-collector-ha-setup.feature:7
Scenario: Valimiste kokkuvõtete tegemine
features/end-to-end-10-collector-ha-setup.feature:892
Step: Haldur genereerib haldusteenuses töötlemisrakenduse sisendi aluse
features/end-to-end-10-collector-ha-setup.feature:973
.. code-block:: text
ivxv-admin@admin $ ivxv-generate-processor-input /output/voting/HA-SETUP/processor.cfg.zip
INFO: Generating processor application config
command_file:INFO: Loading command file '/etc/ivxv/election.bdoc' (elections configuration)
INFO: Creating input file for processor application
INFO: Preparing container structure in directory '/tmp/tmp6jswwi8i'
INFO: Copying district list 'HA-SETUP.districts.json.bdoc'
INFO: Copying voter list signing key 'voterfile.pub.key'
INFO: Copying voter list #0 content '00.HA-SETUP.voters.utf'
INFO: Copying voter list #0 signature '00.HA-SETUP.voters.sig'
INFO: Copying voter list #1 content '01.HA-SETUP.voters.utf'
INFO: Copying voter list #1 signature '01.HA-SETUP.voters.sig'
...
INFO: Adding '02.HA-SETUP.voters.sig' to ZIP container
INFO: Adding '02.HA-SETUP.voters.utf' to ZIP container
INFO: Adding '03.HA-SETUP.voters.sig' to ZIP container
INFO: Adding '03.HA-SETUP.voters.utf' to ZIP container
INFO: Adding 'HA-SETUP.districts.json.bdoc' to ZIP container
INFO: Adding 'HA-SETUP.processor.yaml' to ZIP container
INFO: Adding 'ts.key' to ZIP container
INFO: Adding 'voterfile.pub.key' to ZIP container
INFO: Processor input is written to '/output/voting/HA-SETUP/processor.cfg.zip'
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/haldusteenus.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
.. _haldusteenus:
Haldusteenus
============
Haldusteenus on kogumisteenuse haldamiseks mõeldud lahendus. Haldusteenus
paigaldatakse eraldiseisvasse masinasse ja selle kaudu toimub kogumisteenuse
juhtimine paigaldusest kuni seiskamiseni.
Haldusteenuse funktsioonid on:
#. Kogumisteenuse alamteenuste haldamine:
#. Seadistuste ja valimisnimekirjade laadimine;
#. Alamteenuste paigaldus selleks ettevalmistatud masinatesse;
#. Alamteenustele seadistuste ja nimekirjade rakendamine;
#. Valijate nimekirjade uuenduste hankimine Valimiste Infosüsteemist;
#. E-valimiskasti koostamine töötlemiseks;
#. Valimiste üldstatistika jälgimine;
#. Valijate statistika allalaadimine;
#. E-valimiskasti ja logide korrapärane varundamine;
#. Kogumisteenuse seisundi seire;
Haldusteenus suhtleb hallatavate teenustega üle `SSH
`_-kanali. Suhtluse algatab alati
haldusteenus. Usaldus teenusmasinate vastu luuakse süsteemihalduri abiga pärast
teenuseid majutavate masinate paigaldamist.
Teenust majutava masina paigaldamise järel loob haldur haldusteenusele
ligipääsu teenusmasina juurkontole, et haldusteenusel oleks võimalik teenuse
tarkvara paigaldada. Pärast viimase teenuse paigaldamist teenuseid majutavasse
masinasse eemaldab haldusteenus ligipääsu juurkontole.
Haldusteenuse koosseis
----------------------
Haldusteenuse kasutajaliides koosneb kahest osast:
#. Haldamise põhifunktsionaalsus on teostatud :ref:`käsureautiliitide
` abil;
#. Graafiline kasutajaliides on veebipõhine liides, mille funktsionaalsuse
tagavad käsureautiliidid.
.. seealso::
Graafilise kasutajaliidese kasutusjuhend asub dokumendis
``IVXV kogumisteenuse haldusliidese kasutusjuhend``.
Lisaks töötavad deemonprotsessid:
#. Veebiserver graafilise kasutajaliidese jaoks;
#. Haldusdeemon veebiserveri poolt vahendatud päringute käivitamiseks;
#. Agentdeemon teenuste seisundi jälgimiseks.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/haldustoimingud.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Süsteemi haldustoimingud
========================
.. _kogumisteenuse-oleku-jälgimine:
Kogumisteenuse oleku jälgimine
------------------------------
Kogumisteenuse olekuandmed registreeritakse haldusteenuse andmebaasis. Oleku
kuvamiseks on utiliit :ref:`ivxv-status`.
Olekus kuvatakse järgmisi andmeid:
* Valimise ID, faas, algus- ja lõpuaeg;
* Haldusteenusesse laaditud konfiguratsioon:
* Seadistuspakkide versioonid;
* Valikute nimekirja ja ringkondade nimekirja versioonid;
* Valijate nimekirjade versioonid ja olekud;
* Teenuste nimekiri koos rakendatud seadistuste versioonidega, teenuse seisundi
ja selle viimase tuvastamise ajaga;
* Väliste teenuste seisundid;
* Haldusteenuse andmehoidla statistika.
Sõltuvalt kogumisteenuse seisundist võib oleku kuvamise utiliit jätta mõned
andmeblokid kuvamata (kui need pole jooksva seisundi puhul olulised). Täieliku
andmestiku väljastamiseks vaata utiliidi :ref:`ivxv-status` abiteavet.
Mikroteenuste oleku jälgimise ning oleku ja võimaliku veainfo registreerimisega
haldusteenuse andmebaasis tegeleb haldusteenuse :ref:`agentdeemon
`.
Valijate muudatusnimekirjade hankimine Valimiste Infosüsteemist toimub
utiliidiga :ref:`ivxv-voter-list-download`, mis käivitatakse teenuse `cron`
poolt veerandtunnise intervalliga.
Kogumisteenuse haldusteenuse sündmuste logi kuvamiseks on utiliit
:ref:`ivxv-eventlog-dump`.
.. important::
Haldusteenus tagab kogumisteenuse alamteenuste olekuandmetes vajaliku teabe
teenuse töökorda seadmiseks. See võib olla järgmine:
#. Teave puuduvate seadistuste kohta (seadistusfailid, võtmed jms). Seda
kuvatakse kuni teenus on varustatud kõigi käivitamiseks vajalike
seadistustega.
#. Veateade - alamteenuse haldusvahendite (seadistuste kontrollivahend,
teenuse haldusvahend) veaväljund mittetöötava teenuse kohta.
.. _korralduste-valideerimine:
Korralduste valideerimine
-------------------------
Korraldusfailide valideerimine võimaldab veenduda korralduste vastavuses
vormistusnõuetele ning tuvastada vigased või mittekooskõlalised korraldused.
Valideerimine toimub käsuga :ref:`ivxv-config-validate`.
Valimise seadistuse valideerimise näide::
$ ivxv-config-validate --election=valimise-seadistus-TEST2017.asice
Korralduste kooskõlalisuse valideerimine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Kooskõla valideerimine viiakse läbi kahel juhul:
#. Kui valideerimise käsule antakse korraga valideerimiseks mitu korraldust;
#. Korralduse laadimisel juhul, kui laaditava korraldusega kooskõla nõudev
oluline korraldus juba haldusteenusesse laaditud.
Korralduste kooskõla valideerimise kontrollid:
#. Korraga valimiste seadistust ja/või nimekirju (valikute, ringkondade või
valijate) valideerides kontrollitakse valimiste identifikaatori kooskõla.
#. Korraga mitut valijate nimekirja valideerides viiakse läbi järgnevad
kontrollid:
* Nimekirjade korrektne järjestus;
* Muudatusnimekirjas kontrollitakse:
#. Valija topeltlisamist ja -eemaldamist;
#. Valija eemaldamist pärast tema lisamist sama muudatusnimekirjaga.
#. Valija eemaldamist ringkonnast, kuhu teda pole lisatud;
#. Korraga ringkondade ja valikute nimekirja valideerides viiakse läbi
järgnevad kontrollid:
* Igas valimisringkonnas peab olema kirjeldatud vähemalt üks valik;
* Iga valik peab olema seotud olemasoleva valimisringkonnaga.
#. Korraga ringkondade nimekirja ja valijate nimekirju valideerides viiakse
läbi järgnevad kontrollid:
* Igas valimisjaoskonnas peab olema vähemalt üks valija;
* Iga valimisnimekirja kantud isik peab olema seotud olemasoleva
ringkonnaga;
#. Valijate nimekirja(de) ja ringkondade nimekirja valideerimisel
kontrollitakse valijale määratud ringkonna olemasolu ringkondade nimekirjas.
Kui valimiste seadistuses on määratud välisriigis asuvale valijale määratav
ringkonna haldusüksuse EHAK-kood (parameeter ``voterforeignehak``), peab
valikute, valijate ja ringkondade nimekirjade vastavuse valideerimisel olema
kaasatud ka valimiste seadistus ja seadistuste valideerimisel tehakse täiendavad
kontrollid:
#. Valijate nimekirja ja ringkondade nimekirja kooskõla valideerides
kontrollitakse, et ringkondade nimekirjas on parameetriga määratud
haldusüksuses olemas valijale määratud ringkond.
.. _korralduste-laadimine-rakendamine:
Korralduste laadimine ja rakendamine
------------------------------------
Kogumisteenuse korraldused koostatakse signeeritud korralduspakkidena, millega
kirjeldatakse kasutaja identifikaator (*Common Name* ehk CN väli ID-kaardilt)
ja rollide nimekiri.
Sõltuvalt korraldusest tuleb rakendamiseks kasutada ühte või kahte käsku.
Haldusteenust puudutavad korralduste rakendamiseks piisab nende laadimisest
haldusteenusesse. Alamteenuseid puudutavad korraldused (näiteks seadistuspakid)
tuleb pärast haldusteenusesse laadimist rakendada ka hallatavatele teenustele.
Korralduste laadimine haldusteenusesse toimub käsuga :ref:`ivxv-cmd-load`.
Laadimise käigus viiakse läbi ka :ref:`korralduse valideerimine
`, vigane või mittekooskõlaline korraldus jäetakse
laadimata.
Valikute nimekirja korralduse rakendamise näide:
.. include:: genereeritud-failid/haldusteenus-laadi_valikute_nimekiri.inc
.. seealso::
* Käsu :ref:`ivxv-cmd-load` abiteave;
* Korralduste rollide kirjeldus ja korralduste koostamise juhend asuvad
dokumendis ``IVXV seadistuste
koostamise juhend``.
Teenuse isendi seisundi tuvastamine
-----------------------------------
Mikroteenuse isendi seisundi tuvastamiseks on utiliit :ref:`ivxv-service`,
millega on võimalik teenuse seisundit vahetult küsida (utiliit
:ref:`ivxv-status` kuvab andmebaasis puhverdatavat seisundit).
Teenuse seisundi päringu näide:
.. include:: genereeritud-failid/mikroteenuse_seisundi_tuvastamine.inc
.. _teenuse-taaskäivitamine:
Teenuse (taas)käivitamine
-------------------------
Mikroteenuste käivitamiseks ja taaskäivitamiseks on utiliit
:ref:`ivxv-service`.
Teenuse taaskäivitamise näide:
.. include:: genereeritud-failid/mikroteenuse_kaivitamine.inc
.. note::
Protseduuri nimetamine käivitamiseks või taaskäivitamiseks sõltub teenuse
protsessi seisundist. Tehniliselt on tegemist sarnaste protseduuridega, kus
esmalt veendutakse, et teenus seisab (vajadusel jäetakse see seisma) ja siis
püütakse käivitada hetkel kehtivate seadistustega.
.. _teenuse-seiskamine:
Teenuse seiskamine
------------------
Mikroteenuste seiskamiseks on utiliit :ref:`ivxv-service`.
Teenuse seiskamise näide:
.. include:: genereeritud-failid/mikroteenuse_seiskamine.inc
.. _teenuse-asendamine:
Teenuse isendi asendamine
-------------------------
Teenuse isendi asendamine koosneb ühe mikroteenuse isendi eemaldamisest (vt.
:ref:`teenuse-eemaldamine`) ja teise sama funktsiooniga mikroteenuse isendi
lisamisest (vt. :ref:`teenuse-lisamine`).
.. _teenuse-lisamine:
Teenuse isendi lisamine
-----------------------
Teenuse isendi lisamiseks tuleb vajadusel teenust hostiv server ette valmistada
(vt. :ref:`taristu-paigaldamine`) ning rakendada uus tehniline seadistus, mis
sisaldab lisatavat teenuse isendit.
.. important::
Lisatava isendi identifikaator ei tohi kattuda ühegi teise, ka minevikus
eemaldatud isendi identifikaatoriga.
.. _teenuse-eemaldamine:
Teenuse isendi eemaldamine
--------------------------
Teenuse isendi eemaldamiseks tuleb:
#. Teenuse isend seisma jätta (vt. :ref:`teenuse-seiskamine`);
#. Keelata teenuse isendi uuesti käivitamine (vt. allpool);
#. Rakendada uus tehniline seadistus, mis eemaldatavat isendit enam ei sisalda.
.. important::
Teenuse isendi eemaldamisel kogumisteenuse koosseisust on oluline
eemaldatava isendi täielik elimineerimine.
Teenuste isendid kasutavad üksteisele usalduse tõestamiseks kindla
sertifitseerimiskeskuse (CA) poolt välja antud sertifikaate, kuid ei kasuta
sama meetodit eemaldatud isendi usalduse tühistamiseks (vastava protseduuri
rakendamise liigse keerukuse tõttu).
Seetõttu on oluline veenduda, et kogumisteenusest eemaldatud teenuse isend
on enne uue seadistuse rakendamist täielikult süsteemist eemaldatud.
Vastasel juhul tekib oht, et eemaldatav isend jätkab tegutsemist ja häirib
kogumisteenuse tööd.
Teenuse isendi käivitamise keelamiseks teenuse eemaldamisel tuleb eemaldada
vastava teenuse tarkvarapakk teenuse hostist:
* Nimekirjateenuse paki eemaldamine:
.. code-block:: text
$ apt purge ivxv-choices
* Mobiil-ID tugiteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge ivxv-mid
* Smart-ID tugiteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge ivxv-smartid
* Web eID tugiteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge ivxv-webeid
* Session status tugiteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge ivxv-sessionstatus
* Vahendusteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge haproxy
* Talletusteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge etcd-server
* Kontrolliteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge ivxv-verification
* Hääletamisteenuse paki eemaldamine:
.. code-block:: shell-session
$ apt purge ivxv-voting
Kasutajate haldus
-----------------
Kasutajate algsed kirjeldused määratakse usaldusjuure seadistuses, hilisem
haldus toimub vastavate korralduste abil.
Kasutajate halduse korraldused rakendatakse käsuga :ref:`ivxv-cmd-load` (vaata
:ref:`korralduste-laadimine-rakendamine`).
Kasutajaõiguste määramise korralduse rakendamise näide:
.. include:: genereeritud-failid/kasutaja_lisamine.inc
.. attention::
Juba lisatud kasutajate eemaldamine süsteemist pole võimalik. Kasutaja
eemaldamise asemel tuleb kasutaja rolliks määrata "õigusteta kasutaja".
.. seealso::
* Kasutajate rollide kirjeldus ja volituste korralduste koostamise juhend
asuvad dokumendis ``IVXV seadistuste koostamise juhend``.
* Korralduste rakendamine on kirjeldatud lõigus
:ref:`korralduste-laadimine-rakendamine`.
Tarkvarauuenduste rakendamine
-----------------------------
Tarkvarauuendused jagunevad kogumisteenuse vaatepunktist kaheks:
operatsioonisüsteemi uuendused ja kogumisteenuse uuendused.
Operatsioonisüsteemi tarkvarapakkide uute versioonide paigaldamine pole
kogumisteenuse dokumentatsioonis käsitletud. Süsteemiülem peab tagama
ajakohaste turvauuenduste rakendamise kogumisteenuses kasutatavate
operatsioonisüsteemidele;
Kogumisteenuse tarkvarapakkide uute versioonide paigaldamine toimub järgnevalt:
#. Uuenenud tarkvarapakid kopeeritakse haldusteenuse kataloogi
:file:`/etc/ivxv/debs` (soovitavalt juurkasutaja õigustes);
#. Haldusteenuse tarkvara uuendatakse juurkasutaja õigustes käsuga
:command:`dpkg -i /etc/ivxv/debs/ivxv-common_1.0_all.deb
/etv/ivxv/debs/ivxv-admin_1.0_amd64.deb` (tegelik versiooninumber erineb
käesolevas näites kasutatud versioonist);
#. Hallatavate teenuste tarkvara uuendamine toimub haldusteenuse kasutaja
``ivxv-admin`` õigustes käsuga :ref:`ivxv-update-packages`.
Varundamine
-----------
Varundamine hõlmab kolme liiki andmeid:
#. Haldusteenuse seadistused;
#. Kogumisteenuse e-valimiskast;
#. Kogutud logid.
Varukoopia loomine toimub haldusteenuse masinas utiliidi
:ref:`ivxv-backup` abil, varukoopiad talletatakse varundusserveri
kataloogis :file:`/var/backups/ivxv`.
Haldusteenus seadistuste varundamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusteenuse seadistustest varundatakse järgmised andmed:
#. :file:`etc/` - haldusteenusesse laaditud tarkvarapakid ja hetkel kehtivad
seadistusfailid;
#. :file:`admin-ui-permissions/` - haldusteenuse kasutajaliidese pääsuõigused;
#. :file:`commands/` - kõik haldusteenusese laaditud korraldusfailid.
Haldusteenuse varundamist viiakse läbi haldusteenuses, varundatavad andmed
kopeeritakse varundusserverisse.
.. hint::
Haldusteenuse andmete tõhusamaks varundamiseks ja taasteks on soovitav
kasutada haldusteenuse virtuaalmasina dünaamilist tõmmist (*snapshot dump*).
Haldusteenuse seadistuste varukoopiast taastamise protseduuri pole
kogumisteenuses ette nähtud.
Haldusteenuse seadistusete varukoopia loomise näide::
$ ivxv-backup management-conf
Kogumisteenuse e-valimiskasti varundamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Kogumisteenuse e-valimiskasti varundamine toimub talletusteenuses kogutud häältest
e-valimiskasti loomisega ja selle kopeerimisega varundusteenusesse. Varundatud andmete
taastamine toimub hääletuse järel e-valimiskasti väljastamise käigus, kus
talletusteenuses olevatest häältest ja varukoopiatesse salvestatud häältest
pannakse kokku töötlemisele minev e-valimiskast.
E-valimiskasti varundamist viib läbi haldusteenus. Varukoopia loomine toimub
talletusteenuses ja see kopeeritakse varundusserverisse.
Varukoopia on sama vorminguga, nagu kogumisteenuse poolt väljastatav e-valimiskast
(ZIP64).
Varundamise andmemahtu saab arvutada järgmise meetodiga:
``häälte arv * 12,1 kB * pakkimistegur``.
Näiteks saja tuhande hääle suurus, kus pakkimistegur on 0,4 = 472 MB.
E-valimiskasti varukoopia loomise näide::
$ ivxv-backup ballot-box
Logide varundamine
^^^^^^^^^^^^^^^^^^
Logikogumisteenustes kogutud logifailide varundamine toimub logifailide
:file:`/var/log/ivxv/ivxv-YYYY-MM-DD-HH.log` kopeerimisega varundusserverisse. Logide
varundamist viib läbi haldusteenus.
Logide varukoopiast taastamise protseduuri pole kogumisteenuses ette nähtud.
Logikogumisteenusesse kogutud logist varukoopia loomise näide::
$ ivxv-backup log
.. _konsolideeritud-e-valimiskasti-koostamine:
Konsolideeritud e-valimiskasti koostamine
-----------------------------------------
Konsolideeritud e-valimiskast koostatakse talletusteenusesse kogutud häältest ja
varundusteenusesse varundatud e-valimiskastidest. Konsolideerimise protsess koosneb
järgmistest sammudest:
#. Talletusteenusesse kogutud hääled varundatakse varundusteenusesse. Selle
tulemusena on varundusteenusesse salvestatud kõik kogutud e-valimiskastid;
#. Varundusteenuses koostatakse konsolideeritud e-valimiskast;
#. Konsolideeritud e-valimiskast kopeeritakse haldusteenusesse.
Konsolideeritud e-valimiskasti koostamise näide:
.. include:: genereeritud-failid/e-valimiskasti_koostamine.inc
Töötlemisrakenduse sisendi aluse koostamine
-------------------------------------------
Töötlemisrakenduse sisendi alus on häälte töötlemiseks vajalike sisendfailide
komplekt, mis genereeritakse kogumisteenuses salvestatud andmete põhjal.
Komplekti koosseis on järgmine:
#. Ringkondade nimekiri;
#. Valijate nimekirjad;
#. E-valimiskast kogutud häältega;
#. Häälte registreerimispäringute valideerimisandmed;
#. Töötlemisrakenduse seadistused.
Väljund on ZIP-konteiner, mis sisaldab järgmisi faile:
#. Ringkondade nimekiri digitaalselt signeerituna
:file:`.districts.json.asice`;
#. Valijate nimekirjade signeerimisvõtme avalik võti
:file:`voterfile.pub.key`;
#. Valijate nimekirjad
:file:`..voters.utf`;
#. Valijate nimekirjade signatuurid
:file:`..voters.sig`;
#. Valijate nimekirja vahelejätmise korraldused
:file:`..voters-skip.yaml.asice`;
#. Registreerimispäringute verifitseerimise avalik võti
:file:`ts.key`;
#. Töötlemisrakenduse seadistuste mall e-valimiskasti verifitseerimiseks
:file:`.processor.yaml`.
Töötlemisrakenduse sisendi alus koostatakse utiliidi
:ref:`ivxv-generate-processor-input` abil. Näide:
.. include:: genereeritud-failid/töötlemisrakenduse_sisendi_koostamine.inc
Hääletamise statistika eksportimine
-----------------------------------
Häälestamise statistika koostatakse hääletusteenuses ja see koosneb kahest
osast: üldstatistika (hääletajate koguarv) ja detailstatistika. Üldstatistika
kopeeritakse haldusteenusesse ja eksporditakse Valimiste Infosüsteemi 15
minutilise intervalliga. Detailstatistika koostatakse ja eksporditakse
Valimiste Infosüsteemi käsitsi.
Häälestamise statistika importimine ja eksportimine toimub haldusteenuse
masinas utiliidi :ref:`ivxv-voterstats` abil. Üldstatistika importimise ja
eksportimise automaatika on teostatud cron-teenuse abil ja kirjeldatud failis
:file:`/etc/cron.d/ivxv-admin`.
Hääletamise seansside väljavõtte koostamine
-------------------------------------------
Hääletamise ja hääle kontrollimise seansside väljavõte on CSV-vormingus ja see
koostatakse logiseire teenuses.
Väljavõtet on võimalik koostada anonüümistatud kujul, kus kasutajate
isikukoodid ja IP-aadressid on asendatud anonüümsete väärtustega.
Võimalik on valida, kas väljastada kõik hääletamise seansid või ainult hääle
kontrollimisega seansid.
:ref:`ivxv-voting-sessions`
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/index.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
IVXV kogumisteenuse haldusjuhend
========================================================================
.. raw:: html
NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 2
annotatsioon
ylevaade
haldusteenus
algseadistamine
haldustoimingud
krahhitaaste
seadistused
protseduurid
lisad
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/krahhitaaste.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Krahhitaaste
============
Kogumisteenus on projekteeritud nii, et teenuse või selle osade krahhimise
tagajärjel ei tekiks andmekadu või oleks see minimaalne.
Eeldused edukaks krahhitaasteks
-------------------------------
Kõrgkäideldav seadistus
^^^^^^^^^^^^^^^^^^^^^^^
Peamine eeldus edukaks krahhitaasteks on kogumisteenuse paigaldamine
kõrgkäideldava seadistusega, mis määrab vähemalt kolme talletusteenuse isendi
kasutamise. Lisaks on krahhiolukorra kiiremaks lahendamiseks kasulik eraldada
mikroteenustele ühe lisaisendite komplekti paigalduseks vajalik taristu.
Logikoguja kasutamine
^^^^^^^^^^^^^^^^^^^^^
Kogumisteenuse seadistus peab kirjeldama logikogumisteenuse, et mikroteenuste
poolt toodetavad logisid oleks võimalik lihtsal moel kokku koguda. Soovitav on
kasutada mitut logikogujat erinevas füüsilises lokatsioonis, et minimeerida
logikirjete kaotsimineku võimalust.
Varundusteenuse kasutamine
^^^^^^^^^^^^^^^^^^^^^^^^^^
Kogumisteenuse seadistus peab kirjeldama varundusteenuse ning automaatse
varundamise ajad piisava sagedusega. Samuti on soovitav teha varukoopiad ka
varundusteenusest.
Automaatne varundamine tagab e-valimiskasti koopia säilimise :ref:`talletusteenuse
täieliku krahhi ` korral.
.. note::
Varundusteenus on soovitav paigaldada teistest kogumisteenuse isenditest
füüsiliselt eraldi, et võimalikud eriolukorrad (näiteks tulekahju) ei
mõjutaks korraga nii varundusteenust kui teisi teenuseid.
Varundusteenus on projekteeritud kogumisteenuse andmetest automaatsete
varukoopiate loomiseks ühte kohta ning nende kättesaadavaks tegemiseks
operatsioonidele, mis varukoopiaid kasutavad (näiteks häälte kokkulugemine).
.. note::
Kogumisteenuse osutaja peaks kaaluma võimalust teha varundusteenusest
täiendavaid varukoopiaid, et tagada varundatud andmete säilimine ka
varundusteenuse krahhi korral.
Valmisolek krahhiks
^^^^^^^^^^^^^^^^^^^
Kogumisteenuse krahh mõjutab kõiki e-hääletamise komponente, erilist
tähelepanu tuleb pöörata valijarakenduste ja kontrollrakenduste
nimelahendusele ning TLS ühenduste usaldamiseks vajalikele
sertifikaatidele.
Hääletamise edukaks läbiviimiseks tuleb tagada, et nimeserverid
sisaldaks kogu hääletusperioodi vältel ajakohast infot
hääletamissüsteemi sisendpunktide kohta - siis suudavad
valijarakendused ja kontrollrakendused vastavalt muutuvatele oludele
nimesid korrektselt lahendada.
#. Krahhimise tuvastamisel tuleb esimeste tegevuste hulgas eemaldada
nimelahendusest krahhinud teenus, et rakendused enam selle poole
pöörduda ei saaks.
#. Kui teenused pärast krahhi uuesti töökorda saadakse, tuleb
viimase sammuna nimelahenduses panna uute teenuste aadressid
lahenduma vastavalt rakendustes defineeritule.
Kui kogumisteenusesse lisatakse uusi mikroteenuseid (eeldatavalt
pärast krahhimist), siis on tarvis tagada lisatud teenuste
usaldusväärsus rakendustes.
Teenuse plaanimisel tuleb luua serdid/võtmed ka võimalike
asendusteenuste jaoks (choices, mid, voting). Need võtmed tuleb
pakendada valijarakendusse, et pärast krahhi poleks tarvis hakata uut
rakendust levitama. Kui sertifikaadid luuakse ühe CA alt, siis piisab
valijarakendusse vastava CA sertifikaadi pakendamisest.
Kontrollrakenduste jaoks tuleb seadistustes alati näidata konkreetsed
teenussertifikaadid, kuid kontrollrakenduste seadistuste muutmine ei
eelda kontrollrakenduste uuesti levitamist.
Teenuste taastamine krahhist
----------------------------
Mikroteenuse isendi krahh ilma andmekaota
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mikroteenuse isendi krahh ilma andmekaota võib esineda teenuste puhul, mis ei
tegele andmete säilitamisega (nimekirjateenus, hääletusteenus, kontrolliteenus
või mobiil-id tugiteenus). Sellises olukorras piisab teenuse isendi
taastamiseks kas teenuse taaskäivitamisest (kui see on võimalik) või teenuse
isendi asendamisest uuega.
.. seealso::
* :ref:`teenuse-taaskäivitamine`
* :ref:`teenuse-asendamine`
* :ref:`recovery-stateless`
Logikogumisteenuse isendi krahh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Logikogumisteenuse krahh võib esineda nii logiandmete riknemisega kui ka ilma.
Ilma logiandmete riknemiseta krahh tähendab olukorda, kus rsyslog teenus seisab
ja ei võta seetõtte teenustelt logikirjeid vastu ning salvestatud logifailid ei
ole rikutud. Sellises olukorras piisab teenuse isendi töökorda seadmiseks selle
taaskäivitamisest.
Logikogumisteenuse krahh koos logiandmete riknemisega nõuab teenuse isendi
asendamist uuega.
Kui logiandmete riknemisega kaasneb alati logiandmete kadu, siis ilma
riknemiseta krahhi puhul tuleb samuti selle võimalusega arvestada. Logisid
edastatakse üle RELP-protokolli, mis on küllalt töökindel, kuid vaatamata
sellele võib logiedastus katkeda olukorras, kus logi genereeriva teenuse hostil
on rsyslogi isendit taaskäivitatud ajal, mil logikoguja rsyslog isend ei
töötanud.
.. seealso::
* :ref:`teenuse-taaskäivitamine`
* :ref:`teenuse-asendamine`
* `RELP - The Reliable Event Logging Protocol
`_
* :ref:`recovery-logcollection`
Varundusteenuse isendi krahh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Varundusteenuse isendi krahh tähendab varundusteenusesse varundatud andmete
riknemist. Teenuse taastamiseks tuleb varundusteenus uuesti paigaldada ja
varundatud andmed taastada. Andmete taastamine varundusserverisse võib toimuda
ka pärast häälte kogumise lõppemist, kuid enne häälte kokkulugemist.
.. note::
Varundusprotseduuride käivitamist juhitakse haldusteenusest ja seetõttu pole
varundusteenust võimalik käivitada ega seisma jätta.
.. seealso::
* :ref:`recovery-backupservice`
Talletusteenuse isendi krahh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Talletusteenuse ühe isendi krahhimisel piisab isendi asendamisest uuega.
Talletusteenuseid saab lisada ja eemaldada ainult siis, kui klastris on
vähemalt kvoorumi jagu töökorras talletusteenuse isendeid. Kvoorumi suurus on
N/2+1 ümardatud alla, kus N on seadistatud isendite arv (näiteks kolme
seadistatud isendi korral on kvoorumi suurus kaks).
Kui talletusteenuse isendeid jääb alles vähem kui kvoorumi jagu, siis tuleb
teha kõigile isenditele uus paigaldus (vt.
:ref:`talletusteenuste-täielik-krahh`).
Talletusteenuse kvoorumist tingitud piirangud:
#. Talletusteenuse isendite arvu ei ole kunagi võimalik vähendada ühele;
#. Talletusteenuste isendite eemaldamisel peab arvestama kvoorumi säilimisega.
Näide: kui on seadistatud 6 talletusteenuse isendit (kvoorum=4), siis sealt
ei saa korraga eemaldada kolme isendit (jääks järgi kolm isendit,
kvoorum=2), kuna seadistatud isendite hulk oleks siis väiksem kui algne
kvoorum. Kõigepealt tuleb eemaldada üks (jääb järgi 5 isendit, kvoorum=3)
isend ja alles pärast seda saab eemaldada ülejäänud kaks.
.. seealso::
* :ref:`teenuse-taaskäivitamine`
* :ref:`teenuse-asendamine`
* :ref:`recovery-storageservice`
.. _talletusteenuste-täielik-krahh:
Talletusteenuste täielik krahh ehk kogumisteenuse täielik asendamine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Talletusteenuste täielikul asendamisel tuleb koostada uus tehniline seadistus,
mis vastab järgmistele tingimustele:
* ei sisalda ühtegi vana talletusteenust;
* kõik uued talletusteenused on loetletud parameetri ``storage.conf.bootstrap``
nimekirjas.
.. important::
Talletusteenuste täielikul asendamisel tuleb arvestada järgnevada:
* enne asendamist kogutud hääled säilivad varundusserveritesse tehtud
varukoopiates;
* varukoopia loomise ja krahhi vahel kogutud hääled lähevad kaotsi;
* valikute, ringkondade ja valijate nimekirjad tuleb teenustele uuesti rakendada.
.. seealso::
* :ref:`recovery-fullstorage`
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/lisad.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Lisad
=====
.. _utiliidid:
Utiliidid
---------
Kogumisteenuse haldamise käsureautiliitide ülevaade ja abiteave.
.. contents:: .
:local:
:depth: 1
Andmehoidla utiliidid
^^^^^^^^^^^^^^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-create-data-dirs.inc
.. include:: utiliitide-abiteave/ivxv-db-reset.inc
.. include:: utiliitide-abiteave/ivxv-db-dump.inc
Teenuse seisundi utiliidid
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-status.inc
.. include:: utiliitide-abiteave/ivxv-service.inc
Sündmuste logi utiliidid
^^^^^^^^^^^^^^^^^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-eventlog-dump.inc
Kasutajate halduse utiliidid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-users-list.inc
Seadistusutiliidid
^^^^^^^^^^^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-collector-init.inc
.. include:: utiliitide-abiteave/ivxv-cmd-load.inc
.. include:: utiliitide-abiteave/ivxv-config-validate.inc
.. include:: utiliitide-abiteave/ivxv-config-apply.inc
Seadistuste rakendamine hallatavatele teenustele on võimalik siis, kui
haldusteenusesse on laaditud kogumisteenuse tehnilised seadistused.
Seadistuste rakendamise järjekord:
#. Tehnilised seadistused koos usaldusjuure seadistustega.
#. Teenuse tarkvara paigaldamine;
#. Haldusteenuse ligipääsu loomine hallatava teenuse kontole;
#. Teenuse logimisseadistuste rakendamine;
#. Haldusteenuse ligipääsu eemaldamine teenuse hosti juurkasutaja kontole
(ainult juhul, kui teenusmasinas pole rohkem seadistamata teenuseid);
#. Usaldusjuure rakendamine teenusele;
#. Tehniliste seadistuste rakendamine teenusele;
#. Valikute nimekiri;
#. Ringkondade nimekiri;
#. Valijate nimekirjad;
Logikogumisteenus erineb teistest hallatavatest teenustest:
#. Logikogumisteenus seadistatakse enne teisi teenuseid, et tagada võimalikult
varajane logi kogumine.
#. Logikogumisteenustele ei rakendata muid seadistusi peale logikogumisteenuse
seadistuste (usaldusjuure seadistusi, kogumisteenuse tehnilised seadistusi
ja valimiste seadistusi logikogumisteenus ei vaja).
Valimisnimekirjade (valikute ja valijate nimekirjad) rakendamine tähendab
nimekirja ülekandmist talletusteenusesse vastavat nimekirja teenindava teenuse kaudu.
Näiteks valikute nimekiri rakendatakse vaid ühele (juhuslikult valitud)
nimekirjateenusele, mis kannab nimekirja talletusteenusesse. Talletusteenuse
kaudu on nimekiri kättesaadav kõigile teistele nimekirjateenustele.
.. include:: utiliitide-abiteave/ivxv-voter-list-download.inc
.. include:: utiliitide-abiteave/ivxv-secret-load.inc
.. include:: utiliitide-abiteave/ivxv-copy-log-to-logmon.inc
.. include:: utiliitide-abiteave/ivxv-update-packages.inc
.. include:: utiliitide-abiteave/ivxv-backup-crontab.inc
Andmete eksportimise ja varundamise utiliidid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-export-votes.inc
.. include:: utiliitide-abiteave/ivxv-backup.inc
.. include:: utiliitide-abiteave/ivxv-generate-processor-input.inc
.. include:: utiliitide-abiteave/ivxv-voterstats.inc
.. include:: utiliitide-abiteave/ivxv-voting-sessions.inc
Deemonid
^^^^^^^^
.. include:: utiliitide-abiteave/ivxv-agent-daemon.inc
Sisemised utiliidid
^^^^^^^^^^^^^^^^^^^
.. attention::
Sisemised utiliidid on kasutusel haldusdeemoni poolt alamteenuste
haldamiseks ja neid ei ole reeglina tarvis eraldi käivitada.
.. include:: utiliitide-abiteave/ivxv-admin-helper.inc
.. include:: utiliitide-abiteave/ivxv-admin-sudo.inc
Seadistusfailid
---------------
.. _ivxv-logcollector.conf:
Logikogumisteenuse seadistusfail
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: ../../../common/collector/config/rsyslog-logcollector.conf
:name: /etc/rsyslog.d/ivxv-logcollector.conf
:language: text
:linenos:
Lisaseadistused
---------------
.. _configure-ssh-idcard-auth:
SSH kasutajate autentimine ID-kaardi abil
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SSH-teenusesse on võimalik autentida ID-kaardi avaliku võtmega abil, kasutades
selleks PKCS#11 toega SSH-klienti ``kitty.exe`` (http://kitty.9bis.net/).
Turvakaalutustel tuleks keelata haldusliidese SSH-teenusesse parooliga
autentimine. Parooliga autentimise keelamiseks tuleb seadistusfailis
:file:`/etc/ssh/sshd_config` määrata parameetri ``PasswordAuthentication``
väärtuseks ``no``::
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
Volitatud kasutajate faili asukoht (:file:`/etc/ssh/kasutajad`) tuleb failis
:file:`/etc/ssh/sshd_config` määrata parameetriga ``AuthorizedKeysFile``:
``AuthorizedKeysFile /etc/ssh/kasutajad``
.. important::
Seadistusfailis ``/etc/ssh/sshd_config`` tehtud muutuse rakendamiseks tuleb
SSH teenus taaskäivitada::
# service ssh restart
[ ok ] Restarting OpenBSD Secure Shell server: sshd.
ID-kaardi isikutuvastamise sertifikaadiga autenditava kasutaja ülesseadmine
käib järgmiselt:
#. Kasutajale konto loomine:
.. code-block:: shell-session
# adduser --disabled-password kasutajanimi
# usermod -a -G www-data kasutajanimi
#. Kasutaja ID-kaardi isikutuvastamise sertifikaadi salvestamine PEM-vormingus
faili :file:`usercert.cer` (ID-kaardi haldusvahendi abil);
#. Sertifikaadist kasutaja avaliku võtme eraldamine ja salvestamine faili
:file:`userpubkey.pem`:
.. code-block:: shell-session
# openssl x509 -in usercert.cer -pubkey -noout > userpubkey.pem
#. Avaliku võtme teisendamine PKCS#8 vormingusse, kasutaja tunnusega
varustamine ja salvestamine SSH volitatud kasutajate faili
:file:`/etc/ssh/kasutajad`:
.. code-block:: shell-session
# KEY=$(ssh-keygen -i -m PKCS8 -f userpubkey.pem)
# echo "$KEY kasutaja@eesti.ee" >> /etc/ssh/kasutajad
#. Kontrollimine, kas lisatud kirje on kujul ``ssh-rsa PKCS8-võti``
kasutajatunnus:
.. code-block:: shell-session
# tail -1 /etc/ssh/kasutajad
ssh-rsa AAAAB3NzaC1yc2EAAAAELGuiTwAAAIEAxZf/TuSrGJEU1PlfkY9jJ33VOYVZ9Vao0Uiytlf8
7HJu/78fCIB7m05J7ibpMhsZoZ4DElU7ve0VwbvdDS3srh1OhiQcUjpznTlx4rIM1vkHwadrHtmF+BNi
DwbLbbdD5y3puGcLH+sLuwba6Vuc3aU0QuqzenYmY9pV7w9y0wc= kasutaja@eesti.ee
Andmehoidla
-----------
Haldusteenuse andmeid hoitakse failisüsteemis ja andmebaasis. Failisüsteemis
hoitakse andmeid, mis on pärit välistest süsteemidest ja on haldusteenusesse
üle kantud faili kujul. Andmebaasis hoitakse andmeid, mis on genereeritud
haldusteenuse töö käigus.
Failisüsteemis hoitavad andmed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* :file:`/etc/ivxv/` -- kogumisteenusele rakendatud ja hetkel kehtivad
seadistus- ja nimekirjafailid;
* :file:`/var/lib/ivxv/` -- kogumisteenuse haldusteenuse andmefailid;
* :file:`/var/lib/ivxv/admin-ui-data/` -- haldusteenuse veebiliidese jaoks
serveeritavad JSON-failid;
* :file:`/var/lib/ivxv/admin-ui-data/status.json` -- kogumisteenuse seisundi
koondandmed;
* :file:`/var/lib/ivxv/admin-ui-permissions/` -- haldusteenuse veebiliidese
kasutajaõigused (Apache veebiserveri jaoks);
* :file:`/var/lib/ivxv/ballot-box/` -- allalaaditava e-valimiskasti salvestamise kataloog;
* :file:`/var/lib/ivxv/commands/` -- kogumisteenuse juhtimiseks rakendatud
korraldusfailide ajalugu;
* :file:`/var/lib/ivxv/commands/-.bdoc` --
digitaalselt allkirjastatud korraldus ``ASiC-E`` vormingus.
* :file:`/var/lib/ivxv/commands/-.json` --
korralduse olekufail JSON-vormingus.
* :file:`/var/lib/ivxv/db/` -- haldusteenuse andmebaasi kataloog;
* :file:`/var/lib/ivxv/db/ivxv-management.db` -- haldusteenuse andmebaasi
fail;
* :file:`/var/lib/ivxv/ivxv-management-events.log` -- haldusteenuse sündmuste
logi;
* :file:`/var/lib/ivxv/service/` -- muud teenusespetsiifilised failid
(nt. registreerimisvõtmest eraldatud avalik võti);
* :file:`/var/lib/ivxv/upload/` -- kogumisteenusesse veebiliidese kaudu
laaditud failid;
Andmebaasis hoitavad andmed
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Andmevälja nimi ja kirjeldus:
* ``collector/state`` -- kogumisteenuse olek;
* ``config/election`` -- kogumisteenuses rakendatud valimiste seadistusele
digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``config/technical`` -- kogumisteenuses rakendatud tehnilisele seadistusele
digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``config/trust`` -- kogumisteenuses rakendatud usaldusjuure seadistusele
digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``election/election-id`` -- valimiste identifikaator;
* ``election/electionstart`` -- valimiste algusaeg;
* ``election/electionstop`` -- valimiste lõpuaeg;
* ``election/servicestart`` -- kogumisteenuse käivitamise aeg;
* ``election/servicestop`` -- kogumisteenuse seiskamise aeg;
* ``host//state`` -- teenushosti seisund;
* ``list/choices`` -- haldusteenusesse laaditud valikute nimekirjale
digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``list/choices-loaded`` -- nimekirjateenustesse laaditud valikute
nimekirjale digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``list/districts`` -- nimekirjateenustesse laaditud ringkondade
nimekirjale digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``list/districts-loaded`` -- nimekirjateenustesse laaditud ringkondade
nimekirjale digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``list/voters0000`` -- haldusteenusesse laaditud valijate algnimekirjale
digiallkirja andnud volitatud kasutaja andmed kujul ````;
* ``list/voters`` (``list-number >= 01``) -- haldusteenusesse
laaditud valijate muudatusnimekirja allalaadimise hetke ajatempel;
* ``list/voters-state`` -- nimekirjateenustesse laaditud valijate
nimekirja olek.
Võimalikud väärtused:
1. ``PENDING`` - laaditud haldusteenusesse;
2. ``APPLIED`` - rakendatud nimekirjateenusele;
3. ``INVALID`` - nimekiri on märgitud vigaseks ja ootab halduri otsust
vahelejätmise kohta (ainult muudatusnimekirja korral);
4. ``SKIPPED`` - nimekiri on vahele jäetud (ainult muudatusnimekirja korral).
* ``logmonitor/address`` -- seireteenuse aadress või võrgunimi;
* ``logmonitor/last-data`` -- viimase seireteenusest statistikafaili hankimise
aeg;
* ``user/`` -- haldusteenuse kasutaja nimi ja rollid kujul
``[,]``;
* ``service//service-type`` -- Teenuse liik;
* ``service//technical-conf-version`` -- Teenusele rakendatud
tehnilise seadistuse versioon;
* ``service//election-conf-version`` -- Teenusele rakendatud
valimiste seadistuse versioon;
* ``service//network`` -- Teenusele alamvõrgu nimi;
* ``service//state`` -- Teenuse olek;
* ``service//ping-errors`` -- Teenuse elusoleku kontrollimise
järjestikuste vigade arv;
* ``service//last-data`` -- Teenuse viimase oleku hankimise aeg;
* ``service//ip-address`` -- Teenuse IP-aadress;
* ``service//bg_info`` -- Teenuse taustainfo stringina (näiteks
elusoleku kontrolli käigus genereeritud veateade);
* ``service//backup-times`` -- Varundusteenuse automaatvarunduse
kellaajad;
* ``service//mid-token-key`` -- Mobiil-ID/Smart-ID/Web eID tugiteenuse
identsustõendi võtmefaili kontrollsumma (SHA256);
* ``service//tls-cert`` -- Teenuse TLS-sertifikaadi faili
kontrollsumma (SHA256);
* ``service//tls-key`` -- Teenuse TLS-sertifikaadi võtmefaili
kontrollsumma (SHA256);
* ``service//tspreg-key`` -- Hääletamisteenuse ajatempliteenuse
signeerimisvõtme faili kontrollsumma (SHA256);
Kasutatud tähised:
* ```` -- korralduse liik:
#. ``trust`` -- usaldusjuure seadistused;
#. ``technical`` kogumisteenuse seadistused;
#. ``election`` valimiste seadistused;
* ```` -- ID-kaardi CN väli kujul ``PEREKONNANIMI,EESNIMI,ISIKUKOOD``;
* ```` on seadistuse liik. Usaldusjuure seadistus on ``trust``,
valimiste seadistus on ``election`` ja kogumisteenuse tehniline
seadistus on ``tech``;
* ```` teenushosti nimi;
* ```` valimisnimekirja kahekohaline järjekorranumber, esimene nimekiri
kannab numbrit 01.
* ```` teenuse identifikaator kogumisteenuse seadistustest;
* ```` on ajatempel ISO-8601 vormingus.
.. _etcd-zabbix:
Klastri seisundi monitoorimine Zabbixiga
----------------------------------------
Etcd klaster tagab süsteemi toimimise ka olukorras, kus mõni klastriliige kaotab
töövõime (krahh, võrguühenduse kadumine jms.). Siiski on oluline selliseid
sündmuseid monitoorida ning nende algpõhjus tuvastada. Etcd krahhimise
tuvastamiseks tuleb talletusteenuste logidest (``ivxv-YYYY-MM-DD-HH.log``) monitoorida
``ivxv.ee/service/storage.EtcdTerminatedError`` kirjet.
Täiendavalt saab etcd käsureakliendiga küsida klastri liikmete olekut. Kuna
IVXV klastris on kõik klient-päringud autenditud, siis tuleb korraldus
käivitada mõnes ``ivxv-storage`` teenuse masinas kasutajakonto
``ivxv-storage`` (või juurkasutaja) õigustes:
.. code-block:: shell-session
# ivxv-storage@ivxv1:~$ env ETCDCTL_API=3 etcdctl \
--cacert /var/lib/ivxv/service/storage@storage1.ivxv.ee/ca.pem \
--cert /var/lib/ivxv/service/storage@storage1.ivxv.ee/tls.pem \
--key /var/lib/ivxv/service/storage@storage1.ivxv.ee/tls.key \
--endpoints ivxv1:2379,ivxv2:2379,ivxv3:2379 \
endpoint status
ivxv1:2379, 2d0df029f29770a4, 3.2.17, 25 kB, true, 12, 15
ivxv2:2379, d4a9ae16c8557764, 3.2.17, 25 kB, false, 12, 15
ivxv3:2379, e8914f4e0b89b80f, 3.2.17, 25 kB, false, 12, 15
Vastuses on veergude tähendused järgmised:
#. klastri liige;
#. klastri liikme identifikaator;
#. etcd versioon;
#. baasi suurus (max 8GB ehk 8589934592);
#. kas konkreetne klastri liige on hetkel juht;
#. RAFT ametiaeg (sisuliselt toimunud juhi-valimiste arv);
#. RAFT indeks - etcd kirjutamisoperatsioonide arv (sh.
konfiguratsiooni muutused).
Monitooringule on oluline parameeter RAFT ametiaeg. Selle väärtuse muutumine
tähendab juhivahetust, mis üldjuhul on seotud probleemidega klastri töös -
olemasolev juht ei vasta piisavalt kiiresti klastri liikmete päringutele.
Käsurea seletus:
* ``env ETCDCTL_API=3``: kasutame etcd API versiooni 3 (Ubuntu versioonis
20.04 LTS on ``etcdctl`` API vaikeversioon veel 2);
* ``--cacert``: usaldame ainult servereid, mille sertifikaat on antud selle CA
poolt;
* ``--cert`` ja ``--key``: kasutame klient-autentimiseks ivxv1 talletusteenuse
sertifikaati ja võtit;
* ``--endpoints``: millistele serveritele päring saata. Siin võib kõigi kolme
asemel ka ainult ühe loetleda: sellisel juhul on väljundis vaid üks rida.
Kasulik nt kui Zabbix tahab igas talletusteenuses küsida ainult selle isendi
kohta;
* ``endpoint status``: küsime loetletud serverite olekut.
Väljundit on võimalik küsida ka masinloetavas JSON-vormingus
(parameeter ``-w json``):
.. code-block:: shell-session
ivxv-storage@ivxv1:~$ env ETCDCTL_API=3 etcdctl \
--cacert /var/lib/ivxv/service/storage@storage1.ivxv.ee/ca.pem \
--cert /var/lib/ivxv/service/storage@storage1.ivxv.ee/tls.pem \
--key /var/lib/ivxv/service/storage@storage1.ivxv.ee/tls.key \
--endpoints ivxv1:2379,ivxv2:2379,ivxv3:2379 \
endpoint status -w json
[{"Endpoint":"ivxv1:2379","Status":{"header":{"cluster_id":1867986262344190226,"member_id":3246514969358332068,"revision":1,"raft_term":12},"version":"3.2.17","dbSize":24576,"leader":3246514969358332068,"raftIndex":15,"raftTerm":12}},
{"Endpoint":"ivxv2:2379","Status":{"header":{"cluster_id":1867986262344190226,"member_id":15323970619978381156,"revision":1,"raft_term":12},"version":"3.2.17","dbSize":24576,"leader":3246514969358332068,"raftIndex":15,"raftTerm":12}},
{"Endpoint":"ivxv3:2379","Status":{"header":{"cluster_id":1867986262344190226,"member_id":16758262885041944591,"revision":1,"raft_term":12},"version":"3.2.17","dbSize":24576,"leader":3246514969358332068,"raftIndex":15,"raftTerm":12}}]
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/protseduurid.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Protseduurid
============
.. _recovery-stateless:
Juhend: olekuvaba mikroteenuse isendi taastamine krahhist
---------------------------------------------------------
.. include:: recovery/recovery_stateless.inc
.. _recovery-logcollection:
Juhend: logikogumisteenuse isendi taastamine krahhist
-----------------------------------------------------
.. include:: recovery/recovery_logcollection.inc
.. _recovery-backupservice:
Juhend: varundusteenuse isendi taastamine krahhist
--------------------------------------------------
.. include:: recovery/recovery_backupservice.inc
.. _recovery-storageservice:
Juhend: talletusteenuse isendi taastamine krahhist
--------------------------------------------------
.. include:: recovery/recovery_storageservice.inc
.. _recovery-fullstorage:
Juhend: talletusteenuse taastamine täielikust krahhist
------------------------------------------------------
.. include:: recovery/recovery_fullstorage.inc
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/recovery/recovery_backupservice.inc
================================================
Krahhi toimumise indikaatorid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusveebiliides.
Vali **Teenused** vasakult menüüst. Kui varundusteenus on krahhinud,
siis tema **Seisund** on **Tõrge**.
Halduskäsurealiides.
Logi sisse **ivxv-admin** kasutajana ja päri teenuste statistikat::
$ sudo su - ivxv-admin
$ ivxv-status
Kui varundusteenus on krahhinud, siis tema **State** on **FAILURE**.
Krahhist taastumise eeldused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Krahhist taastumine on alati võimalik.
Krahhi võimalik mõju hääletamistulemusele
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Varundusteenuse krahh mõjutab hääletamistulemust (andmekadu), kui täiendavalt
krahhib ka talletusteenus.
Krahhist taastumise sammud
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Kasuta :ref:`recovery-stateless` juhendis oleva
**Teenuse masin on krahhinud, v.a vahendus- ja x-tee teenused**
peatükki, v.a sammud 8, 10, 12-16.
.. note::
Punktis 10 tuleb välja vahetada ainult varundusteenuse **id** ja **address**
väljad:
.. code-block:: yaml
- id: zone0
services:
log:
- id: backup@backup1.ivxv.ee
address: backup1
uute vastu:
.. code-block:: yaml
- id: zone0
services:
log:
- id: backup@backup2.ivxv.ee
address: backup2
SSH logi sisse haldusmasinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
Seadista SSH ühenduse loomiseks *prompt* sõnumi
*Are you sure you want to continue connecting (yes/no)? yes* kinnitamist
vältida, näiteks, kui varundusteenuse masina DNS **address** on *backup2*::
$ ssh backup2
$ echo "StrictHostKeyChecking no" >> /var/lib/ivxv/user/ivxv-admin/.ssh/config
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/recovery/recovery_fullstorage.inc
================================================
Krahhi toimumise indikaatorid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusveebiliides.
Vali **Teenused** vasakult menüüst. Kui talletusteenused on krahhinud,
siis tema **Seisund** on **Tõrge**.
Halduskäsurealiides.
Logi sisse **ivxv-admin** kasutajana ja päri teenuste statistikat::
$ sudo su - ivxv-admin
$ ivxv-status
Kui talletusteenused on krahhinud, siis tema **State** on **FAILURE**.
Krahhist taastumise eeldused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Krahhi taastumiseks piisab kui teenuste CA TLS privaatvõti ja sertifikaat on
alles, mida saab kasutada teenuse varuvõtmete ja -sertifikaatide
genereerimiseks. Samas, saab ka enne valimisi teenuse varuvõtmed ja
-sertifikaadid ette genereerida.
Kui kõikide teenuste CA on sama, siis tasub valija- ja kontrollrakenduste
seadistusse panna hoopis CA TLS sertifikaadi. Juhul kui CA on teenustel erinev,
siis peab panema kõik teenuste TLS sertifikaadid rakenduste seadistusse
vahetult enne valimisi.
Krahhi võimalik mõju hääletamistulemusele
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Kui krahhib talletusteenuse klaster, siis kindlasti tegu on andmekaoga.
Andmekao suurus sõltub varundusteenusest ehk kui tihti e-urni varundati.
Lisaks, juba hääletanud valijal võivad tekkida segadus, kui teist korda
hääletades, kuvatakse valijarakenduses "Teie pole veel hääletanud"
tervitustekst.
Krahhist taastumise sammud
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Tee :ref:`recovery-storageservice` juhendis oleva
**Teenuse andmed (võti, sertifikaat jne) on rikutud või masina krahh**
peatükki protseduurid läbi iga uue koguja masina jaoks.
.. note::
Punktis 10 tuleb välja vahetada kõik vanad **id** ja **address** kirjed
uute vastu, lisaks tuleb muuta ka talletusteenuse **bootstrap**
seadistust:
.. code-block:: yaml
bootstrap:
- storage@storage1.ivxv.ee
- storage@storage2.ivxv.ee
- storage@storage3.ivxv.ee
selliselt:
.. code-block:: yaml
bootstrap:
- storage@storage4.ivxv.ee
- storage@storage5.ivxv.ee
- storage@storage6.ivxv.ee
Nüüd tuleb taastada koguja krahhieelne seisund, v.a kaotsi läinud hääled:
#. SSH logi sisse haldusmasinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
#. Laadi ringkondade nimekiri::
$ ivxv-config-apply --type=districts
#. Laadi valikute nimekiri::
$ ivxv-config-apply --type=choices
#. Laadi nii valijate alg-, kui ka kõik vahepealsed muudatusnimekirjad::
$ ivxv-config-apply --type=voters
.. warning::
Ära unusta, et valimiste lõpus tuleb hääli alla laadida koos varundatud
häältega, et vähemalt mingis ulatuses tagada e-urni terviklikkus::
$ ivxv-export-votes --consolidate
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/recovery/recovery_logcollection.inc
================================================
Krahhi toimumise indikaatorid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusveebiliides.
Vali **Teenused** vasakult menüüst. Kui logikogumisteenus on krahhinud,
siis tema **Seisund** on **Tõrge**.
Halduskäsurealiides.
Logi sisse **ivxv-admin** kasutajana ja päri teenuste statistikat::
$ sudo su - ivxv-admin
$ ivxv-status
Kui logikogumisteenus on krahhinud, siis tema **State** on **FAILURE**.
Krahhist taastumise eeldused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Krahhist taastumine on alati võimalik.
Krahhi võimalik mõju hääletamistulemusele
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hääletamistulemusele mõju puudub, küll aga krahhinud logikogumisteenusega kaob
ka osa varundatud logidest, mida enam taastada ei ole võimalik. Samas, need
logid on ikkagi endiselt alles koguja masinates, ning ka logimonitori
masinas. Ainus koht kus avaldub logikogumisteenuse krahh on varundusteenuse
masin, kus jääbki puudu osa varundatud logidest.
Krahhist taastumise sammud
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Kasuta :ref:`recovery-stateless` juhendis oleva
**Teenuse masin on krahhinud, v.a vahendus- ja x-tee teenused**
peatükki, v.a sammud 10, 12-16.
.. note::
Punktis 10 tuleb välja vahetada ainult logikogumisteenuse **id** ja
**address** väljad:
.. code-block:: yaml
- id: zone0
services:
log:
- id: log@log1.ivxv.ee
address: log1:20514
uute vastu:
.. code-block:: yaml
- id: zone0
services:
log:
- id: log@log2.ivxv.ee
address: log2:20514
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/recovery/recovery_stateless.inc
================================================
Krahhi toimumise indikaatorid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusveebiliides.
Vali **Teenused** vasakult menüüst. Kui teenus on krahhinud,
siis tema **Seisund** on **Tõrge**.
Halduskäsurealiides.
Logi sisse **ivxv-admin** kasutajana ja päri teenuste statistikat::
$ sudo su - ivxv-admin
$ ivxv-status
Kui teenus on krahhinud, siis tema **State** on **FAILURE**.
Krahhist taastumise eeldused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Krahhist taastumiseks piisab kui teenuste CA TLS privaatvõti ja sertifikaat on
alles, mida saab kasutada teenuse varuvõtmete ja -sertifikaatide
genereerimiseks. Samas, saab ka enne valimisi teenuse varuvõtmed ja
-sertifikaadid ette genereerida.
Kui kõikide teenuste CA on sama, siis tasub valija- ja kontrollrakenduste
seadistusse panna hoopis CA sertifikaat. Juhul kui CA on teenustel erinev,
siis peab panema kõik teenuste TLS sertifikaadid rakenduste seadistusse
vahetult enne valimisi.
Krahhi võimalik mõju hääletamistulemusele
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sõltuvalt teenusest võivad tagajärjed olla järgmised:
* kui krahhivad nimekirja-, Mobiil-ID, vahendus-, seansi-, Smart-ID,
hääletamis-, Web-eID teenused, siis valijal ei õnnestu hääletada
* kui krahhivad järjekorra- ja x-tee teenused, siis VIS ei saa pärida
andmeid x-tee kaudu
* kui krahhib verifitseerimisteenus, siis valijal ei õnnestu oma häält
verifitseerida
Krahhist taastumise sammud
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Talletusteenust antud juhendis ei käsitleta, selleks
on eraldi juhend :ref:`recovery-storageservice`
Krahhi saab liigitada järgmiselt:
#. Teenus on terve, ning vajab ainult taaskäivitamist, v.a x-tee teenus
#. Teenuse andmed (TLS privaatvõti, sertifikaat jne) on rikutud, v.a
vahendus- ja x-tee teenused
#. Teenuse lähtekoodis on viga, v.a x-tee teenus
#. X-tee teenuse taastumine, sh. krahh ja lähtekoodi viga
#. Teenuse masin on krahhinud, v.a vahendus- ja x-tee teenused
#. Vahendusteenuse masin on krahhinud
Teenus on terve, ning vajab ainult taaskäivitamist, v.a x-tee teenus
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. SSH logi sisse haldus masinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
#. Taaskäivita teenus, näiteks nimekirjateenust::
$ ivxv-service restart choices@choices1.ivxv.ee
Teenuse andmed (TLS privaatvõti, sertifikaat jne) on rikutud, v.a vahendus- ja x-tee teenused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Vaheta välja krahhinud teenuse **id** tehnilises seadistuses
varuteenuse **id** vastu, mille TLS privaatvõti ja sertifikaat on
genereeritud
#. Allkirjasta tehniline seadistus
#. Laadi seadistus läbi haldusveebiliidese **Seadistused**
#. SSH logi sisse haldusmasinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
#. Laadi TLS privaatvõti ja sertifikaat, näiteks nimekirjateenus::
$ ivxv-secret-load --service=choices@choices4.ivxv.ee tls-key /opt/ivxv-install/service_definition/choices@choices4.ivxv.ee.key
$ ivxv-secret-load --service=choices@choices4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/choices@choices4.ivxv.ee.pem
#. Kui tegu on nimekirja-, Mobiil-ID, Smart-ID, hääletamis-, Web-eID või
verifitseerimisteenusega siis tuleb üles laadida ka küpsiste
allkirjatamiseks privaatvõti::
$ ivxv-secret-load mid-token-key /opt/ivxv-install/service_definition/ticket.key
#. Kui tegu on hääletamisteenusega siis tuleb üles laadida TSP vastuse
räsi allkirjastamiseks privaatvõti::
$ ivxv-secret-load tsp-regkey /opt/ivxv-install/service_definition/tspreg.key
#. Käivita teenused::
$ ivxv-config-apply --type=election
Teenuse lähtekoodis on viga, v.a x-tee teenus
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Kopeeri uus *.deb* pakk haldusmasinasse
#. SSH logi sisse haldusmasinasse **sudo** kasutajana::
$ sudo su
#. Kopeeri *.deb* pakk */etc/ivxv/debs/* kausta
#. Logi **sudo** kasutajalt välja::
$ exit
#. SSH logi sisse haldusmasinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
#. Uuenda teenuse *.deb* pakki kõikides masinates, näiteks nimekirjateenus::
$ ivxv-update-packages --service=choices --package=/etc/ivxv/debs/ivxv-choices_1.9.12~dev_amd64.deb
#. Taaskäivita teenus igal hostil, näiteks taaskäivitame nimekirjateenuse
kolmeõlgse seadistuse korral::
$ ivxv-service restart choices@choices1.ivxv.ee
$ ivxv-service restart choices@choices2.ivxv.ee
$ ivxv-service restart choices@choices3.ivxv.ee
X-tee teenuse taastumine, sh. krahh ja lähtekoodi viga
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Esmalt tasub proovida taaskäivitada systemd x-tee teenust::
$ sudo systemctl restart xroad-service
#. Ebaõnnestumise korral tuleb tarnida uus *.deb* pakk, ning
vana pakk eemaldada::
$ sudo apt purge xroad-service
#. Kui uus *.deb* pakk on masinasse kopeeritud, tuleb see paigaldada::
$ sudo apt install ./xroad-service_*.deb
#. Kasuta x-tee teenuse juhendit, et paigaldada TLS sertifikaadid õigesse
kaustadesse
#. Käivita systemd x-tee teenus::
$ sudo systemctl start xroad-service
Teenuse masin on krahhinud, v.a vahendus- ja x-tee teenused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Paigalda värske Ubuntu masin
.. important::
Palun täpsusta üle, millist Ubuntu versiooni parasjagu
kasutatakse
#. Paigalda teenuse masinasse baastarkvara pakid APT
pakihoidlast::
$ sudo apt-get install acl locales unzip zstd --yes
#. Nüüd tuleb haldus-, koguja-, varundus-, logi-, vahendus-, logi
monitooringu masinate **ip** ja DNS **nimi** lisada uue teenuse masina
*/etc/hosts* faili
#. Seejärel tuleb haldus-, koguja-, varundus-, logi-, vahendus masinates
kustutada krahhinud teenuse masina **ip** ja DNS **nimi** ning lisada
uus
.. attention::
See on kõige olulisem samm, kuna siin peab valima sellise DNS
**nime**, mille tulevikus lisame tehnilistesse seadistustesse.
Reegel on lihtne, et iga uue teenuse masina DNS **nimi** peab olema
unikaalne ja ei tohi olla sama, mis krahhinud teenuste masinatele
olid varem omistatud. Haldusteenuse andmebaasis on registreeritud
kõigi süsteemis leiduvate masinate DNS **nimed**, isegi krahhinud
isendite omad. Haldusteenuse eripära seisneb selles, et see ei
paigalda tarkvara masinatele, mille DNS **nimi** on juba
haldusteenuse andmebaasis registreeritud.
#. SSH logi sisse haldusmasinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
#. Kuna haldusteenus paigaldab vajaliku taristu kõikidele süsteemi masinatele
automaatselt, siis on vaja vältida SSH ühenduse loomisel *prompt* sõnumi
*Are you sure you want to continue connecting (yes/no)? yes* kinnitamist.
Kustuta vana teenusmasina SSH avalik võti */etc/ssh/ssh_known_hosts*
failist, ning lisa uus, näiteks, kui uue teenuse masina DNS **nimi** on
*ivxv4*::
$ ssh-keyscan -t ecdsa ivxv4 | grep -v ^# >> /etc/ssh/ssh_known_hosts
#. SSH logi sisse uue teenuse masinasse **root** kasutajana::
$ sudo su
#. Kuna haldusteenus edastab teenuse logid logimonitori, lisaks
*syslog* *RELP* protokollile, ka üle SSH protokolli, siis on vaja samuti
vältida SSH ühenduse loomisel *prompt* sõnumi kinnitamist, näiteks,
monitooringu masina *logmonitor* DNS **address** korral::
$ ssh-keyscan -t ecdsa logmonitor | grep -v ^# >> /etc/ssh/ssh_known_hosts
#. Kuna haldusteenus peab paigaldama tarkvara APT pakihoidlast, mis
on võimatu juurkasutaja õiguseid omandamata, pead kopeerima haldusmasina
SSH avaliku võtme, mis asub
*/var/lib/ivxv/user/ivxv-admin/.ssh/id_ed25519.pub* failis, ning lisama
selle uue teenuse masina */root/.ssh/authorized_keys* faili
#. Nüüd tuleb tehnilistes seadistustes välja vahetada teenuste **id** ja
**nimed** (**address**), näiteks:
.. code-block:: yaml
- id: zone1
services:
mid:
- id: mid@mid1.ivxv.ee
address: ivxv1:4441
choices:
- id: choices@choices1.ivxv.ee
address: ivxv1:4442
voting:
- id: voting@voting1.ivxv.ee
address: ivxv1:4443
verification:
- id: verification@verification1.ivxv.ee
address: ivxv1:4444
smartid:
- id: smartid@smartid1.ivxv.ee
address: ivxv1:4445
votesorder:
- id: votesorder@votesorder1.ivxv.ee
address: ivxv1:4446
webeid:
- id: webeid@webeid1.ivxv.ee
address: ivxv1:4447
origin: https://ivxv1.test.ivxv.ee:443
sessionstatus:
- id: sessionstatus@sessionstatus1.ivxv.ee
address: ivxv1:4448
uute **id** ja **address** vastu:
.. code-block:: yaml
- id: zone1
services:
mid:
- id: mid@mid4.ivxv.ee
address: ivxv4:4441
choices:
- id: choices@choices4.ivxv.ee
address: ivxv4:4442
voting:
- id: voting@voting4.ivxv.ee
address: ivxv4:4443
verification:
- id: verification@verification4.ivxv.ee
address: ivxv4:4444
smartid:
- id: smartid@smartid4.ivxv.ee
address: ivxv4:4445
votesorder:
- id: votesorder@votesorder4.ivxv.ee
address: ivxv4:4446
webeid:
- id: webeid@webeid4.ivxv.ee
address: ivxv4:4447
origin: https://ivxv4.test.ivxv.ee:443
sessionstatus:
- id: sessionstatus@sessionstatus4.ivxv.ee
address: ivxv4:4448
.. attention::
Pane tähele, et on muutunud nii **id** kui ka **address**.
Vahendus- ja talletusteenuste **id** ja **address** jäävad samaks
**siis ja ainult siis**, kui need teenused ei olnud krahhinud masina
koosseisus, vastasel juhul tuleb sarnaselt muuta ka nende teenuste
**id** ja **address**.
#. Allkirjasta uus tehniline seadistus. Laadi see läbi
haldusveebiliidese, vasakult valides **Seadusted**.
#. SSH logi sisse haldusmasinasse **ivxv-admin** kasutajana::
$ sudo su - ivxv-admin
#. Laadi kõik teenuste TLS privaatvõtmed ja sertifikaadid, näiteks::
$ ivxv-secret-load --service=choices@choices4.ivxv.ee tls-key /opt/ivxv-install/service_definition/choices@choices4.ivxv.ee.key
$ ivxv-secret-load --service=voting@voting4.ivxv.ee tls-key /opt/ivxv-install/service_definition/voting@voting4.ivxv.ee.key
$ ivxv-secret-load --service=mid@mid4.ivxv.ee tls-key /opt/ivxv-install/service_definition/mid@mid4.ivxv.ee.key
$ ivxv-secret-load --service=smartid@smartid4.ivxv.ee tls-key /opt/ivxv-install/service_definition/smartid@smartid4.ivxv.ee.key
$ ivxv-secret-load --service=sessionstatus@sessionstatus4.ivxv.ee tls-key /opt/ivxv-install/service_definition/sessionstatus@sessionstatus4.ivxv.ee.key
$ ivxv-secret-load --service=verification@verification4.ivxv.ee tls-key /opt/ivxv-install/service_definition/verification@verification4.ivxv.ee.key
$ ivxv-secret-load --service=votesorder@votesorder4.ivxv.ee tls-key /opt/ivxv-install/service_definition/votesorder@votesorder4.ivxv.ee.key
$ ivxv-secret-load --service=webeid@webeid4.ivxv.ee tls-key /opt/ivxv-install/service_definition/webeid@webeid4.ivxv.ee.key
$ ivxv-secret-load --service=choices@choices4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/choices@choices4.ivxv.ee.pem
$ ivxv-secret-load --service=voting@voting4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/voting@voting4.ivxv.ee.pem
$ ivxv-secret-load --service=mid@mid4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/mid@mid4.ivxv.ee.pem
$ ivxv-secret-load --service=smartid@smartid4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/smartid@smartid4.ivxv.ee.pem
$ ivxv-secret-load --service=sessionstatus@sessionstatus4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/sessionstatus@sessionstatus4.ivxv.ee.pem
$ ivxv-secret-load --service=verification@verification4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/verification@verification4.ivxv.ee.pem
$ ivxv-secret-load --service=votesorder@votesorder4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/votesorder@votesorder4.ivxv.ee.pem
$ ivxv-secret-load --service=webeid@webeid4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/webeid@webeid4.ivxv.ee.pem
#. Lisa küpsiste signeerimisvõti::
$ ivxv-secret-load mid-token-key /opt/ivxv-install/service_definition/ticket.key
#. Lisa hääletamisteenuse TSP räsi signeerimisvõti::
$ ivxv-secret-load tsp-regkey /opt/ivxv-install/service_definition/tspreg.key
#. Käivita teenused::
$ ivxv-config-apply --type=election
Vahendusteenuse masin on krahhinud
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Kasuta käesoleva juhendi
**Teenuste masin on krahhinud, v.a vahendus- ja x-tee teenused**
peatükki, v.a punktid 6, 10-12.
.. note::
Punktis 8 tuleb ainult asendada vana vahendusteenuse **id** ja **address**:
.. code-block:: yaml
- id: zone1
services:
proxy:
- id: proxy@proxy1.ivxv.ee
address: proxy1:443
uute vastu:
.. code-block:: yaml
- id: zone1
services:
proxy:
- id: proxy@proxy4.ivxv.ee
address: proxy4:443
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/recovery/recovery_storageservice.inc
================================================
Krahhi toimumise indikaatorid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Haldusveebiliides.
Vali **Teenused** vasakult menüüst. Kui talletusteenus on krahhinud,
siis tema **Seisund** on **Tõrge**.
Halduskäsurealiides.
Logi sisse **ivxv-admin** kasutajana ja päri teenuste statistikat::
$ sudo su - ivxv-admin
$ ivxv-status
Kui talletusteenus on krahhinud, siis tema **State** on **FAILURE**.
Krahhist taastumise eeldused
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Krahhi taastumiseks piisab kui teenuste CA TLS privaatvõti ja sertifikaat on
alles, mida saab kasutada teenuse varuvõtmete ja -sertifikaatide
genereerimiseks. Samas, saab ka enne valimisi teenuse varuvõtmed ja
-sertifikaadid ette genereerida.
Kui kõikide teenuste CA on sama, siis tasub valija- ja kontrollrakenduste
seadistusse panna hoopis CA TLS sertifikaadi. Juhul kui CA on teenustel erinev,
siis peab panema kõik teenuste TLS sertifikaadid rakenduste seadistusse
vahetult enne valimisi.
Krahhi võimalik mõju hääletamistulemusele
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Kõik päringud mis saadetakse vastu krahhinud talletusteenuse
masinat ebaõnnestuvad. Valija ei saa autentida, ega hääletada.
Krahhist taastumise sammud
^^^^^^^^^^^^^^^^^^^^^^^^^^
Krahhi saab liigitada järgmiselt:
#. Talletusteenus on terve, ning vajab ainult taaskäivitamist
#. Talletusteenuse andmed (võti, sertifikaat jne) on rikutud või masina
krahh
#. Talletusteenuse lähtekoodis on viga
Talletusteenus on terve, ning vajab ainult taaskäivitamist
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Kasuta :ref:`recovery-stateless` juhendis oleva
**Teenus on terve, ning vajab ainult taaskäivitamist, v.a x-tee teenus**
peatükki
Talletusteenuse andmed (võti, sertifikaat jne) on rikutud või masina krahh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. seealso::
* Kasuta :ref:`recovery-stateless` juhendis oleva
**Teenuse masin on krahhinud, v.a vahendus- ja x-tee teenused**
peatükki
.. note::
Punktis 10 tuleb asendada vana talletusteenuse **id** ja **address** väljad:
.. code-block:: yaml
- id: zone1
services:
storage:
- id: storage@storage1.ivxv.ee
address: ivxv1:2379
peeraddress: ivxv1:2380
uute vastu:
.. code-block:: yaml
- id: zone1
services:
storage:
- id: storage@storage4.ivxv.ee
address: ivxv4:2379
peeraddress: ivxv4:2380
Punktis 12 tuleb uuendada ka talletusteenuse TLS privaatvõti::
$ ivxv-secret-load --service=storage@storage4.ivxv.ee tls-key /opt/ivxv-install/service_definition/storage@storage4.ivxv.ee.key
ja sertifikaat:::
$ ivxv-secret-load --service=storage@storage4.ivxv.ee tls-cert /opt/ivxv-install/service_definition/storage@storage4.ivxv.ee.pem
Veendu, et asendamine läks sujuvalt läbi:
#. SSH logi uue koguja masinasse *root* kasutajana::
$ sudo su
#. Päri andmebaasi klastri seisu, näiteks, kui klaster koosneb
*ivxv4*, *ivxv2*, *ivxv3* masinatest::
$ cd /var/lib/ivxv/service/storage@storage4.ivxv.ee
$ env ETCDCTL_API=3 etcdctl --endpoints=ivxv4:2379,ivxv2:2379,ivxv3:2379 --cert tls.pem --key tls.key --cacert ca.pem endpoint status -w table
Talletusteenuse lähtekoodis on viga
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Kui talletusteenuse lähtekoodis on viga, siis seda saab
asendada uuema versiooniga, olemasoleva andmebaasi
klastrit rikumata.
.. seealso::
* Kasuta :ref:`recovery-stateless` juhendis oleva
**Teenuse lähtekoodis on viga, v.a x-tee teenus**
peatükki
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/seadistused.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Kogumisteenuse seadistused
==========================
Logimise seadistused
--------------------
Kogumisteenuse logi hoitakse logi tekkimise asukohas ja dubleeritakse
logiserveritesse. Logide kogumiseks ja edastamiseks kasutatakse vaikimisi
*syslog*-teenust ``rsyslog``.
Kogumisteenus toetab kahte liiki logiservereid, mis
kirjeldatakse kogumisteenuse tehnilises seadistuses.
#. Kogumisteenuse logikogumisteenus on kogumisteenuse sisemine teenus ja seda
võib süsteemis olla mitu isendit.
#. Tegevusmonitooringu server on kogumisteenuse jaoks
väline teenus ja seda võib olla ainult üks isend.
Kogumisteenusele tehniliste seadistuse rakendamisel paigaldab haldusteenus
logikogumisteenuse enne teise teenuseid, et teenuste poolt toodetav logi
saaks võimalikult varakult ka logikogumisteenusesse kogutud.
.. note::
Kogumisteenuse logiteated tekivad pärast valimiste seadistuse esmakordset
laadimist, kuna teenused käivitatakse selle seadistuse laadimise järel.
Logi tootva teenuse logimise korraldus
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Logi tootva teenuse logimise seadistuse genereerib haldusteenus vastavalt
tehnilistele seadistustele.
#. Iga teenus logib kohalikku *syslog*-teenusesse;
#. Kõigi teenusmasinate *syslog*-teenused on seadistatud kogumisteenuse logi
salvestama kohalikku failisüsteemi (:file:`/var/log/ivxv/ivxv-YYYY-MM-DD-HH.log`);
#. Kõigi teenusmasinate (peale logikogumisteenuse) *syslog*-teenused on
seadistatud edastama üle võrgu:
#. Kõiki logikirjeid logikogumisteenusesse (protokoll: RELP);
#. Kogumisteenuse logikirjeid tegevuslogi monitooringu serverisse
(protokoll: RELP);
Logikogumisteenuse korraldus
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Logikogumisteenuse seadistusfail tuleb teenuse tarkvarapakist
(:ref:`ivxv-logcollector.conf `).
#. Logikogumisteenus võtab logikirjeid vastu RELP-protokolli kaudu;
#. Kogumisteenuse logikirjeid kirjutatakse JSON-vormingus faili
:file:`/var/log/ivxv/ivxv-YYYY-MM-DD-HH.log` (välja arvatud päringu- ja
silumislogi);
#. Kogumisteenuse päringulogi kirjutatakse rsyslogi standardvormingus faili
:file:`/var/log/ivxv/ivxv-request-YYYY-MM-DD-HH.log`;
#. Kogumisteenuse silumislogi ja teiste oluliste teenuste (haproxy, etcd,
rsyslog, sshd) logi kirjutatakse rsyslogi standardvormingus faili
:file:`/var/log/ivxv/ivxv-debug-YYYY-MM-DD-HH.log`.
Talletamisteenuse seadistused
-----------------------------
Hetkel ainus talletamisteenuse teostus kasutab hajusat võti-väärtus andmebaasi
``etcd``. Korraga käivitatakse mitu ``etcd`` isendit, mis saavutavad omavahel
konsensuse talletatud andmete osas.
Talletusteenuse sujuvaks tööks võib olla vajalik osade ``etcd`` parameetrite
häälestamine konkreetse evituskeskkonna jaoks. Selleks tuleb teenuse masinas
luua fail :file:`/etc/default/ivxv` ning sinna lisada järgmistes jaotistes
kirjeldatud read. Pärast faili loomist või selle sisu muutmist tuleb uute
väärtuste rakendamiseks talletusteenus taaskäivitada. Parameetri puudumise
korral kasutatakse vaikeväärtust.
Seadistuste väärtuste valimisel on abiks ``etcd`` dokumentatsioon aadressil
https://coreos.com/etcd/docs/latest/tuning.html.
Ajaparameetrid
^^^^^^^^^^^^^^
``etcd`` klaster valib ühe liikmetest juhiks, mis koordineerib kõiki
andmemuudatusi. Lisaks pingib juht perioodiliselt kõiki ülejäänud klastri
liikmeid aitamaks tuvastada olukorda, kus ühendus juhiga on katkenud: kui mõni
klastri liikmetest pole piisavalt kaua ühtegi pingi saanud, algatab see uue
juhi valimise.
Suurema võrgu- või kettalatentsuse tagajärjel võib juhi ping liialt viibida
ning põhjustada uue juhi valimise. Tõrgete korral on juhivahetus süsteemi
loomulik osa, ent töötava süsteemi puhul tarbetu koormus. Seetõttu tuleks
seadistada juhi pingimise tihedust ``ETCD_HEARTBEAT_INTERVAL`` ning teiste
liikmete ooteaega ``ETCD_ELECTION_TIMEOUT`` vastavalt evituskeskkonna
latentsusele::
ETCD_HEARTBEAT_INTERVAL=100
ETCD_ELECTION_TIMEOUT=1000
Mõlemad väärtused on millisekundites ning vaikimisi vastavalt 100ms ja 1000ms.
.. important::
Ühes klastris peavad kõigil talletamisteenuse isenditel olema samad
ajaparameetrid. Vastasel korral võib esineda stabiilsusprobleeme erinevate
pingi ootuste tõttu.
Hetkvõtete parameetrid
^^^^^^^^^^^^^^^^^^^^^^
``etcd`` peab logi kõigist andmemuudatustest. Vältimaks logi liiga suureks
kasvamist tehakse andmebaasi seisust perioodiliselt hetkvõtteid ning eelnev
logi kustutatakse. Kui talletamisteenus kasutab liiga palju mälu või
kettaruumi, siis võib aidata tihedam hetkvõtete tegemine.
Uus hetkvõte tehakse iga ``ETCD_SNAPSHOT_COUNT`` andmemuudatuse järel, seega
madalam väärtus toob kaasa tihedamad hetkvõtted ning väiksema logi suuruse::
ETCD_SNAPSHOT_COUNT=10000
Vaikimisi tehakse hetkvõte iga 10000 muudatuse järel.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/spelling_wordlist.txt
================================================
id
x
apache
cron
etcd
haproxy
rsyslog
rsyslogi
sshd
systemd
ubuntu
zabbix
zabbixiga
ivxv
voter
list
download
db
reset
collector
init
cmd
load
copy
log
to
logmon
update
packages
backup
crontab
config
validate
apply
secret
export
votes
create
data
dirs
dump
generate
processor
input
choices
voting
eventlog
users
voterstats
daemon
helper
CSV
ASiC
IP
PEM
SSH
esmakordset
hosti
hostid
hostide
hostidel
hostidele
hostidest
hostil
hostile
hostinimi
hostist
hostiv
krahhib
krahhimise
krahhinud
pingib
pingimise
Diffie
Hellmani
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-admin-helper.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-admin-helper kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-admin-helper:
ivxv-admin-helper
`````````````````
:command:`ivxv-admin-helper --help`:
.. code-block:: text
Usage:
ivxv-admin-helper check-service-config
Check service configuration
ivxv-admin-helper copy-logs-to-logmon
Copy IVXV service log files to Log Monitor
ivxv-admin-helper restart-service
Restart service
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-admin-sudo.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-admin-sudo kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-admin-sudo:
ivxv-admin-sudo
```````````````
:command:`ivxv-admin-sudo --help`:
.. code-block:: text
Usage:
ivxv-admin-sudo backup-ballot-box
Backup ballot box (in backup service)
ivxv-admin-sudo backup-log
Backup log file (in backup service)
ivxv-admin-sudo create-ssh-access
Create management service access to account in service host
ivxv-admin-sudo init-host
Initialize service host
ivxv-admin-sudo init-service
Initialize service data directory.
Value 'backup' is used for all backup services
ivxv-admin-sudo install-pkg
Install IVXV package with dependencies
ivxv-admin-sudo prepare-ballot-box-backup
Prepare votes backup file in voting service
ivxv-admin-sudo remove-admin-root-access
Remove management service access to service host root account
ivxv-admin-sudo rsyslog-config-apply
Apply rsyslog config file for IVXV logging
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-agent-daemon.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-agent-daemon kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-agent-daemon:
ivxv-agent-daemon
`````````````````
:command:`ivxv-agent-daemon --help`:
.. code-block:: text
IVXV Collector Management Service agent daemon.
Usage: ivxv-agent-daemon [--get-stats] [--register-status]
Options:
--get-stats Copy statistics from Log Monitor to
Management Service without daemonizing.
--register-status Register collector state (if not registered).
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-backup-crontab.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-backup-crontab kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-backup-crontab:
ivxv-backup-crontab
```````````````````
:command:`ivxv-backup-crontab --help`:
.. code-block:: text
Generate crontab for IVXV backup automation.
This utility must be called as editor by crontab utility:
$ env VISUAL=ivxv-backup-crontab crontab -e
Usage: ivxv-backup-crontab
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-backup.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-backup kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-backup:
ivxv-backup
```````````
:command:`ivxv-backup --help`:
.. code-block:: text
Backup IVXV collector data.
Usage: ivxv-backup management-conf
ivxv-backup ballot-box []
ivxv-backup log
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-cmd-load.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-cmd-load kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-cmd-load:
ivxv-cmd-load
`````````````
:command:`ivxv-cmd-load --help`:
.. code-block:: text
Load command to IVXV Collector Management Service.
Usage: ivxv-cmd-load [--autoapply] [--show-version] FILE
Options:
Command type. Possible values are:
- election: election config
- technical: collector technical config
- trust: trust root config
- choices: choices list
- districts: districts list
- voters: voters list or voters list skipping
- user: user account and role(s)
--autoapply Apply command file automatically (by Agent Daemon).
--show-version Output config file version and exit.
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-collector-init.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-collector-init kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-collector-init:
ivxv-collector-init
```````````````````
:command:`ivxv-collector-init --help`:
.. code-block:: text
Initialize IVXV Collector.
Usage: ivxv-collector-init [--force]
Options:
--force Don't ask user confirmation
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-config-apply.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-config-apply kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-config-apply:
ivxv-config-apply
`````````````````
:command:`ivxv-config-apply --help`:
.. code-block:: text
Apply loaded IVXV Collector config to services.
Usage: ivxv-config-apply [--type=] ... [] ...
Options:
--type= Config type. Possible values are:
- election: election config file
- technical: collector technical config file
- choices: choices list
- districts: districts list
- voters: voters list
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-config-validate.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-config-validate kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-config-validate:
ivxv-config-validate
````````````````````
:command:`ivxv-config-validate --help`:
.. code-block:: text
Validate IVXV collector config files.
Validate single config files. Also validate voting lists consistency if
multiple lists are provided.
Usage:
ivxv-config-validate [--plain] [--trust=]
[--technical=] [--election=]
[--choices=] [--districts=]
[--voters= ...]
Options:
--plain Validate plain config file (Default: BDOC container)
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-copy-log-to-logmon.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-copy-log-to-logmon kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-copy-log-to-logmon:
ivxv-copy-log-to-logmon
```````````````````````
:command:`ivxv-copy-log-to-logmon --help`:
.. code-block:: text
Copy IVXV log files from service hosts to Log Monitor.
This utility transports collected IVXV log files from IVXV services
(including Log Collector Service) to Log Monitor.
Usage: ivxv-copy-log-to-logmon [--log-level=] [ ...]
Options:
Service host name.
--log-level= Logging level [Default: INFO].
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-create-data-dirs.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-create-data-dirs kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-create-data-dirs:
ivxv-create-data-dirs
`````````````````````
:command:`ivxv-create-data-dirs --help`:
.. code-block:: text
Create IVXV Collector Management Service data directories.
NOTE: Directory owners and permissions are not set by this utility!
Usage: ivxv-create-data-dirs
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-db-dump.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-db-dump kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-db-dump:
ivxv-db-dump
````````````
:command:`ivxv-db-dump --help`:
.. code-block:: text
Dump IVXV Collector Management Service database.
Usage: ivxv-db-dump [] ...
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-db-reset.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-db-reset kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-db-reset:
ivxv-db-reset
`````````````
:command:`ivxv-db-reset --help`:
.. code-block:: text
Reset IVXV Collector Management Service database.
Usage: ivxv-db-reset [--force]
Options:
--force Don't ask user confirmation
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-eventlog-dump.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-eventlog-dump kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-eventlog-dump:
ivxv-eventlog-dump
``````````````````
:command:`ivxv-eventlog-dump --help`:
.. code-block:: text
Dump IVXV Collector Management event log in human readable format.
Usage: ivxv-eventlog-dump
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-export-votes.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-export-votes kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-export-votes:
ivxv-export-votes
`````````````````
:command:`ivxv-export-votes --help`:
.. code-block:: text
Export collected votes.
This utility copies current ballot box from voting service to backup
service and outputs ballot box content.
Usage: ivxv-export-votes [--consolidate]
Options:
--consolidate Consolidate all collected votes
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-generate-processor-input.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-generate-processor-input kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-generate-processor-input:
ivxv-generate-processor-input
`````````````````````````````
:command:`ivxv-generate-processor-input --help`:
.. code-block:: text
Generate input for processor application.
This utility generates ZIP container with data files
for processor application to validate ballot box:
1. District list;
2. Voter lists;
3. Validation key for vote registration requests;
4. Configuration for processor application.
Usage: ivxv-generate-processor-input
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-secret-load.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-secret-load kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-secret-load:
ivxv-secret-load
````````````````
:command:`ivxv-secret-load --help`:
.. code-block:: text
Load secret data to IVXV services.
This utility loads file that contains secret data to services.
Supported secret types are:
tls-cert - TLS certificate for service.
Certificate (and key) is used for securing
communication between services and service instances.
tls-key - TLS key for service.
Key is used together with service certificate.
tsp-regkey - PKIX TSP registration key for voting services.
Key is used for signing Time Stamp Protocol requests.
Key file must be in PEM format and must be not password protected.
mid-token-key - Mobile ID identity token for
choices, mobile-id and voting services.
Key file must be 32 bytes long.
Usage: ivxv-secret-load [--service=]
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-service.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-service kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-service:
ivxv-service
````````````
:command:`ivxv-service --help`:
.. code-block:: text
Manage IVXV services.
Usage: ivxv-service ...
Options:
Management action: start, stop, restart, ping
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-status.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-status kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-status:
ivxv-status
```````````
:command:`ivxv-status --help`:
.. code-block:: text
Output IVXV Collector state.
Usage: ivxv-status [--json] [--service= ...] [ ...]
Options:
--json Output full data in JSON format.
Note: filters have no effect in JSON output.
--service= Filter output by service ID.
Note: This filter conflicts other section
filters than "smart" or "service".
Filter output by section. Possible values are:
* collector - collector state;
* election - election data;
* config - versions of loaded config;
* list - versions of loades lists;
* service - service information;
* ext - external service information;
* storage - storage information;
* smart - output only relevant data;
* all - output all data;
[Default: smart].
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-update-packages.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-update-packages kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-update-packages:
ivxv-update-packages
````````````````````
:command:`ivxv-update-packages --help`:
.. code-block:: text
Update service packages in IVXV service hosts.
This utility checks versions of software packages in service hosts
and installs new versions if required.
Usage: ivxv-update-packages [--force]
Options:
--force Update even package version does not require update
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-users-list.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-users-list kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-users-list:
ivxv-users-list
```````````````
:command:`ivxv-users-list --help`:
.. code-block:: text
List IVXV Collector Management Service registered users.
Usage: ivxv-users-list
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-voter-list-download.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-voter-list-download kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-voter-list-download:
ivxv-voter-list-download
````````````````````````
:command:`ivxv-voter-list-download --help`:
.. code-block:: text
Download next available voter list changeset from VIS to IVXV Collector
Management Service.
Usage:
ivxv-voter-list-download [--output-report=] [--log-level=]
Options:
--output-report= Write JSON report about HTTP request to VIS.
--log-level= Logging level [Default: INFO].
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-voterstats.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-voterstats kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-voterstats:
ivxv-voterstats
```````````````
:command:`ivxv-voterstats --help`:
.. code-block:: text
Import voter stats from voting service and export common stats to VIS.
Usage: ivxv-voterstats [--action=] [--file=]
[--service-id=] [--log-level=]
Options:
Stats type "common" or "detail".
--action= Limit actions for "common" stats type.
Possible values are "import" and "export".
[Default: all]
--file= Path to stats file.
--service-id= Voting service ID [Default: random].
--log-level= Logging level [Default: INFO].
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/utiliitide-abiteave/ivxv-voting-sessions.inc
================================================
.. Elektroonilise hääletamise infosüsteem IVXV
.. Käsureautiliidi ivxv-voting-sessions kasutusjuhend
.. SEE FAIL ON GENEREERITUD AUTOMAATTESTI POOLT:
.. * features/steps/autodoc.py
.. * features/autodoc-utilities.feature
.. _ivxv-voting-sessions:
ivxv-voting-sessions
````````````````````
:command:`ivxv-voting-sessions --help`:
.. code-block:: text
Import list of voting sessions from Log Monitor.
Session data is in CSV format.
Usage: ivxv-voting-sessions (vote | verify) [--anonymize]
[--log-level=]
Options:
Write sessions to file.
--anonymize Anonymize session data
(IP addresses and ID codes).
--log-level= Logging level [Default: INFO].
================================================
FILE: Documentation/et/kogumisteenuse_haldusjuhend/ylevaade.rst
================================================
.. IVXV kogumisteenuse haldusjuhend
Ülevaade
========
Kogumisteenuse ülevaade
-----------------------
IVXV kogumisteenus on elektroonilise
hääletuse käigus hääletajate teenindamiseks ja häälte kogumiseks mõeldud
tarkvara.
Kogumisteenus koosneb mikroteenustest ja nende haldamiseks mõeldud
haldusteenusest. Haldusteenuse kasutamine on käsureapõhine. Osade funktsioonide
kasutamist on laiendatud veebipõhise liidesega, mida on kirjeldatud dokumendis
``IVXV kogumisteenuse haldusliidese
kasutusjuhend``.
.. attention::
Kogumisteenus paigaldatakse ja seadistatakse eraldi iga hääletuse
läbiviimiseks. Ühe kogumisteenusega on korraga võimalik teenindada ainult
ühte hääletust.
Lisamaterjalid
--------------
Käesolevas dokumendis kasutatakse mõisteid ja definitsioone, mis on kirjeldatud
dokumendis ``IVXV-ÜK-0.95 Elektroonilise hääletamise üldraamistik ja selle
kasutamine Eesti riiklikel valimistel``:
* E-hääletamise etapid;
* Süsteemi osapooled ja komponendid.
Kogumisteenuse kasutajate rollid
--------------------------------
Kogumisteenuses on kasutusel järgnevad rollid:
#. **Kogumisteenuse haldur** tegeleb kogumisteenuse tehnilise haldamisega;
#. **Valimiste haldur** tegeleb valimiste seadistuste kehtestamisega;
#. **Vaataja** pääseb ligi haldusteenuse kaudu väljastatavatele seisundi- ja
statistikaandmetele;
Rollide täpsem kirjeldus asub dokumendis ``Elektroonilise hääletamise
infosüsteemi IVXV seadistuste koostamise juhend``.
Süsteemi komponendid
--------------------
Kogumisteenus
^^^^^^^^^^^^^
**Haldusteenus** on kogumisteenuse haldamise teenus. Haldusteenuse kaudu
juhitakse ja jälgitakse kogumisteenust alates paigaldusest kuni mahavõtmiseni.
Vaata lähemalt lõigus :ref:`haldusteenus`.
**Logikoguja** on kogumisteenuse sisemine logiserver, mis kogub ja säilitab
kõigi kogumisteenuste alamteenuste logisid. Logikogujasse kogutud logid antakse
valimiste lõppedes üle korraldajale.
**Sisemine varundus** on kogumisteenuse varundusteenus, mis varundab kõigi
alamteenuste andmeid ja teeb need lihtsa liidese (failisüsteemi kataloog) kaudu
kättesaadavaks välisele varundusteenusele.
**Alamteenused** on kogumisteenuse eri lõikude eest vastutavad teenused.
.. _tugiteenused:
Tugiteenused
^^^^^^^^^^^^
**Logiseire** on kogumisteenuse logide analüüsiks ja jälgimiseks mõeldud
seireprogramm.
**Tehniline seire** on kogumisteenuse tehnilise toimimise jälgimiseks mõeldud
seireprogramm.
**Väline varundus** on kogumisteenuse sisemisest varunduse poolt varundatud
andmete säilitamiseks mõeldud väline varundusteenus.
.. _välisteenused:
Välised teenused
^^^^^^^^^^^^^^^^
Välised teenused on läbiviidavatele valimistele kehtestatud nõuetest sõltuvad
teenused, millega kogumisteenus on võimeline liidestuma. Väliste teenuste hulka
kuuluvad Registreerimisteenus, Ajatempliteenus, Mobiil-ID
teenus, Smart-ID teenus, OCSP teenus vms.
Ülevaade toimingutest
---------------------
* Hääletamiseelsel etapil:
* Kirjeldatakse kogumisteenuse poolt kasutatavad :ref:`välised teenused
`;
* Valmistatakse ette kogumisteenuse :ref:`tugiteenused `;
* Koostatakse kogumisteenuse seadistused (usaldusjuur, tehnilised
seadistused ja valimiste seadistused);
* Genereeritakse teenuse toimimiseks vajalikud krüptovõtmed ja
sertifikaadid;
* Valmistatakse ette kogumisteenuse käitamiseks vajalik taristu;
* Paigaldatakse haldusteenus;
* Rakendatakse seadistused haldusteenusele, mille põhjal haldusteenus
paigaldab ja seadistab kogumisteenuse alamteenused.
* Hääletamisetapil
* Jälgitakse teenuse toimimist;
* Luuakse e-valimiskastist varukoopiaid.
* Töötlusetapil
* Eksporditakse kogumisteenusesse kogutud andmed:
#. konsolideeritud e-valimiskast kogutud häältega.
* Lugemisetapil
* Lugemisetapil kogumisteenust ei kasutata;
================================================
FILE: Documentation/et/seadistuste_koostejuhend/Makefile
================================================
include ../../common.mk
================================================
FILE: Documentation/et/seadistuste_koostejuhend/annotatsioon.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
Annotatsioon
------------
Käesolev dokument sisaldab elektroonilise hääletamise infosüsteemi IVXV
rakenduste ja kogumisteenuse seadistuste ülevaadet ja koostamise juhendit.
================================================
FILE: Documentation/et/seadistuste_koostejuhend/auditirakendus.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _app-auditor:
Auditirakendus
==============
IVXV võtmerakendus võimaldab kasutada tõestatavat dekrüpteerimist -
koos tulemusega väljastatakse lugemistõend e-häälte korrektse avamise
kohta. Vältimaks häälte salajasuse rikkumist lugemistõendi kontrollil
võimaldab IVXV kasutada häälte miksimist, mis säilitab häälte sisu
kuid eemaldab krüptograafiliselt seose konkreetse hääle ja selle hääle
andnud isiku vahel.
IVXV kasutab e-häälte miksimiseks tarkvara Verificatum, mis võtab
sisendiks krüpteeritud hääled ning annab väljundiks miksitud
krüpteeritud hääled ja miksimistõendi.
Miksimistõendi ja lugemistõendi kontroll toimub auditirakenduse tööriistadega
*convert*, *mixer* ja *decrypt*.
Töötlemisrakenduse toimingute kontroll toimub auditirakenduse tööriistaga
*integrity*.
#. Tööriist *convert* kontrollib, teisenduste korrektsust IVXV
andmevormingute ja Verificatumi andmevormingute vahel.
#. Tööriist *mixer* kontrollib miksimistõendi korrektsust.
#. Tööriist *decrypt* kontrollib lugemistõendi korrektsust.
#. Tööriist *integrity* kontrollib töötlemisrakenduse logide korrektsust.
E-häälte korrektse kokkulugemise kontrolliks on vajalik ja piisav
kasutada kõiki nelja auditirakenduse tööriista.
Kõigi tööriistade kasutamine eeldab allkirjastatud usaldusjuure ja
konkreetse tööriista seadistuste olemasolu. Alljärgnevalt kirjeldame
konkreetsete tööriistade seadistusi.
.. _auditor-convert:
E-häälte korrektse teisendamise kontroll
----------------------------------------
Verificatumi poolt koostatud miksimistõendi formaat on erinev IVXV raamistikus
kasutatavast formaadist, samuti erinevad IVXV ning Verificatumi
krüpteeritud häälte formaadid. IVXV raamistikku on pakendatud
adapterid formaaditeisendusteks, auditirakendus pakub võimalust nende
teisenduste korrektsuse kontrolliks.
Tööriist *convert* kontrollib, et Verificatumi poolt väljastatud
miksimistõend vastab failidele IVXV raamistikus.
:convert.input_bb: IVXV miksimiseelse e-valimiskasti asukoht.
:convert.output_bb: IVXV miksimisjärgse e-valimiskasti asukoht.
:convert.pub: IVXV avaliku võtme asukoht.
:convert.protinfo: Verificatumi miksimise protokollifaili asukoht.
:convert.proofdir: Verificatumi miksimistõendi asukoht.
:file: `auditor.convert.yaml`:
.. literalinclude:: config-examples/auditor.convert.yaml
:language: yaml
:linenos:
.. _auditor-mix:
E-häälte miksimistõendi kontroll
--------------------------------
Tööriist *mixer* kontrollib Verificatumi miksimistõendi korrektsust.
:mixer.protinfo: Verificatumi miksimistõendi protokollifaili asukoht.
:mixer.proofdir: Verificatumi miksimistõendi asukoht.
:mixer.threaded: Kasuta mitmelõimelist implementatsiooni. Vaikimisi
väärtus on väär. Kasutatavate lõimede arv sõltub
käsurea-argumentidest. Käsurea-argumentide puudumise
korral valitakse optimaalne lõimede arv lähtudes
tuvastatud tuumade arvust.
:file:`auditor.mixer.yaml`:
.. literalinclude:: config-examples/auditor.mixer.yaml
:language: yaml
:linenos:
.. _auditor-decrypt:
E-häälte lugemistõendi kontroll
-------------------------------
Tööriist *decrypt* kontrollib lugemistõendi korrektsust.
:decrypt.proofs: Kehtivate sedelite lugemistõendi asukoht.
:decrypt.pub: Dekrüpteerimiseks kasutatud salajasele võtmele vastava avaliku
võtme asukoht.
:decrypt.discarded: Loend kehtetutest sedelitest.
:decrypt.anon_bb: Töötlemisrakenduse või miksimisrakenduse poolt loodud
e-valimiskast anonüümistatud häältega.
:decrypt.plain_bb: Dekrüpteeritud valimiskast.
:decrypt.tally: Elektroonilise hääletamise tulemus.
:decrypt.candidates: Valimise valikute nimekiri allkirjastatud kujul.
:decrypt.districts: Valimise ringkondade nimekiri allkirjastatud kujul.
:decrypt.out: Lugemistõendi kontrolli tulemuste asukoht. Tegemist on
kataloogiga kuhu salvestatakse sedelid, mille
lugemistõend oli kehtetu.
:decrypt.invalidity_proofs: Valikuline kehtetute sedelite lugemistõendi
asukoht.
:decrypt.abort_early: Valikuline auditirakenduse peatamine esimese läbikukutud
kontrolli korral. Vaikimisi väärtus on tõene.
:file:`auditor.decrypt.yaml`:
.. literalinclude:: config-examples/auditor.decrypt.yaml
:language: yaml
:linenos:
.. _auditor-integrity:
Töötlemisrakenduse logide kontroll
----------------------------------
Tööriist *integrity* kontrollib, et töötlemisrakenduse poolt väljastatud
logid ühendavad e-valimiskasti anonüümitud e-valimiskastiga.
:integrity.ballotbox: Kogumisteenusest väljastatud e-valimiskast.
:integrity.anon_bb: Töötlemisrakenduse poolt loodud e-valimiskast
anonüümistatud häältega.
:integrity.log_accepted: Vastuvõetud häälte *log1* fail.
:integrity.log_squashed: Tühistatud korduvhäälte häälte *log2* fail.
:integrity.log_revoked: Jaoskonnainfo põhjal tühistatud ja ennistatud häälte
*log2* fail.
:integrity.log_anonymised: Lugemisele läinud häälte *log3* fail.
:integrity.bb_errors: E-valimiskasti töötlemisvigade raport.
:integrity.abort_early: Valikuline auditirakenduse peatamine esimese
läbikukutud kontrolli korral. Vaikimisi
väärtus on tõene.
:file: `auditor.integrity.yaml`:
.. literalinclude:: config-examples/auditor.integrity.yaml
:language: yaml
:linenos:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/DEMO_SK_TIMESTAMPING_AUTHORITY_2020.pem
================================================
-----BEGIN CERTIFICATE-----
MIIEgzCCA2ugAwIBAgIQcGzJsYR4QLlft+S73s/WfTANBgkqhkiG9w0BAQsFADB9
MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
czEwMC4GA1UEAwwnVEVTVCBvZiBFRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBSb290
IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwHhcNMjAxMTMwMjEwMDAwWhcN
MjUxMTMwMjEwMDAwWjB/MSwwKgYDVQQDDCNERU1PIFNLIFRJTUVTVEFNUElORyBB
VVRIT1JJVFkgMjAyMDEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxDDAKBgNVBAsM
A1RTQTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMQswCQYDVQQGEwJFRTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMz8yTHQyp8gzyPnKt/CQg+0
7c/ogDl4V1SmyFGPT+lQaYZvXIKNNZyJlzII+vNnsok6hIRvAX5ffDZs8dkeNdo8
QOuQ81QbLn5JJT2VuSppvpnqpFCiL+uWY0/nnwNmyiDueMkUDDJavbSPCkWwmW+a
QZCNGd+krSTL/zNHCfOt7cAVDQAL9C4Ue7olufIZoDCTqRA00S8bGbTQPyTS8uUM
EuwWc4JYZqEu4c24bIGhbKoCOSR60WrD6cBoZXLlqwDbWdkX5SLjJ9dTCxGW+pLp
nAWx+KqJY3HkDiSZCT46JXOaoVzmcFx3l7eqQfqWgkzRZs9TJvqQSLQ+vgSAOREC
AwEAAaOB/DCB+TAOBgNVHQ8BAf8EBAMCBsAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH
AwgwHQYDVR0OBBYEFJ8v3/rNs6jK0l3BxyVSixDYEOJHMB8GA1UdIwQYMBaAFLU0
Cp2lLxDF5yEOvsSxZUcbA3b+MIGOBggrBgEFBQcBAQSBgTB/MCEGCCsGAQUFBzAB
hhVodHRwOi8vZGVtby5zay5lZS9haWEwWgYIKwYBBQUHMAKGTmh0dHBzOi8vd3d3
LnNrLmVlL3VwbG9hZC9maWxlcy9URVNUX29mX0VFX0NlcnRpZmljYXRpb25fQ2Vu
dHJlX1Jvb3RfQ0EuZGVyLmNydDANBgkqhkiG9w0BAQsFAAOCAQEAWWkQKAbEAT77
n8L42gw5ql7BO1fdmUgRJRRwWL9Vo9l1c50lqieR8MUToF4wpF6D0PJUx9FDcKL0
fbURFTRuETCgGekYmCjMbVQCiv6W38vMsIdJLBWjo2oT2AjtJ2VakwkrzzSxOSBr
F5u0hPsAkP0VkBhmW1E0DHfm1Bti2xk5t9OsJMJqfTTl8v1HXktlnxi6WdUzLBcS
dknFePDnSYoT3xOfOz1IlB3Ta729bgglAjVBEoWyrKX4kTjZPChxseMntXaW/pN+
Agm3Xa9hniXdK4KamzX8d8LJ+qObxmc9TXmksbWZVup0ktfJYWIHCwZjmQukAed/
pIX8UV3N9w==
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/Stats_Server_Certificate.pem
================================================
-----BEGIN CERTIFICATE-----
MIIDbDCCAlQCCQCc0vA55LL2hDANBgkqhkiG9w0BAQsFADB4MRwwGgYDVQQDDBNp
dnh2LWFkbWluLWRlbW9jZXJ0MSUwIwYDVQQKDBxJVlhWIGNvbGxlY3RvciBhZG1p
bmlzdHJhdG9yMRIwEAYDVQQLDAlCREQgdGVzdHMxEDAOBgNVBAcMB1Rlc3RFbnYx
CzAJBgNVBAYTAkVFMB4XDTE2MTIwOTIxMTMzN1oXDTI2MTIwNzIxMTMzN1oweDEc
MBoGA1UEAwwTaXZ4di1hZG1pbi1kZW1vY2VydDElMCMGA1UECgwcSVZYViBjb2xs
ZWN0b3IgYWRtaW5pc3RyYXRvcjESMBAGA1UECwwJQkREIHRlc3RzMRAwDgYDVQQH
DAdUZXN0RW52MQswCQYDVQQGEwJFRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBANqBKqPiPEv4TE3UnO6pym8ejzsY6WaTSnqJE2mSoXBKquc/tK3eLon4
XdkgJI6wz/x2ZkPbUUuQW1NBhHGXY7W5Yu5OQ1lIKi/UAirPoQg4qsyyXkti51+R
HeepaKB8ll7+ALXBTDLvNbIn9NN2pPp3Lf+j0vJDvgL2aQYfcUMKe0E6Vdr0r2fY
DShCrLssNNlkY9wHPxBPKY2MPeIQxrCSI8OAjH5vGXoU0QLUAxTh6kFowU438tGp
3Hxa4IbaaACNhghRudxcRi8SYCRAgc3zuzOFtkU2k3aetZT60Zcpuds+ZlPQl8Sd
RJ6ToGQ7dO/Pvwpc+D8MEmwFSgHJb7ECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA
IaOkADkkoJo+zFhKL4EYJpnq22nCB2FHYjuHQDzyyjfHU9r2J11s66ol4tWj/k9u
FnQq9xE19L+QI3DsDA/q8XlRlhMKYRE8Pm5zpoC99+6QS34qbOvNR65pq3WH6J3m
hWLulbJhEjgR5KXZSIzPWxt781sx1n9BEQCWsm3aCPGQofuEOcjTlZYuHSymSF5I
5q9FAcI0jsquZVdlWsIg3QucSlS+wZVM/1GjTWorAekXTAhrLhIrTdpvNwo+fysy
AJXROOJbkLUlVaAJFFT+CAUl1qWd9M1CmTYc91RFrlKN/hVItIJeIRGunE5N9dl4
2/RTqnxfqfwSZuQ3DcRKSw==
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/TEST_of_EE_Certification_Centre_Root_CA.pem
================================================
-----BEGIN CERTIFICATE-----
MIIEEzCCAvugAwIBAgIQc/jtqiMEFERMtVvsSsH7sjANBgkqhkiG9w0BAQUFADB9
MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
czEwMC4GA1UEAwwnVEVTVCBvZiBFRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBSb290
IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwIhgPMjAxMDEwMDcxMjM0NTZa
GA8yMDMwMTIxNzIzNTk1OVowfTELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNl
cnRpZml0c2VlcmltaXNrZXNrdXMxMDAuBgNVBAMMJ1RFU1Qgb2YgRUUgQ2VydGlm
aWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVl
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1gGpqCtDmNNEHUjC8LXq
xRdC1kpjDgkzOTxQynzDxw/xCjy5hhyG3xX4RPrW9Z6k5ZNTNS+xzrZgQ9m5U6uM
ywYpx3F3DVgbdQLd8DsLmuVOz02k/TwoRt1uP6xtV9qG0HsGvN81q3HvPR/zKtA7
MmNZuwuDFQwsguKgDR2Jfk44eKmLfyzvh+Xe6Cr5+zRnsVYwMA9bgBaOZMv1TwTT
VNi9H1ltK32Z+IhUX8W5f2qVP33R1wWCKapK1qTX/baXFsBJj++F8I8R6+gSyC3D
kV5N/pOlWPzZYx+kHRkRe/oddURA9InJwojbnsH+zJOa2VrNKakNv2HnuYCIonzu
pwIDAQABo4GKMIGHMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
A1UdDgQWBBS1NAqdpS8QxechDr7EsWVHGwN2/jBFBgNVHSUEPjA8BggrBgEFBQcD
AgYIKwYBBQUHAwEGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgGCCsGAQUF
BwMJMA0GCSqGSIb3DQEBBQUAA4IBAQAj72VtxIw6p5lqeNmWoQ48j8HnUBM+6mI0
I+VkQr0EfQhfmQ5KFaZwnIqxWrEPaxRjYwV0xKa1AixVpFOb1j+XuVmgf7khxXTy
Bmd8JRLwl7teCkD1SDnU/yHmwY7MV9FbFBd+5XK4teHVvEVRsJ1oFwgcxVhyoviR
SnbIPaOvk+0nxKClrlS6NW5TWZ+yG55z8OCESHaL6JcimkLFjRjSsQDWIEtDvP4S
tH3vIMUPPiKdiNkGjVLSdChwkW3z+m0EvAjyD9rnGCmjeEm5diLFu7VMNVqupsbZ
SfDzzBLc5+6TqgQTOG7GaZk2diMkn03iLdHGFrh8ML+mXG9SjEPI
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/TEST_of_ESTEID-SK_2015.pem
================================================
-----BEGIN CERTIFICATE-----
MIIGgzCCBWugAwIBAgIQEDb9gCZi4PdWc7IoNVIbsTANBgkqhkiG9w0BAQwFADB9
MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
czEwMC4GA1UEAwwnVEVTVCBvZiBFRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBSb290
IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwIBcNMTUxMjE4MDcxMzQ0WhgP
MjAzMDEyMTcyMzU5NTlaMGsxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0
aWZpdHNlZXJpbWlza2Vza3VzMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEfMB0G
A1UEAwwWVEVTVCBvZiBFU1RFSUQtU0sgMjAxNTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAMTeAFvLxmAeaOsRKaf+hlkOhW+CdEilmUIKWs+qCWVq+w8E
8PA/TohAZdUcO4KFXothmPDmfOCb0ExXcnOPCr2NndavzB39htlyYKYxkOkZi3pL
z8bZg/HvpBoy8KIg0sYdbhVPYHf6i7fuJjDac4zN1vKdVQXA6Tv5wS/e90/ZyF95
5vycxdNLticdozm5yCDMNgsEji6QNA1zIi3+C2YmnDXx6VyxhuC2R3q0xNkwtJ4e
zs1RZGxWokTNPzQc3ilGhEJlVsS8vP624hUHwufQnwrKWpc3+D+plMIO0j3E+hmh
46gIadDRweFR/dzb+CIBHRaFh0LEBjd/cDFQlBI+E8vpkhqeWp6rp1xwnhCL201M
3E1E1Mw+51Xqj7WOfY0TzjOmQJy8WJPEwU2m44KxW1SnpeEBVkgb4XYFeQHAllc7
J7JDv50BoIPpecgaqn1vKR7l//wDsL0MN1tDlBhl3x7TJ/fwMnwB1E3zVZR74TUZ
h5J49CAcFrfM4RmP/0hcDW8+4wNWMg2Qgst2qmPZmHCI/OJt5yMt0Ud5yPF8AWxV
ot3TxOBGjMiM8m6WsksFsQxp5WtA0DANGXIIfydTaTV16Mg+KpYVqFKxkvFBmfVp
6xApMaFl3dY/m56O9JHEqFpBDF+uDQIMjFJxJ4Pt7Mdk40zfL4PSw9Qco2T3AgMB
AAGjggINMIICCTAfBgNVHSMEGDAWgBS1NAqdpS8QxechDr7EsWVHGwN2/jAdBgNV
HQ4EFgQUScDyRDll1ZtGOw04YIOx1i0ohqYwDgYDVR0PAQH/BAQDAgEGMGYGA1Ud
IARfMF0wMQYKKwYBBAHOHwMBATAjMCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5z
ay5lZS9DUFMwDAYKKwYBBAHOHwMBAjAMBgorBgEEAc4fAwEDMAwGCisGAQQBzh8D
AQQwEgYDVR0TAQH/BAgwBgEB/wIBADBBBgNVHR4EOjA4oTYwBIICIiIwCocIAAAA
AAAAAAAwIocgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwJwYDVR0l
BCAwHgYIKwYBBQUHAwkGCCsGAQUFBwMCBggrBgEFBQcDBDCBiQYIKwYBBQUHAQEE
fTB7MCUGCCsGAQUFBzABhhlodHRwOi8vZGVtby5zay5lZS9jYV9vY3NwMFIGCCsG
AQUFBzAChkZodHRwOi8vd3d3LnNrLmVlL2NlcnRzL1RFU1Rfb2ZfRUVfQ2VydGlm
aWNhdGlvbl9DZW50cmVfUm9vdF9DQS5kZXIuY3J0MEMGA1UdHwQ8MDowOKA2oDSG
Mmh0dHBzOi8vd3d3LnNrLmVlL3JlcG9zaXRvcnkvY3Jscy90ZXN0X2VlY2NyY2Eu
Y3JsMA0GCSqGSIb3DQEBDAUAA4IBAQDBOYTpbbQuoJKAmtDPpAomDd9mKZCarIPx
AH8UXphSndMqOmIUA4oQMrLcZ6a0rMyCFR8x4NX7abc8T81cvgUAWjfNFn8+bi6+
DgbjhYY+wZ010MHHdUo2xPajfog8cDWJPkmz+9PAdyjzhb1eYoEnm5D6o4hZQCiR
yPnOKp7LZcpsVz1IFXsqP7M5WgHk0SqY1vs+Yhu7zWPSNYFIzNNXGoUtfKhhkHiR
WFX/wdzr3fqeaQ3gs/PyD53YuJXRzFrktgJJoJWnHEYIhEwbai9+OeKr4L4kTkxv
PKTyjjpLKcjUk0Y0cxg7BuzwevonyBtL72b/FVs6XsXJJqCa3W4T
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/TEST_of_SK_OCSP_RESPONDER_2020.pem
================================================
-----BEGIN CERTIFICATE-----
MIIEzjCCA7agAwIBAgIQa7w4iGoiIOtfrn0fG/hc1zANBgkqhkiG9w0BAQUFADB9
MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
czEwMC4GA1UEAwwnVEVTVCBvZiBFRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBSb290
IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwHhcNMjAxMTEzMTIzMzM1WhcN
MjQwNjEzMTEzMzM1WjCBgzELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRp
Zml0c2VlcmltaXNrZXNrdXMxDTALBgNVBAsMBE9DU1AxJzAlBgNVBAMMHlRFU1Qg
b2YgU0sgT0NTUCBSRVNQT05ERVIgMjAyMDEYMBYGCSqGSIb3DQEJARYJcGtpQHNr
LmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz6U1uMvi5P6bycik
gOFp1QdIdt2R/x/+WbRVNLNjDTMS0t70BVl6+Z7c5jqZUNIBZ5qlr3K8v5bIv0rd
r1H/By0wFMWsWksZnQLIsb/lU+HeuSIDY2ESs0YzvZW4AB3tDrMFOrtuImmsUxhs
z00KcRt9o+/o0RD9v5qxhJaqj6+Pr/8fZJK67Wuiqli2vVtuStaTb5zpjA1MJtu9
OM4jk/FaL1FaST72XPTzpMVNJR/Rk63t0wL4l4f4s3y0ZI+JPzXu3jyeH+g3ZVLb
wB2ccwgqfDPKXoxfNtcDxjUZz16OQQp2Rp14h/n8If0jyHfiNHHCDKaSPFyyJJMg
RrQkiwIDAQABo4IBQTCCAT0wEwYDVR0lBAwwCgYIKwYBBQUHAwkwHQYDVR0OBBYE
FIGteMcJzpGYrEl+MRkb+QpBx6XFMIGgBgNVHSAEgZgwgZUwgZIGCisGAQQBzh8D
AQEwgYMwWAYIKwYBBQUHAgIwTB5KAEEAaQBuAHUAbAB0ACAAdABlAHMAdABpAG0A
aQBzAGUAawBzAC4AIABPAG4AbAB5ACAAZgBvAHIAIAB0AGUAcwB0AGkAbgBnAC4w
JwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuc2suZWUvYWphdGVtcGVsLzAfBgNVHSME
GDAWgBS1NAqdpS8QxechDr7EsWVHGwN2/jBDBgNVHR8EPDA6MDigNqA0hjJodHRw
czovL3d3dy5zay5lZS9yZXBvc2l0b3J5L2NybHMvdGVzdF9lZWNjcmNhLmNybDAN
BgkqhkiG9w0BAQUFAAOCAQEAKR+ssgVTDDkGl+sLwz5OwaBMUOPEscr7DcCXmjmR
aC+KjTe8kCuXZwnMH7tMf0mDyF22USJ/o2m0MFW1k8zjH1yr1/2JghttRfi5mCvo
MHNXVM/ST1C/6rrymaYA27RxIj201USwTQp35YvhUUIZO3Xby/60yXZyt7wCS7xA
nH65U/0LnkT5w5DLC8EdXlH3QF600Z74fm8z54lY80IoSgIEPmFZlLe4YR822G24
mawGRQKIbhPK2DO6sGtLZDAfee4B6TGmPcunztsYaUoc1spfCKrx5EBthieSgAp0
dh0kMBAR/AGh7fSwl5zyASFgYmtVP4FZS6w6ETlXU7Bg3g==
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/android-ios-config.json
================================================
{
"appConfig": {
"colors": {
"btn_background": "#F0F0F0",
"btn_background_focused": "#CFCFCF",
"btn_close_view_focused": "#1995B4",
"btn_foreground": "#727272",
"btn_verify_background_center": "#1AABE1",
"btn_verify_background_end": "#00A1DC",
"btn_verify_background_focused": "#1693C0",
"btn_verify_background_start": "#30B4E5",
"btn_verify_foreground": "#FFFFFF",
"error_window": "#FF0000",
"error_window_close_btn_focused": "#B60010",
"error_window_foreground": "#FFFFFF",
"error_window_shadow": "#770000",
"frame_background": "#AA444444",
"lbl_background": "#33B5E5",
"lbl_close_timeout_background_center": "#F9D303",
"lbl_close_timeout_background_end": "#F7C804",
"lbl_close_timeout_background_start": "#FEEC00",
"lbl_close_timeout_foreground": "#454444",
"lbl_close_timeout_shadow": "#C6A002",
"lbl_foreground": "#FFFFFF",
"lbl_inner_container_background": "#FFFFFF",
"lbl_inner_container_foreground": "#404040",
"lbl_outer_container_background": "#EAEAEA",
"lbl_outer_container_foreground": "#404040",
"lbl_outer_inner_container_divider": "#595959",
"lbl_shadow": "#008EC2",
"loading_window_background": "#33B5E5",
"loading_window_foreground": "#FFFFFF",
"main_window": "#33B5E5",
"main_window_foreground": "#FFFFFF",
"main_window_shadow": "#005777"
},
"elections": {
"question-1": "Prototüübi test"
},
"errors": {
"bad_config_message": "Seadistuse viga",
"bad_device_message": "Seadmel puudub kaamera, verifitseerimist ei ole võimalik läbi viia",
"bad_server_response_message": "Tehniline viga, palun teavita valimiste korraldajat abi@valimised.ee",
"bad_verification_message": "Valiku tuvastamine ebaõnnestus",
"bad_version_message": "Rakenduse versioon ei ole ajakohane, palun uuenda oma rakendust",
"camera_permission_required_message": "Rakenduse kasutamiseks peab olema kaamera kasutamine lubatud",
"error_title_bad_version": "Rakenduse versiooni viga",
"error_title_default": "Viga",
"error_title_network": "Internetiühendus puudub",
"get_config_message": "Seadistuse laadimine ebaõnnestus",
"no_network_message": "Palun veendu, et nutiseadme internetiühendus on aktiivne",
"problem_qrcode_message": "QR-koodi ei õnnestunud tuvastada",
"send_server_request_message": "Serveriga ühendumine ebaõnnestus, kontrolli internetiühendust või teavita valimiste korraldajat abi@valimised.ee"
},
"params": {
"close_interval": 1000,
"close_timeout": 30000,
"con_timeout_1": 3000,
"con_timeout_2": 15000,
"help_url": "https://www.valimised.ee/verify/help/index.html",
"ocsp_service_cert": [],
"public_key": "",
"tspreg_client_cert": "",
"tspreg_service_cert": "",
"verification_sni": "verification.ivxv.valimised.ee",
"verification_tls": [
"",
"",
""
],
"verification_url": [
"collector1:port",
"collector2:port",
"collector3:port"
]
},
"texts": {
"a11y_qr_view_opened": "Alusta QR-koodi skaneerimist",
"btn_close": "Sulge",
"btn_more": "Abi",
"btn_next": "Edasi",
"btn_ok": "Ok",
"btn_packet_data": "Andmeside",
"btn_update": "Värskenda",
"btn_verify": "Kuva minu valik",
"btn_wifi": "Wifi",
"lbl_choice": "Tuvastatud valik",
"lbl_close_timeout": "Rakendus suletakse XX sekundi pärast!",
"lbl_no_choice": "Valikut ei tehtud",
"lbl_vote": "Hääle kontrollimine",
"lbl_vote_signer": "E-hääle allkirjastaja: ",
"lbl_vote_txt": "Sinu QR-koodile vastav hääl on talletatud valimiste serveris",
"loading": "Laadin...",
"notification_message": "Kontrollimine lõpetatud",
"notification_title": "Riigi valimisteenistus",
"welcome_message": "Hääle kontrollimiseks suuna nutiseadme kaamera arvuti ekraanil kuvatavale QR-koodile"
},
"versions": {
"android_version_code": 42,
"ios_bundle_version": "2.1.19"
}
}
}
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/auditor.convert.yaml
================================================
convert:
input_bb: TESTCONF-bb-4.json
output_bb: TESTCONF-shuffled.json
pub: TESTCONF-pub.pem
protinfo: prot.xml
proofdir: mixnet/
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/auditor.decrypt.yaml
================================================
decrypt:
proofs: decout/TESTCONF-proof
pub: initout/TESTCONF-pub.pem
discarded: decout/TESTCONF-invalid
anon_bb: TESTCONF-shuffled.json
plain_bb: decout/TESTCONF.TESTQUESTION.plain
tally: decout/TESTCONF.TESTQUESTION.tally
candidates: TESTCONF.choices.bdoc
districts: TESTCONF.districts.bdoc
out: auditout
invalidity_proofs: decout/TESTCONF-proof-invalid
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/auditor.integrity.yaml
================================================
integrity:
ballotbox: TESTCONF.votes.zip
anon_bb: TESTCONF-bb-4.json
log_accepted: out-1/TESTCONF.TESTQUESTION.check.log1
log_squashed: out-2/TESTCONF.TESTQUESTION.squash.log2
log_revoked: out-3/TESTCONF.TESTQUESTION.revoke.log2
log_anonymised: out-4/TESTCONF.TESTQUESTION.anonymize.log3
bb_errors: out-1/ballotbox_errors.txt
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/auditor.mixer.yaml
================================================
mixer:
protinfo: prot.xml
proofdir: mixnet/
threaded: true
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/etcd_CA.pem
================================================
-----BEGIN CERTIFICATE-----
MIIDgDCCAmigAwIBAgIJAN8HvtqlwnNYMA0GCSqGSIb3DQEBCwUAMFQxCzAJBgNV
BAYTAkVFMRIwEAYDVQQKDAlTQ0NFSVYgT1kxHzAdBgNVBAsMFklWWFYgVGVzdCBD
ZXJ0aWZpY2F0ZXMxEDAOBgNVBAMMB2V0Y2QgQ0EwIBcNMTcwNzI3MTIyMjIwWhgP
MjExNzA3MDMxMjIyMjBaMFQxCzAJBgNVBAYTAkVFMRIwEAYDVQQKDAlTQ0NFSVYg
T1kxHzAdBgNVBAsMFklWWFYgVGVzdCBDZXJ0aWZpY2F0ZXMxEDAOBgNVBAMMB2V0
Y2QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8xktrfvOSwiKg
sd2CfOQ2PobheaMqhbd+zHyj+Vmw0KIc+LwRoPK6FiGVmeIJXp7bN3QbbZdbpTfh
ap1xJr/wYu5JJO8DEy5i+Ea5IBGf6fZ6RTVngtbigln0FCFyRqumvD5yuZRbOnV6
w1Roe1GmhtrrW3QTHR5OSc8FjLcw21RkjrKbc0VtLoaGTU0CB7gSLUoHgXdOb3n5
n5pLa/N/4VjfIEqL7U4Pi9eFRl1tcKnj3+AwHp5HAHZgN937YDqXAtbWL7BwAToR
CcW5ESm2xq6i46wg/OLhNU4bA8kfxqVCuCk/QDX3tvo4pkavC5bXMybc+3LfRfjO
k7KKr+2XAgMBAAGjUzBRMB0GA1UdDgQWBBRWhI+0eFROcX+wY8h8jCU9SuXlHDAf
BgNVHSMEGDAWgBRWhI+0eFROcX+wY8h8jCU9SuXlHDAPBgNVHRMBAf8EBTADAQH/
MA0GCSqGSIb3DQEBCwUAA4IBAQBOs9gwX28/Q2dvU9zFxHxVZ0x3jv2DAjAqBGHp
I5ZbVjoWdjxurMwid9X6CF0nwqtHZQieGfKKt3wRv7G05yKZNlWkxSBfBiQwTwSs
Mp2rj5zXDdQdkPWMD/08cDLj1jcynM8GMgUKzldcUKpWvwaL1MFaNda/pZAwd3DH
r/s+XHnGKNafNalkCd+n/bWXUkJvVlE3Aakx2hfuNiT2WQ9rb6J7LkPhrWN4X1E4
1a++vt53qgMYH+jvYJkiKi9mDa+XVZR7XA9tD2xLGC5l0zt7Aaz4xUG9YVxc8/sW
wP7zi1j187I4XZ9FIhO4+dmbpy+vg4e51xvQfC9/5T5vmfWR
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/example.election.yaml
================================================
# Valimiste seadistuse näide
identifier: TESTCONF
questions:
- TESTQUESTION
period:
servicestart: 2017-01-16T08:50:00+02:00
electionstart: 2017-01-16T09:00:00+02:00
electionstop: 2017-01-18T19:00:00+02:00
servicestop: 2017-01-18T19:15:00+02:00
verificationstop: 2017-01-18T19:20:00+02:00
voting:
ratelimitstart: 50
ratelimitminutes: 5
verification:
count: 3
minutes: 30
latestonly: false
voterlist:
key: !container rr_pub.key
vis:
url: https://vis-mock.local/vis3/
ca:
- |
-----BEGIN CERTIFICATE-----
MIIDmzCCAoOgAwIBAgIDOBFTMA0GCSqGSIb3DQEBCwUAMFcxCzAJBgNVBAYTAkVF
MRIwEAYDVQQKDAlTQ0NFSVYgT1kxHzAdBgNVBAsMFklWWFYgVGVzdCBDZXJ0aWZp
Y2F0ZXMxEzARBgNVBAMMClNlcnZpY2UgQ0EwIBcNMjEwNjE3MTIwNTI0WhgPMjEy
MTA1MjQxMjA1MjRaMFsxCzAJBgNVBAYTAkVFMRIwEAYDVQQKDAlTQ0NFSVYgT1kx
HzAdBgNVBAsMFklWWFYgVGVzdCBDZXJ0aWZpY2F0ZXMxFzAVBgNVBAMMDnZpcy1t
b2NrLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzZW7yXGO
SEt4qavm/vNJj9otKf9j8runLJcmoTGR61A5As2gluRnj3z6/U8An/VsX1dUG2qL
sJecEXUkvXBSTw2IIyfA6lJNtaov44ytRB4fKpuFx+lb00WmuRf99uC0Tpp5K0Of
7D5NO5dgtMXLrdpzuyJD6NP2xrp8Dio5a1TosHcQEVWJvR/dwCr02TmcQjvILOVN
vJFr038Dg77NQKojOsag60KRrHcKc1WukgUPu4AJ2VFCmn67rCfp39tusbcndsNs
EX7zGNghOk85CMoGWlYfnJm94oAoKUsYtpF1hinfBN/EikXZwJbsVFoSg4mo/te2
MfwzK7E5j17JWwIDAQABo2owaDAdBgNVHQ4EFgQUI2yfomatZq3HLyL+DpqeBYO9
/1EwHwYDVR0jBBgwFoAUbyNWl77jkIGrjVtW7Eu4+qpDXxYwDgYDVR0PAQH/BAQD
AgOoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQCA
RsgmPcL4NaHxQGRxPS2agw2ihLPgkmZcUJhJ0ObnmVYBjCCpYxaNd0vCWBYejChj
Q2cblFAuKUtc+pwSC2WDPV9rRwLNOQn/PR2dzeNRP7L0UmNyPcH5pwmltAJLFQqW
OdnlXL8ehXSLeIdzlBkqNYZCrj4Ulv4W8cLosjCrmwTZ8OW2E/GSTY7YljsPZZt0
uI5Sxz8VtlMJsVh0HWCQ4oAawp6BOgUAGdE9PIo2UlDHyUHBSDXDuZKTGut+yv1T
NOq+xK3YM/CRFf/ujIuc1zx+dzkM9l72VJT2BQ6+LKeS5qzduJTG/8dJJFzgNB9p
vo7reW+FURRS+CQI633D
-----END CERTIFICATE-----
min: 15
xroad:
ca: !container xroadservice_ca.pem
ballot:
# This group must be the one used for voter ballot encryption public key
# generation, check documentation for all available groups to use
encpkeygroup: RFC3526ModPGroup3072
encpkey: !container vote_enc_pkey.pem
auth:
ticket:
tls:
roots:
- !container TEST_of_EE_Certification_Centre_Root_CA.pem
intermediates:
- !container TEST_of_ESTEID-SK_2015.pem
ocsp:
url: http://demo.sk.ee/ocsp
responders:
- !container TEST_of_SK_OCSP_RESPONDER_2020.pem
retry: 2
identity: pnoee
age:
method: estpic
timezone: Europe/Tallinn
limit: 18
vote:
bdoc:
filecount: 4
bdocsize: 32768 # 32 KiB
filesize: 32768 # 32 KiB
roots:
- !container TEST_of_EE_Certification_Centre_Root_CA.pem
intermediates:
- !container TEST_of_ESTEID-SK_2015.pem
profile: BES
mid:
url: https://tsp.demo.sk.ee/mid-api/
relyingpartyuuid: 00000000-0000-0000-0000-000000000000
relyingpartyname: DEMO
language: EST
authmessage: Mobiil-ID autentimise testimine.
signmessage: Mobiil-ID allkirjastamise testimine.
messageformat: GSM-7
authchallengesize: 64
statustimeoutms: 5000
roots:
- !container TEST_of_EE_Certification_Centre_Root_CA.pem
intermediates:
- !container TEST_of_ESTEID-SK_2015.pem
ocsp:
url: http://demo.sk.ee/ocsp
responders:
- !container TEST_of_SK_OCSP_RESPONDER_2020.pem
smartid:
url: https://sid.demo.sk.ee/smart-id-rp/v2/
relyingpartyuuid: 00000000-0000-0000-0000-000000000000
relyingpartyname: DEMO
certificatelevel: QUALIFIED
authinteractionsorder:
- type: verificationCodeChoice
displayText60: authenticating
- type: displayTextAndPIN
displayText60: authenticating
signinteractionsorder:
- type: verificationCodeChoice
displayText60: signing
- type: displayTextAndPIN
displayText60: signing
authchallengesize: 64
statustimeoutms: 5000
roots:
- !container TEST_of_EE_Certification_Centre_Root_CA.pem
intermediates:
- !container TEST_of_ESTEID-SK_2015.pem
ocsp:
url: http://demo.sk.ee/ocsp
responders:
- !container TEST_of_SK_OCSP_RESPONDER_2020.pem
qualification:
- protocol: tspreg
conf:
url: http://demo.sk.ee/tsa
signers:
- !container DEMO_SK_TIMESTAMPING_AUTHORITY_2020.pem
delaytime: 1
retry: 2
- protocol: ocsp
conf:
url: http://demo.sk.ee/ocsp
responders:
- !container TEST_of_SK_OCSP_RESPONDER_2020.pem
retry: 2
# this block defines any statistics that EHS shares with any other third-party
stats:
# this block defines detail statistics that EHS shares with VIS,
# you can add 'common' here if implemented, or any other kind
detail:
# this block defines an automation (scheduler) for detail statistics sharing
scheduler:
# cron is a scheduler, you can add 'systemd-timer' here if implemented,
# only crontab syntax supported for cron: section
cron:
min: "*/15" # minutes of a hour: 00, 15, 30, 45
hour: "*" # each hour
day: "*" # each day
month: "*" # each month
weekday: "*" # each week day
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/example.technical.yaml
================================================
# Tehnilise seadistuse näide
debug: true
snidomain: inttest.ivxv.ee
filter:
tls:
handshaketimeout: 20
ciphersuites:
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
# Vanemate nutiseadmete tugi.
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
codec:
rwtimeout: 10
requestsize: 16384 # 16 KiB
logrequests: true
network:
- id: default
services:
proxy:
- id: proxy@proxy1.ivxv.ee
address: proxy1.ivxv.ee:443
mid:
- id: mid@mid1.ivxv.ee
address: mid1.ivxv.ee:443
smartid:
- id: smartid@smartid1.ivxv.ee
address: smartid1.ivxv.ee:443
webeid:
- id: webeid@webeid1.ivxv.ee
address: webeid1.ivxv.ee:443
origin: https://ivxv1.mydomain.ivxv.ee:443 # address that client sees
choices:
- id: choices@choices1.ivxv.ee
address: choices1.ivxv.ee:443
voting:
- id: voting@voting1.ivxv.ee
address: voting1.ivxv.ee:443
verification:
- id: verification@verification1.ivxv.ee
address: verification1.ivxv.ee:443
sessionstatus:
- id: sessionstatus@sessionstatus1.ivxv.ee
address: sessionstatus1.ivxv.ee:443
storage:
- id: storage@storage1.ivxv.ee
address: storage1.ivxv.ee:2379
peeraddress: storage1.ivxv.ee:2380
status:
session:
name: session
servername: session.status.inttest.ivxv.ee
authttl: 60 # ttl in seconds!
choicettl: 90
votettl: 60
verifyttl: 60
logging:
- address: logserver1.ivxv.ee
port: 20514
- address: logserver2.ivxv.ee
port: 514
storage:
protocol: etcd
conf:
ca: !container etcd_CA.pem
conntimeout: 5
optimeout: 10
size: 2147483648 # bytes
snapshotcount: 10000 # etcd revisions
heartbeattimeout: 100 # ms
electiontimeout: 1000 # ms
bootstrap:
- storage@storage1.ivxv.ee
ordertimeout: 10
backup: ["03:00", "09:00", "15:00", "21:00"]
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/example.trust.yaml
================================================
# Usaldusjuure seadistuse näide
container:
bdoc:
filecount: 50
bdocsize: 104857600 # 100 MiB
filesize: 104857600 # 100 MiB
roots:
- !container TEST_of_EE_Certification_Centre_Root_CA.pem
intermediates:
- !container TEST_of_ESTEID-SK_2015.pem
profile: TS
ocsp:
responders:
- !container TEST_of_SK_OCSP_RESPONDER_2020.pem
tsp:
signers:
- !container DEMO_SK_TIMESTAMPING_AUTHORITY_2020.pem
delaytime: 1
tsdelaytime: 60
authorizations:
- ORAV,IVAN,30809010001
- ROPKA,KIVIVALVUR,32608320001
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/example.voters.skip.yaml
================================================
# Valijate muudatusnimekirja nr. 15 vahelejätmise korralduse näide
election: TESTCONF
skip_voter_list: "https://vis-ehs-api.ria.ee/ehs-election-voters-changeset 2021-07-22T10:12:49Z"
changeset: 15
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/ivxv.properties.real
================================================
ca = EE-GovCA2018.pem.crt, ESTEID2018.pem.crt, ESTEID-SK_2015.pem.crt
ocsp = SK_OCSP_RESPONDER_2011.pem.crt
tsa = SK_TIMESTAMPING_AUTHORITY_2023.pem.crt
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/key.decrypt.yaml
================================================
decrypt:
identifier: TESTCONF
protocol:
recover:
threshold: 2
parties: 3
anonballotbox: TESTCONF-bb-4.json
anonballotbox_checksum: TESTCONF-bb-4.json.sha256sum.bdoc
candidates: TESTCONF.choices.bdoc
districts: TESTCONF.districts.bdoc
provable: true
prove_invalid: true
check_decodable: false
out: decout
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/key.groupgen.yaml
================================================
groupgen:
paramtype: mod
length: 3072
init_template: key.init.template.yaml
random_source:
- random_source_type: DPRNG
random_source_path: public_seed_file
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/key.init.original.yaml
================================================
init:
identifier: TESTCONF
paramtype:
mod:
p: 5809605995369958062791915965639201402176612226902900533702900882779736177890990861472094774477339581147373410185646378328043729800750470098210924487866935059164371588168047540943981644516632755067501626434556398193186628990071248660819361205119793693985433297036118232914410171876807536457391277857011849897410207519105333355801121109356897459426271845471397952675959440793493071628394122780510124618488232602464649876850458861245784240929258426287699705312584509625419513463605155428017165714465363094021609290561084025893662561222573202082865797821865270991145082200656978177192827024538990239969175546190770645685893438011714430426409338676314743571154537142031573004276428701433036381801705308659830751190352946025482059931306571004727362479688415574702596946457770284148435989129632853918392117997472632693078113129886487399347796982772784615865232621289656944284216824611318709764535152507354116344703769998514148343807
g: 2
out: initout
skiptest: true
fastmode: true
signaturekeylen: 3072
signcn: SIGNATURE
signsn: 1
enccn: ENCRYPTION
encsn: 2
required_randomness: 128
random_source:
- random_source_type: file
random_source_path: randomness_file
- random_source_type: system
- random_source_type: DPRNG
random_source_path: seed_file
- random_source_type: stream
random_source_path: /dev/urandom
- random_source_type: user
random_source_path: user_entropy.exe
genprotocol:
desmedt:
threshold: 2
parties: 3
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/key.init.yaml
================================================
init:
identifier: TESTCONF
paramtype:
mod:
p: 58096059953699580627919159656392014021766122269029005337..
g: 2
out: initout
skiptest: true
fastmode: true
signaturekeylen: 3072
signcn: SIGNATURE
signsn: 1
enccn: ENCRYPTION
encsn: 2
required_randomness: 128
random_source:
- random_source_type: file
random_source_path: randomness_file
- random_source_type: system
- random_source_type: DPRNG
random_source_path: seed_file
- random_source_type: stream
random_source_path: /dev/urandom
- random_source_type: user
random_source_path: user_entropy.exe
genprotocol:
desmedt:
threshold: 2
parties: 3
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/key.testkey.yaml
================================================
testkey:
identifier: TESTCONF
out: initout
threshold: 2
parties: 3
fastmode: false
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/key.util.yaml
================================================
util:
listreaders: true
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.anonymize.yaml
================================================
anonymize:
ballotbox: out-3/TESTCONF-bb-3.json
ballotbox_checksum: out-3/TESTCONF-bb-3.json.sha256sum.bdoc
out: out-4
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.check.yaml
================================================
check:
ballotbox: TESTCONF.votes.zip
ballotbox_checksum: TESTCONF.votes.zip.sha256sum.bdoc
signed_ballot_max_size_bytes: 32768
districts: TESTCONF.districts.bdoc
registrationlist: TESTCONF.registration.zip
registrationlist_checksum: TESTCONF.registration.zip.sha256sum.bdoc
tskey: TESTCONF.ts.key
vlkey: TESTCONF.voterfile.pub.key
voterlists_dir: TESTCONF.voterlists
voterlists:
- path: TESTCONF.voters_1
signature: TESTCONF.voters_1.signature
- path: TESTCONF.voters_2
signature: TESTCONF.voters_2.signature
election_start: 2017-05-01T12:00:00+03:00
out: out-1
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.checkAndSquash.yaml
================================================
checkAndSquash:
ballotbox: TESTCONF.votes.zip
ballotbox_checksum: TESTCONF.votes.zip.sha256sum.bdoc
signed_ballot_max_size_bytes: 32768
districts: TESTCONF.districts.bdoc
registrationlist: TESTCONF.registration.zip
registrationlist_checksum: TESTCONF.registration.zip.sha256sum.bdoc
tskey: TESTCONF.ts.key
vlkey: TESTCONF.voterfile.pub.key
voterlists_dir: TESTCONF.voterlists
voterlists:
- path: TESTCONF.voters_1
signature: TESTCONF.voters_1.signature
- path: TESTCONF.voters_2
signature: TESTCONF.voters_2.signature
enckey: TESTCONF-enc.pub.key
election_start: 2017-05-01T12:00:00+03:00
out: out-2
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.export.yaml
================================================
export:
ballotbox: TESTCONF.votes.zip
ballotbox_checksum: TESTCONF.votes.zip.sha256sum.bdoc
signed_ballot_max_size_bytes: 32768
out: out-export
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.revoke.yaml
================================================
revoke:
ballotbox: out-2/TESTCONF-bb-2.json
ballotbox_checksum: out-2/TESTCONF-bb-2.json.sha256sum.bdoc
districts: TESTCONF.districts.bdoc
revocationlists:
- TESTCONF.revoke_1.bdoc
- TESTCONF.revoke_2.bdoc
out: out-3
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.revokeAndAnonymize.yaml
================================================
revokeAndAnonymize:
ballotbox: out-2/TESTCONF-bb-2.json
ballotbox_checksum: out-2/TESTCONF-bb-2.json.sha256sum.bdoc
districts: TESTCONF.districts.bdoc
revocationlists:
- TESTCONF.revoke_1.bdoc
- TESTCONF.revoke_2.bdoc
out: out-4
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.squash.yaml
================================================
squash:
ballotbox: out-1/TESTCONF-bb-1.json
ballotbox_checksum: out-1/TESTCONF-bb-1.json.sha256sum.bdoc
districts: TESTCONF.districts.bdoc
enckey: TESTCONF-enc.pub.key
out: out-2
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.stats.yaml
================================================
stats:
ballotbox: TESTCONF.votes.zip
signed_ballot_max_size_bytes: 32768
election_day: 2018-11-11
period_start: 2018-11-01T10:00:00+03:00
period_end: 2018-11-07T22:00:00+03:00
districts: TESTCONF.districts.bdoc
vlkey: TESTCONF.voterfile.pub.key
voterlists:
- path: TESTCONF.voters_1
signature: TESTCONF.voters_1.signature
- path: TESTCONF.voters_2
signature: TESTCONF.voters_2.signature
out: out-stats
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.statsdiff.yaml
================================================
statsdiff:
compare: out-stats/TESTCONF-stats.json
to: TESTCONF-voting-stats.json
diff: TESTCONF-stats-diff.json
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/processor.verify.yaml
================================================
verify:
file: processor.yaml.bdoc
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/rnd.groupgen.yaml
================================================
groupgen:
[...]
random_source:
- random_source_type: DPRNG
random_source_path: public_seed_file
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/rnd.init.yaml
================================================
init:
[...]
required_randomness: 128
random_source:
- random_source_type: system
- random_source_type: user
random_source_path: server.exe
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/rr_pub.key
================================================
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxOJOUqfOxVHHGplNmSSt
LYXfpjyRlJrONLu74b85rBjTmr1bBwLRz+LemN9QWJJySKMaB0kShUhYoBDCAnpr
gChxvnMzh2fsX9eK//dBWj+xbWFtzr2rrKLR8BnbB8SFDH18p1c4Pk3fDZGTME0D
gmceUhAS83kZb/sZeRBf3ODDf9eWgFZupOOLGMIzwUYlMbYGGDV8dR8tNHKyNgj7
yWWPlCrqh1vrBqYSDcTZv0B5Rd+aaBwwvTFLc3cqeE2Xy59Rh7bJvTf8IHlPBPRY
eqDqGvpQ/1rQcuqzfqqB6zc1qHUu09nViLc6qJJ3jQ5jQjJ1OREz9u05whEpD8Y1
9QIDAQAB
-----END PUBLIC KEY-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/vote_enc_pkey.pem
================================================
-----BEGIN PUBLIC KEY-----
MIIDMzCCAaEGCSsGAQQBl1UCATCCAZICggGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiK
Z8x0Agu+pjsTmyJRSgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY3
7WsL/1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7ORbPcIAfLihY78FmNpINhxV05ppFj+o/STP
X4NlXSPco62WHGLzViCFUrue1SkHcJaWbWcMNU5KvJgE8XRsCMoYIXwykF5GLjbOO+OedywYDoYD
myeDouwHoo+1xV3wb0xSyd4ry/aVWBcYOZVJfOqVauUV0iYYmPoFEBVyjlqKqsQtrTMXDQRQejOo
VSGr3xy6ZOz7hQRY2+8KiupxV10GDH2zlw+FpuHkx6v1rozbCTPXHoyU4EolYZ3O49ImGtLua/Ev
+gbZighk2HYCcz7IamRSHysYF3sgDLvhF1d6YV1sdwmIwLrZRuII4k+gdOWrMUPbW/zg/RCOS4LR
IKk60sr//////////wIBAhsISEEtU0VUVVADggGKADCCAYUCggGBANr8jgmDq2SRdr85JlmKb+J4
OuqinXnSyJ/p/S0qqyde8VCzaBe2G7xj/l0zSVf1dj6JJeGzaN2G9DbrchOrix33ctjKNjnsp/kN
Rro3xr/hPcnX3xdnywSvJIR8FEx2p1b3EU2AMEnmY8YDJeLYb7M/YqtLAfWd5qFCYsnzapMIgWj6
WfKvx8+h8STzI2Kc3xtHTW6KQrSRdb8yIJUIv5Tt+3Lgyng50twN4n1tynLjkpa5UG0sMIQWHjZV
eEUWasqOUKfWugUEswUe7vi8AAL6q8EVxeh0C1VCwbkTdV/GwlI5zuvXdXZtFn9IOMgp3cHZjYNQ
eEBFCVGzwzoBr9S3b75A7WAkGV596B7jHTJuBP02nJw4kU+TDr7tpVM2WK4tcZKrW3YNhOBofAt7
e1F2U7gyvwEECkEIc8PnYmh5twwUQv+AF2ABJOnoDR3cBbzqzyBzNSwnyu6kdegyXk8tBJLQ6ddu
GZ6R0YR8V4xT7bCMVDMIM0fi7EmIkicJlQ==
-----END PUBLIC KEY-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/config-examples/xroadservice_ca.pem
================================================
-----BEGIN CERTIFICATE-----
MIIDfzCCAmegAwIBAgIUdYaa1OjZYFHPG7Ku7/Res9nou2AwDQYJKoZIhvcNAQEL
BQAwTzELMAkGA1UEBhMCRUUxDjAMBgNVBAgMBVRhcnR1MQ8wDQYDVQQKDAZTQ0NF
SVYxHzAdBgNVBAMMFnhzZXJ2aWNlLmRldmVsLml2eHYuZWUwHhcNMjIxMTMwMTY0
OTE2WhcNMjMxMTMwMTY0OTE2WjBPMQswCQYDVQQGEwJFRTEOMAwGA1UECAwFVGFy
dHUxDzANBgNVBAoMBlNDQ0VJVjEfMB0GA1UEAwwWeHNlcnZpY2UuZGV2ZWwuaXZ4
di5lZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMO3JO230yexwypu
YHfBUgGiTvXTIBScpP1HwiLvBSr9FylD+iaZ890TpGLGMSH83FWgznu4NJmbqhHF
dlrZICnivng9C7w+/egE0coqExRuR0ECWSLXAkfNVQ82YKPedhdZ3gw88YByFwvy
EhjD17Fiv5CHZ3Iu3Fa4Lb0U95/0AI45GGgLA2DWB914Lqloc28lyCXb2cQ3OUoM
CZkjGmsC9BLSXbsiqhU2TqQ1R1vh9/ru4cYR37JtWrU/H7tGwNB/8/AFQ161zZOz
DXIBv5wEmZ4Rco+pXiQY5Tp3wucagwGdYFFqzxPeiPxRa56Qk5F7zBQyifEZ/ypK
MCSRO9UCAwEAAaNTMFEwHQYDVR0OBBYEFLdlusaUnlQmzLPFo+fLNewQcPzwMB8G
A1UdIwQYMBaAFLdlusaUnlQmzLPFo+fLNewQcPzwMA8GA1UdEwEB/wQFMAMBAf8w
DQYJKoZIhvcNAQELBQADggEBAKTbKmS8Wy5vSiaqlEo+Cs6bl1/RMRjzjc7k51Jk
0l1uvPBEA2/3ETZAkErqpApfwOD+CGNLPAgoLMH7dSpzyb7Z7i6bjZUcH8CeKT/D
XZNHun2eBIuEP+sRXdzs+UAwL5Axj5ncemNEjfHLgZaKA4cr/QNkrdxViqzUbsFY
ACjTr5UhqSLZpjRRmT7UNtGB5wdk+F76DIEdjGCAWzpufPTwPDemx301P4qg4R1m
nS0ErClDR+AiQLTkLB/uzCQmWMhgq/++boyw8Ny2A8I/OphEghsl//NYBlQ+Uz2K
htQmzR3L3Q0NE+9vXh8PFuFLv1qtyOpuhEn0/HuU/NzGMcU=
-----END CERTIFICATE-----
================================================
FILE: Documentation/et/seadistuste_koostejuhend/genparam.py
================================================
#!/usr/bin/env sage
from sage.all import *
n = 3072
p_found = False
c = 0
while not(p_found):
if (Mod(c,10000) == 0):
print("c is: ", c)
p = 2**n - 2**(n-64) - 1 + 2**64*(floor(2**(n-130)*pi.n(prec=10000))+c)
if is_pseudoprime(p):
print(p, " is prime")
q = (p-1)/2
if is_pseudoprime(q):
print(p, " is safe prime")
p_found = True
c = c + 1
================================================
FILE: Documentation/et/seadistuste_koostejuhend/index.rst
================================================
.. IVXV seadistuste koostamise juhend
IVXV seadistuste koostamise juhend
==========================================================================
.. raw:: html
NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 2
:numbered:
annotatsioon
ylevaade
rakendused
votmerakendus
tootlemisrakendus
auditirakendus
kogumisteenus
valijarakendus
kontrollrakendus
mixnet
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kogumisteenus.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _kogumisteenus:
Kogumisteenus
=============
.. include:: kt-ylevaade.inc
.. include:: kt-usaldusjuur.inc
.. include:: kt-tehniline.inc
.. include:: kt-valimised.inc
.. include:: kt-valijate-nimekirja-vahelejätmine.inc
.. include:: kt-volitused.inc
.. include:: kt-krypto.inc
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kontrollrakendus.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _kontroll:
Kontrollrakenduse seadistamine
==============================
Kontrollrakenduste seadistus on JSON formaadis.
Reaalne sisu võib kahel seadistusel olla samasugune ka siis kui
võimalike erinevuste tekkimise jaoks kasutatakse ennetavalt erinevaid
URLe. Varasemalt on erinevate URLide kasutamist õigustanud nt. iOS
rakenduste pikem tarnetsükkel, mis nõuab testseadistuste
avalikustamist.
Seadistus koosneb viiest peamisest rühmast
* :token:`versions` - Rakenduse nõutud versioon
* :token:`texts` - Kasutajaliideses kasutatavad tekstid
* :token:`errors` - Kasutajaliideses kasutatavad veateated
* :token:`colors` - Kasutajaliidese värvide koodid
* :token:`params` - Rakenduse tööks vajalikud parameetrid
* :token:`elections` - Igale küsimuse identifikaatorile vastav tekst
kasutajaliideses
Kõiki seadistatavaid väärtusi näeb näidisseadistusest. Kõik väärtused
on kohustuslikud.
Versioonide seadistamine
------------------------
Kontrollrakenduse versioon peab olema suurem või võrdne seadistuses määratud
versiooniga. Versioonid kuuluvad rühma :token:`versions`:
* :token:`android_version_code` - Android-rakenduse minimaalne versioonikood.
Väärtus peab olema positiivne JSON täisarv.
* :token:`ios_bundle_version` - iOS-rakenduse minimaalne versioonisõne. Väärtus
peab olema JSON sõne, mis koosneb punktidega eraldatud positiivsetest
täisarvudest.
Parameetrite seadistamine
-------------------------
Rakenduse tööks vajalikud parameetrid kuuluvad rühma :token:`params`:
* :token:`verification_url` - Nimekiri kogumisteenuse hostinimedest
või IP-aadressidest koos pordiga. Järjekord pole oluline. Väärtus
peab olema JSON loend ka ühe URLi puhul.
* :token:`verification_tls` - Nimekiri kogumisteenuse TLS
sertifikaatidest PEM vormingus. Järjekord pole oluline. Väärtus peab
olema JSON loend ka ühe sertifikaadi puhul.
* :token:`help_url` - Abiinfo vaate URL
* :token:`close_timeout` - Ajaaken, mil on kasutajal võimalik oma
valikut näha enne rakenduse sulgumist. Millisekundites.
* :token:`close_interval` - Intervall, millega uuendatakse
:token:`close_timeout` väärtust kasutajaliideses. Millisekundites.
* :token:`con_timeout_1` - Kogumisteenusega ühenduse saamise esimese
katse ajapiirang. Millisekundites.
* :token:`con_timeout_2` - Kui esimese ringiga ei saadud ühendust
ühegi kogumisteenuse instantsiga, proovitakse uuesti selle
ajapiiranguga. Millisekundites.
* :token:`public_key` - Valimiste avalik võti, millega krüpteeritakse
valijate hääli. PEM vormingus.
* :token:`tspreg_service_cert` - Ajatembeldusteenuse sertifikaat PEM
vormingus.
* :token:`ocsp_service_cert` - OCSP-teenuse sertifikaadid PEM
vormingus. Järjekord pole oluline. Väärtus peab olema JSON loend ka
ühe väärtuse puhul. Kui väli on tühi, siis tuvastatakse OCSP
responderi sertifikaat automaatselt.
* :token:`tspreg_client_cert` - Kogumisteenuse sertifikaat
registreerimispäringute tegemiseks PEM vormingus.
Tekstide seadistamine
---------------------
Kasutajaliideses kasutatavad tekstid kuuluvad rühma :token:`texts`. Järgmised
tekstid on parametriseeritavad:
* :token:`lbl_close_timeout` - Kontrollrakenduse sulgemisteade koos
loenduriga. Tekst peab sisaldama märgendit XX, mis asendatakse automaatselt
rakenduse sulgemiseni jäänud ajaga sekundites.
Näide
-----
.. literalinclude:: config-examples/android-ios-config.json
:language: json
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-krypto.inc
================================================
.. IVXV seadistuste koostamise juhend
.. _kt-krypto:
Kogumisteenuse krüptovõtmed
---------------------------
Kogumisteenuse andmevahetuse turvamiseks on tarvis luua komplekt
krüptograafilisi võtmeid. Komplekti koosseis sõltub kogumisteenuse tehnilistest
seadistustest.
#. Teenuse krüptovõti ja TLS-sertifikaat - kasutatakse teenuste omavahelise
suhtluse turvamiseks kõigi teenuste puhul peale vahendusteenuse;
#. Hääletamisteenuse ajatemplipäringute signeerimisvõti - kasutatakse
ajatemplipäringute signeerimiseks juhul, kui ajatempliteenus on
registreerimisteenuseks;
#. Mobiil-ID/Smart-ID/Web eID tugiteenuse jagatud krüptimissaladus – kasutatakse sümmeetrilise
AES-256 krüptimise jaoks. Krüptimissaladusega krüptib Mobiil-ID tugiteenus
hääletajale väljastatava identsustõendi, mille abil hääletaja enda
identiteeti teistele teenustele tõendab.
Teenuse krüptovõtme ja TLS-sertifikaadi genereerimine
*****************************************************
Teenuse krüptovõti ja TLS-sertifikaat genereeritakse kõigile teenustele peale
vahendusteenuse. Kõikide teenuste sertifikaadid peavad olema välja antud sama
sertifitseerimiskeskuse (CA – *Certificate Authority*) poolt.
CA sertifikaadi genereerimine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sertifitseerimiskeskuse krüptovõtme ja sertifikaadi genereerimine toimub
järgneva käsuga:
.. code-block:: shell-session
$ openssl req -newkey ec -pkeyopt ec_paramgen_curve:P-256 -x509 -nodes
-days 365 -out ca.pem -keyout ca.key -utf8
-subj "/C=EE/O=Example/OU=IVXV Test Certificates/CN=Service CA"
Käsu väljundiks on failid :file:`ca.key` (võti) ja :file:`ca.pem` (sertifikaat).
Teenuse isendi krüptovõtme ja TLS-sertifikaadi genereerimine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Teenuse isendi krüptovõtme ja sertifikaadipäringu genereerimine toimub järgneva
käsuga:
.. code-block:: shell-session
$ openssl req -newkey ec -pkeyopt ec_paramgen_curve:P-256 -nodes
-out -tls.csr -keyout -tls.key -utf8
-subj "/C=EE/O=Example/OU=IVXV Test Certificates/CN="
Käsu väljundiks on failid :file:`-tls.key` (võti) ja
:file:`-tls.csr` (sertifikaadipäring).
.. attention::
Talletusteenuse puhul peab sertifikaadipäringus olema CN väärtuseks teenuse
identifikaatori asemel hostinimi: erinevalt teistest teenustest ei kasutata
talletusteenuse puhul alternatiivset TLS nime.
Teenuse isendi TLS-sertifikaadi genereerimine toimub järgneva käsuga:
.. code-block:: shell-session
$ openssl x509 -req -days 365 -CA ca.pem -CAkey ca.key -set_serial 1
-extfile service-cert-openssl.cnf -extensions ext_
-in -tls.csr -out -tls.pem
Käsu väljundiks on fail :file:`-tls.pem`.
Sertifikaadi genereerimiseks peab failisüsteemis olema seadistusfail
:file:`service-cert-openssl.cnf`.
.. literalinclude:: ../../../tests/testdata/testca/service/service-cert-openssl.cnf
:caption: Fail ``service-cert-openssl.cnf``
:language: ini
Hääletamisteenuse ajatemplipäringute signeerimisvõtme ja sertifikaadi genereerimine
***********************************************************************************
Hääletamisteenuse registreerimispäringute tegemise võti genereeritakse
järgneva käsuga:
.. code-block:: shell-session
$ openssl genrsa -out tspreg.key 2048
Käsu väljundiks on fail :file:`tspreg.key`.
Hääletamisteenuse registreerimispäringute tegemise võtme sertifikaat
genereeritakse järgneva käsuga:
.. code-block:: shell-session
$ openssl req -x509 -nodes -days 365 -out tspreg.pem -key tspreg.key -utf8
-subj "/C=EE/O=Example/OU=IVXV Test Certificates/CN=Collector Registration"
Käsu väljundiks on fail :file:`tspreg.pem`.
.. note::
Hääletamisteenuse ajatemplipäringute signeerimisvõti on vaja genereerida
vaid juhul, kui ajatempliteenust kasutatakse registreerimisteenuseks.
Mobiil-ID/Smart-ID/Web eID tugiteenusele jagatud krüptimissaladuse genereerimine
********************************************************************************
Jagatud krüptimissaladus genereeritakse järgneva käsuga:
.. code-block:: shell-session
$ openssl rand -out mobid-shared-secret.key 32
Käsu väljundiks on 32 baidi suurune fail :file:`mobid-shared-secret.key`, mida
Mobiil-ID, Smart-ID ja Web eID teenus hakkab kasutama sümmeetrilise AES-256 krüptimise
jaoks.
.. note::
Mobiil-ID/Smart-ID/Web eID tugiteenuse jagatud krüptimissaladus on vaja genereerida vaid
juhul, kui Mobiil-ID, Smart-ID või Web eID tugiteenus on kasutusel.
.. vim:syntax=rst:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-tehniline.inc
================================================
.. IVXV seadistuste koostamise juhend
.. _kt-technical:
Kogumisteenuse tehnilise seadistuse koostamine
----------------------------------------------
Tehniline seadistus määrab kogumisteenuse tehnilised parameetrid. Sama tehnilist
seadistust peaks olema võimalik kasutada erinevate valimiste seadistustega [#]_.
.. [#] Aga mitte samaaegselt: kogumisteenus toetab ainult ühte valimist.
Tehnilise seadistuse koostab kogumisteenuse osutaja.
Seadistusfaili nimi peab alati lõppema stringiga :file:`technical.yaml`.
Failinime võimalik eesliide peab alati lõppema punktiga.
:debug:
Tõeväärtus, kas logidesse kirjutatakse silumisteateid.
:snidomain:
Kohustuslik väli.
Domeen, mida kasutatakse teenuste SNI väärtuse seadistamiseks.
Varasemalt on kasutusel olnud väärtus `ivxv.invalid` võib kasutada ka
reaalseid domeene, mille nimehaldus on korraldaja kontrolli all nagu nt.
`ivxv.ee`
----
:filter:
Kohustuslik väli.
Alamblokk, mis sisaldab ühenduste filtrite seadistusi.
:filter.tls:
Kohustuslik väli.
Alamblokk, mis sisaldab ühenduste TLS-filtri seadistusi.
:filter.tls.handshaketimeout:
Kohustuslik väli.
Maksimaalne aeg sekundites TLS-kätluse läbiviimiseks.
:filter.tls.ciphersuites:
Kohustuslik väli.
TLS-protokolli versioonis 1.2 rakendamiseks lubatud šifrikomplektid.
Hetkel toetatud valikud on::
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Kui TLS-kätluse käigus lepitakse kokku TLS-protokolli versioonis 1.3,
siis šifrikomplekti seadistada ei saa ning kõik serveri poolt toetatud
turvalised šifrid on lubatud. Hetkel on nendeks::
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
:filter.codec:
Kohustuslik väli.
Alamblokk, mis sisaldab ühenduste koodekfiltri seadistusi.
:filter.codec.rwtimeout:
Kohustuslik väli.
Maksimaalne aeg sekundites valijalt tervikliku päringu lugemiseks.
Maksimaalne aeg sekundites valijale tervikliku päringu kirjutamiseks.
:filter.codec.requestsize:
Päringu maksimaalne suurus baitides. Välja puudumise või väärtuse 0
korral päringu suurust ei piirata.
:filter.codec.logrequests:
Tõeväärtus, kas logidesse kirjutatakse kõik sissetulnud päringud
algkujul. Päringu logi talletatakse tavalogist eraldi.
----
:network:
Kohustuslik väli.
Loetelu kogumisteenuse võrgusegmentidest.
Kõik kogumisteenuse võrgusegmentide parameetrid määrab kogumisteenuse osutaja.
:network.*.id:
Kohustuslik väli.
Võrgusegmendi identifikaator.
:network.*.services:
Kohustuslik väli.
Alamblokk, mis sisaldab kogumisteenuse selle võrgusegmendi
mikroteenuste seadistust.
.. todo:: Kuigi kõik selle bloki parameetrid määrab Koguja, kas
Korraldaja peaks vähemalt vahendusteenuste väliseid aadresse
kinnitama, kuna need on otspunktid, kuhu valija- ja
kontrollrakendus peavad ühendama hakkama?
:network.*.services.proxy:
Loetelu, mis sisaldab vahendusteenuste isendite seadistust.
:network.*.services.mid:
Loetelu, mis sisaldab Mobiil-ID toeteenuste isendite seadistust.
:network.*.services.smartid:
Loetelu, mis sisaldab Smart-ID toeteenuste isendite seadistust.
:network.*.services.webeid:
Loetelu, mis sisaldab Web eID toeteenuste isendite seadistust.
:network.*.services.sessionstatus:
Loetelu, mis sisaldab Session status toeteenuste isendite seadistust.
:network.*.services.choices:
Loetelu, mis sisaldab nimekirjateenuste isendite seadistust.
:network.*.services.voting:
Loetelu, mis sisaldab hääletamisteenuste isendite seadistust.
:network.*.services.verification:
Loetelu, mis sisaldab kontrollteenuste isendite seadistust.
:network.*.services.storage:
Loetelu, mis sisaldab talletusteenuste isendite seadistust.
:network.*.services.log:
Loetelu, mis sisaldab logikogumisteenuste isendite seadistust.
:network.*.services.backup:
Varundusteenuse isendi seadistus.
:network.*.services.*.id:
Kohustuslik väli.
Mikroteenuse isendi identifikaator.
:network.*.services.*.address:
Kohustuslik väli.
Mikroteenuse isendi võrguaadress ja -port.
.. todo:: Sama parameetrit kasutatakse kirjeldamaks seda, millisel
aadressil teenus peab kuulama hakkama ning milliselt aadressilt
saavad haldusteenus ja vahendusteenus teenusele ligi. Kui
sisemine ja välimine aadress hakkavad erinema, siis tuleb see
parameeter lüüa kaheks.
:network.*.services.*.peeraddress:
Mikroteenuse isenditevahelise suhtluse võrguaadress ja -port.
Kasutatakse ainult juhul, kui sama teenust pakkuvad isendid peavad
omavahel suhtlema (nt talletusteenus).
.. todo:: Sama parameetrit kasutatakse kirjeldamaks seda, millisel
aadressil teenus peab kuulama hakkama ning milliselt aadressilt
saavad teised isendid teenusele ligi. Kui sisemine ja välimine
aadress hakkavad erinema, siis tuleb see parameeter lüüa
kaheks.
:network.*.services.*.origin:
Kohustuslik väli.
Mikroteenuse isendi täielik domeeninimi ja -port.
----
:status:
Kohustuslik väli.
Alamblokk, mis sisaldab loetelu staatust raporteeriva serveritest.
:status.name:
Kohustuslik väli. Hetkel toetatud ainult ``session``.
Staatust raporteeriva serveri nimi.
:status.servername:
Kohustuslik väli.
Staatust raporteeriva serveri SNI.
:status.authttl:
Kohustuslik väli.
Aeg sekundites. Vaikeväärtus 0.
Maksimaalne aeg autentimiseks.
:status.choicettl:
Kohustuslik väli.
Aeg sekundites. Vaikeväärtus 0.
Maksimaalne aeg valiku tegemiseks.
:status.votettl:
Kohustuslik väli.
Aeg sekundites. Vaikeväärtus 0.
Maksimaalne aeg hääle andmiseks.
:status.verifyttl:
Kohustuslik väli.
Aeg sekundites. Vaikeväärtus 0.
Maksimaalne aeg hääle verifitseerimiseks.
----
:logging:
Alamblokk, mis sisaldab loetelu mikroteenuste kauglogimise serveritest.
Siin blokis kirjeldatakse:
* Logiseire teenus. Alati loetelus esimene. Teenusele saadetakse IVXV
logi alates tasemest INFO;
* Vajadusel ka täiendavad välised logikogujad, kuhu saadetakse täielik
logi alates tasemest DEBUG.
Logimine toimub üle RELP protokolli.
Kõik logiserverite parameetrid määrab kogumisteenuse osutaja.
:logging.address:
Kohustuslik väli.
Logiserveri aadress (IP-aadress või hostinimi).
:logging.port:
Logiserveri port (täisarv, vaikimisi *20514*).
----
:storage:
Kohustuslik väli.
Alamblokk, mis sisaldab talletusprotokolli seadistust.
Kõik talletusprotokolli parameetrid määrab kogumisteenuse osutaja.
:storage.protocol:
Kohustuslik väli.
Kogumisteenuse talletusprotokoll. Hetkel toetatud ainult ``etcd``.
:storage.conf:
Kohustuslik väli.
Talletusprotokolli seadistus. Sisu sõltub ``storage.protocol`` parameetri
väärtusest.
:storage.conf.ca:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Talletusteenuste TLS sertifikaatide väljastaja sertifikaat.
:storage.conf.conntimeout:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Maksimaalne aeg sekundites etcd serveriga ühenduse loomiseks.
:storage.conf.optimeout:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Maksimaalne aeg sekundites ühe talletusoperatsiooni teostamiseks.
:storage.conf.size:
Valikuline väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Andmebaasi suurus baitides.
:storage.conf.electiontimeout:
Valikuline väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Aeg millisekundites, mida kasutatakse liidri kättesaadavuse
kontrollimiseks.
:storage.conf.heartbeattimeout:
Valikuline väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Aeg millisekundites, mida kasutatakse andmebaasi hosti
kättesaadavuse kontrollimiseks.
:storage.conf.snapshotcount:
Valikuline väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Andmebaasi talletamispäringute arv, mille täitumise korral
andmebaasi seis varundatakse.
:storage.conf.bootstrap:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``storage.protocol`` on ``etcd``.
Loetelu nende talletusteenuste identifikaatoritest, mis on osa algsest
etcd klastrist. Vajalik, et talletusteenuse isend teaks esmasel
käivitumisel, kas see loob uut klastrit või liitub olemasolevaga.
Esmases tehnilises seadistuses peab loetelu kattuma ``network`` blokis
loetletud talletusteenuste identifikaatoritega. Hiljem teenuseid
lisades või eemaldades ei tohi ``storage.conf.bootstrap`` väärtust
uuendada.
:storage.ordertimeout:
Aeg sekundites. Vaikeväärtus 5.
Maksimaalne aeg hääle kirjutamiseks häälte järjekorra tabelisse.
----
:backup:
Varunduse parameetrid.
Loetelu varundamise kellaaegadest vormingus HH:MM.
:file:`example.technical.yaml`:
.. literalinclude:: config-examples/example.technical.yaml
:language: yaml
:linenos:
.. vim:syntax=rst:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-usaldusjuur.inc
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _kt-trust:
Kogumisteenuse usaldusjuure seadistamine
----------------------------------------
Kogumisteenuse usaldusjuur sisaldab andmeid seadistuste (kaasa arvatud
usaldusjuure enda) allkirjade kontrollimiseks ja nimekirja süsteemi esmastest
volitustest.
Usaldusjuure seadistuse koostab valimiste korraldaja.
Seadistusfaili nimi peab alati lõppema stringiga :file:`trust.yaml`.
Failinime võimalik eesliide peab alati lõppema punktiga.
.. attention::
Usaldusjuure seadistuste laadimine lähtestab kogumisteenuse. Seetõttu pole
juba seadistatud kogumisteenuse usaldusahela muutmine võimalik. Volituste
muutmine on võimalik vastavate korralduste abil.
:container:
Kohustuslik väli.
Alamblokk, mis sisaldab seadistusfailide allkirjade kontrollimise
seadistust.
:container.bdoc:
Alamblokk, mis sisaldab seadistusfailide BDOC-allkirjade kontrollimise
seadistust.
:container.bdoc.filecount:
Kohustuslik väli. Maksimaalne lubatud failide arv ZIP konteineris, ning
kuna tegu on BDOC konteineriga, siis sellele väärtusele tuleb alati liita 3,
sest BDOC konteineris on lisaks sisufailidele veel ``signatures0.xml``,
``manifest.xml`` ja ``mimetype`` failid.
:container.bdoc.bdocsize:
Kohustuslik väli.
BDOC konteineri maksimaalne lubatud suurus baitides.
:container.bdoc.filesize:
Kohustuslik väli.
BDOC konteineris olevate failide maksimaalne lubatud hõrendatud suurus
baitides.
:container.bdoc.roots:
Kohustuslik väli.
Seadistuste allkirjastajate sertifikaatide usaldusjuured.
:container.bdoc.intermediates:
Seadistuste allkirjastajate sertifikaatide vahesertifikaadid.
Usalduse saavutamiseks peab nende sertifikaatide abil olema võimalik
luua ahel allkirjastaja sertifikaadist usaldusjuureni.
:container.bdoc.profile:
Kohustuslik väli.
Seadistuste allkirjadelt nõutav BDOC profiil. Toetatud valikud on
``BES`` (põhiprofiil kirjeldatud BDOC spetsifikatsiooni jaotises 5),
``TS`` (ajatemplitega profiil kirjeldatud BDOC
spetsifikatsiooni jaotises 6.2).
:container.bdoc.ocsp.responders:
Kasutatakse ainult juhul kui ``container.bdoc.profile`` on ``TS``.
Kehtivuskinnitusi väljastanud OCSP responderi sertifikaadid. Kui nende
hulgast responderi sertifikaati ei leita, siis otsitakse OCSP vastuses
olevate sertifikaatide hulgast selline, mis on antud välja sama
väljastaja poolt, mis seadistuste allkirjastaja sertifikaat, ning on
lubatud OCSP vastuste signeerimiseks. AIA loogika kasutamise
korral võib väli olla tühi.
:container.bdoc.tsp.signers:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``container.bdoc.profile`` on ``TS``.
Ajatempliteenuse vastuse allkirjastamise sertifikaadid.
:container.bdoc.tsp.delaytime:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``container.bdoc.profile`` on ``TS``.
Maksimaalne ajanihe ajatempli loomise ja allkirjastamise vahel
sekundites.
:container.bdoc.tsdelaytime:
Kasutatakse ainult juhul kui ``container.bdoc.profile`` on ``TS``.
Maksimaalne ajanihe ajatempli ja kehtivuskinnituse loomise vahel
sekundites. Välja puudumise või väärtuse 0 korral peavad mõlemad olema
loodud samal sekundil.
:authorizations:
Kohustuslik väli.
Esmane nimekiri kogumisteenuse halduri volitustega isikutest (vt.
:ref:`rollid`), mis rakendatakse süsteemile usaldusjuure laadimisel.
Iga isiku kohta on kirje tema ID-kaardi välja ``Common Name`` (CN)
väärtusega. Minimaalselt peab sisaldama usaldusjuure signeerinud isiku
andmeid.
Näide
*****
:file:`example.trust.yaml`:
.. literalinclude:: config-examples/example.trust.yaml
:language: yaml
:linenos:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-valijate-nimekirja-vahelejätmine.inc
================================================
.. IVXV seadistuste koostamise juhend
.. _kt-voter-list-skip:
Valijate nimekirja vahelejätmine
--------------------------------
Valijate nimekirja vahelejätmine tähendab haldusteenuses registreerinud
vigase valijate nimekirja asendamist tühja nimekirjaga.
Protseduur on vajalik olukorras, kus haldusteenus on Valimiste Infosüsteemist
alla laadinud ja haldusteenuses registreerinud valijate muudatusnimekirja, mida
pole võimalik kogumisteenusele rakendada (nimekiri on vigane või pole kooskõlas
teiste kogumisteenuste seadistustega).
Valijate nimekirja vahelejätmine korralduse koostab valimiste korraldaja.
Seadistusfaili nimi peab alati lõppema stringiga :file:`.skip.yaml`.
:election:
Kohustuslik väli.
Valimise unikaalne identifikaator.
:skip_voter_list:
Kohustuslik väli.
Vahele jäetava valijate muudatusnimekirja versioon.
:changeset:
Kohustuslik väli.
Vahele jäetava valijate muudatusnimekirja järjekorranumber.
Näide
*****
:file:`example.voters.skip.yaml`:
.. literalinclude:: config-examples/example.voters.skip.yaml
:language: yaml
:linenos:
.. vim:syntax=rst:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-valimised.inc
================================================
.. IVXV seadistuste koostamise juhend
.. _kt-election:
Kogumisteenusele valimise seadistuse koostamine
-----------------------------------------------
Valimise seadistus määrab ühe valimise seadistuse.
Valimise seadistuse koostab valimiste korraldaja.
Seadistusfaili nimi peab alati lõppema stringiga :file:`election.yaml`.
Failinime võimalik eesliide peab alati lõppema punktiga.
:identifier:
Kohustuslik väli.
Valimise unikaalne identifikaator.
:questions:
Loetelu, mis sisaldab ühe või enama valimise küsimuse unikaalset
identifikaatorit. Unikaalsus peab olema tagatud ainult konkreetse
valimise küsimuste hulgas. Kohustuslik väli.
----
:period:
Kohustuslik väli.
E-hääletuse perioodi andmete alamblokk.
:period.servicestart:
Kohustuslik väli.
Kogumisteenuses häälte vastuvõtmise algusaeg. Sellest hetkest alates
hakkab kogumisteenus ühendusi teenindama. See aeg peab eelnema valimise
algusajale ning on mõeldud enne valimise algust proovihääle andmiseks.
Enne ``electionstart`` parameetriga määratud aega vastu võetud häälte
puhul tagastatakse valijarakendusele hääle esitamise lõpus vastav
veateade (hääl jõudis kohale enne valimise algust). Sellised hääled
tühistatakse automaatselt töötlemise käigus.
:period.electionstart:
Kohustuslik väli.
E-hääletuse algusaeg. Sellest hetkest alates antud hääled lähevad
häälte lugemisel arvesse.
:period.electionstop:
Kohustuslik väli.
E-hääletuse lõpuaeg. Sellest hetkest lõpetatakse valikute nimekirjade
väljastamine.
:period.servicestop:
Kohustuslik väli.
E-hääletuse lõppemisaeg. Sellest hetkest lõpetatakse häälte
vastuvõtmine ning teenused lõpetavad töö.
----
:voting:
Hääle esitamise parameetrite alamblokk.
:voting.ratelimitstart:
Valija poolt esitatud häälte kogus, mille järel rakendub talle
hääletamissageduse piirang. Arvesse lähevad ka vigased hääled, kuna
muidu saaks nendega süsteemi koormata piirangust hoolimata. Välja
puudumise või väärtuse 0 korral rakendub piirang alates esimesest
häälest.
:voting.ratelimitminutes:
Aeg minutites, mis peab jääma kahe hääle esitamise vahele, kui valijale
on rakendatud hääletamissageduse piirang. Välja puudumise või väärtuse
0 korral on hääletamissageduse piirangud välja lülitatud.
----
:verification:
Kohustuslik väli.
Hääle kontrollimise parameetrite alamblokk.
:verification.count:
Kohustuslik väli.
Suurim ühe hääle lubatud kontrollimiste arv.
:verification.minutes:
Kohustuslik väli.
Hääle kontrollimise perioodi kestus minutites. Pärast hääle
andmist on selle perioodi vältel võimalik häält kontrollida.
:verification.latestonly:
Tõeväärtus, kas kontrollida saab ainult valija viimati antud häält. Kui
väärtus on väär või puudu, siis saab kontrollida kõiki valija hääli
(teiste piirangute raames).
----
:voterforeignehak:
Alaliselt välisriigis elavate valijate ringkonnakuuluvuse tuvastamiseks
kasutatav EHAK-kood.
Kui parameeter on määratud, siis alaliselt välisriigis elavad valijad
kuuluvad ringkondadesse, kuhu kuulub ka parameetris määratud
EHAK-koodile vastav haldusüksus. Täiendavalt peab ringkondade nimekiri
sisaldama sellise EHAK-koodiga haldusüksust.
Kui parameeter on määramata, siis kasutatakse EHAK-koodi "0000". Kui
parameeter on määramata ning ringkondade nimekiri ei sisalda
vaikekoodile vastavat haldusüksust, siis valijate nimekiri ei tohi
sisaldada alaliselt välisriigis elavaid valijaid.
:ignorevoterlist:
Ringkonna identifikaator, mille valikud esitada kõigile valijatele.
Kui see väärtus ei ole tühi, siis kogumisteenus ei kasuta valijate
nimekirja ning esitab kõigile valijatele väärtusega määratud ringkonna
valikud ja lubab hääletada kõigil, kellel õnnestub isikutuvastus ning
hääle allkirja kontrollimine.
----
:voterlist:
Kohustuslik väli.
Valijate nimekirjade kontrollimise parameetrid.
:voterlist.key:
Kohustuslik väli.
ECDSA-võtmepaari avalik võti valijate nimekirjade allkirja
kontrollimiseks.
:vis:
Alamblokk, mis sisaldab Valimiste Infosüsteemi seadistust.
:vis.url:
Kohustuslik väli.
Valimiste Infosüsteemi URL.
:vis.ca:
Valimiste Infosüsteemi TLS-sertifikaadi usaldusahel.
:vis.min:
Valimiste Infosüsteemi valijate nimekirja hankimise sagedus
minutites (vaikeväärtus on 15).
:xroad:
Alamblokk, mis sisaldab X-teega ühenduva teenuse seadistust.
:xroad.ca:
X-teega teenuse TLS-sertifikaadi usaldusahel.
----
:ballot:
Alamblokk, mis sisaldab sedeli verifitseerimise seadistust.
:ballot.encpkeygroup:
Kohustuslik väli.
Abstraktne rühm, millele kuulub Võtmerakenduses genereeritud avalik võti
häälte krüpteerimiseks.
Võimalikud väärtused ``RFC3526ModPGroup2048`` (võtme pikkus on 2048 bitti ehk
256 baiti), ``RFC3526ModPGroup3072``, ``RFC3526ModPGroup4096``,
``RFC3526ModPGroup8192``, ``NIST-P256``, ``NIST-P384``, ``NIST-P521`` ja
``Edwards25519``. NB! Palun veendu, et valitud rühm loetelust oli ka
kasutusel avaliku võtme genereerimisel Võtmerakenduses (vt Võtmerakenduse
konfiguratsiooni faili).
Antud rühma kasutatakse krüpteeritud häälte korrektsuse verifitseerimiseks.
Antud väli on ignoreeritud kui `encpkey` on määratud.
:ballot.encpkey:
Avalik võti häälte krüpteerimiseks valijarakenduses.
Võtme rühma kasutatakse krüpteeritud häälte korrektsuse verifitseerimiseks.
----
:auth:
Kohustuslik väli.
Alamblokk, mis sisaldab valija tuvastamise seadistust.
:auth.ticket:
Alamblokk, mis sisaldab piletipõhise valija tuvastamise seadistust.
Piletipõhist valija tuvastamist kasutatakse Mobiil-ID/Smart-ID/Web eID puhul,
kus ``mid``/``smartid``/``webeid`` teenus tuvastab valija ning väljastab talle
pileti, millega teistele teenustele ennast tuvastada.
See alamblokk on tühi, aga tema olemasolu või puudumine määrab, kas
piletipõhine valija tuvastus on lubatud või ei.
:auth.tls:
Alamblokk, mis sisaldab TLS-põhise valija tuvastamise seadistust.
TLS-põhist valijatuvastust kasutatakse ID-kaardi puhul.
:auth.tls.roots:
Kohustuslik väli.
Valija TLS-klientsertifikaatide usaldusjuured.
:auth.tls.intermediates:
Valija TLS-klientsertifikaatide vahesertifikaadid. TLS-autentimiseks
peab nende sertifikaatide abil olema võimalik luua ahel valija
klientsertifikaadist usaldusjuureni.
:auth.tls.ocsp:
Alamblokk, mis sisaldab valija TLS-klientsertifikaatide oleku
kontrollimise seadistust. Selle bloki puudumisel valija sertifikaatide
kehtivust ei kontrollita välisest kehtivuskinnitusteenusest.
:auth.tls.ocsp.url:
Valija TLS-klientsertifikaatide kehtivuskinnitusteenuse aadress.
Kui pole seadistatud, siis kasutatakse kehtivuskinnitusteenuse
aadressi otse TLS-klientsertifikaadist.
:auth.tls.ocsp.responders:
Valija TLS-klientsertifikaatide kehtivuskinnitusteenuse responderi
sertifikaadid. Kui nende hulgast responderi sertifikaati ei leita, siis
otsitakse vastuses olevate sertifikaatide hulgast selline, mis on antud
välja sama väljastaja poolt, mis kontrollitav sertifikaat, ning on
lubatud OCSP vastuste signeerimiseks.
:auth.tls.ocsp.retry:
Valija TLS-klientsertifikaatide oleku kontrolli korduvkatsete arv.
Juhul kui sertifikaadi oleku kontroll ebaõnnestub võrgu- või serverivea
tõttu, saab seda automaatselt korrata. Välja väärtus määrab katsete
arvu, mis tehakse lisaks algsele päringule. Seega kui väärtus on 1,
siis tehakse kokku maksimaalselt kaks päringut. Välja puudumise või
väärtuse 0 korral automaatseid korduvkatseid ei sooritata.
----
:identity:
Tuvastatud valija X.500 eraldusnimest unikaalse identifikaatori
tuletamise meetod. Hetkel toetatud valikud ``commonname``,
``serialnumber`` ja ``pnoee``.
Eesti elektrooniliste isikut tõendavate dokumentide korral on
``commonname`` puhul identifikaator kujul "PERENIMI,EESNIMI,ISIKUKOOD"
ning teiste valikute teise puhul "ISIKUKOOD".
Kui ``serialnumber`` tagastab eraldusnimest ``serialNumber`` välja
muutmata kujul, siis ``pnoee`` eemaldab sellelt enne mittekohustusliku
"PNOEE-" eesliite. Viimane on vastavuses standardi ETSI EN 319 412-1
jaotisega 5.1.3 Eesti isikukoodide jaoks, kuid lubab ka standardile
mittevastavaid seerianumbreid.
----
:age:
Alamblokk, mis sisaldab valija vanuse kontrolli seadistust. Kui see
blokk puudub, siis valija vanust ei kontrollita.
:age.method:
Kohustuslik väli.
Valija sünniaja tuvastamiseks kasutatav meetod. Hetkel toetatud ainult
``estpic``, mis eeldab, et valija unikaalne identifikaator on Eesti
isikukood ning eraldab sealt sünniaja.
:age.timezone:
Kohustuslik väli.
IANA ajavööndi nimi, milles valija vanus arvutatakse ehk millises
ajavööndis peab valija olema valimisealine.
:age.limit:
Kohustuslik väli.
Valija peab olema vähemalt nii vana, et hääletada. Kui väärtus on 0,
siis valija vanust ei kontrollita.
----
:vote:
Kohustuslik väli.
Alamblokk, mis sisaldab häälte allkirjade kontrollimise seadistust.
:vote.bdoc:
Alamblokk, mis sisaldab häälte BDOC-allkirjade kontrollimise seadistust.
:vote.bdoc.filecount:
Kohustuslik väli. Maksimaalne lubatud failide arv ZIP konteineris, ning
kuna tegu on BDOC konteineriga, siis sellele väärtusele tuleb alati liita 3,
sest BDOC konteineris on lisaks sisufailidele veel ``signatures0.xml``,
``manifest.xml`` ja ``mimetype`` failid. Antud parameetri väärtuseks sobib 4
(hääl + 3 lisafaili).
:vote.bdoc.bdocsize:
Kohustuslik väli.
BDOC konteineri maksimaalne lubatud suurus baitides.
:vote.bdoc.filesize:
Kohustuslik väli.
BDOC konteineris olevate failide maksimaalne lubatud hõrendatud suurus
baitides.
:vote.bdoc.roots:
Kohustuslik väli.
Häälte allkirjastajate sertifikaatide usaldusjuured.
:vote.bdoc.intermediates:
Häälte allkirjastajate sertifikaatide vahesertifikaadid.
Hääle arvesseminekuks peab nende sertifikaatide abil olema võimalik
luua ahel allkirjastaja sertifikaadist usaldusjuureni.
:vote.bdoc.profile:
Kohustuslik väli.
Häälte allkirjadelt nõutav BDOC profiil. Toetatud valikud on ``BES``
(põhiprofiil kirjeldatud BDOC spetsifikatsiooni jaotises 5) ja
``TS`` (ajatemplitega profiil kirjeldatud BDOC spetsifikatsiooni
jaotises 6.2).
See peaks olema ``BES``, kuna kõikide allkirjastamisvahendite puhul ei
ole sissetulev hääl kvalifitseeritud (nt Eesti ID-kaart). Kogumisteenus
kvalifitseerib häältel olevad allkirjad ise (vt ``qualification``).
----
:mid:
Alamblokk, mis sisaldab Mobiil-ID teenusepakkuja seadistust.
:mid.url:
Kohustuslik väli.
Mobiil-ID teenusepakkuja asukoht.
:mid.relyingpartyuuid:
Kohustuslik väli.
Mobiil-ID teenusepakkujaga kokkulepitud kliendi identifikaator.
:mid.relyingpartyname:
Kohustuslik väli.
Mobiil-ID teenusepakkujaga kokkulepitud kliendi nimi.
:mid.language:
Kohustuslik väli.
Mobiil-ID kasutajale kuvatavate sõnumite keel. Võimalikud väärtused
``EST``, ``ENG``, ``RUS`` ja ``LIT``.
:mid.authmessage:
Kohustuslik väli.
Sõnum, mida Mobiil-ID kasutajale kuvada autentimise käigus.
:mid.signmessage:
Kohustuslik väli.
Sõnum, mida Mobiil-ID kasutajale kuvada allkirjastamise käigus.
:mid.messageformat:
Autentimise ning allkirjastamise käigus kasutajale kuvatava sõnumi
vorming. Võimalikud väärtused ``GSM-7`` (Mobiil-ID poolt kasutatav
vaikeväärtus) ja ``UCS-2``.
:mid.authchallengesize:
Autentimise käigus Mobiil-ID teenusele saadetava pretensiooni pikkus.
Võimalikud väärtused ``32`` (vaikeväärtus), ``48`` ja ``64``.
:mid.statustimeoutms:
Parameeter, mis edastatakse autentimise ja allkirjastamise staatuse
päringu korral Mobiil-ID teenusele ning millega saab kontrollida, kui
kaua ootab Mobiil-ID teenus kasutaja poolse tegevuse lõpptulemust, enne
kui vastab, et tegevus on pooleli. Väärtuse puudumisel oodatakse
võimalikult vähe: täpne aeg sõltub Mobiil-ID teenusest.
Antud parameetri abil saab vähendada ühe autentimise või allkirjastamise
käigus Mobiil-ID teenusele saadetavate päringute arvu.
:mid.roots:
Kohustuslik väli.
Mobiil-ID sertifikaatide usaldusjuured.
:mid.intermediates:
Mobiil-ID sertifikaatide vahesertifikaadid. Mobiil-ID autentimiseks
peab nende sertifikaatide abil olema võimalik luua ahel Mobiil-ID
sertifikaadist usaldusjuureni.
:mid.ocsp:
Alamblokk, mis sisaldab valija Mobiil-ID sertifikaatide oleku
kontrollimise seadistust.
:mid.ocsp.url:
Valija Mobiil-ID sertifikaatide kehtivuskinnitusteenuse aadress.
Kui pole seadistatud, siis kasutatakse kehtivuskinnitusteenuse
aadressi otse Mobiil-ID klientsertifikaadist.
:mid.ocsp.responders:
Mobiil-ID sertifikaatide OCSP responderi sertifikaadid. Kui nende
hulgast responderi sertifikaati ei leita, siis otsitakse vastuses
olevate sertifikaatide hulgast selline, mis on antud välja sama
väljastaja poolt, mis kontrollitav sertifikaat, ning on lubatud OCSP
vastuste signeerimiseks.
----
:smartid:
Alamblokk, mis sisaldab Smart-ID teenusepakkuja seadistust.
:smartid.url:
Kohustuslik väli.
Smart-ID teenusepakkuja asukoht.
:smartid.relyingpartyuuid:
Kohustuslik väli.
Smart-ID teenusepakkujaga kokkulepitud kliendi identifikaator.
:smartid.relyingpartyname:
Kohustuslik väli.
Smart-ID teenusepakkujaga kokkulepitud kliendi nimi.
:smartid.authinteractionsorder:
Kohustuslik väli.
Autentimise käigus Smart-ID kasutajale kuvatavate interaktsioonide järjekord.
Järjekorrast valitakse esimene interaktsioon, mida rakendus toetab.
Võimalikud väärtused: ``displayTextAndPIN`` koos ``displayText60``,
``verificationCodeChoice`` koos ``displayText60``,
``confirmationMessage`` koos ``displayText200`` või
``confirmationMessageAndVerificationCodeChoice`` koos ``displayText200``.
:smartid.signinteractionsorder:
Kohustuslik väli.
Allkirjastamise käigus Smart-ID kasutajale kuvatavate interaktsioonide järjekord.
Järjekorrast valitakse esimene interaktsioon, mida rakendus toetab.
Võimalikud väärtused: ``displayTextAndPIN`` koos ``displayText60``,
``verificationCodeChoice`` koos ``displayText60``,
``confirmationMessage`` koos ``displayText200`` või
``confirmationMessageAndVerificationCodeChoice`` koos ``displayText200``.
:smartid.authchallengesize:
Autentimise käigus Smart-ID teenusele saadetava pretensiooni pikkus.
Võimalikud väärtused ``32`` (vaikeväärtus), ``48`` ja ``64``.
:smartid.statustimeoutms:
Autentimise ja allkirjastamise staatuse päringu korral Smart-ID
teenusele edastatav parameeter, millega saab kontrollida, kui kaua
Smart-ID teenus ootab kasutajapoolse tegevuse lõpptulemust, enne kui
vastab, et tegevus on pooleli.
Väärtuse puudumisel oodatakse võimalikult vähe: täpne aeg sõltub
Smart-ID teenusest.
Parameeter aitab vähendada autentimise või allkirjastamise käigus
Smart-ID teenusele saadetavate päringute arvu.
:smartid.roots:
Kohustuslik väli.
Smart-ID sertifikaatide usaldusjuured.
:smartid.intermediates:
Smart-ID sertifikaatide vahesertifikaadid. Smart-ID autentimiseks
peab nende sertifikaatide abil olema võimalik luua ahel Smart-ID
sertifikaadist usaldusjuureni.
:smartid.ocsp:
Alamblokk, mis sisaldab valija Smart-ID sertifikaatide oleku
kontrollimise seadistust.
:smartid.ocsp.url:
Valija Smart-ID sertifikaatide kehtivuskinnitusteenuse aadress.
Kui pole seadistatud, siis kasutatakse kehtivuskinnitusteenuse
aadressi otse Smart-ID klientsertifikaadist.
:smartid.ocsp.responders:
Smart-ID sertifikaatide OCSP responderi sertifikaadid. Kui nende
hulgast responderi sertifikaati ei leita, siis otsitakse vastuses
olevate sertifikaatide hulgast selline, mis on
1) välja antud sama väljastaja poolt, mis kontrollitav sertifikaat;
ja
2) lubatud OCSP vastuste signeerimiseks.
----
:qualification:
Loetelu välistest kvalifitseerivatest päringutest, mis tehakse iga
hääle kohta, koos seadistustega.
Siin on kasutatud loetelu protokoll ja seadistus blokkidest selle
asemel, et anda igale protokollile oma blokk, kuna kvalifitseerivate
päringute järjekord on oluline ning seadistatav.
:qualification.*.protocol:
Kohustuslik väli.
Kvalifitseeriva päringu protokoll. Hetkel toetatud ``ocsp``
(harilik OCSP), ``tsp`` (PKIX ajatempel) ja ``tspreg`` (PKIX ajatempel
registreerimistõendina).
:qualification.*.conf:
Kohustuslik väli.
Kvalifitseeriva päringu protokolli seadistus. Sisu sõltub
``qualification.*.protocol`` parameetri väärtusest.
:qualification.*.conf.url:
Valikuline väli ainult ``ocsp`` puhul, sest kui pole seadistatud,
kasutatakse kehtivuskinnitusteenuse aadressi otse klientsertifikaadist.
Aadress, kuhu kvalifitseeriv päring tehakse.
:qualification.*.conf.responders:
Kasutatakse ainult juhul kui ``qualification.*.protocol`` on ``ocsp``.
OCSP responderi sertifikaadid. Kui nende hulgast responderi sertifikaati
ei leita, siis otsitakse vastuses olevate sertifikaatide hulgast
selline, mis on antud välja sama väljastaja poolt, mis kontrollitav
sertifikaat, ning on lubatud OCSP vastuste signeerimiseks. AIA
loogika kasutamise korral võib väli jääda tühjaks.
:qualification.*.conf.signers:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``qualification.*.protocol`` on ``tsp``
või ``tspreg``.
Ajatempliteenuse vastuse allkirjastamise sertifikaadid.
:qualification.*.conf.delaytime:
Kohustuslik väli.
Kasutatakse ainult juhul kui ``qualification.*.protocol`` on ``tsp``
või ``tspreg``.
Maksimaalne ajanihe ajatempli loomise ja allkirjastamise vahel
sekundites.
:qualification.*.conf.retry:
Kvalifitseeriva päringu korduvkatsete arv. Juhul kui päring ebaõnnestub
võrgu- või serverivea tõttu, saab seda automaatselt korrata. Välja
väärtus määrab katsete arvu, mis tehakse lisaks algsele päringule.
Seega kui väärtus on 1, siis tehakse kokku maksimaalselt kaks päringut.
Välja puudumise või väärtuse 0 korral automaatseid korduvkatseid ei
sooritata.
Näide
*****
:file:`example.election.yaml`:
.. literalinclude:: config-examples/example.election.yaml
:language: yaml
:linenos:
.. vim:syntax=rst:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-volitused.inc
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _kt-management:
Kogumisteenuse volituste kirjeldamine
-------------------------------------
Kasutajatele volituste määramine käib süsteemis kirjeldatud rollide kaudu.
Igale rollile on määratud komplekt õigusi ja kasutajal on kõik volitused, mis
talle seotud rollide kaudu on määratud.
Volituste määramise korraldus määrab ühele kasutajale tema rollid süsteemis.
Volitused koostatakse JSON-vormingus failina, millega määratakse:
#. Korralduse sisu (``action=user-permissions``);
#. Volitatud kasutaja *Common Name* väli tema ID-kaardilt (väli ``cn``);
#. Kasutaja rollide nimekiri komadega eraldatud nimekirjana (väli ``roles``).
Faili vorming:
.. code-block:: JavaScript
{
"action": "user-permissions",
"cn": ",
"roles": "roll1[,roll2]"
}
.. _rollid:
Rollid
******
Kogumisteenuses on järgnevad rollid:
#. **Kogumisteenuse haldur** (``admin``) on ette nähtud kogumisteenuse
tehniliseks haldamiseks;
#. **Valimiste haldur** (``election-conf-manager``) on ette nähtud valimiste
seadistuste kehtestamiseks;
#. **Vaataja** (``viewer``) on ette nähtud haldusteenuse kaudu väljastatavate
andmete vaatamiseks;
#. **Õigusteta kasutaja** (``none``). See roll on ette nähtud kasutajakonto
kirje hoidmiseks olukorras, kus kasutajale pole ühtegi teist rolli määratud
(näiteks pärast lisamist või pärast kõigist teistest rollidest eemaldamist).
.. list-table::
Rollide ja volituste maatriks
:header-rows: 1
* -
- ``admin``
- ``election-`` ``conf-`` ``manager``
- ``viewer``
- ``none``
* - Üldseisundi ja statistika vaatamine
- ✓
- ✓
- ✓
- `-`
* - Valimiste seadistuste rakendamine
- ✓
- ✓
- `-`
- `-`
* - E-valimiskasti allalaadimine
- ✓
- ✓
- `-`
- `-`
* - Kasutajate haldus
- ✓
- `-`
- `-`
- `-`
* - Tehnilise seadistuse rakendamine
- ✓
- `-`
- `-`
- `-`
* - Logide vaatamine
- ✓
- `-`
- `-`
- `-`
Volituste reeglid
*****************
* Kasutaja võib olla mitmes rollis korraga;
* Roll annab kasutajale rolliga seotud õigused, ükski roll õigusi ära ei võta.
.. vim:syntax=rst:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/kt-ylevaade.inc
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
Ülevaade
--------
Kogumisteenuse juhtimine toimub signeeritud korralduste abil. Korraldused
koostatakse operaatori poolt tekstiredaktori abil või imporditakse Valimiste
Infosüsteemist. Korraldused signeeritakse ID-kaardiga.
Nimekiri kogumisteenuse haldamise korraldustest:
#. Usaldusjuure seadistus;
#. Tehniline seadistus;
#. Valimiste seadistus;
#. Valikute nimekiri;
#. Ringkondade nimekiri;
#. Valijate nimekiri;
#. Valijate nimekirja vahelejätmine;
#. Kasutajate volituste määramine.
Lisaks korraldustele tuleb kogumisteenusele genereerida ka komplekt
krüptovõtmeid.
Korralduste vorming
*******************
Kogumisteenuse korralduste vorming on enamasti YAML või JSON, valijate
nimekirja puhul kasutatakse spetsiifilist vormingut.
YAML-vormingus korraldused:
#. Usaldusjuure seadistus;
#. Tehniline seadistus;
#. Valimiste seadistus.
JSON-vormingus korraldused:
#. Valikute nimekiri;
#. Kasutajate volituste määramine.
Kohandatud vormingus korraldused:
#. Valijate nimekiri.
YAML-vormingus korraldused
~~~~~~~~~~~~~~~~~~~~~~~~~~
YAML-vormingus seadistustesse on võimalik kaasata väliseid faile. Selleks
kasutatakse silti ``!container``.
Näide:
.. code-block:: yaml
# välja "ext_file" väärtus loetakse failist "certificate-file.pem"
ext_file: !container certificate-file.pem
.. caution::
Väliste failide kaasamisel tuleb arvestada sellega, et seadistused
laaditakse süsteemi BDOC-vormingus konteinerites (vt. lõiku
:ref:`korralduspaki-vorming`). See seab väliste failide kaasamisele
järgmised nõuded:
* Kasutatavad välised failid peavad olema pakendatud seadistusfailiga
samasse konteinerisse;
* Välised failid peavad asuma seadistusfailiga samas kataloogis.
.. _korralduspaki-vorming:
Korralduspaki vorming
*********************
Korralduspakk on BDOC-vormingus konteiner, milles on korraldusfail ja
signatuurid. Üks korralduspakk tohib sisaldada ainult ühte korraldust.
YAML-vormingus seadistuse (usaldusjuure seadistus, tehniline seadistus ja
valimiste seadistus) korral võivad failis olla ka seadistusfaili poolt
kasutatavad välised failid.
.. vim:syntax=rst:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/mixnet.rst
================================================
.. IVXV juhend Verificatumi miksneti ettevalmistamiseks ning kasutamiseks
E-häälte miksimine
====================================================
.. _mix-install:
Miksneti Verificatum paigaldamine
---------------------------------
Eeldused
^^^^^^^^
Juhend on kasutamiseks distributsiooniga Ubuntu 20.04 LTS (Bionic Beaver) ja
see eeldab, et käske käivitatakse lihtkasutaja õigustest, kellel on õigus
privileegide eskaleerimiseks `sudo` käsu abil. Lisaks on eeldatud järgmiste
failide olemasolu kasutaja kodukaustas:
Github repositooriumist (https://github.com/vvk-ehk/intcheck):
* :file:`intcheck.py` - tööriist kataloogide täielikkuse kontrolliks
IVXV tarnefailist:
* :file:`gmpmee.dirsha256sum` - ``gmpmee`` kataloogi räsi;
* :file:`vmgj.dirsha256sum` - ``vmgj`` kataloogi räsi;
* :file:`vcr.dirsha256sum` - ``vcr`` kataloogi räsi;
* :file:`vmn.dirsha256sum` - ``vmn`` kataloogi räsi;
* :file:`ivxv-verificatum-1.10.3-runner.zip` - IVXV adapter Verificatumi
kasutamiseks.
Valimise korraldaja käest:
* :file:`data/bb-4.json` - anonüümitud e-valimiskast;
* :file:`data/pub.pem` - häälte krüpteerimiseks kasutatud võti.
Kataloogis :file:`data/` ei tohi olla ühtegi teist faili.
Pärast protsessi lõppu on kataloogis :file:`data/` vajalikud järgnevad failid:
* :file:`shuffled.json` - miksitud e-valimiskast;
* :file:`proof.zip` - korrektse miksimise tõend.
Verificatumi ehitamine
^^^^^^^^^^^^^^^^^^^^^^
Ehitamiseks vajalike pakkide paigaldamine::
sudo apt-get install --no-install-recommends -y autoconf autoconf automake \
build-essential libgmp-dev libtool git openjdk-11-jdk-headless \
python unzip wget
Verificatumi lähtekoodi allalaadimine::
git clone https://github.com/verificatum/verificatum-gmpmee gmpmee
git clone https://github.com/verificatum/vmgj
git clone https://github.com/verificatum/vcr
git clone https://github.com/verificatum/vmn
Lähtekoodist puhaste arhiivide loomine täielikkuse kontrolliks::
cd gmpmee
git checkout 4aafc31
rm -rf .git/
cd ../vmgj
git checkout 8d7d412
rm -rf .git/
cd ../vcr
git checkout af9fd82
rm -rf .git/
cd ../vmn
git checkout bb00543
rm -rf .git/
cd ..
Verificatumi lähtekoodi täielikkuse kontrollimine::
chmod +x ./intcheck.py
./intcheck.py verify gmpmee gmpmee.dirsha256sum
./intcheck.py verify vmgj vmgj.dirsha256sum
./intcheck.py verify vcr vcr.dirsha256sum
./intcheck.py verify vmn vmn.dirsha256sum
`gmpmee` ehitamine::
cd gmpmee/
make -f Makefile.build
./configure
make
sudo make install
`vmgj` ehitamine::
cd ../vmgj/
make -f Makefile.build
./configure
make
sudo make install
`vcr` ehitamine::
cd ../vcr/
make -f Makefile.build
./configure --enable-vmgj
make
sudo make install
`vmn` ehitamine::
cd ../vmn/
make -f Makefile.build
./configure
make
sudo make install
IVXV Verificatumi adapteri ja käivitusskripti lahtipakkimine::
cd ..
unzip ivxv-verificatum-1.10.3-runner.zip
Verificatumi teekide kopeerimine adapteri väliste teekide kataloogi::
cp /usr/local/share/java/verificatum-vmgj-1.2.2.jar mixer/lib/verificatum-vmgj.jar
cp /usr/local/share/java/verificatum-vcr-vmgj-3.0.4.jar mixer/lib/verificatum-vcr-vmgj.jar
cp /usr/local/share/java/verificatum-vmn-3.0.4.jar mixer/lib/verificatum-vmn.jar
cp /usr/local/lib/libgmpmee.so.0.0.0 mixer/lib/libgmpmee.so.0
cp /usr/local/lib/libvmgj-1.2.2.so mixer/lib/libvmgj-1.2.2.so
.. _mix-mix:
E-häälte miksimine
----------------------------------------
Verificatumi miksneti käivitamine::
cd data
../mixer/bin/mix.py --pubkey pub.pem --ballotbox bb-4.json \
--shuffled shuffled.json --proof-zipfile proof.zip shuffle
Verificatumi miksneti käivitamine koos entroopiaallika eelneva tühjendamisega::
cd data
../mixer/bin/mix.py --pubkey pub.pem --ballotbox bb-4.json \
--shuffled shuffled.json --proof-zipfile proof.zip --empty-entropy-pool \
shuffle
.. _mix-verify:
Miksimistõendi verifitseerimine
-------------------------------
Verificatumi adapteri abil saab miksimistõendit ka verifitseerida::
cd ..
mkdir verify
cp data/proof.zip verify
cd verify
../mixer/bin/mix.py verify --proof-zipfile proof.zip
================================================
FILE: Documentation/et/seadistuste_koostejuhend/rakendused.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _ivxv-rakendused:
IVXV rakendused
===============
.. _app-install:
Rakenduste paigaldamine
--------------------------------------------------------------------------------
IVXV rakendused on:
* võtmerakendus `key` (:numref:`app-key`),
* töötlemisrakendus `processor` (:numref:`app-processor`),
* auditirakendus `auditor` (:numref:`app-auditor`).
IVXV rakendused on arendatud programmeerimiskeeles Java, kasutusel on Java 21.
Rakendused on testitud Windows 11 ja Ubuntu 22.04 platvormil kasutades OpenJDK'd
või Oracle Javat.
Rakendused tarnitakse ZIP-vormingus failidena::
-.zip
Peale ZIP-faili lahti pakkimist tekib kataloogipuu::
-
|-- bin
| |--
| |--
|-- lib
| |-- *.jar
Kui kataloogitee `-/bin` panna keskkonnamuutujasse `PATH`, saab rakendust
edaspidi käivitada käsurealt::
$
Rakendusi paigaldades tuleb arvestada, et kesksüsteemi protokollides kirjeldatud
raportid kasutavad ilma ajavööndita aja vormingut (`yyyymmddhhmmss`).
Ajavööndiga ajamärgendi (näiteks hääletamise aeg kogumisteenuselt saadud
e-valimiskastis) esitamiseks raportis teisendavad Java rakendused ajamärgendi esmalt
operatsioonisüsteemi ajavööndisse ning seejärel eemaldavad ajavööndi info.
Seetõttu tuleb rakendusi käivitavates masinates seadistada ajavöönd selliseks,
millise kohalikus ajas soovitakse ajamärgendeid näha.
.. _app-trust:
Rakenduste usaldusjuure kirjeldamine
------------------------------------
Rakenduste kasutamine eeldab digitaalselt allkirjastatud seadistuste kasutamist.
Allkirjade verifitseerimiseks vajalikud sertifikaadid tuleb rakendusele ette
anda usaldusjuure koosseisus. Usaldusjuur on samuti digitaalselt allkirjastatud.
Usaldusjuure seadistuse koostab valimiste korraldaja.
:ca:
Komadega eraldatud loetelu konteineris sisalduvatest CA sertifikaatidest ja
vahesertifikaatidest.
:ocsp:
Komadega eraldatud loetelu konteineris sisalduvatest OCSP sertifikaatidest.
:tsa:
Komadega eraldatud loetelu konteineris sisalduvatest ATO sertifikaatidest.
Kõik sertifikaadid antakse PEM vormingus.
Rakendusele esitatakse usaldusjuur BDOC konteineris, kus usaldusjuure
spetsifikatsioon on kirjeldatud failis `ivxv.properties` ning kõik juure
elemendid on konteinerisse laaditud.
Näide
*****
:file:`ivxv.properties`:
.. literalinclude:: config-examples/ivxv.properties.real
:linenos:
Rakenduste käivitamine
--------------------------------------------
Rakendusi käivitatakse käsurealt, nende toimimist juhitakse käsureaparameetrite
ja digitaalselt allkirjastatud seadistustega. Kõik rakendused väljastavad
vajadusel abiinfot::
$ --help
Rakendus 'rakendus' - Rakendus
Kasutamine:
--conf [--params ] [--force ] [--quiet ] [--lang ] [--container_threads ] [--threads ]
-h | --help
-h | --help
Tööriistad:
tool_foo - Tegevuse FOO teostamine
tool_bar - Tegevuse BAR teostamine
Käsurea argumendid:
-h --help - Abi
-c --conf (*) - Konfiguratsioon
-p --params - Tööriista parameetrid
-f --force - Ära küsi kasutajalt kinnitust
-q --quiet - Vaikne käivitusrežiim
--lang - Keel
-ct --container_threads - Allkirjastatud konteinerite teegi poolt kasutatav lõimede arv (<= 0 korral dünaamiline)
-t --threads - Rakenduse poolt paralleeltöötluse korral kasutatav lõimede arv (<= 0 korral dünaamiline)
Rakendus lõpetas töö ilma vigadeta
Rakenduste kasutamisel tuleb määrata konkreetne tööriist, usaldusjuur ning
seadistusfail::
$ tool_foo --conf usaldusjuur.asice --params tool_foo.conf.asice
Konfiguratsiooni laadimine failist usaldusjuur.asice
Konfiguratsiooni allkirja kontrollimine
Konfiguratsiooni allkirja on andnud NIMI NIMESTE
Konfiguratsiooni allkirja andmise aeg on 24.12.2018 18:00
Konfiguratsiooni allkiri on korrektne ja kehtiv
FOO!
Rakendus lõpetas töö ilma vigadeta
Juhised rakenduste tööriistade ning nende seadistusfailide koostamise kohta
antakse järgmistes peatükkides. Käsureaargumendid on kõigil rakendustel samad:
:-h --help:
Abiinfo kuvamine kas rakenduse või konkreetse tööriista kohta.
:-c --conf (*):
Digitaalselt allkirjastatud fail usaldusjuurega. Kohustuslik parameeter.
:-p --params:
Digitaalselt allkirjastatud tööriista parameetrid.
:-f --force:
Ära küsi kasutajalt kinnitust.
:-q --quiet:
Vaikne käivitusrežiim.
:--lang:
Juhul kui rakendus on kompileeritud mitmekeelsena, siis keele valik.
Vaikimisi on rakendustes võimaldatud ainult eesti keel.
:-ct --container_threads:
Allkirjastatud konteinerite teegi poolt kasutatav lõimede arv. Vaikimisi
valitakse lõimede arv teegi poolt dünaamiliselt lähtudes saadaolevate
tuumade arvust.
:-t --threads:
Rakenduse poolt paralleeltöötluse korral kasutatav lõimede arv. Vaikimisi
valitakse lõimede arv rakenduse poolt dünaamiliselt lähtudes saadaolevate
tuumade arvust.
Rakendustest eksisteerivad nii tooteversioonid kui testversioonid.
Testrakendused on kohaldatud protseduuride efektiivseks testimiseks, kuid ei
sobi valimiste tegelikuks läbiviimiseks. Näiteks ei võimalda võtmerakenduse
testversioon kasutada kiipkaarte. Testversioonid rakendustest kuvavad
käivitamisel hoiatuse::
********************************************************************
* !!! HOIATUS !!! *
* *
* Rakendus on käivitatud arendusrežiimis ning rakenduse käitumine *
* võib erineda tavarežiimist. *
* Rakenduse käivitamiseks tavarežiimis tuleb rakendus ümber *
* kompileerida. *
********************************************************************
Rakenduste käivituskeskkonna parameetrid
----------------------------------------
Suure e-valimiskasti auditeerimisel, töötlemisel või dekrüpteerimisel, võib olla
tarvilik suurendada protsessi mälupiirangut.
Seda saab teha kasutades rakendusespetsiifilist keskkonnamuutujat
``{RAKENDUS}_OPTS``, mis defineerib täiendavad argumendid Java virtuaalmasinale.
``{RAKENDUS}`` on üks kolmest ``AUDITOR``, ``KEY`` või ``PROCESSOR``. Protsessi
mälupiirangu suurendamiseks tuleb kasutada argumenti ``-Xmx{N}G``, kus ``{N}``
on mälupiirangu suurus gigabaitides.
Näiteks 10 gigabaidi mälu eraldamiseks töötlemisrakendusele tuleb seada
``PROCESSOR_OPTS=-Xmx10G``.
.. list-table:: Rakenduste mälupiirangu parameetrid
:header-rows: 1
* - Rakendus
- Vaikimisi mälupiirang
- Keskkonnamuutuja
* - Auditirakendus
- 8GB
- ``AUDITOR_OPTS``
* - Töötlemisrakendus
- 8GB
- ``PROCESSOR_OPTS``
* - Võtmerakendus
- Puudub
- ``KEY_OPTS``
Rakendused töötavad nii 32-bitise kui 64-bitise Java andmemudeliga, samas
efektiivseimaks toimimiseks tuleb rakendusi kasutada 64-bitisel platvormil
64-bitise Java andmemudeliga. Juhul kui rakendus ei suuda käivitamisel 64-bitist
mudelit tuvastada kuvatakse hoiatus::
********************************************************************
* !!! HOIATUS !!! *
* *
* 64-bitise Java andmemudeli tuvastamine ebaõnnestus. Rakendus on *
* vähemefektiivsem. Rakenduse jõudluse suurendamiseks tuleb *
* kasutada 64-bitise andmemudeliga Java keskkonda. *
********************************************************************
Juhul kui rakenduse mälupiirang on 4GB või rohkem, ei ole 32-bitise
andmemudeliga Java võimeline rakendust käivitama. Kuvatakse järgmine veateade::
Invalid maximum heap size: -Xmx4G
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
================================================
FILE: Documentation/et/seadistuste_koostejuhend/spelling_wordlist.txt
================================================
Beaver
Bionic
Github
iOS
Javat
Oracle
Ubuntu
hosti
hostinimedest
hostinimi
etcd
xml
CSV
IP
PDF
URL
Bertoni
Daemen
Peeters
Van
Assche
Sponge
Based
Pseudo
Random
Number
Generators
Kivinen
Kojo
More
Modular
Exponential
Diffie
Hellman
groups
for
Internet
Key
Exchange
Desmedt
================================================
FILE: Documentation/et/seadistuste_koostejuhend/tootlemisrakendus.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _app-processor:
Töötlemisrakendus
=================
Töötlemisrakendus on käsurearakendus e-valimiskasti kontrollimiseks ja edasiseks
töötlemiseks peale e-hääletamise lõppu.
Töötlemisrakenduse põhilised tööriistad on *check*, *squash*, *revoke* ja
*anonymize*, mis käivitatakse loetletud järjekorras vastavalt ette nähtud
valimisprotseduuridele.
Põhitööriistade sisendi hulgas on alati kas kogumisteenuse või eelmise tööriista
poolt väljastatud e-valimiskast ja e-valimiskasti digitaalselt allkirjastatud räsi.
Väljundi hulgas on töötlemisetapi tulemuseks olev e-valimiskast koos allkirjastamata
räsiga. Kuna rakendused käivitatakse internetiühenduseta arvutis, tuleb
räsifailid tõsta digitaalseks allkirjastamiseks välisesse seadmesse.
E-valimiskasti räsi arvutatakse funktsiooniga ``hex(sha256())``.
Lisaks põhitööriistadele on rakendusel veel neli täiendavat tööriista:
*export*, *verify*, *stats* ja *statsdiff*.
Kõigi tööriistade kasutamine eeldab allkirjastatud usaldusjuure ja konkreetse
tööriista seadistuste olemasolu.
Faile väljastavatel tööriistadel tuleb seadistustes määrata väljundkausta
asukoht. Väljundkausta ei tohi käivitamise ajal olemas olla, selle loob rakendus.
Alljärgnevalt on kirjeldatud tööriistade seadistusi.
.. _processor-check:
E-valimiskasti töötlemine - verifitseerimine
--------------------------------------------
Kogumisteenusest väljastatud e-valimiskasti verifitseerimiseks kasutatakse tööriista
*check*. valimiskasti verifitseeritakse usaldusjuure, valijate nimekirjade, ringkondade
nimekirja ja registreerimisteenuse väljundi vastu.
Verifitseerimise käigus kontrollitakse järgmiseid põhilisi omadusi:
* Ringkondade nimekirja ja valijate nimekirjade andmeterviklus ja
kooskõlalisus;
* E-valimiskasti andmeterviklus;
* E-hääletajate valimisõigus e. kuuluvus valijate nimekirja (kontrollitakse
juhul kui valijate nimekirjad on seadistustes kirjeldatud);
* E-valimiskastis sisalduvate häälte vastavus digiallkirja vormingule;
* Registreerimisandmete andmeterviklus;
* E-valimiskastis sisalduvate häälte vastavus registreerimisandmetega.
E-valimiskasti verifitseerimine on töömahukas protsess. 4-tuumalise *i7* protsessoriga
arvuti suudab ühe sekundi jooksul töödelda umbes 200 häält. Töötlemise jooksul
kuvatakse kasutajale edenemisriba, mille alusel on võimalik ennustada
töötlemisele kuluvat aega.
:check.ballotbox:
Kogumisteenusest väljastatud e-valimiskast.
:check.ballotbox_checksum:
Kogumisteenusest väljastatud e-valimiskasti digitaalselt allkirjastatud räsi.
Kui määramata, siis ei väljastata korrastatud e-valimiskasti järgmisteks
etappideks. Kasulik mitte-lõpliku e-valimiskasti valimisaegseks kontrolliks.
:check.signed_ballot_max_size_bytes:
Kogumisteenusest väljastatud e-valimiskasti üksiku allkirjastatud hääle
maksimaalne lubatud pikkus baitides.
Kui määramata, siis vaikimisi kasutatakse 32768 baiti.
:check.districts:
Digitaalselt allkirjastatud ringkondade nimekiri.
:check.registrationlist:
Registreerimisteenusest pärit registreerimisandmed. Kui määramata, siis
ei kontrollita e-valimiskastis sisalduvate häälte vastavust
registreerimisandmetega.
:check.registrationlist_checksum:
Registreerimisandmete digitaalselt allkirjastatud räsi. Võib puududa,
kui ``registrationlist`` puudub.
:check.tskey:
Registreerimispäringute verifitseerimiseks kasutatav kogumisteenuse
avalik võti registreerimispäringute tegemise sertifikaadist.
:check.vlkey:
Valijate nimekirjade verifitseerimiseks kasutatav avalik võti.
Argument on kohustuslik, kui valijate nimekirjad on antud.
:check.voterlists_dir:
Valijate nimekirjade loendi kaust. Kui on määramata, siis e-hääletanute
hääleõigust ei kontrollita.
:check.voterlists:
Valijate nimekirjade loend. Kui on määramata, siis e-hääletanute
hääleõigust ei kontrollita.
:check.voterlists.path:
Valijate nimekirja fail.
:check.voterlists.signature:
Valijate nimekirja allkiri, mis on antud algoritmiga
``ecdsa-with-SHA256``.
:check.districts_mapping:
Valijate nimekirjas oleva ringkonna ja jaoskonna teisendusfail
(valikuline).
:check.election_start:
Hääletamise algusaeg. Sellest varasema hääletusajaga hääli käsitletakse
proovihäältena ning need lugemisele ei lähe.
:check.voterforeignehak:
Alaliselt välisriigis elavate valijate ringkonnakuuluvuse tuvastamiseks
kasutatav EHAK-kood. Vaikeväärtus "0000".
:check.out:
Tööriista väljundkaust. Sellesse kausta tekivad:
#. Tervikluskontrolliga korrastatud e-valimiskast :file:`-bb-1.json`;
#. Tervikluskontrolliga korrastatud e-valimiskasti räsi
:file:`-bb-1.json.sha256sum`;
#. E-valimiskasti töötlemisvigade raport :file:`ballotbox_errors.txt`;
#. Valijate nimekirjade töötlemisvigade raport
:file:`voterlist_errors.txt`;
#. *Log1* fail ehk vastuvõetud hääled
:file:`..check.log1`.
:file:`processor.check.yaml`:
.. literalinclude:: config-examples/processor.check.yaml
:language: yaml
:linenos:
.. _processor-squash:
E-valimiskasti töötlemine - korduvhäälte tühistamine
----------------------------------------------------
Korduvate e-häälte tühistamiseks kasutatakse tööriista *squash*.
Tööriista sisendiks on tööriista *check* poolt koostatud e-valimiskast.
Korduvhäälte tühistamisel jäetakse alles iga hääletaja kõige hilisema hääl ja
eemaldatakse kõik varasemad hääled.
:squash.ballotbox:
Tervikluskontrolliga korrastatud e-valimiskast.
:squash.ballotbox_checksum:
Tervikluskontrolliga korrastatud e-valimiskasti digitaalselt allkirjastatud
räsi.
:squash.districts:
Digitaalselt allkirjastatud ringkondade nimekiri.
:squash.enckey:
Krüpteerimise avaliku võtme faili asukoht (võtmerakenduse väljund).
Võtit kasutatakse krüpteeritud häälte eelkontrolliks, eristamaks
päriselt krüpteeritud hääli suvalisest binaarsest prügist.
:squash.out:
Tööriista väljundkaust. Sellesse kausta luuakse:
#. Korduvhäältest puhastatud e-valimiskast :file:`-bb-2.json`;
#. Korduvhäältest puhastatud e-valimiskasti räsi :file:`-bb-2.json.sha256sum`;
#. E-hääletanute nimekiri JSON-vormingus :file:`-ivoterlist.json`;
#. E-hääletanute nimekiri PDF-vormingus :file:`-ivoterlist.pdf`;
#. Tühistamiste ja ennistamiste aruanne :file:`-revocation-report.csv`;
#. Tühistamiste ja ennistamiste aruanne ilma isikuandmeteta
:file:`-revocation-report.csv.anonymous`;
#. *Log2* fail ehk tühistatud hääled :file:`..squash.log2`.
:file:`processor.squash.yaml`:
.. literalinclude:: config-examples/processor.squash.yaml
:language: yaml
:linenos:
.. _processor-revoke:
E-valimiskasti töötlemine - häälte tühistamine ja ennistamine jaoskonnainfo põhjal
----------------------------------------------------------------------------------
Häälte tühistamiseks ja ennistamiseks jaoskonnainfo põhjal kasutatakse tööriista
*revoke*. Tööriist saab sisendiks tööriista *squash* poolt koostatud e-valimiskasti ning
rakendab sellele sisendiks antud tühistus- ja ennistusnimekirjad.
:revoke.ballotbox:
Korduvhäältest puhastatud e-valimiskast.
:revoke.ballotbox_checksum:
Korduvhäältest puhastatud e-valimiskasti digitaalselt allkirjastatud räsi.
:revoke.districts:
Digitaalselt allkirjastatud ringkondade nimekiri.
:revoke.revocationlists:
Tühistus- ja ennistusnimekirjade loend. Võib olla tühi.
:revoke.out:
Tööriista väljundkaust. Sellesse kausta tekivad:
#. Korduvhääletajate häältest puhastatud e-valimiskast :file:`-bb-3.json`;
#. Korduvhääletajate häältest puhastatud e-valimiskasti räsi
:file:`-bb-3.json.sha256sum`;
#. Tühistamiste ja ennistamiste aruanne :file:`-revocation-report.csv`;
#. Tühistamiste ja ennistamiste aruanne ilma isikuandmeteta
:file:`-revocation-report.csv.anonymous`;
#. E-hääletanute nimekiri JSON-vormingus :file:`-ivoterlist.json``;
#. *Log2* fail e. tühistatud hääled
:file:`..revoke.log2`.
:file:`processor.revoke.yaml`:
.. literalinclude:: config-examples/processor.revoke.yaml
:language: yaml
:linenos:
.. _processor-anonymize:
E-valimiskasti töötlemine - anonüümimine
----------------------------------------
E-valimiskasti anonüümimiseks kasutatakse tööriista *anonymize*.
Tööriist saab sisendiks tööriista *revoke* poolt koostatud e-valimiskasti ning eemaldab
sellest valijate info.
:anonymize.ballotbox:
Korduvhääletajate häältest puhastatud e-valimiskast.
:anonymize.ballotbox_checksum:
Korduvhääletajate häältest puhastatud e-valimiskasti digitaalselt allkirjastatud
räsi.
:anonymize.out:
Tööriista väljundkaust. Sellesse kausta luuakse:
#. Hääletajate isikuandmetest puhastatud e-valimiskast :file:`-bb-4.json`;
#. Hääletajate isikuandmetest puhastatud e-valimiskasti räsi :file:`-bb-4.json.sha256sum`;
#. *Log3* fail e. lugemisele läinud hääled :file:`..anonymize.log3`.
:file:`processor.anonymize.yaml`:
.. literalinclude:: config-examples/processor.anonymize.yaml
:language: yaml
:linenos:
Töötlemisrakenduse täiendavad tööriistad
----------------------------------------
Tööriist *verify*
*****************
*Verify* on lisavahend, millega saab verifitseerida digitaalselt allkirjastatud
konteineri allkirja ning kuvada konteineri andmed.
:verify.file:
Verifitseeritav fail.
:file:`processor.verify.yaml`:
.. literalinclude:: config-examples/processor.verify.yaml
:language: yaml
:linenos:
Tööriist *export*
*****************
*Export* on lisavahend, millega saab eksportida kogumisteenusest väljastatud
e-valimiskasti seest täielikke digitaalselt allkirjastatud hääle konteinereid. On
võimalik eksportida nii kõiki hääli korraga, kui konkreetse valija hääli.
:export.ballotbox:
Kogumisteenusest väljastatud e-valimiskast.
:export.ballotbox_checksum:
Kogumisteenusest väljastatud e-valimiskasti digitaalselt allkirjastatud räsi.
:export.signed_ballot_max_size_bytes:
Kogumisteenusest väljastatud e-valimiskasti üksiku allkirjastatud hääle
maksimaalne lubatud pikkus baitides.
Kui määramata, siis vaikimisi kasutatakse 32768 baiti.
:export.voter_id:
Valija identifikaator (valikuline).
:export.out:
Tööriista väljundkaust. Sellesse kausta tekivad:
#. E-valimiskasti töötlemisvigade raport :file:`ballotbox_errors.txt`
(valikuline);
#. E-valimiskastist eksporditud häälte digitaalselt allkirjastatud konteinerid.
:file:`processor.export.yaml`:
.. literalinclude:: config-examples/processor.export.yaml
:language: yaml
:linenos:
Tööriist *stats*
****************
*Stats* on lisavahend, millega saab arvutada häälte ja hääletajate statistikat
e-valimiskasti põhjal. Statistikat on võimalik piiritleda ajavahemikuga ning väljundit
on võimalik piiritleda koondandmetega kui ka ringkondade kaupa. NB! Tööriist ei
kontrolli digitaalallkirju, häälte töötlemiseks tuleb kasutada *check*,
*squash*, *revoke*, *anonymize* töövoogu.
:stats.ballotbox:
E-valimiskast, mille põhjal statistika koostada. Kui faili laiendiks on
``.json``, siis peab see olema olema töödeldud e-valimiskast. Vastasel juhul
peab see olema kogumisteenusest väljastatud e-valimiskast.
:stats.signed_ballot_max_size_bytes:
Kogumisteenusest väljastatud e-valimiskasti üksiku allkirjastatud hääle
maksimaalne lubatud pikkus baitides.
Kui määramata, siis vaikimisi kasutatakse 32768 baiti.
:stats.election_day:
Valimispäev. Kõikide e-hääletanute vanused arvutatakse statistika
tarbeks selle kuupäeva suhtes.
:stats.period_start:
Statistikaperioodi algusaeg (valikuline). Sellest varasema
hääletusajaga hääli statistikasse ei kaasata.
:stats.period_end:
Statistikaperioodi lõppaeg (valikuline). Sellest hilisema hääletusajaga
hääli statistikasse ei kaasata.
:stats.districts:
Digitaalselt allkirjastatud ringkondade nimekiri. Vajalik ringkondade
kaupa statistika väljastamiseks. Kui on määramata, siis väljastatakse
ainult koondstatistika.
:stats.vlkey:
Valijate nimekirjade verifitseerimiseks kasutatav avalik võti.
Argument on kohustuslik valijate nimekirjade kasutamise korral.
:stats.voterlists:
Valijate nimekirjade loend. Vajalik kogumisteenusest väljastatud
e-valimiskastist valija ringkonna tuvastamiseks.
Argument on kohustuslik, kui e-valimiskast on väljastatud kogumisteenusest ja
statistikat väljastatakse ringkondade kaupa.
:stats.voterlists.path:
Valijate nimekirja fail.
:stats.voterlists.signature:
Valijate nimekirja allkiri, mis on antud algoritmiga
``ecdsa-with-SHA256``.
:check.voterforeignehak:
Alaliselt välisriigis elavate valijate ringkonnakuuluvuse tuvastamiseks
kasutatav EHAK-kood. Vaikeväärtus "0000".
:stats.out:
Tööriista väljundkaust. Sellesse kausta tekivad:
#. E-valimiskasti statistika JSON-vormingus :file:`-stats.json`
(:file:`ELECTION-stats.json` kui valimist ei suudeta tuvastada);
#. E-valimiskasti statistika CSV-vormingus :file:`-stats.csv`
(:file:`ELECTION-stats.csv` kui valimist ei suudeta tuvastada);
#. E-valimiskasti töötlemisvigade raport :file:`ballotbox_errors.txt`
(tekib vigade korral);
#. Valijate nimekirjade töötlemisvigade raport
:file:`voterlist_errors.txt` (tekib vigade korral).
:file:`processor.stats.yaml`:
.. literalinclude:: config-examples/processor.stats.yaml
:language: yaml
:linenos:
Tööriist *statsdiff*
********************
*Statsdiff* on lisavahend, millega saab arvutada kahe statistikafaili vahet.
Tulemuseks on kolmas statistikafail, mille kõik väärtused on pärit alusfailist,
kust on lahutatud võrreldava faili väärtused.
:statsdiff.compare:
Statistika võrdluse alusfail JSON-vormingus.
:statsdiff.to:
Võrreldav statistika fail JSON-vormingus. Võrreldav statistika fail on pärit
IVXV logimonitorist. Selleks et kasutada *statsdiff* utiliidi tuleb antud failist
eemaldada **time:** ja **meta:** JSON kirjed. Need kirjed ei oma tähtsust
statistika võrdlemisel ja on lihtsalt statistika faili genereerimise ajatempel,
mis on alati erinev **statsdiff.compare** ja **statsdiff.to** failides.
:statsdiff.diff:
Tööriista väljundfail. Sellesse faili salvestatakse statistikate vahe
JSON-vormingus.
:file:`processor.statsdiff.yaml`:
.. literalinclude:: config-examples/processor.statsdiff.yaml
:language: yaml
:linenos:
.. _processor-checkAndSquash:
E-valimiskasti töötlemine - verifitseerimine ja korduvhäälte tühistamine
------------------------------------------------------------------------
Antud tööriist teostab nii verifitseerimist, kui ka korduvhäälte tühistamist.
Rohkem infot teostavate operatsioonide kohta leidub alapeatükkides:
* *E-valimiskasti töötlemine - verifitseerimine*
* *E-valimiskasti töötlemine - korduvhäälte tühistamine*
:checkAndSquash.ballotbox:
Kogumisteenusest väljastatud e-valimiskast.
:checkAndSquash.ballotbox_checksum:
Kogumisteenusest väljastatud e-valimiskasti digitaalselt allkirjastatud räsi.
Kui määramata, siis ei väljastata korrastatud e-valimiskasti järgmisteks
etappideks. Kasulik mitte-lõpliku e-valimiskasti valimisaegseks kontrolliks.
:checkAndSquash.signed_ballot_max_size_bytes:
Kogumisteenusest väljastatud e-valimiskasti üksiku allkirjastatud hääle
maksimaalne lubatud pikkus baitides.
Kui määramata, siis vaikimisi kasutatakse 32768 baiti.
:checkAndSquash.districts:
Digitaalselt allkirjastatud ringkondade nimekiri.
:checkAndSquash.registrationlist:
Registreerimisteenusest pärit registreerimisandmed. Kui määramata, siis
ei kontrollita e-valimiskastis sisalduvate häälte vastavust
registreerimisandmetega.
:checkAndSquash.registrationlist_checksum:
Registreerimisandmete digitaalselt allkirjastatud räsi. Võib puududa,
kui ``registrationlist`` puudub.
:checkAndSquash.tskey:
Registreerimispäringute verifitseerimiseks kasutatav kogumisteenuse
avalik võti registreerimispäringute tegemise sertifikaadist.
:checkAndSquash.vlkey:
Valijate nimekirjade verifitseerimiseks kasutatav avalik võti.
Argument on kohustuslik, kui valijate nimekirjad on antud.
:checkAndSquash.voterlists_dir:
Valijate nimekirjade loendi kaust. Kui on määramata, siis e-hääletanute
hääleõigust ei kontrollita.
:checkAndSquash.voterlists:
Valijate nimekirjade loend. Kui on määramata, siis e-hääletanute
hääleõigust ei kontrollita.
:checkAndSquash.voterlists.path:
Valijate nimekirja fail.
:checkAndSquash.voterlists.signature:
Valijate nimekirja allkiri, mis on antud algoritmiga
``ecdsa-with-SHA256``.
:checkAndSquash.districts_mapping:
Valijate nimekirjas oleva ringkonna ja jaoskonna teisendusfail
(valikuline).
:checkAndSquash.election_start:
Hääletamise algusaeg. Sellest varasema hääletusajaga hääli käsitletakse
proovihäältena ning need lugemisele ei lähe.
:checkAndSquash.voterforeignehak:
Alaliselt välisriigis elavate valijate ringkonnakuuluvuse tuvastamiseks
kasutatav EHAK-kood. Vaikeväärtus "0000".
:checkAndSquash.enckey:
Krüpteerimise avaliku võtme faili asukoht (võtmerakenduse väljund).
Võtit kasutatakse krüpteeritud häälte eelkontrolliks, eristamaks
päriselt krüpteeritud hääli suvalisest binaarsest prügist.
:checkAndSquash.out:
Tööriista väljundkaust. Sellesse kausta tekivad:
#. Korduvhäältest puhastatud e-valimiskast :file:`-bb-2.json`;
#. Korduvhäältest puhastatud e-valimiskasti räsi :file:`-bb-2.json.sha256sum`;
#. E-hääletanute nimekiri JSON-vormingus :file:`-ivoterlist.json`;
#. E-hääletanute nimekiri PDF-vormingus :file:`-ivoterlist.pdf`;
#. Tühistamiste ja ennistamiste aruanne :file:`-revocation-report.csv`;
#. Tühistamiste ja ennistamiste aruanne ilma isikuandmeteta
:file:`-revocation-report.csv.anonymous`;
#. *Log1* fail ehk vastuvõetud hääled
:file:`..log1`.
#. *Log2* fail ehk tühistatud hääled :file:`..log2`.
#. E-valimiskasti töötlemisvigade raport :file:`ballotbox_errors.txt`
(valikuline);
#. Valijate nimekirjade töötlemisvigade raport
:file:`voterlist_errors.txt` (valikuline);
:file:`processor.checkAndSquash.yaml`:
.. literalinclude:: config-examples/processor.checkAndSquash.yaml
:language: yaml
:linenos:
.. _processor-revokeAndAnonymize:
E-valimiskasti töötlemine - häälte tühistamine, ennistamine jaoskonnainfo põhjal ja anonüümimine
---------------------------------------------------------------------------------------------------
Häälte tühistamiseks, ennistamiseks jaoskonnainfo põhjal ning anonüümimiseks
kasutatakse tööriista *revokeAndAnonymize*. Tööriist saab sisendiks tööriista *squash*
või *checkAndSquash* poolt koostatud e-valimiskasti ning rakendab sellele sisendiks antud
tühistus- ja ennistusnimekirjad.
:revokeAndAnonymize.ballotbox:
Korduvhäältest puhastatud e-valimiskast.
:revokeAndAnonymize.ballotbox_checksum:
Korduvhäältest puhastatud e-valimiskasti digitaalselt allkirjastatud räsi.
:revokeAndAnonymize.districts:
Digitaalselt allkirjastatud ringkondade nimekiri.
:revokeAndAnonymize.revocationlists:
Tühistus- ja ennistusnimekirjade loend. Võib olla tühi.
:revokeAndAnonymize.out:
Tööriista väljundkaust. Sellesse kausta tekivad:
#. Korduvhääletajate häältest puhastatud ning anonüümitud e-valimiskast
:file:`-bb-4.json`;
#. Korduvhääletajate häältest puhastatud ning anonüümitud e-valimiskasti räsi
:file:`-bb-4.json.sha256sum`;
#. Tühistamiste ja ennistamiste aruanne :file:`-revocation-report.csv`;
#. Tühistamiste ja ennistamiste aruanne ilma isikuandmeteta
:file:`-revocation-report.csv.anonymous`;
#. E-hääletanute nimekiri JSON-vormingus :file:`-ivoterlist.json``;
#. *Log2* fail e. tühistatud hääled
:file:`..log2`.
#. *Log3* fail e. lugemisele läinud hääled :file:`..log3`.
:file:`processor.revokeAndAnonymize.yaml`:
.. literalinclude:: config-examples/processor.revokeAndAnonymize.yaml
:language: yaml
:linenos:
================================================
FILE: Documentation/et/seadistuste_koostejuhend/valijarakendus.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _valijarakendus:
Valijarakenduse seadistamine
============================
Valijarakenduse seadistamist ning pakendamist käsitleb eraldi dokument.
================================================
FILE: Documentation/et/seadistuste_koostejuhend/votmerakendus.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
.. _app-key:
Võtmerakendus
=============
Võtmerakendus `key` koosneb tööriistadest *groupgen*, *init*, *testkey*,
*decrypt* ja *util*. Kõigi tööriistade kasutamine eeldab allkirjastatud
usaldusjuure ja konkreetse tööriista seadistuste olemasolu. Alljärgnevalt
kirjeldame konkreetsete tööriistade seadistusi.
.. _key-groupgen:
Häälte salastamise võtme spetsifikatsiooni valimine
--------------------------------------------------------------------------------
Kasutamaks ElGamali krüptosüsteemi häälte krüpteerimiseks, on oluline häälte
salastamise võtme spetsifikatsiooni valimine ehk kasutatavate rühma parameetrite
valimine, milles tehakse matemaatilisi operatsioone. Oluline on, et antud
parameetrid oleksid valitud läbipaistvalt, vältimaks tagauste olemasolu, mille
abil oleks võimalik ilma salajast võtit omamata krüpteeritud hääli avada.
Kuna turvalisuse jaoks peavad rühma parameetrid vastama teatud tingimustele,
siis nende valimiseks pole kiiret meetodit. Sobivate rühmaparameetrite
leidmiseks tuleb juhuslikult valida mingid parameetrid ja kontrollida, kas need
vastavad antud tingimustele.
Rühma parameetrite genereerimise protsessi on võimalik läbipaistvalt läbi viia
kahel viisil:
#. Kasutades teadaolevaid defineeritud parameetreid
#. Parameetreid avaliku algoritmi alusel deterministlikult genereerides
Teadaolevate parameetrite kasutamine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mitmed standardid ja rakendused on juba defineerinud parameetrid, mida on sobiv
kasutada ElGamal krüptosüsteemis. Kasutades laialt levinud parameetreid on
suurem tõenäosus, et neid on sõltumatult kontrollitud.
Üheks selliseks standardiks on [RFC3526]_, mis kasutab samuti deterministlikku
parameetrite genereerimist. Antud standardi korral saab kontrollida defineeritud
parameetrite korrektsust järgneva Sage skriptiga:
.. literalinclude:: genparam.py
:language: python
:linenos:
Uute parameetrite deterministlik ja kontrollitav genereerimine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ElGamal krüptosüsteemi jaoks sobilikke parameetreid saab genereerida kasutades
tööriista *groupgen*.
Võtmespetsifikatsiooni genereerimine on ajaliselt mahukas tegevus, mis võib
olenevalt riistvarast kesta tunde. Ühekordselt genereeritud rühm on kasutatav
mitmetel valimistel.
:groupgen.paramtype: ElGamal'i krüptosüsteemi töö aluseks oleva rühma
tüüp. Toetatud väärtused:
#. ``mod`` - jäägiklassiring ``Zp``
:groupgen.length: ElGamal'i krüptosüsteemi töö aluseks olevat rühma iseloomustav
turvaparameeter. Jäägiklassiringide korral on sobiv väärtus
3072.
:groupgen.init_template: Asukoht, kuhu kirjutatakse rühma parameetrid. Väljund
sobib kasutamiseks võtme genereerimise seadistuse
koostamisel.
:groupgen.random_source: Juhuarvugeneraatori sisendiks kasutatavate allikate
loetelu. Vaata ka :numref:`random-gen`.
Elliptkõveraid kasutades on toetatud kõver P-384, mille parameetrite
genereerimine ei ole vajalik.
Kasutades juhuslike parameetrite leidmiseks juhuarvugeneraatorit, mille
algväärtus on üheselt defineeritav ning avalikustatud, võivad kolmandad
osapooled kontrollida, et avaldatud rühma parameetrid on esimesed sellised
leitud parameetrid, mis vastavad tingimustele. Näitekonfiguratsioon kasutab
DPRNG'd avaliku seemnefailiga. Vaata ka :numref:`random-gen`.
:file:`key.groupgen.yaml`:
.. literalinclude:: config-examples/key.groupgen.yaml
:language: yaml
:linenos:
Sellise seadistuse korral loetakse juhuarvugeneraatori algväärtus failist
``public_seed_file``. Oluline on, et sellisel juhul käivitatakse võtmerakendus
ühelõimelisena::
$ key groupgen --conf usaldusjuur.asice --params key.groupgen.asice --threads 1
.. _key-init:
Häälte salastamise võtme genereerimine
--------------------------------------
Häälte salastamise võtme genereerimiseks kasutatakse võtmerakenduse tööriista
*init*. Võti genereeritakse seadistustes näidatud läviskeemiga ``MofN``, mis
tähendab, et N võtmehaldurist peavad häälte dekrüpteerimisel osalema vähemalt M
haldurit, vastasel juhul ei ole dekrüpteerimine võimalik.
:init.identifier: Valimise unikaalne identifikaator.
:init.out:
Võtmerakenduse tööriista *init* väljundkataloog. Sellesse kataloogi
tekivad
#. PEM vormingus allkirjavõtme sertifikaat (``sign.pem``)
#. PEM vormingus krüpteerimisvõtme sertifikaat (``enc.pem``)
#. PEM vormingus krüpteerimisvõti (``pub.pem``)
#. DER vormingus krüpteerimisvõti (``pub.der``)
:init.skiptest: Võtmeosakute kontrolltestide vahelejätmine.
:init.fastmode: Kaartidele automaatne terminalide määramine. Vaikimise väärtus
on tõene.
----
:init.paramtype: ElGamal krüptosüsteemi aluseks oleva rühma parameetrid, mis
ühtlasi määravad võtme turvataseme. Korraga saab olla
kasutusel vaid ühe rühma spetsifikatsioon - kas
jäägiklassiring või elliptkõver
:init.paramtype.ec: Elliptkõverat määravad parameetrid.
:init.paramtype.ec.name: Kasutatava kõvera nimi, hetkel P-384.
:init.paramtype.mod: Jäägiklassiringi määravad parameetrid kümnendesituses.
Parameetrid võib luua võtmerakenduse tööriista *groupgen*
kasutades.
:init.paramtype.mod.p: Jäägiklassiringi moodul.
:init.paramtype.mod.g: Jäägiklassiringi generaator.
----
:init.signaturekeylen: Võtmerakenduse poolt genereeritava allkirjastamise võtme
pikkus.
:init.signcn: Võtmerakenduse poolt loodava allkirjastamise sertifikaadi subjekti
nimi (väli *CN*).
:init.signsn: Võtmerakenduse poolt loodava allkirjastamise sertifikaadi
järjekorranumber.
:init.enccn: Võtmerakenduse poolt loodava krüpteerimise sertifikaadi subjekti
nimi (väli *CN*).
:init.encsn: Võtmerakenduse poolt loodava krüpteerimise sertifikaadi
järjekorranumber.
----
:init.required_randomness: Juhuslikkuse allikatest loetava entroopia kohustuslik
hulk baitides.
:init.random_source: Juhuarvugeneraatori sisendiks kasutatavate allikate
loetelu. Vaata ka :numref:`random-gen`.
----
:init.genprotocol: Võtme genereerimiseks kasutatava algoritmi ja läviskeemi
spetsifikatsioon.
:init.genprotocol.desmedt:
Algoritmi Desmedt korral genereeritakse võti usaldatava osakujagaja poolt
ehk võtmerakenduse mälus. Privaatvõtme osakud talletatakse kiipkaartidel.
Täiendavalt tuleb määrata läviskeemi osaliste arv ja minimaalne kvoorum.
Kaartide arv 7 - võimalikud kvoorumid 1,2,3,4 - soovitatav kvoorum 4
Kaartide arv 8 - võimalikud kvoorumid 1,2,3,4 - soovitatav kvoorum 4
Kaartide arv 9 - võimalikud kvoorumid 1,2,3,4,5 - soovitatav kvoorum 5
:init.genprotocol.desmedt.threshold: Läviskeemi M väärtus - kvoorum.
:init.genprotocol.desmedt.parties: Läviskeemi N väärtus.
:file:`key.init.yaml`:
.. literalinclude:: config-examples/key.init.yaml
:language: yaml
:linenos:
.. _key-testkey:
Häälte salastamise võtme testimine
----------------------------------
Häälte salastamise võtme testimine kontrollib võtme rekonstrueerimise võimekust
selliselt, et iga osak osaleb vähemalt kahes kvoorumis. Testimiseks on vajalik
kõigi osakute osalemine.
:testkey.identifier: Valimise unikaalne identifikaator.
:testkey.out: Krüpteerimise avaliku võtme asukoha kataloog.
:testkey.threshold: Testimiseks kasutatav lävi, sama mis võtme loomisel
spetsifitseeritud.
:testkey.parties: Testimiseks kasutatav osapoolte arv, sama mis võtme loomisel
spetsifitseeritud.
:testkey.fastmode: Kaartidele automaatne terminalide määramine. Vaikimise
väärtus on tõene.
:file:`key.testkey.yaml`:
.. literalinclude:: config-examples/key.testkey.yaml
:language: yaml
:linenos:
.. _key-decrypt:
E-häälte dekrüpteerimine
--------------------------------------
Elektrooniliste häälte dekrüpteerimiseks kasutatakse võtmerakenduse tööriista
*decrypt*. Dekrüpteerimise õnnestumiseks peab osalema läviskeemi poolt määratud
kvoorumi jagu võtmehaldureid. Kui rakendati skeemi ``5of9``, siis osaleb
dekrüpteerimisel täpselt 5 võtmehaldurit. Vähema arvu haldurite korral ei ole
dekrüpteerimine võimalik.
:decrypt.identifier:
Valimise unikaalne identifikaator.
----
:decrypt.protocol:
:decrypt.protocol.recover:
Algoritmi Desmedt korral genereeritakse võti usaldatava osakujagaja poolt
ehk võtmerakenduse mälus. Privaatvõtme osakud talletatakse kiipkaartidel.
:decrypt.protocol.recover.threshold:
Läviskeemi M väärtus - kvoorum, mis spetsifitseeriti võtme loomisel.
:decrypt.protocol.recover.parties:
Läviskeemi N väärtus, mis spetsifitseeriti võtme loomisel.
----
:decrypt.anonballotbox:
Töötlemisrakenduse või miksimisrakenduse poolt loodud e-valimiskast anonüümistatud
häältega.
:decrypt.anonballotbox_checksum:
Anonüümistatud häältega e-valimiskasti allkirjastatud SHA256 kontrollsummafail.
:decrypt.questioncount:
Küsimuste arv anonüümistatud e-valimiskastis. Vaikimisi väärtus on 1.
:decrypt.candidates:
Valimise valikute nimekiri allkirjastatud kujul.
:decrypt.districts:
Valimise ringkondade nimekiri allkirjastatud kujul.
:decrypt.provable:
Valikuline korrektse dekrüpteerimise tõestuse väljastamine. Vaikimisi
väärtus on tõene.
:decrypt.prove_invalid:
Valikuline korrektse dekrüpteerimise tõestuse väljastamine ka
ebakorrektsete sedelite kohta. Eeldab dekrüpteerimise tõestuse
väljastamist. Vaikimisi väärtus on väär.
:decrypt.check_decodable:
Krüptogrammide korrektsuse kontrollimine enne dekrüpteerimist. Juhul kui
krüptogrammide sisend ei tule usaldatud allikast, siis tuleb kontrollida
krüptogrammide korrektsust. Usaldatud allikad on töötlemisrakendus ning
miksija. Vaikimisi väärus on väär.
:decrypt.out:
Võtmerakenduse tööriista *decrypt* väljundkataloog. Eduka dekrüpteerimise
korral tekivad siia kausta:
#. Elektroonilise hääletamise tulemus
#. Elektroonilise hääletamise tulemuse signatuur
#. Dekrüpteeritud valimiskast
#. Dekrüpteeritud valimiskasti signatuur
#. Loend kehtetutest sedelitest
#. Kehtivate sedelite lugemistõend
#. Kehtetute sedelite lugemistõend (valikuline)
Dekrüpteeritud valimiskast tundlikke andmeid ei sisalda.
:file:`key.decrypt.yaml`:
.. literalinclude:: config-examples/key.decrypt.yaml
:language: yaml
:linenos:
Pärast dekrüpteerimist on võimalik kontrollida väljastatud elektroonilise
hääletamise tulemuse signatuuri korrektsust. Selleks tuleb teha järgnevad
sammud:
1. Eraldada allkirja kontrollimise võti allkirjastamise sertifikaadist::
openssl x509 -in initout/sign.pem -noout -pubkey > sign.pub
2. Kontrollida hääletamise tulemuse allkirja::
openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt \
rsa_pss_saltlen:32 -sigopt rsa_mgf1_md:sha256 -verify sign.pub \
-signature decout/TESTCONF.tally.signature decout/TESTCONF.tally
Korrektse allkirja korral kuvatakse väärtust `Verified OK`.
Sarnaste sammudega on võimalik kontrollida ka väljastatud dekrüpteeritud
valimiskasti signatuuri korrektsust.
Võtmerakenduse täiendavad tööriistad
------------------------------------
:util.listreaders: Loetle ühendatud kaardilugejad.
:file:`key.util.yaml`:
.. literalinclude:: config-examples/key.util.yaml
:language: yaml
:linenos:
.. _random-gen:
Juhuarvude genereerimine võtmerakenduses
----------------------------------------
Võtmerakenduse tööriistad *groupgen* ja *init* vajavad oma tööks juhuarve, mille
genereerimiseks on võimalik kasutada erinevaid entroopiaallikaid, mis
võtmerakenduse poolt üheks allikaks kombineeritakse.
Kombineerimisel on oluline, et säiliks sisendite sõltumatus, st. kombineeritud
väljund ei tohi olla kehvem ühestki sisendist. IVXV raamistikus toimub entroopia
kombineerimine SHAKE-256 muutuva väljundipikkusega räsifunktsiooni abil (XOF),
kasutades skeemi nagu on kirjeldatud [BDPA10]_.
Lõpliku pikkusega entroopiaallika kasutamisel loetakse kogu väärtus ning antakse
see SHAKE-256 sisendiks. Piiramata pikkusega allika lisamisel salvestatakse
selle viide kombineerija mällu.
Pärides kombineerijast töödeldud juhuslikkust, loetakse kõigepealt igast
salvestatud entroopia allikast sama palju baite ning antakse see SHAKE-256
sisendiks. Seejärel kopeeritakse SHAKE-256 isend, muudetakse kopeeritud
SHAKE-256 režiim lugemisele ning loetakse nõutud baitide jagu väljundit.
:random_source: Juhuarvugeneraatori sisendiks kasutatavate allikate loetelu.
:random_source.random_source_type: Juhuarvugeneraatori allika tüüp.
:random_source.random_source_path: Juhuarvugeneraatori allika seadistatav
asukoht. Argument on valikuline sõltuvalt
allika tüübist.
----
:random_source_type\: file: Entroopia lugemine failist.
:random_source_path\: `randomness_file`: Kasutatav fail.
----
:random_source_type\: system: Operatsioonisüsteemi poolt pakutav
entroopiaallikas (Linuxil `/dev/urandom`).
----
:random_source_type\: DPRNG: Deterministlik pseudojuhuslik generaator (DPRNG) on
mõeldud baidijadade genereerimiseks, kasutades
etteantud seemneväärtust. Sama seemneväärtuse
korral genereerib meetod alati sama jada.
:random_source_path\: `seed_file`: DPRNG seemneväärtus saadakse viidatud faili
SHA256 räsides.
----
:random_source_type\: stream: Entroopia lugemine voogseadmelt.
:random_source_path\: `/dev/urandom`: Kasutatav seade.
----
:random_source_type\: user: Välise programmi käest üle sokli juhuslikkust hankiv
entroopiaallikas. Kasutusel on IVXV-spetsiifiline
protokoll.
:random_source_path\: `user_entropy.exe`: Tee programmini, mis tuleb
juhuslikkuse hankimiseks käivitada.
Entroopiaallikate kombineerimine kirjeldatud viisil võimaldab realiseerida
erinevaid juhuarvude genereerimise stsenaariumeid. Näiteks häälte salastamise
võtme genereerimise korral on vaja tagada võtme konfidentsiaalsus ning olla
kindel, et genereerimisprotsess ei ole hiljem korratav. Näitekonfiguratsioon
kasutab välist programmi kasutaja sisendi lugemiseks ning süsteemset
juhuarvugeneraatorit:
:file:`rnd.init.yaml`:
.. literalinclude:: config-examples/rnd.init.yaml
:language: yaml
:linenos:
Rakendus käivitatakse mitmelõimelisena::
$ key init --conf usaldusjuur.asice --params rnd.init.asice
Häälte salastamise võtme spetsifikatsioon on erinevalt häälte salastamise
võtmest avalik ning selle genereerimisel kasutatud juhuslikkuse võib samuti teha
avalikuks. Näitekonfiguratsioon kasutab DPRNG'd avaliku seemnefailiga.
:file:`rnd.groupgen.yaml`:
.. literalinclude:: config-examples/rnd.groupgen.yaml
:language: yaml
:linenos:
Kui eesmärk on genereerimisprotsessi korratavus, tuleb rakendus käivitada
ühelõimelisena::
$ key groupgen --conf usaldusjuur.asice --params rnd.groupgen.asice --threads 1
.. [BDPA10] G. Bertoni, J. Daemen, M. Peeters, G. Van Assche: Sponge-Based
Pseudo-Random Number Generators. CHES 2010: 33-47
.. [RFC3526] T. Kivinen, M. Kojo: More Modular Exponential (MODP) Diffie-Hellman
groups for Internet Key Exchange (IKE). IETF RFC3526, 2003
================================================
FILE: Documentation/et/seadistuste_koostejuhend/ylevaade.rst
================================================
.. IVXV kogumisteenuse haldusteenuse kirjeldus
IVXV seadistused valimise korraldamise protsessis
-------------------------------------------------
IVXV kasutamiseks valimise kontekstis tuleb süsteem ja sellega seotud
rakendused seadistada nii, et on võimalik valijatelt häälte vastuvõtmine ning
nende käitlemine vastavalt süsteemile seatud terviklus-, konfidentsiaalsus ja
käideldavusnõuetele. Käesolev tehniline dokument annab ülevaate olulisimatest
seadistustoimingutest ning on mõeldud täiendama elektroonilise hääletamise
käsiraamatu poolt kirjeldatud protseduurireeglite täitmist.
Seadistuste koostamiseks vajalikud andmed
*****************************************
Valimise üldparameetrid
Valimise üldparameetrid määravad valimise unikaalse identifikaatori
kasutamiseks kõigi seotud komponentide poolt, küsimuste arvu ning
identifikaatorid, hääletamisperioodi alguse- ja lõpuaja ning hääle
kontrollimise seadistuse. Valimise üldparameetrite spetsifikatsiooni
käsitletakse käesolevas dokumendis.
Algne valijate nimekiri
Algne valijate nimekiri on kohandatud vormingus fail, mille vorming ning
seotud protokollid on defineeritud dokumendis "IVXV protokollid". Eesti
riiklike valimiste korral tuleb algne valijate nimekiri Rahvastikuregistrist.
Valikute nimekiri
Valikute nimekiri on JSON vormingus fail, mille vorming ning seotud
protokollid on defineeritud dokumendis "IVXV protokollid". Eesti riiklike
valimiste korral tuleb valikute nimekiri valimiste infosüsteemist.
Ringkondade nimekiri
Ringkondade nimekiri on JSON vormingus fail, mille vorming ning seotud
protokollid on defineeritud dokumendis "IVXV protokollid". Eesti riiklike
valimiste korral tuleb ringkondade nimekiri valimiste infosüsteemist.
Rakenduste usaldusjuur
Rakenduste usaldusjuur defineerib sertifitseerimishierarhiad, mille alusel
IVXV rakendused verifitseerivad digitaalallkirju. Eesti riiklike valimiste
korral määrab usaldusjuure koosseisu Riigi Valimisteenistus. Rakenduste
usaldusjuure vormingut käsitletakse peatükis :numref:`ivxv-rakendused`.
Kogumisteenuse usaldusjuur
Kogumisteenuse usaldusjuur defineerib sertifitseerimishierarhiad, mille
alusel IVXV kogumisteenuse komponendid verifitseerivad digitaalallkirju. Eesti
riiklike valimiste korral määrab usaldusjuure koosseisu Riigi
Valimisteenistus. Kogumisteenuse usaldusjuure vormingut ning seotud protokolle
käsitletakse peatükis :numref:`kogumisteenus`.
Kogumisteenuse tehniline seadistus
Kogumisteenuse tehniline seadistus kirjeldab IVXV mikroteenuste seadistuse
ning isendite jaotumise. Eesti riiklike valimiste korral leiab kogumisteenuse
osutaja Riigi Valimisteenistus. Tehniline seadistus kooskõlastatakse
valimiste omaniku ja kogumisteenuse osutaja vahel. Tehnilist seadistust
käsitletakse peatükis :numref:`kt-technical`.
Kogumisteenuse võtmed ja sertifikaadid
Kogumisteenuse mikroteenused suhtlevad omavahel TLS protokolli vahendusel.
Vastavad sertifikaadid tuleb eksportida Valijarakendusse ja
Kontrollrakendusse. Kogumisteenusega seotud võtmete loomist käsitletakse
peatükis :numref:`kt-krypto`.
Häälte salastamise võtme spetsifikatsioon
Häälte salastamise võtme jaoks kasutatav algoritm ning seotud tehnilised
parameetrid fikseeritakse enne häälte salastamise võtme genereerimist. Võtme
spetsifikatsiooni käsitletakse peatükis :numref:`key-groupgen`.
Hääletamisperioodile eelnevad tegevused
***************************************
Enne hääletamisperioodi algust teostatakse lähtuvalt eelnevatest andmetest
järgmised tegevused:
#. :numref:`app-install`
#. :numref:`app-trust`
#. :numref:`key-groupgen`
#. :numref:`key-init`
#. :numref:`key-testkey`
#. :numref:`kt-trust`
#. :numref:`kt-technical`
#. :numref:`kt-election`
#. Ringkondade nimekirja laadimine Kogumisteenusesse
#. Valikute nimekirja laadimine Kogumisteenusesse
#. Valijate nimekirja (algne) laadimine Kogumisteenusesse
#. :numref:`kt-management`
#. :numref:`valijarakendus`
#. :numref:`kontroll`
Hääletamisperioodi tegevused
****************************
#. Valijate nimekirjade (muudatused) laadimine Kogumisteenusesse
Hääletamisperioodile järgnevad tegevused
****************************************
E-valimiskasti töötlemine
^^^^^^^^^^^^^^^^^^^^^^^^^
#. :numref:`processor-check`
#. :numref:`processor-squash`
#. :numref:`processor-revoke`
#. :numref:`processor-anonymize`
Häälte miksimine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. :numref:`mix-install`
#. :numref:`mix-mix`
#. :numref:`mix-verify`
Hääletamistulemuse väljaselgitamine ja andmeaudit
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. :numref:`key-decrypt`
#. :numref:`auditor-convert`
#. :numref:`auditor-mix`
#. :numref:`auditor-decrypt`
================================================
FILE: Documentation/et/votmerakendus/Makefile
================================================
include ../../common.mk
================================================
FILE: Documentation/et/votmerakendus/index.rst
================================================
.. IVXV tehniline dokumentatsioon
======================================================================
IVXV tehniline dokumentatsioon
======================================================================
-------------
Võtmerakendus
-------------
.. raw:: html
NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 3
:numbered:
sissejuhatus
votmeosakute_protokollid
viited
================================================
FILE: Documentation/et/votmerakendus/sissejuhatus.rst
================================================
.. IVXV tehniline dokumentatsioon
Sissejuhatus
============
Võtmerakendus on Korraldaja põhitööriist, millega genereeritakse iga hääletamise jaoks häälte salastamise ja häälte avamise võti. Võtmerakenduse abil toimub ka häälte lugemine ja tulemuse väljastamine.
Dokumendis spetsifitseeritakse võtmerakenduse tehnilised detailid.
================================================
FILE: Documentation/et/votmerakendus/viited.rst
================================================
.. IVXV tehniline dokumentatsioon
Viited
======
.. [DF89] Desmedt, Y. & Frankel, Y. Brassard, G. (Ed.). Threshold Cryptosystems.
Advances in Cryptology - CRYPTO '89, 9th Annual International Cryptology
Conference, Santa Barbara, California, USA, August 20-24, 1989,
Proceedings, Springer, 1989, 435, 307-315
.. [Shoup00] Shoup, V. Practical Threshold Signatures Advances in Cryptology -
EUROCRYPT 2000, International Conference on the Theory and Application of
Cryptographic Techniques, Bruges, Belgium, May 14-18, 2000, Proceeding, 2000,
207-220
.. [RFC8017] PKCS #1: RSA Cryptography Specifications Version 2.2.
https://tools.ietf.org/html/rfc8017
================================================
FILE: Documentation/et/votmerakendus/votmeosakute_protokollid.rst
================================================
.. IVXV tehniline dokumentatsioon
Eritüübiliste võtmeosakute protokollide liidestamine
====================================================
Võtmeosakute genereerimise protokolli liides
--------------------------------------------
Klass `ee.ivxv.key.protocol.GenerationProtocol` defineerib liidese, mida
ElGamali või RSA võtmeosakute genereerimise protokoll peab täitma. Liides on
järgnev::
public interface GenerationProtocol {
byte[] generateKey() throws ProtocolException;
}
Eritüübiliste võtmeosakute genereerimiseks peab implementeerima `generateKey()`
meetodi, mis tagastab kodeeritud avaliku võtme X.509 sertifikaadina DER
formaadis. Protokolli klass peab olema paki `ee.ivxv.key.protocol.generation`
alampakis.
Protokolli parameetrid tuleb määrata protokolli klassiinstantsi
initsialiseerimise ajal.
Dekrüpteerimise protokolli liides
---------------------------------
Dekrüpteerimise ja võtmeosakute genereerimise protokoll ei pea olema üksüheses
seoses, st. võtmeosakute genereerimise protokollile võib vastata mitu
dekrüpteerimise protokolli. Seega on dekrüpteerimise protokolli liides
defineeritud sõltumatult võtmeosakute genereerimise liidesest. Protokoll peab
implementeerima `ee.ivxv.key.protocol.DecryptionProtocol` liidese::
public interface DecryptionProtocol {
ElGamalDecryptionProof decryptMessage(byte[] msg) throws ProtocolException;
}
Meetod `decryptMessage()` võtab sisendina krüptogrammi DER formaadis ning
väljastab `ElGamalDecryptionProof` instantsi. Juhul kui protokoll ei toeta
lugemistõendi väljastamist, siis on vastavad väljad väärtustatud tühiväärtusega
(`null`).
Analoogselt võtmeosakute genereerimise protokollile tuleb protokolli
parameetrid määrata klassiinstantsi initsialiseerimise ajal.
Allkirjastamise protokolli liides
---------------------------------
Lisaks dekrüpteerimise protokollile saab implementeerida ka allkirjastamise
protokolli. Sarnaselt dekrüpteerimisprotokollile võib ühele võtmegenereerimise
meetodile vastata mitu allkirjastamise protokolli. Protokoll peab
implementeerima `ee.ivxv.key.protocol.SigningProtocol` liidese::
public interface SigningProtocol {
byte[] sign(byte[] msg) throws ProtocolException;
}
Meetod `sign()` võtab sisendina sõnumi, mida soovitakse allkirjastada, ja
väljastab RSA-PSS allkirja järgnevate parameetritega:
.. _RSA-PSS parameetrid:
- sõnumi räsifunktsioon: SHA2-256
- maski genereerimise funktsioon: MGF1, maski räsifunktsioon SHA2-256 ja maski
pikkus 32 baiti
- soola pikkus: 32 baiti
- sababait: `0xbc`
Analoogselt võtmeosakute genereerimise protokollile tuleb protokolli
parameetrid määrata klassiinstantsi initsialiseerimise ajal.
Toetatud protokollid
--------------------
Hetkel on teostatud järgnevad võtmeosakute genereerimise protokollid:
* `ee.ivxv.key.protocol.generation.desmedt.DesmedtGeneration`: Võtmeosakud on
sellised, et oleks võimalik kasutada [DF89]_ hajutatud
dekrüpteerimisprotokolli. Võtmeosakud salvestatakse otse PKCS15 liidest
toetavale pääsmikule. Klassiinstantsi initsialiseerimise ajal saab anda
järgnevaid argumente:
+ `PKCS15Card[] cards`: järjend objektides mis implementeerivad PKCS15Card
liidest (nt. kiipkaardid või tarkvaralised pääsmikud).
+ `ElGamalParameters params`: ElGamali krüptosüsteemi parameetrid.
+ `ThresholdParameters tparams`: läviskeemi parameetrid.
+ `Rnd rnd`: juhuslikkuse sisend võtmeosakute genereerimisel
+ `byte[] cardShareAID`: võtmeosaku ligipääsuidentifikaator PKCS15
pääsmikul. Defineerib, millise ligipääsutunnusega pääseb võtmeosakule
ligi.
+ `byte[] cardShareName`: võtmeosaku identifikaator PKCS15 pääsmikul.
* `ee.ivxv.key.protocol.generation.shoup.ShoupGeneration`: Võtmeosakud on
sellised, et oleks võimalik kasutada [Shoup00]_ põhinevat hajutatud
allkirjastamisprotokolli. Võtmeosakud salvestatakse otse PKCS15 liidest
toetavale pääsmikule. Klassiinstantsi initsialiseerimise ajal saab anda
järgnevaid argumente:
+ `PKCS15Card[] cards`: järjend objektidest, mis implementeerivad PKCS15Card
liidest (nt. kiipkaardid või tarkvaralised pääsmikud).
+ `int modLen`: RSA võtme pikkus bittides
+ `ThresholdParameters tparams`: läviskeemi parameetrid.
+ `Rnd rnd`: juhuslikkuse sisend võtmeosakute genereerimisel
+ `byte[] cardShareAID`: võtmeosaku ligipääsuidentifikaator PKCS15
pääsmikul. Defineerib, millise ligipääsutunnusega pääseb võtmeosakule
ligi.
+ `byte[] cardShareName`: võtmeosaku identifikaator PKCS15 pääsmikul.
On teostatud järgnevad dekrüpteerimise protokollid:
* `ee.ivxv.key.protocol.decryption.recover.RecoverDecryption`: Loetakse PKCS15
liidest toetavatelt pääsmikelt võtmeosakud, rekonstrueeritakse nende abil
operatiivmälus salajane võti ning teostatakse dekrüpteerimine lugemistõendiga.
Klassiinstantsi initsialiseerimise ajal saab anda järgnevaid argumente:
+ `PKCS15Card[] cards`: järjend objektides mis implementeerivad PKCS15Card
liidest (nt. kiipkaardid või tarkvaralised pääsmikud).
+ `ThresholdParameters tparams`: läviskeemi parameetrid.
+ `byte[] cardShareAID`: võtmeosaku ligipääsuidentifikaator PKCS15
pääsmikul. Defineerib, millise ligipääsutunnusega pääseb võtmeosakule
ligi.
+ `byte[] cardShareName`: võtmeosaku identifikaator PKCS15 pääsmikul.
On teostatud järgnevad allkirjastamise protokollid:
* `ee.ivxv.key.protocol.signing.shoup.ShoupSigning`: Loetakse PKCS15 liidest
toetavatelt pääsmikelt võtmeosakud, konstrueeritakse mälus allkirjastamise
osakud ilma võtit rekonstrueerimata ning kombineeritakse allkirjastamise
osakud RSA-PSS allkirjaks. Klassiinstantsi initsialiseerimise ajal saab anda
järgnevaid argumente:
+ `PKCS15Card[] cards`: järjend objektides mis implementeerivad PKCS15Card
liidest (nt. kiipkaardid või tarkvaralised pääsmikud).
+ `ThresholdParameters tparams`: läviskeemi parameetrid.
+ `Rnd rnd`: juhuslikkuse sisend RSA-PSS allkirja soola genereerimisel.
+ `byte[] cardShareAID`: võtmeosaku ligipääsuidentifikaator PKCS15
pääsmikul. Defineerib, millise ligipääsutunnusega pääseb võtmeosakule
ligi.
+ `byte[] cardShareName`: võtmeosaku identifikaator PKCS15 pääsmikul.
Protokollide võtmerakendusega liidestamine
------------------------------------------
Järgnev kirjeldus käib nii võtmeosakute genereerimise ja dekrüpteerimise
protokollide kohta.
.. note:: Praegune kirjeldus on üldine. Kui konfi- ja argumentide parsimine on
lõplikult välja töötatud ning protokollid võtmerakendusega liidestatud, siis
tuleks järgnevat lõiku täiendada.
Liidestamaks uut protokolli võtmerakendusega, tuleb kõigepealt teostada vastava
protokolli liidest täitev klass. Võtmerakendus peab töö alguses seadistuse
töötlemise käigus aru saama kas käsureaargumentidest või seadistusfailist,
millist protokolli soovitakse kasutada. Seejärel tuleb vastava klassi staatilise
meetodi abil ülejäänud käsureaargumentide või seadistusfaili abil
initsialiseerida uus protokolliklassi instants. Seejärel tuleb genereerida võti
või dekrüpteerida sõnum.
Toetatud protokollide kirjeldused
---------------------------------
Shamiri saladuse jagamise skeem
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Olgu meil salajane väärtus :math:`s = a_0` ja soovime seda jagada :math:`n`
osapoole vahel selliselt, et vähemalt :math:`t` osapoolt saaksid selle saladuse
rekonstrueerida. Selleks valime koefitsiendid :math:`a_1` kuni :math:`a_{t-1}`
ning vaatame polünoomi muutuja :math:`x` suhtes:
.. math::
P(x) = a_{t-1} x^{t-1} + .. + a_1 x + a_0
Olgu :math:`x_1` kuni :math:`x_n` nullist erinevad unikaalsed väärtused
(üldiselt :math:`1` kuni :math:`n`), sellisel juhul saame osakud :math:`s_i =
P(x_i)` ning salajase väärtuse :math:`s = P(0)`.
Geomeetriliselt vaadates on :math:`P(x)` polünoom ning osakud punktid sellel
polünoomil. Põhikoolimatemaatikast teame, et :math:`t-1` järku polünoomi
joonistamiseks piisab meile :math:`t` punktist (sirge jaoks kaks punkti,
parabooli jaoks kolm punkti jne.). Salajane väärtus on selle polünoomi väärtus
y-telje lõikepunktis.
Vaadates rekonstrueerimist arvuliselt, mitte geomeetriliselt, saame kasutades
Lagrange interpoleerimise meetodit. Tähist :math:`\prod` kasutame me mitme
liikmega korrutise tähistamiseks ja tähist :math:`\sum` kasutame me mitme
liikmega summa tähistamiseks.
Nüüd, tähistame lisaks :math:`t` osapoolt, kes osalevad salajase väärtuse
rekonstrueerimisel tähisega :math:`U`. Lagrange interpoleerimise valem ütleb:
.. math::
\overline{P}(x) = \sum\limits_{j \in U} s_j \frac{\prod\limits_{i \in U, j \neq i}x-x_i}{\prod\limits_{i \in U, j \neq i}x_j-x_i}
Tõepoolest: fikseerime :math:`j` - paneme tähele, et kui :math:`x = x_j`, siis
murru väärtus on :math:`1` (kuna lugejas ja nimetajas olevad kordajad taandavad
üksteist) ja kui :math:`x \neq x_j`, kuid :math:`x = x_k`, mingi muu :math:`k
\in U` korral, siis murd on :math:`0` (kuna lugejas on :math:`x_k - x_i = 0`
mingi :math:`i \in U` korral). Seega:
.. math::
\overline{P}(x_j) = s_j + 0 \sum_{i \in U, i \neq j} s_i = s_j = P(x_j)
Kuna osapooled teavad väärtuseid :math:`s_i = P(x_i)` (osakud), siis
kombineerides ning korrutades need läbi baaspolünoomiga
.. math::
L(U,x,j) = \frac{\prod\limits_{i \in U, j \neq i}x - x_i}{\prod\limits_{i \in U, j \neq i}x_j - x_i}
ja fikseerides :math:`x = 0`, saame jagatud saladuse.
`ee.ivxv.key.protocol.generation.desmedt.DesmedtGeneration`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Arvestades, et ElGamali võtmeparameetriks on rühm :math:`G` koos generaatoriga
:math:`g`, siis salajaseks võtmeks valitakse :math:`x`, mis on ülimalt
:math:`ord(g)`, st. :math:`g` multiplikatiivne järk rühmas :math:`G`. Vastavaks
avalikuks võtmeks võetakse väärtus :math:`y = g^x`. Salajase võtme komplektiks
saab väärtus :math:`(G, g, x)` ja avaliku võtme komplektiks väärtus :math:`(G,
g, y)`. Rühm :math:`G` valitakse selliselt, et tema järk on mingi algarv
:math:`p` selliselt, et kehtib :math:`p = 2 q + 1`, kus :math:`q` on samuti
algarv. Selliselt juhul kirjeldab :math:`G` väärtust algarv :math:`p`.
Algebrast teame, et kui :math:`G` järk on :math:`2q + 1`, siis iga selle rühma
elemendi järk on kas :math:`1`, :math:`2`, :math:`q` või :math:`2q`. Me oleme
huvitatud selliselt generaatorist, mille järk on :math:`q` ja mis on ruutjääk,
kuna see genereerib piisavalt suure alamrühma, mille kõik elemendid on
ruutjäägid. Vastasel juhul võib toimuda ühe biti lekkimine krüpteeritud sõnumi
kohta. Sellise generaatori leidmiseks vaatame me rühma suvalisi elemente ning
kontrollime tema järku ning ruutjäägilisust kuni leiame sobiva elemendi. Sellise
elemendi määrame generaatoriks.
Instants genereerib juhusliku :math:`0NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 3
:numbered:
sissejuhatus
jooksevnimekiri
seadistamine
================================================
FILE: Documentation/et/xteeteenus/jooksevnimekiri.rst
================================================
.. IVXV tehniline dokumentatsioon
E-hääletamiste jooksev nimekiri
===============================
Teenus vahendab jooksvat nimekirja EHS-ist X-tee-le.
.. figure:: model/xteevotesorder.png
X-tee turvaserveri suhtlus EHS-iga
Teenuses konfigureeritakse valimissündmused, mille nimekirja on võimalik küsida.
Teenus pakub kolme otspunkti:
1. ``Valimissündmuste loetelu`` - väljastab aktiivsete valimissündmuste loetelu
2. ``Viimane järjenumber`` - väljastab konkreetse valimissündmuse viimase EHS-s registreeritud e-hääletamise järjenumbri.
3. ``e-hääletamiste pakk`` - väljastab EHS-lt valimissündmuse e-hääletamiste paki, alatest e-hääletamisest järjenumbriga.
================================================
FILE: Documentation/et/xteeteenus/model/Makefile
================================================
PLANTUML=env -u DISPLAY plantuml
all: xteeivxv.png xteevotesorder.png
%.png: %.pu
$(PLANTUML) $<
================================================
FILE: Documentation/et/xteeteenus/model/xteeivxv.pu
================================================
@startuml
left to right direction
[X-tee teenus(xroad-service)] as xservice
[X-tee turvaserver] as xsec
[IVXV1] as ivxv1
[IVXV2] as ivxv2
[IVXV3] as ivxv3
xsec --> xservice
xservice--> ivxv1
xservice--> ivxv2
xservice--> ivxv3
@enduml
================================================
FILE: Documentation/et/xteeteenus/model/xteevotesorder.pu
================================================
@startuml
left to right direction
package "IVXV" {
[Järjekorrateenus] as votesorder
}
[X-tee teenus(xroad-service)] as xservice
[X-tee turvaserver] as xsec
xsec --> xservice
xservice--> votesorder
@enduml
================================================
FILE: Documentation/et/xteeteenus/seadistamine.rst
================================================
.. IVXV tehniline dokumentatsioon
Seadistamine
============
Teenuse konfigureerimiseks kasutatakse ``xroad-service.json`` faili.
``server.address`` - Serveri port
``server.batchmaxsize`` - Paki suurus, soovitatud suurus 1000
``server.openapipath`` - OpenAPI faili asukoht. Serveeritakse https://host/openapi.
``server.tls`` - Serveri TLS konfiguratsioon
``xroad.certificate`` - X-tee turvaserveri sertifikaat
``elections``- Valimissündmuste list
``elections.name``- Valimissündmuse nimi
``elections.address`` - IVXV serveri aadress
``elections.servername`` - Järjekorrateenuse SNI
``elections.rootca`` - IVXV CA sertifikaat
``elections.clientcert`` - Kliendi sertifikaat, kliendi CA tuleb lisada IVXV konfiguratsiooni
``elections.clientkey`` - Kliendi võti
Käivitamine
===========
Teenus ei lähe iseseisvalt püsti, ning kui "Seadistamine" on tehtud, tuleb juurkasutajalt käivitada `systemctl start xroad-service`.
Seiskamine
==========
Kui teenus läheb maha erinevatel põhjustel (masina taaskäivitamine, veaolukorrad, manuaalne seiskamine `systemctl stop xroad-service` abil), siis tuleb korrata "Käivitamine" protseduuri et teenust taas püsti ajada.
================================================
FILE: Documentation/et/xteeteenus/sissejuhatus.rst
================================================
.. IVXV tehniline dokumentatsioon
Sissejuhatus
============
X-tee teenus on vahendamaks päringuid EHS-i(de) ja X-tee turvaserveri vahel.
.. figure:: model/xteeivxv.png
X-tee teenus turvaserveri ja EHS-ide vahel
Dokumendis spetsifitseeritakse teenuse tehnilised detailid.
================================================
FILE: Documentation/ivxv-technical/ivxv-common.cls
================================================
% ivxv-common.cls
% Class definition
\ProvidesClass{ivxv-common}
% Class options for handling documents in different languages
\newcommand{\@IVXVStringConfidential}{Konfidentsiaalne}
\newcommand{\@IVXVStringDate}{Kuup\"aev:}
\newcommand{\@IVXVStringDocumentType}{Tehniline dokument}
\newcommand{\@IVXVStringVersion}{Versioon}
\newcommand{\@IVXVStringPages}{lk}
\newcommand{\@IVXVStringDocument}{Dok}
\newcommand{\@IVXVStringBackofTitlePage}{\copyright\ RVT, \the\year}
\newcommand{\@IVXVStringCopyrightFooter}{\copyright\ RVT, \the\year}
\DeclareOption{estonian}{%
\renewcommand{\@IVXVStringConfidential}{Konfidentsiaalne}%
\renewcommand{\@IVXVStringDate}{Kuup\"aev:}%
\renewcommand{\@IVXVStringDocumentType}{Tehniline dokument}%
\renewcommand{\@IVXVStringVersion}{Versioon}%
\renewcommand{\@IVXVStringPages}{lk}%
\renewcommand{\@IVXVStringDocument}{Dok}%
}
\DeclareOption{english}{%
\renewcommand{\@IVXVStringConfidential}{Confidential}%
\renewcommand{\@IVXVStringDate}{Date:}%
\renewcommand{\@IVXVStringDocumentType}{Technical document}%
\renewcommand{\@IVXVStringVersion}{Version}%
\renewcommand{\@IVXVStringPages}{pages}%
\renewcommand{\@IVXVStringDocument}{Doc.}%
}
\ProcessOptions\relax
% Base class, which we will modify
% Add oldfontcommands for newer versions of memoir.
%\LoadClass[a4paper, twoside, 12pt, article]{memoir}
\LoadClass[a4paper, twoside, 12pt, article, oldfontcommands]{memoir}
\usepackage{cmap}
% Make the figure and table captions separated by full stops rather than colons.
\usepackage{caption}
\captionsetup[table]{labelsep=period}
\captionsetup[figure]{labelsep=period}
% margins
\usepackage[top=1in,bottom=1in,left=1in,right=1in,pdftex]{geometry}
% For figuring out, how many pages there is in the document
\usepackage{lastpage}
% We want to do later MakeUppercase for the section heads and when \label{} is included in the section head, then it will break everything.
% Textcase package provides more intelligent MakeUppercase command
\usepackage[overload]{textcase}
% utf8 fileformat
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% Times New Roman font for body text
% Arial font for section headlines. The font can be installed
% with ftp://tug.org/tex/getnonfreefonts/install-getnonfreefonts utility
%\usepackage[scaled]{uarial}
\renewcommand*{\familydefault}{\sfdefault}
\newcommand{\IVXVArial}{\fontfamily{phv} \selectfont}
% Commands for setting the document type, number, version, etc.
\newcommand{\IVXVDefineDocumentType}[1]{\def\@IVXVStringDocumentType{#1}}
\newcommand{\IVXVDefineDocumentNumber}[1]{\def\@IVXVDocumentNumber{#1}}
\newcommand{\IVXVDefineDocumentVersion}[1]{\def\@IVXVDocumentVersion{#1}}
\newcommand{\IVXVDefineDocumentSecurity}[1]{\renewcommand{\@IVXVStringConfidential}{#1}}
\newcommand{\IVXVDefineAcknowledgement}[1]{\def\@IVXVAcknowledgement{#1}}
\newcommand{\IVXVDefineCopyrightFooter}[1]{\renewcommand{\@IVXVStringCopyrightFooter}{#1}}
\newcommand{\IVXVDefineBackofTitlePage}[1]{\renewcommand{\@IVXVStringBackofTitlePage}{#1}}
% .. and initialize them to empty
\IVXVDefineDocumentNumber{}
\global\let\@IVXVDocumentNumber\@empty
\IVXVDefineDocumentVersion{}
\global\let\@IVXVDocumentVersion\@empty
\IVXVDefineAcknowledgement{}
\global\let\@IVXVAcknowledgement\@empty
% Pagestyle with headers and footers
\setlength{\headwidth}{\textwidth}
\makepagestyle{IVXVFancy}
\makerunningwidth{IVXVFancy}{\headwidth}
% No indent of paragraphs
\setlength{\parindent}{0pt}
\setlength{\parskip}{1.5ex}
% TODO: Single command for this?
\makeoddhead{IVXVFancy}{}{}{
\IVXVArial \tiny \@IVXVStringConfidential}
\makeevenhead{IVXVFancy}{}{}{
\IVXVArial \tiny \@IVXVStringConfidential}
\makeoddfoot{IVXVFancy}{
\IVXVArial
{\tiny
{\bfseries \hspace{-0.75em}\@title} \\
\@date}}
{}
{
\IVXVArial
{\tiny
\@IVXVDocumentVersion \\
\thepage\ / \pageref{LastPage}}}
\makeevenfoot{IVXVFancy}{
\IVXVArial
{\tiny
{\bfseries \hspace{-0.75em}\@title} \\
\@date}}
{}
{
\IVXVArial
{\tiny
\@IVXVDocumentVersion \\
\thepage\ / \pageref{LastPage}}}
\makefootrule{IVXVFancy}{\headwidth}{\normalrulethickness}{0pt}
% We have multiline headers, therefore less space is available
% for text.
\addtolength{\footskip}{2mm}
% Enforce pagestyle for pages with new chapters as well
\aliaspagestyle{chapter}{IVXVFancy}
% Set the new style as the default
\pagestyle{IVXVFancy}
% Titlepage style with headings
\makepagestyle{IVXVTitle}
\makerunningwidth{IVXVTitle}{\headwidth}
\makeoddhead{IVXVTitle}{
\begin{minipage}[t]{0.5\textwidth}
\hspace{-7mm}
\end{minipage}
}{}{
\raisebox{2.5mm}{\IVXVArial \scriptsize \bfseries \@IVXVStringConfidential}
}
% Chapter and section headline style
\renewcommand{\printchapternum}{\LARGE \bfseries \IVXVArial \thechapter}
\renewcommand{\printchaptertitle}[1]{\LARGE \bfseries \IVXVArial #1}
\setlength{\beforechapskip}{60pt}
\setlength{\afterchapskip}{40pt}
\let\stdchapter\chapter
\renewcommand\chapter{\clearpage\ \stdchapter}
\setsecheadstyle{\normalsize \bfseries \IVXVArial}
\setsubsecheadstyle{\normalsize \bfseries \IVXVArial}
\setsubsubsecheadstyle{\IVXVArial}
\usepackage{graphicx}
% title page
\makeatletter
\renewcommand{\maketitle}{%
\thispagestyle{IVXVTitle}
% \vspace{2cm}
\begin{minipage}[t]{0.5\textwidth}
%\vspace{-6.5mm}
%\hfill
\vspace{31mm}
\end{minipage}
\vspace{4cm}
\begin{flushleft}
\IVXVArial
{\LARGE \bfseries \@title}
\vfill
{\Large \bfseries
\@IVXVStringDocumentType
\ifx\@IVXVDocumentVersion\@empty
Dok. versiooninumber defineerimata. Kasuta IVXVDefineDocumentVersion käsku või IVXV-Document-Version stiili.
\else
\@IVXVStringVersion~\@IVXVDocumentVersion
\fi
\@date
\pageref{LastPage} \@IVXVStringPages\\[1.5ex]
\ifx\@IVXVDocumentNumber\@empty
Dok. hoidla ning järjenumber defineerimata. Kasuta IVXVDefineDocumentNumber käsku või IVXV-Document-Number stiili.
\else
\@IVXVStringDocument~\@IVXVDocumentNumber
\fi
}\par
\vspace{2cm}
{\scriptsize \@IVXVAcknowledgement}
\end{flushleft}
\pagebreak
% \thispagestyle{empty}
% \@IVXVStringBackofTitlePage
% \cleardoublepage
}
\makeatother
% Make dots appear in the table of contents also for chapters
\renewcommand{\cftchapterdotsep}{\cftdotsep}
% URL formating, URL breaking and linked entries in the PDF
\usepackage{url}
%%% XXX remove breakurl
% \usepackage{breakurl}
%%% XXX \usepackage[pdfborder={0 0 0}, pdftex, pdfpagelayout=TwoPageRight]{hyperref}
% hyperref and memoir is incompatible, this fixes the problems
\usepackage{memhfixc}
% make enumerate and itemize lists tighter
\firmlists
% and change the numbering for nested lists
\renewcommand{\labelenumi}{\arabic{enumi}.}
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}}
\renewcommand{\labelenumiv}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.\arabic{enumiii}.\arabic{enumiv}}
% make LaTeX observe right margins at all costs:
\sloppy
================================================
FILE: Documentation/ivxv-technical/ivxv-technical.cls
================================================
% ivxv-technical.cls
\ProvidesClass{ivxv-technical}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ivxv-common}}
\ProcessOptions\relax
\LoadClass{ivxv-common}
================================================
FILE: Documentation/ivxv-technical/pandoc-extras.sty
================================================
% Style for pandoc generated latex output, related with docbook format.
% It's needed for special formatting and may be only needed for docbook,
% so probably you don't need this (e.g. for markdown -> latex conversion).
% Highlighting
\usepackage{framed}
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
\newenvironment{Shaded}{\begin{shaded}}{\end{shaded}}
\definecolor{shadecolor}{gray}{0.9}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}}
\newcommand{\ImportTok}[1]{{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}}
\newcommand{\BuiltInTok}[1]{{#1}}
\newcommand{\ExtensionTok}[1]{{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}}
\newcommand{\RegionMarkerTok}[1]{{#1}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
\newcommand{\NormalTok}[1]{{#1}}
================================================
FILE: Documentation/podl/.gitignore
================================================
venv/
================================================
FILE: Documentation/podl/podl.py
================================================
#!/usr/bin/env python3
# IVXV Internet voting framework
"""PO translator with Deepl
Translate PO files with Deepl
Usage:
podl --input --api [options]
podl -h | --help
podl -v | --version
Options:
-h --help Request for help
-v --version Show version information
-i --input Input file or directory
-s --source Source language [default: ET]
-t --target Target language [default: EN-GB]
-f --force Actually use API
--fuzzy Override fuzzy translations [default: False]
-a --api Deepl API token
"""
import os
import deepl
import polib
from docopt import docopt
from schema import Or, Schema, SchemaError
class Translator:
def __init__(self, api, source, target, force):
self.__translator = deepl.Translator(api)
self.__source_lang = source
self.__target_lang = target
self.__force = force
def translate(self, source_msg):
if self.__force:
return str(self.__translator.translate_text(
source_msg,
source_lang = self.__source_lang,
target_lang = self.__target_lang
))
return None
def process_file(filename, translator, fuzzy):
po = polib.pofile(filename)
print(f"File {filename} is {po.percent_translated()}% translated")
for entry in po.untranslated_entries():
if not entry.msgstr:
newmsg = translator.translate(entry.msgid)
if newmsg is not None:
entry.msgstr = newmsg
po.save(filename)
if fuzzy:
for entry in po.fuzzy_entries():
newmsg = translator.translate(entry.msgid)
if newmsg is not None:
entry.msgstr = newmsg
po.save(filename)
po.save(filename)
if __name__ == '__main__':
ARGS = docopt(__doc__, version='Deepl PO translator 1.0')
SCHEMA = Schema({
'--input': Or(os.path.isdir, os.path.isfile),
'--source': str,
'--target': str,
'--api': str,
'--force': bool,
'--fuzzy': bool,
'--help': Or(False),
'--version': Or(False)
})
try:
ARGS = SCHEMA.validate(ARGS)
except SchemaError as err:
exit(err)
INPUT = ARGS['--input']
DEEPL = Translator(
ARGS['--api'], ARGS['--source'], ARGS['--target'], ARGS['--force'])
if os.path.isfile(INPUT):
process_file(INPUT, DEEPL, ARGS['--fuzzy'])
elif os.path.isdir(INPUT):
for root, dirs, files in os.walk(INPUT):
for file in files:
if file.endswith(".po"):
file_path = os.path.join(root, file)
process_file(file_path, DEEPL, ARGS['--fuzzy'])
else:
pass
================================================
FILE: Documentation/podl/requirements.in
================================================
# We depend on pip-tools being installed to venv.
#
# Add dependencies to this file
# pip-compile to update requirements.txt
# pip-sync to update venv
docopt==0.6.2
schema==0.7.7
polib==1.2.0
deepl==1.19.1
================================================
FILE: Documentation/podl/requirements.txt
================================================
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# pip-compile requirements.in
#
certifi==2024.8.30
# via requests
charset-normalizer==3.4.0
# via requests
deepl==1.19.1
# via -r requirements.in
docopt==0.6.2
# via -r requirements.in
idna==3.10
# via requests
polib==1.2.0
# via -r requirements.in
requests==2.32.3
# via deepl
schema==0.7.7
# via -r requirements.in
urllib3==2.2.3
# via requests
================================================
FILE: Documentation/public/arhitektuur/Makefile
================================================
include ../../common.mk
================================================
FILE: Documentation/public/arhitektuur/etcd.rst
================================================
.. IVXV arhitektuur
Lisa - ETCD Andmemudel
======================
ETCD on võti-väärtus andmebaas, kus talletatakse e-hääletamise
sisendnimekirju, e-hääli ning statistikat.
Ringkondade nimekiri
--------------------
.. table:: Ringkondade nimekiri
:widths: 30 35 35
+----------------------------+---------------------------+-----------------------+
| **Võti** | **Väärtus** | **Näide** |
+============================+===========================+=======================+
| /districts | Juurvõti | |
+----------------------------+---------------------------+-----------------------+
| /districts/ | Seab valija | /districts/05241 |
| | EHAK-ringkond paarile | |
| | vastavusse | 0000.1 |
| | ringkonnaidentifikaatori, | |
| | mis viitab /choices | |
| | harusse | |
+----------------------------+---------------------------+-----------------------+
| /districts/counties | Väli counties | { |
| | ringkondade | |
| | nimekirjast | "0068": [ |
| | | |
| | | "0809", |
| | | |
| | | "0624" |
| | | |
| | | ], |
| | | |
| | | "0784": [ |
| | | |
| | | "0524" |
| | | |
| | | ], |
| | | |
| | | "0079": [ |
| | | |
| | | "0796" |
| | | |
| | | ], |
| | | |
| | | "0793": [ |
| | | |
| | | "0793" |
| | | |
| | | ] |
| | | |
| | | } |
+----------------------------+---------------------------+-----------------------+
| /districts/version | Nimekirja | ["NIMESTE,NIMI,123456 |
| | allkirjastajad | 78912 |
| | | 2019-02-22T13:58:48Z" |
| | | ] |
+----------------------------+---------------------------+-----------------------+
Valikute nimekiri
-----------------
.. table:: Valikute nimekiri
:widths: 30 35 35
+------------------------+-----------------------+-----------------------+
| **Võti** | **Väärtus** | **Näide** |
+========================+=======================+=======================+
| /choices | Juurvõti | |
+------------------------+-----------------------+-----------------------+
| /choices/ | Ringkonnale | /choices/0000.1 |
| | district-id vastav | |
| | valikute nimekiri. | { |
| | | |
| | | "Erakond 1":{ |
| | | |
| | | "0000.101":"Nimi |
| | | Nimeste1", |
| | | |
| | | "0000.102":"Nimi |
| | | Nimeste2", |
| | | |
| | | "0000.103":"Nimi |
| | | Nimeste3" |
| | | |
| | | }, |
| | | |
| | | "Erakond 2":{ |
| | | |
| | | "0000.104":"Nimi |
| | | Nimeste4", |
| | | |
| | | "0000.105":"Nimi |
| | | Nimeste5" |
| | | |
| | | }, |
| | | |
| | | "Üksikkandidaadid":{ |
| | | |
| | | "0000.106":"Nimi |
| | | Nimeste6" |
| | | |
| | | } |
| | | |
| | | } |
+------------------------+-----------------------+-----------------------+
| /choices/version | Nimekirja | ["NIMESTE,NIMI,123456 |
| | allkirjastajad | 78912 |
| | | 2019-02-22T13:58:59Z" |
| | | ] |
+------------------------+-----------------------+-----------------------+
Valijate nimekiri
-----------------
.. table:: Valijate nimekiri
:widths: 30 35 35
+---------------------------------+-----------------------+-----------------------+
| **Võti** | **Väärtus** | **Näide** |
+=================================+=======================+=======================+
| /voters | Juurvõti | |
+---------------------------------+-----------------------+-----------------------+
| /voters/ | Valijanimekirja | /voters/1 |
| | versiooni juurvõti | |
+---------------------------------+-----------------------+-----------------------+
| /voters// | Valija | /voters/1/12345678912 |
| | antud | |
| | nimekirjas | 05241 |
+---------------------------------+-----------------------+-----------------------+
| /voters//version | Valijatenimekirja | ["NIMESTE,NIMI,123456 |
| | versioon | 78912 |
| | | 2019-02-22T13:58:59Z" |
| | | ] |
+---------------------------------+-----------------------+-----------------------+
| /voters/version | Aktuaalse | 1 |
| | valijatenimekirja | |
| | versiooni ID | |
+---------------------------------+-----------------------+-----------------------+
| /voters/previous | Eelmise | 0 |
| | valijanimekirja | |
| | versiooni ID | |
+---------------------------------+-----------------------+-----------------------+
Talletatud e-hääl
-----------------
.. table:: Talletatud e-hääl
:widths: 30 35 35
+-------------------------+------------------------+-----------------------+
| **Võti** | **Väärtus** | **Näide** |
+=========================+========================+=======================+
| /vote | Juurvõti | |
+-------------------------+------------------------+-----------------------+
| /vote/ | Hääle juurvõti, | 16 baiti binaarandmed |
| | unikaalne | |
| | identifikaator | |
+-------------------------+------------------------+-----------------------+
| /vote//count | Hääle kontrollimise | 0 |
| | loendur | |
+-------------------------+------------------------+-----------------------+
| /vote//ocsp | Kehtivuskinnitus | DER kodeeringus OCSP |
| | | vastus |
+-------------------------+------------------------+-----------------------+
| /vote//time | Hääle talletamise | 2019-03-03T10:56:28.8 |
| | kellaaeg | 99925926Z |
+-------------------------+------------------------+-----------------------+
| /vote//tspreg | Registreerimiskinnitus | DER kodeeringus PKIX |
| | | ajatempel |
+-------------------------+------------------------+-----------------------+
| /vote//type | Allkirjastatud hääle | BDOC |
| | konteineri tüüp | |
+-------------------------+------------------------+-----------------------+
| /vote//version | Hääle andmisel | 0 |
| | kehtinud valijate | |
| | nimekirja versiooni | |
| | ID | |
+-------------------------+------------------------+-----------------------+
| /vote//vote | E-hääl allkirjastatud | BDOC vormingus |
| | konteineris | allkirjastatud hääl |
+-------------------------+------------------------+-----------------------+
| /vote//voter | Valija isikukood | 12345678912 |
+-------------------------+------------------------+-----------------------+
Statistikaliidesed
------------------
.. table:: Statistikaliidesed
:widths: 30 35 35
+-------------------------------+-----------------------+-----------------------+
| **Võti** | **Väärtus** | **Näide** |
+===============================+=======================+=======================+
| /votes | Juurvõti | |
+-------------------------------+-----------------------+-----------------------+
| /votes/order | Hääletamisfaktide | |
| | järjestuse juurvõti | |
+-------------------------------+-----------------------+-----------------------+
| /votes/order/ | Konkreetse | /votes/order/1 |
| | hääletamisfakti | |
| | juurvõti | |
+-------------------------------+-----------------------+-----------------------+
| /votes/order//admincode | Hääletamisfaktiga | 0796 |
| | seotud EHAK | |
+-------------------------------+-----------------------+-----------------------+
| /votes/order//district | Hääletamisfaktiga | 10 |
| | seotud ringkonna | |
| | number | |
+-------------------------------+-----------------------+-----------------------+
| /votes/order//voterid | Hääletaja isikukood | 12345678901 |
| | | |
+-------------------------------+-----------------------+-----------------------+
| /votes/order//votername | Hääletaja nimi | NIMI NIMESTE |
| | | |
+-------------------------------+-----------------------+-----------------------+
| /votes/stats | Viimase | 12 |
| | hääletamisfakti | |
| | järjekorranumber | |
+-------------------------------+-----------------------+-----------------------+
| /voted | Juurvõti | |
+-------------------------------+-----------------------+-----------------------+
| /voted/latest | Viimati antud häälte | |
| | indeksi juurvõti | |
+-------------------------------+-----------------------+-----------------------+
| /voted/latest/ | Hääletaja poolt | /voted/latest/1234567 |
| | viimati antud hääle | 8901 |
| | aeg ja identifikaator | |
| | binaarkujul | <2019-03-03T12:15:59Z |
| | | > |
+-------------------------------+-----------------------+-----------------------+
| /voted/stats | Jaoskonnapõhise | |
| | statistika indeksi | |
| | juurvõti | |
+-------------------------------+-----------------------+-----------------------+
| /voted/stats/ | Hääle andmise | /voted/stats/12345678 |
| | kellaaeg koos | 901 |
| | jaoskonnainfoga | |
| | | <0796><2019-02-22T14: |
| | | 17:23Z> |
+-------------------------------+-----------------------+-----------------------+
| /votes/voter/stats/ | Tühi baitide massiiv | /votes/voter/stats/ |
| | (kasutatakse väärtuse | 394091044211 |
| | versiooni, ning mitte | |
| | väärtust ennast) | |
+-------------------------------+-----------------------+-----------------------+
Hääletamisseansid
-----------------
.. table:: Hääletamisseansid
:widths: 30 35 35
+-----------------------+-----------------------+---------------------------+
| **Võti** | **Väärtus** | **Näide** |
+=======================+=======================+===========================+
| /session | Juurvõti | |
+-----------------------+-----------------------+---------------------------+
| /session/ | RPC meetod, mis | ``/session/0149468d2866`` |
| | kutsus antud | ``6fced7d73b32cc16225d`` |
| | funktsiooni välja + | |
| | ``x1F`` + kasutaja | |
| | autentimismeetod | |
+-----------------------+-----------------------+---------------------------+
================================================
FILE: Documentation/public/arhitektuur/index.rst
================================================
.. IVXV arhitektuur
IVXV arhitektuur
========================================================
.. raw:: html
NB!
See on HTML-versioon dokumendist.
Tellijale antakse üle PDF-versioon.
.. toctree::
:maxdepth: 3
:numbered:
yldpohimotted
kogumisteenus
vallasrezhiim
tehnoloogiad
etcd
viited
================================================
FILE: Documentation/public/arhitektuur/kogumisteenus.rst
================================================
.. IVXV arhitektuur
Kogumisteenus
=============
Üldkirjelduse [ÜK2016]_ põhjal on Kogumisteenus:
.. epigraph::
Süsteemi keskne komponent, mida käitab Koguja. Teenus abistab Hääletajat
e-hääle koostamisel ning registreerib selle enne salvestamist e-valimiskasti.
Kogumisteenus kasutab väliseid teenuseid (tuvastamine, allkirjastamine,
registreerimine). Kogumisteenusel on peale Koguja enda teisigi haldureid
(Korraldaja, Klienditugi), kelle jaoks on Kogumisteenusel eraldi
haldusliidesed.
Kogumisteenus töötab sidusrežiimis ning vähemalt valija- ja kontrollrakenduse
suunalised liidesed on avatud internetile. Seega töötleb Kogumisteenus
potentsiaalselt ebausaldusväärsest allikast pärit päringuid. Tulenevalt
tarkvarale seatavast turvatasemest, kõrgkäideldavuse, skaleeritavuse, kihilise
evitatavuse ning laiendatavuse nõuetest on kogumisteenus omakorda liigendatud
ühte konkreetset teenust osutavateks mikroteenusteks, mida on võimalik
paindlikult evitada.
Kõik kogumisteenuse komponendid programmeeritakse keeles `Go
`_. Keelel Go on:
- staatiline tüüpimine, mis võimaldab tüübivigade avastamist enne programmi
käivitamist;
- automaatne mäluhaldus, mis välistab rakenduse vigasest mäluhaldusest
tulenevad turvaaugud;
- kompilaator avatud lähtekoodiga;
- ribastamine/rööprapse, mis võimaldab kasutada paralleelsust mitmetuumalistes
süsteemides.
Kogumisteenuse andmeedastuseks kasutatakse üldjuhul JSON-vormingut, välja
arvatud olukordades, kus välised asjaolud tingivad mõne muu andmevormingu
kasutamist (näiteks BDOC-vorming põhineb XML'il).
Kogumisteenus toetab Riigikogu valimisi, kohaliku omavalitsuse volikogu
valimisi, Euroopa parlamendi valimisi ning rahvahääletusi.
Kogumisteenuse komponendid arvestavad virtualiseerimistehnoloogiate
kasutamisega ning kogumisteenust on võimalik evitada nii ühel virtuaalriistvara
instantsil, kui ka mikroteenuste kaupa erinevatel instantsidel. Kogumisteenuse
komponendid on evitatavad Ubuntu 22.04 LTS (Jammy Jellyfish)
operatsioonisüsteemil 64-bitisel arhitektuuril.
Andmesäilitus on teostatud kasutades võti-väärtus andmebaasi (etcd).
Testotstarbel on teostatud ka andmesäilitus failisüsteemi ning mällu, kuid neid
ei ole soovituslik kasutada tootekeskkonnas. Lisaks on kogumisteenusel olemas
liides uute talletusprotokollide lisamiseks. Lõplik otsus kasutatava lahenduse
kohta tehakse kogumisteenuse haldurite poolt teenust seadistades.
Mikroteenused
-------------
.. figure:: model/img/collector_microservices.png
Kogumisteenuse jaotus mikroteenusteks
Kogumisteenus on jaotatud põhiteenusteks ja abiteenusteks. Põhiteenused -
vahendusteenus, nimekirjateenus, hääletamisteenus, kontrollteenus ning
talletamisteenus - on arhitektuuri tehnilise lihtsuse mõttes piiritletud ühe
valimisega, kuid ühel riistvaral, ühe operatsioonisüsteemi kontekstis võivad
käia mitme valimise mikroteenused. Täiendavalt võib kogumisteenuse juures
kasutada abiteenuseid - tuvastusteenust hääletaja isiku tuvastamiseks ning
allkirjateenust valijarakenduse poolt hääle allkirjastamise hõlbustamiseks.
Teenuseid on võimalik evitada nii eraldatult kui koos erinevates
konfiguratsioonides, mis teeb võimalikuks kihilise arhitektuuri. Lähtudes
funktsioonist on otstarbekas hoida Vahendus- ning Talletamisteenused teistest
eraldi.
Teenused kasutavad transpordiprotokollina TLS'i, ühendused on
vähemalt serveripoolselt autenditud. Rakenduskihi protokoll on JSON-RPC.
Kõik teenused tekitavad tegevuslogi, mida säilitatakse nii lokaalselt kui
logitakse syslog protokolli vahendusel kesksesse logikogujasse.
Vahendusteenuse funktsioon ja tehniline liides
``````````````````````````````````````````````
Vahendusteenuse põhifunktsioon on ühe sisenemispunkti (port 443) pakkumine
Valijarakendusele ja Kontrollrakendusele. Vahendusteenus on dispetšerteenus
teiste komponentide vahel, mis võimaldab sisemiselt evitada kogumisteenust
mikroteenustena, ent omada süsteemil ainult ühte sisenemispunkti. Lisaks suudab
see dubleeritud evituse puhul täita koormusjaoturi ülesannet.
Vahendusteenus ei termineeri TLS-ühendust vaid kasutab sihtpunkti tuvastamiseks
TLS'i *Server Name Indication* (SNI) laiendust. Kliendid panevad TLS
``ClientHello`` sõnumisse SNI-laiendi, kus avatekstis määravad, millise
teenusega soovivad suhelda: vahendusteenus näeb seda, võtab ühendust vastavat
teenust pakkuva isendiga ja hakkab kliendi ning teenuse vahelisi sõnumeid
vahendama. Vahendusteenus EI termineeri TLS'i ning ei näe sõnumite sisu.
Vahendusteenusel on andmed kõigi teiste teenuste asukohtadest (aadress:port)
ning teenus vahendab sõnumivahetust kõigi osapoolte vahel.
Vahendusteenus on olekuvaba komponent, mida on võimalik horisontaalselt
skaleerida.
Vahendusteenuse teostus
'''''''''''''''''''''''
Vahendusteenuse teostus kasutab vabavaralist HAProxy serverit, mis on
üldlevinud tarkvaraline koormusjaotur ja proksi. Kuna Vahendusteenus on
esimene puutepunkt avalikust internetist tulevate ühenduste jaoks, siis on
mõistlik kasutada tarkvara, mille töökindlus on juba tõestatud.
Kuigi HAProxyt kasutatakse tihti HTTP-režiimis, kus see analüüsib liiklust,
siis vahendusteenuse rollis on see TCP-režiimis ning ei näe vahendatava
krüpteeritud TLS-kanali sisse.
IVXV seadistusest genereeritakse HAProxy seadistusfail, mis sisaldab teiste
teenuste asukohti, ning ühenduste vahendamise ülesanne jääb viimase kanda.
Lisaks on võimalik HAProxyt ka seadistada ühenduste sagedusi piirama
lähteaadressi või mõne muu nimetaja põhjal. See aga jääb süsteemihalduri
ülesandeks.
Kuigi HAProxy on võimeline ise teostama koormusjaoturi ülesannet, on seda
võimalik evitada ka teiste, potentsiaalselt riistvaraliste koormusjaoturite
taha, kus see jääb täitma ainult SNI põhjal vahendamise ülesannet.
HAProxy lähtekood on avalik ja sobiva litsentsiga ning pakendatud
kogumisteenuse alusplatvormi ametlikus hoidlas (vt. :ref:`tehnoloogiad`).
Nimekirjateenuse funktsioon ja tehniline liides
```````````````````````````````````````````````
Nimekirjateenuse põhifunktsioon on valikute nimekirjade vahendamine
Valijarakendusele. Nimekirjateenusesse jõuab informatsioon tuvastatud valija
kohta ning Nimekirjateenus väljastab valija ringkonnale vastava valikute
nimekirja Talletamisteenusest Valijarakendusse.
Nimekirjateenus on olekuvaba komponent, mida on võimalik horisontaalselt
skaleerida.
Kontrollteenuse funktsioon ja tehniline liides
``````````````````````````````````````````````
Kontrollteenuse põhifunktsioon on kontrollpäringute töötlemine ning
kontrollitava hääle väljastamine Talletamisteenusest Kontrollrakendusse.
Kontrollteenus on olekuvaba komponent, mida on võimalik horisontaalselt
skaleerida.
Hääletamisteenuse funktsioon ja tehniline liides
````````````````````````````````````````````````
Hääletamisteenuse põhifunktsioon on hääletamispäringute töötlemine.
Hääletamisteenus verifitseerib sissetuleva hääle, registreerib selle
Registreerimisteenuses ning talletab Talletamisteenusesse.
Hääletamisteenus on olekuvaba komponent, mida on võimalik horisontaalselt
skaleerida.
Talletamisteenuse funktsioon ja tehniline liides
`````````````````````````````````````````````````
Talletamisteenuse põhifunktsioon on valikute ja valijanimekirjade ning
häälte pikaajaline talletamine.
Talletamisteenuse horisontaalseks skaleerimiseks kasutatakse
hajustalletamist võimaldavat säilitustehnoloogiat.
Talletamisteenuse teostus
'''''''''''''''''''''''''
Talletamisteenus ei ole teadlik IVXV protokollist ega talletatavate andmete
spetsiifikast, vaid on üldkasutatav võti-väärtus andmebaas binaarandmete
säilitamiseks. Kogu teadmus talletatavate andmete struktuurist ja võtmete
hierarhiast on teistes, Talletamisteenust kasutatavates teenustes, mis
käituvad nii-öelda "tarkade" klientidena.
Selline lähenemine lubab ilma suurema vaevata kasutada Talletamisteenusena
ükskõik millist üldlevinud võti-väärtus andmebaasi: ainsateks ülesanneteks on
IVXV seadistuse teisendamine andmebaasi jaoks sobilikku vormingusse ning
teenuse käivitamine. Andmebaasi tarkvara peab võimaldama vaid võtme järgi
talletamist ja lugemist, võtmete prefiksi järgi loetlemist ning atomaarset
võrdle-ja-vaheta (*compare-and-swap*) operatsiooni.
Talletamisteenus on kogumisteenuse töökiiruse oluliseks määrajaks, mistõttu
mõjutab seda teenust pakkuv riistvara kogu süsteemi jõudlust ning see tuleks
vastavalt kasutatavale andmebaasile dimensioneerida.
Hetkel ainus tooteks mõeldud Talletamisteenuse teostus kasutab hajusat
võti-väärtus andmebaasi etcd. Selle puhul tuleks järgida etcd autorite
`riistvara soovitusi
`_.
Tuvastusteenuse funktsioon ja tehniline liides
``````````````````````````````````````````````
Tuvastusteenuse põhifunktsioon on valija identiteedi tuvastamine.
Tuvastusteenus on vajalik näiteks Mobiil-ID autentimise korral.
Web-eID abiteenuse teostus
''''''''''''''''''''''''''
IVXV koosseisu kuulub Web-eID abiteenus, mis realiseerib Tuvastusteenuse
ID-kaardi kasutamiseks Web-eID raamistikus.
Eduka Web-eID isikutuvastuse korral väljastab abiteenus Valijarakendusele
pileti, mille abil on võimalik teistele teenustele valija identiteeti
kinnitada. Iga piletiga saab hääletada ainult ühe korra.
Web-eID ei paku allkirjateenust, hääle allkirjastamine toimub Valija seadmes
lokaalselt analoogselt klassikalisele ID-kaardiga
autentimisele/allkirjastamisele.
Web-eID abiteenus on olekuvaba komponent. Tänu sellele on võimalik Web-eID
abiteenust horisontaalselt skaleerida.
Allkirjateenuse funktsioon ja tehniline liides
``````````````````````````````````````````````
Allkirjateenuse funktsioon on Valijarakenduse toetamine hääle
allkirjastamisel. Allkirjateenus on vajalik näiteks Mobiil-ID allkirjastamise
korral.
Mobiil-ID abiteenuse teostus
''''''''''''''''''''''''''''
IVXV koosseisu kuulub Mobiil-ID abiteenus, mis käitub Mobiil-ID jaoks nii
Tuvastusteenusena kui ka Allkirjateenusena. Valijarakendus esitab IVXV
päringud Mobiil-ID abiteenusele, mis teisendab need Mobiil-ID päringuteks ning
edastab Mobiil-ID teenusepakkujale.
Eduka Mobiil-ID isikutuvastuse korral väljastab abiteenus Valijarakendusele
pileti, mille abil on võimalik teistele teenustele valija identiteeti
kinnitada. Iga piletiga saab hääletada ainult ühe korra.
Allkirjastamise korral saadab Valijarakendus Mobiil-ID abiteenusele vaid
allkirjastatava hääle räsi ning kasutab vastuseks saadud signatuuri samamoodi
kui ID-kaardiga loodud signatuuri.
Mobiil-ID abiteenus sisaldab küll olekut pooleliolevate tuvastusseansside
kohta, aga muus osas on tegu olekuvaba komponendiga. Tänu sellele on võimalik
Mobiil-ID abiteenust horisontaalselt skaleerida.
Smart-ID abiteenuse teostus
'''''''''''''''''''''''''''
IVXV koosseisu kuulub Smart-ID abiteenus, mis käitub Smart-ID jaoks nii
Tuvastusteenusena kui ka Allkirjateenusena. Valijarakendus esitab IVXV
päringud Smart-ID abiteenusele, mis teisendab need Smart-ID päringuteks ning
edastab Smart-ID teenusepakkujale.
Eduka Smart-ID isikutuvastuse korral väljastab abiteenus Valijarakendusele
pileti, mille abil on võimalik teistele teenustele valija identiteeti
kinnitada. Iga piletiga saab hääletada ainult ühe korra.
Allkirjastamise korral saadab Valijarakendus Smart-ID abiteenusele vaid
allkirjastatava hääle räsi ning kasutab vastuseks saadud signatuuri samamoodi
kui ID-kaardiga loodud signatuuri.
Smart-ID abiteenus sisaldab küll olekut pooleliolevate tuvastusseansside
kohta, aga muus osas on tegu olekuvaba komponendiga. Tänu sellele on võimalik
Smart-ID abiteenust horisontaalselt skaleerida.
Hääletamisfaktide järjekorrateenus
``````````````````````````````````
Hääletamisfaktide järjekorrateenuse põhifunktsiooniks on hääletamisfaktide
edastamine Valimiste Infosüsteemile X-tee abiteenuse vahendusel.
Kogumisteenuse mikroteenuste evitamine
``````````````````````````````````````
Kogumisteenuse mikroteenused sõltuvad välistest pakkidest minimaalselt.
Vajalikud sõltuvused on:
#. SSH-server haldustegevuste läbiviimiseks (seda kasutab mikroteenuste
haldamiseks haldusteenus).
#. rsyslog logide kogumiseks logikogumisteenustesse.
Kogumisteenuse mikroteenused pakendatakse deb-vormingus, neid on võimalik
evitada ka docker'i-laadsete konteineritena.
Välised teenused ja laiendatavus
--------------------------------
.. figure:: model/img/collector_extension.png
Kogumisteenuse laiendusmoodulid ja välised teenused
Kogumisteenuse mikroteenused kasutavad laiendusmooduleid teostamaks erinevaid
mehhanisme valija tuvastamiseks, digiallkirjade verifitseerimiseks ja
täiendamiseks, sealhulgas hääle registreerimiseks. Laiendusmoodulid võivad
teostuse võimaldamiseks kasutada väliseid teenuseid. Mikroteenuste
laiendatavuse huvides on defineeritud Go API, mille alusel saab teostada
ka täiendavaid mooduleid. Hetkel on teostatud järgmised moodulid:
- Autentimine TLS-sertifikaadiga (ID-kaart);
- Autentimine Tuvastusteenuse piletiga (Mobiil-ID, Smart-ID, Web-eID);
- BDOC verifitseerimine;
- Kehtivuskinnitusteenus OCSP;
- Ajatempliteenus RFC 3161;
- Registreerimisteenus OCSP;
- Registreerimisteenus RFC 3161.
IVXV krüptograafilises protokollis on kesksel kohal Registreerimisteenus, mis
osaleb samuti häälte pikaajalisel talletamisel.
Registreerimisteenuse funktsioon
````````````````````````````````
Registreerimisteenuse põhifunktsioon on võtta Hääletamisteenuselt vastu
allkirjastatud registreerimispäringuid, kinnitada need omapoolse allkirjastatud
vastusega ning säilitada hilisemaks auditeerimiseks vähemalt hääletamisperioodi
lõpuni.
Auditeerimisel tekkivate võimalike erisuste lahendamiseks on oluline, et
- Registreerimisteenus on võimeline tõestama, et igale tema poolt väljastatud
kinnitusele eelnes Talletamisteenuse poolne registreerimispäring;
- Talletamisteenus on võimeline tõestama, et iga tema poolt talletatud hääle
kohta on olemas Registreerimisteenuse kinnitus.
Piisav protokoll sellise tõendamistaseme saavutamiseks on, kus mõlemal
osapoolel on olemas võtmepaar allkirjastamiseks, päringud ja vastused on
allkirjastatud ning kumbki pool peab registrit teise poole teadete üle. Selline
protokoll on realiseeritav näiteks OCSP-põhise Registreerimisteenuse korral.
Samas võib esineda juhtumeid, kus näiteks registreerimispäringute
allkirjastamine ei ole standardsete vahenditega võimalik (RFC 3161 põhine
registreerimine). Sellisel juhul tuleb registreerimisteenusele vajalik
tõendusmaterjal anda muude organisatsioonilis-tehniliste vahenditega.
Registreerimisteenusel on praegu kaks erinevat teostust:
#. OCSP-liides eeldab Eestis rakendatava OCSP-põhise ajamärgendamisteenuse
kasutamist, kus allkirjastatud OCSP-päringu nonsiks on Hääletamisteenuse
poolt pandud hääle räsi. Päring on allkirjastatud standardsete OCSP
vahenditega;
#. RFC 3161 liides, mille korral ebastandardse lahendusena pannakse
ajatemplipäringu nonsiks Hääletamisteenuse poolt allkirjastatud hääle räsi.
Kogumisteenuse laiendusmoodulite lisamine
`````````````````````````````````````````
Kogumisteenuse API defineerib kuute tüüpi laiendusmooduleid:
#. isikutuvastus (Go pakk ``ivxv.ee/auth``, näiteks ``tls``);
#. tuvastatud isiku sertifikaadist valija identifikaatori tuletamine (Go pakk
``ivxv.ee/identity``, näiteks ``serialnumber``);
#. valija identifikaatorist vanuse tuletamine (Go pakk ``ivxv.ee/age``, näiteks
``estpic``);
#. allkirjastatud konteineri verifitseerimine (Go pakk ``ivxv.ee/container``,
näiteks ``bdoc``);
#. allkirja kvalifitseerimine (Go pakk ``ivxv.ee/q11n``, näiteks ``tspreg``);
#. andmetalletusprotokoll (Go pakk ``ivxv.ee/storage``, näiteks ``etcd``).
Uue mooduli lisamiseks tuleb moodulpakki lisada mooduli identifikaator ning
mooduli teostusega alampakk. Alampaki alglaadimisel tuleb mooduli
registreerimiseks kutsuda välja moodulpaki ``Register`` funktsioon.
Uue mooduli kasutamiseks tuleb selle identifikaator lisada seadistusse vastava
moodulitüübi seadistuse juurde koos alammooduli seadistusega. Laiendusmoodulile
antakse ette tema identifikaatoriga viidatud seadistusblokk, mida see
mooduli-siseselt edasi töötleb.
Moodulpakid ja nende moodulitelt nõutavad liidesed on täpsemalt kirjeldatud
vastavates lähtekoodifailides. Samuti on iga mooduli kohta olemas vähemalt üks
teostus, mida saab kasutada eeskujuna.
Monitooring
-----------
.. figure:: model/img/monitoring.png
Monitooringulahendus
Logimine
````````
Iga mikroteenuse poolt genereeritav logi defineeritakse süstemaatiliselt,
lähtudes protokollikirjeldusest ning teenuse osutamise olekudiagrammist.
Logitakse minimaalselt:
* iga päringu kättesaamise fakt ning töötlemise algus;
* töötlemise üleandmine välisele komponendile;
* töötlemisjärje naasmine komponenti;
* päringu töötlemise lõpp ning tulemus;
* täiendavalt oluliste etappide läbimine protsessi olekumudelis.
Logimisel järgitakse järgmisi põhimõtteid:
* Logimiseks kasutatakse rsyslog teenust, mis registreerib logiteate
kirjutamise hetke millisekundi täpsusega;
* Iga seansi alustamisel genereerib süsteem unikaalse identifikaatori, mida
klientrakendus kasutab oma päringutel kesksüsteemi poole pöördumiseks;
* Kõik ühe seansi alla kuuluvad logikirjed sisaldavad sama
seansiidentifikaatorit;
* Logikirje on unikaalselt identifitseeritav;
* Iga logitava teate juures on võimalik unikaalse tunnuse abil üksüheselt
tuvastada teate tekkimise koht monitooritavas süsteemis;
* Logikirje on JSON vormingus, automaatse monitooringu jaoks on masinloetavus
primaarne ning inimloetavus sekundaarne;
* Logisse minev info saneeritakse (urlencode) ja sellele rakendatakse pikkuse
piirangut (piirang terve logiteate ja samuti parameetri kaupa);
* Süsteemiperimeetrist väljastpoolt pärinevat infot logitakse ainult
saneerituna ja ainult etteantud pikkuses.
Kuna logimine toimub rsyslog vahendusel, on võimalik Guardtime mooduli
kasutamine logide tervikluse tagamiseks.
Üldstatistika
`````````````
Järgmise statistika jälgimiseks kasutatakse staatilist veebiliidest:
* edukalt kogutud hääled/hääletajate hulk;
* hääletajate jagunemine sugude, vanusegruppide, operatsioonisüsteemide ning
autentimisvahendite kaupa;
* edukalt kontrollitud häälte/hääletajate hulk;
* korduvhääletamiste statistika;
* hääletajate jagunemine riigiti IP-aadressi põhjal.
Detailstatistika
````````````````
Detailstatistika agregeeritakse logide põhjal kasutades SCCEIV
logianalüsaatorit, mis analüüsib rakenduste tegevuslogi eeldefineeritud
profiili suhtes ning võimaldab seansi-/veatüübipõhist analüüsi.
Detailstatistika on kättesaadav üle HTTPS-liidese.
.. _kogumisteenuse-haldus:
Haldus
------
Kogumisteenuse haldamine toimub digitaalallkirjastatud seadistuspakkide abil.
Kogumisteenus pakub seadistuspakkide laadimiseks kahte liidest:
* Käsurealiides – rakendus verifitseerib allkirja, valideerib korralduste
vormingut, kooskõlalisust ja sobivust kogumisteenuse seisundi suhtes.
Korralduse rakendamine toimub eraldi utiliidi abil.
* Veebiliides – veebiliides vahendab seadistuspaki käsurealiidesele ja tagastab
kasutajale info laadimise tulemuse kohta. Eduka laadimise korral toimub
automaatselt ja samadel põhimõtetel ka seadistuspaki rakendamine.
Veebiliidese funktsioonideks on:
* Kogumisteenuse mikroteenuste seisundi jälgimine;
* Valimiste nimekirjade haldus;
* Statistika kuvamine e-hääletamise kulgemise kohta;
* Haldusteenuse kasutajate haldus;
* Kogumisteenuse halduse logi kuvamine.
Kõik rakendusele antud korraldused säilitatakse - ka need mida ei rakendatud.
Vigaseid (mittevalideeruvaid) korraldusi ei säilitata.
Kogumisteenuse haldusteenus sooritab järgmisi tegevusi automaatselt:
#. Valijate nimekirjade muudatuste laadimine Valimiste Infosüsteemist;
#. Hääletamise statistika kogumine hääletusteenusest ja eksportimine Valimiste
Infosüsteemi;
#. Talletatud häälte, logide ning seadistuste varundamine varundusteenusesse.
Haldusteenuse komponendid
`````````````````````````
.. figure:: model/img/ms-management-service-components.png
Kogumisteenuse haldusteenuse komponendid
#. **Halduse veebiserver** on süsteemse kasutaja ``www-data``
õigustes töötav Apache server, mille ülesanded on:
#. Kasutajatelt tulevate HTTPS-päringute esmane teenindamine:
#. Haldusteenuse usaldusväärsuse tõestamine (TLS-sertifikaat);
#. Kasutajate autentimine;
#. Valmisgenereeritud veebilehtede ja andmefailide serveerimine
andmehoidlast.
#. Üldiste taustaandmete päringu vastuse varustamine sisseloginud kasutaja
andmetega (WSGI).
#. Üleslaaditavate korralduste esmane valideerimine ja vahendamine
haldusdeemonile ning haldusdeemoni sellekohaste vastuste vahendamine
kliendile (WSGI).
#. **Haldusdeemon** on kasutajakonto ``ivxv-admin`` õigustes töötav ja
kohalikul (``localhost``) liidesel kuulav veebiserver mille ülesanded on:
#. Üleslaaditavate korralduste valideerimine;
#. Üleslaaditavate korralduste vahetu rakendamine (kasutajate haldus);
#. Üleslaaditavate korralduste salvestamine hilisemaks rakendamiseks
(seadistuse ja valimisnimekirjade rakendamiseks teenusele);
#. E-valimiskasti allalaadimise vahendamine.
#. **Agentdeemon** on kasutajakonto ``ivxv-admin``
õigustes töötav deemon, mille ülesanded on:
#. Andmete kogumine ja registreerimine:
#. Teadaolevate mikroteenuste seisund;
#. Tegevusmonitooringu statistika allalaadimine;
#. **Andmehoidla** on failisüsteemis asuv kataloog, kuhu haldusteenuse
komponendid hoiavad kogutud ja genereeritud andmeid (vaata üksikasjalist
kirjeldust ``IVXV kogumisteenuse haldusjuhendi`` lisadest);
Välised komponendid, millega haldusteenus kokku puutub:
#. **Kogumisteenuse alamteenused** - paigaldamine, seadistamine ja seisundi
andmete kogumine toimub agentdeemoni kaudu (SSH-ühendus teenuse masinasse);
#. **Seireserver** - üldstatistika andmete allalaadimine haldusteenuses
kuvamiseks;
.. figure:: model/img/ms-upload-command.png
Korralduste laadimine haldusteenusesse
Kogumisteenuse seisundid
------------------------
Kogumisteenuse seisund kajastab teenuse kõigi alamteenuste seisundit,
kasutuselolevate väliste teenuste seisundit ja eelneva põhjal tuletatud
üldseisundit. Kogumisteenuse üldseisundi tuvastamisega tegeleb haldusteenus.
Üldseisundi olekud on:
#. **Paigaldamata** - alates haldusteenuse paigaldamisest kuni kõigi
alamteenuste paigaldamiseni;
#. **Paigaldatud** - kõik alamteenused on paigaldatud, neile on rakendatud
tehnilised seadistused ja teenuse toimimiseks vajalikud krüptovõtmed.
Valimiste seadistust pole rakendatud (kuid see võib olla laaditud
haldusteenusesse);
#. **Seadistatud** - kogumisteenus on seadistatud ja töökorras, sellega on
võimalik häälte kogumist läbi viia ja e-valimiskasti väljastada.
#. **Osaline tõrge** - kogumisteenus on seadistatud ja osaliselt töökorras,
mõned alamteenused pole töökorras, kuid see ei takista kogumisteenuse
toimimist.
#. **Tõrge** - kogumisteenuse oluline sõlm pole töökorras, teenuse nõuetekohane
osutamine pole võimalik.
.. figure:: model/img/ms-collector-status.png
:scale: 50%
Kogumisteenuse olekudiagramm. Olekud vastavalt värvusele: kollane -
seadistamisel, punane - viga, roheline - töökorras.
Kogumisteenuse alamteenuste seisundid
`````````````````````````````````````
.. figure:: model/img/ms-service-status.png
:scale: 50%
Haldusteenuse poolt registreeritud alamteenuse olekudiagramm. Olekud
vastavalt värvusele: kollane - seadistamisel, punane - viga, roheline -
töökorras.
Kogumisteenuse seisundi muutused
````````````````````````````````
Kogumisteenuse seisund on jälgitav alates haldusteenuse edukast
paigaldamisest, algne seisund on **Paigaldamata**.
Paigaldamata
''''''''''''
Toimub usaldusjuure ja tehnilise seadistuse rakendamine kogumisteenusele:
#. Seadistuste laadimine kogumisteenusesse;
#. Tehnilises seadistuses kirjeldatud alamteenuste paigaldus;
#. Usaldusjuure ja tehniliste seadistuste rakendamine alamteenustele;
Seadistuste eduka rakendamise tulemusena saab süsteemi uueks seisundiks
**Paigaldatud**.
Paigaldatud
'''''''''''
Kogumisteenuse seadistused on rakendatud kõigile alamteenustele, valimiste
seadistused pole rakendatud. Toimub valimiste seadistuse laadimine
haldusteenusesse ja rakendamine alamteenustele.
Valimiste seadistuse eduka rakendamise korral saab süsteemi uueks seisundiks
**Seadistatud**.
Seadistatud
'''''''''''
Kõik kogumisteenuse alamteenused on seadistatud ja töökorras. Haldusteenusel on
kõikidest alamteenustest värsked seisundiraportid. Süsteemiga on võimalik
hääletust läbi viia ja e-valimiskasti väljastada.
Kui süsteemis tuvastatakse tõrge, saab süsteemi uueks **Osaline tõrge**.
**Seadistatud** olekust ei pöörduta enam kunagi tagasi olekutesse
**paigaldamata** või **paigaldatud**, kuigi uute alamteenuste lisamisel (kuni
need on olekus **paigaldamata/paigaldatud**) oleks vastavad tingimused
täidetud.
Osaline tõrge
'''''''''''''
Süsteem on seadistatud ja osaliselt töökorras, mõned süsteemi dubleeritud osad
pole töökorras, kuid see ei takista süsteemil toimimast.
Rikke süvenemisel piirini, kus süsteem pole võimeline teenust osutama, saab
süsteemi uueks olekuks **Tõrge**. Kõigi rikete kõrvaldamise järel saab
süsteemi uueks olekuks **Seadistatud**.
Tõrge
'''''
Seadistatud süsteemil on tuvastatud rike, mis takistab teenuse osutamist.
Rikete kõrvaldamisel olukorrani, kus süsteemiga on võimalik teenust osutada,
saab süsteemi uueks olekuks **Osaline tõrge**.
Eemaldatud
''''''''''
Teenus on konfiguratsioonist eemaldatud.
Valijate nimekirjade olekud haldusteenuses
------------------------------------------
Valijate nimekirja olek võib olla:
#. **Rakendamise ootel** - nimekiri on laaditud haldusteenusesse;
#. **Rakendatud** - nimekiri on rakendatud kogumisteenusele;
#. **Vigane** - nimekiri on märgitud vigaseks, haldusteenus uusi valijate
nimekirjade muudatusi ei laadi;
#. **Vahele jäetud** - vigane nimekiri on märgitud vahelejätmiseks.
.. figure:: model/img/ms-voter-list-status.png
Valijate nimekirja olekudiagramm
Siirdeprotsessid:
#. Nimekirja laadimine haldusteenusesse:
Algnimekirja laadib kogumisteenuse operaator, nimekirja olekuks saab
**Rakendamise ootel**;
Muudatusnimekirja laadib haldusteenus. Vastavalt valideerimise tulemusele
saab nimekirja olekuks kas **Rakendamise ootel** või **Vigane**;
#. **Rakendamine kogumisteenusele**: viib läbi haldusteenus **rakendamise
ootel** olekus nimekirjaga. Õnnestumisel määratakse nimekirja olekuks
**Rakendatud**, vea korral **Vigane**;
#. **Vahelejätmine**: operaator määrab olekuga **Vigane** nimekirjale oleku
**Vahele jäetud**.
================================================
FILE: Documentation/public/arhitektuur/locales/en/LC_MESSAGES/etcd.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2016-2025, Cybernetica AS
# This file is distributed under the same license as the Elektroonilise
# hääletamise infosüsteem package.
# FIRST AUTHOR , 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: Elektroonilise hääletamise infosüsteem 1.10.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-03 15:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language: en\n"
"Language-Team: en \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.15.0\n"
#: ../../etcd.rst:4
msgid "Lisa - ETCD Andmemudel"
msgstr "Appendix - ETCD datamodel"
#: ../../etcd.rst:6
msgid ""
"ETCD on võti-väärtus andmebaas, kus talletatakse e-hääletamise "
"sisendnimekirju, e-hääli ning statistikat."
msgstr ""
"ETCD is key-value database used for storing input lists, votes and "
"statistics of online voting"
#: ../../etcd.rst:10 ../../etcd.rst:12
msgid "Ringkondade nimekiri"
msgstr "List of districts"
#: ../../etcd.rst:16 ../../etcd.rst:70 ../../etcd.rst:123 ../../etcd.rst:155
#: ../../etcd.rst:196 ../../etcd.rst:258
msgid "**Võti**"
msgstr "**Key**"
#: ../../etcd.rst:16 ../../etcd.rst:70 ../../etcd.rst:123 ../../etcd.rst:155
#: ../../etcd.rst:196 ../../etcd.rst:258
msgid "**Väärtus**"
msgstr "**Value**"
#: ../../etcd.rst:16 ../../etcd.rst:70 ../../etcd.rst:123 ../../etcd.rst:155
#: ../../etcd.rst:196 ../../etcd.rst:258
msgid "**Näide**"
msgstr "**Example**"
#: ../../etcd.rst:18
msgid "/districts"
msgstr "/districts"
#: ../../etcd.rst:18 ../../etcd.rst:72 ../../etcd.rst:125 ../../etcd.rst:157
#: ../../etcd.rst:198 ../../etcd.rst:224 ../../etcd.rst:260
msgid "Juurvõti"
msgstr "Rootkey"
#: ../../etcd.rst:20
msgid "/districts/"
msgstr "/districts/