Praktikum 3 - ID-kaart ja e-hääletamine
Eesti riigikogu valimised toimuvad 5. märts 2023
https://www.valimised.ee/ Valimisnädal algab esmaspäeval, 27. veebruaril ja lõpeb pühapäevasel valimispäeval 5. märtsil. Eesti e-riigi alustala ID-kaarti paremaks tundmiseks ja e-valimiste paremaks tehniliseks mõistmiseks oleme valimistele eelneva nädala praktikumiteemaks valinudki vastavad teemad. Seekord on rohkem lugemist, tööd materjalidega ja veidi vähem tehnilisi harjutusi ning mõne teemaga tegeleme süvendatult veel järgistes praktikumides (sertifikaadiga autentimine, turvaline suhtlus jne).
PS! Kuigi käesoleva praktikumi pealkiri viitab, et lahendamiseks on vaja ID-kaarti ja selle lugejat, mis kindlasti tulevad kasuks harjutuste ja materjalide läbitöötamisel on harjutused koostatud nii, et ülesanded on võimalik edukalt lahendada ka mobiili-ID, smart-ID või üldse mitte aktiivset digitaalset isikutunnistust omamata. Täpsemad juhised ja alternatiivsed harjutused ülesannete juures.
Eesti ID-kaart on isikutunnistus, mida on võimalik kasutada ka elektrooniliselt. ID-kaardi südameks on kiip, mis sisaldab autentimiseks ja digiallkirjastamiseks kasutatavaid võtmeid. Kiibi sees on kaks võtmepaari, millest esimest kasutatakse peamiselt autentimiseks ja teist digiallkirjastamiseks.
Eelneva lõigu põhjal on ilmne, et ID-kaart kasutab asümmeetrilist krüptograafiat ehk avaliku võtme krüptograafiat. Tuletame meelde, et avaliku võtme krüptograafias luuakse võtmepaar, mis koosneb avalikust ja salajasest võtmest. Avalik võti on avalik ning seda saab kasutada krüpteerimiseks ning digiallkirja verifitseerimiseks. Salajane võti on salajane ning seda saab kasutada vastava avaliku võtmega krüpteeritud andmete dekrüpteerimiseks ja digiallkirjastamiseks. Selleks, et salajasi võtmeid kaitsta on need kirjutatud ID-kaardi kiibi sisse nii, et neid ei ole sealt võimalik eksportida / kopeerida. ID-kaardi kiip on ehitatud nii, et sellel olevaid salajasi autentimise ja allkirjastamise võtmeid pole võimalik välja lugeda. Praeguseni pole leitud meetodit, mis võimaldaks ID-kaardi kiipi kopeerida. Kuna salajasi võtmeid pole ID-kaardi kiibi seest võimalik kätte saada, siis tuleb kõik salajase võtmega tehtavad operatsioonid sooritada kiibi sees. Selle jaoks, et operatsioonisüsteem oskaks kaardilugejas oleva ID-kaardiga suhelda ning sinna andmeid saata on vaja paigaldada arvutisse vastav tarkvara, mille leiate aadressilt https://installer.id.ee.
Erinevate aastate ID-kaardi näidised. Allikas:www.politsei.ee
Digi-ID
Digi-ID on ID-kaardi analoog, mida saab kasutada ainult digitaalselt. Digi-ID kaardil puudub foto ja seega ei saa seda kasutada visuaalse isikut tõendava dokumendina.
Mobiili-ID
Mobiil-ID on sinu digitaalne isikutunnistus - see on sinu mobiilis ja sinuga alati kaasas. Mobiil-ID abil saad siseneda e-keskkondadesse, teha makseid, sõlmida tehinguid, anda digitaalallkirju ja hääletada valimistel. Eestis kasutatav Mobiil-ID pakub nii isiku tuvastamise kui ka digiallkirja andmise võimalust. Mobiil-ID jaoks on vaja kasutada spetsiaalset SIM-kaarti, millega on seotud sertifikaadid. Mobiil-ID on elektroonilises keskkonnas samaväärne ID-kaardiga, kuid erinevalt ID-kaardist ei ole võimalik Mobiil-ID abil dokumente krüpteerida. Samuti saad siseneda erinevatesse rakendustesse - nii võid näiteks pangatoiminguid teha mugavalt nutiseadmest ükskõik, kus sa parasjagu viibid. https://www.id.ee/index.php?id=30057
Smart-ID
Smart-ID on teenus, mis pakub nii autentimise kui ka digiallkirjastamise funktsionaalsust. Smart-ID teenust pakub SK ID Solutions, aga selles kasutatava alustehnoloogia tagab Cybernetica AS. Vastav alustehnoloogia kannab nime SplitKey.
Nii ID-kaart kui mobiil-ID kasutavad privaatvõtmete turvamiseks kiipkaarte. Smart-ID korral ei ole lõppkasutajal vaja krüptovõtmete hoiustamiseks eraldi turvalist riistvara. Selle asemel on krüptovõtmed jagatud osakuteks, mis on omakorda jaotatud klientseadme ja serveri vahel. Selleks, et autentida või anda digiallkirja on vaja kasutada kõiki võtmeosakuid, mistõttu ei ole võimalik ei serveril ega ka klientseadmel iseseisvalt vastavaid toiminguid läbi viia. Kliendi poolel hoitakse vajalikku krüptograafilist infot nutitelefonis olevas Smart-ID rakenduses. Serveri poolel olevaid võtmeosakuid kaitstakse spetsiaalse füüsilise turvamooduli ehk HSM abil. Seetõttu on nii autentimiseks kui allkirjastamiseks vaja, et nutiseade ja server teeksid koostööd. Täpsema info Smart-ID poolt kasutatud tehnoloogiate ja matemaatiliste aluste kohta leiate allpool olevast lisalugemise nimekirjast.
Smart-ID abil antud allkiri on alates 2018. aastast võrdväärne Mobiil-ID ja ID-kaardiga antud allkirjadega. 2020. aasta veebruaris lisati Smart-ID abil digiallkirjastmise võimalus ka tarkvarasse DigiDoc4.
Veidi pikemalt Eestikeeles on vastavatest tehnoloogiatest kirjutanud Krisjan Krips enda mitteinformaatikutele mõeldud MTAT.07.028 Infoturve kursusel https://courses.cs.ut.ee/2022/infsec/spring/Main/ID-kaartJaMobiil-ID .
Kaardilugeja valimine
Eesti ID-kaardi tarkvara toetab kümneid erinevaid kaardilugejaid. ID-kaardi tarkvara poolt toetatud kaardilugejate nimekiri asub järgmisel veebilehel: http://www.id.ee/?id=36180. Kuidas nende hulgast valida sobiv kaardilugeja?
Põhiline erinevus seisneb PIN-i sisestamise mooduses. Ühtedel kaardilugejatel sisestatakse PIN läbi tavalise klaviatuuri (saadetakse edasi kaardilugejasse), teistel sisestatakse PIN otse kaardilugejalt. Esimesel juhul on võimalik kasutada keylogger tüüpi pahavara, millega saab ründaja teada kasutaja sisestatud PIN-d. Teisel juhul on kaitstud klaviatuuri pealtkuulamise ründe vastu. Infot klahvikuulajatest: https://en.wikipedia.org/wiki/Keystroke_logging. Seetõttu on soovitatav kasutada kaardilugejas PIN-i sisestamisega variante (ka RIA (Riigi Infosüsteemi Amet) soovitab võimaluse korral kasutada sõrmistikuga kaardilugejat. Ka klaviatuuri sisseehitatud kaardilugejad toimivad kui sõrmistikuga kaardilugejad – klaviatuuri numbrilaud (numpad) on otse ühenduses kaardilugejaga.
ID-kaardi haldusvahend ja DigiDoc programm
ID-kaardi tarkvara sisaldab:
- ID-kaardi utiliiti (alates 2018 aastast on liidetud DigiDoc programmi)
- isikuandmete lugemine
- sertifikaatide registreerimine
- sertifikaatide salvestamine faili
- PIN- ja PUK-koodide muutmine
- lukustatud PIN-koodi lahti blokeerimine (PUK-koodi abil)
- kaardi kasutusloendurite vaatamine
- Digidoc klienti
- digiallkirjastamine
- digiallkirjade kehtivuse kontrollimine
- avada / salvestada Digidoc konteineris asuvaid faile
- krüpteerida ja dekrüpteerida faile
- TeRa klienti
- võimaldab vanadele DDOC digiallkirjastatud dokumentidele ajatempli lisada
- Brauserite laiendusi (extensions)
- lisab brauserile ID-kaardi toe autentimiseks ja digiallkirjastamiseks
ID-kaardi tarkvara paigaldamine virtuaalmasinasse
See praktikum on testitud Linux Mint 21.1 peal. Juhul kui te kasutate mõnda teist Linuxi distributsiooni, siis tuleb teil endal veenduda, et ID-kaardi tarkvara on võimalik paigaldada.
Esimeseks ülesandeks on paigaldada virtuaalmasinasse ID-kaardi tarkvara, mille sees on uus DigiDoc programm. NB! Kaardilugeja võiks olla ühendatud virtuaalmasinasse, muidu võib juhtuda, et ei paigaldata kaardilugeja draivereid ning installatsioon ei õnnestu.
Juhul kui arvutis on sisseehitatud ID-kaardi lugeja, siis ühendage see virtuaalmasinaga (täpsem info jaoks lugege juhendi 4. punkti). Kõigepealt kontrollige, et virtuaalmasina USB-seadete all on aktiveeritud tugi USB 2.0 kontrollerile. Kui see on tehtud, siis peaks olema võimalik sisemist ID-kaardi lugejat virtuaalmasina USB-filtri abil ühendada. Selleks, et sisemist lugejat aktiveerida tuleb ID-kaart sisestada lugejasse.
- Tõmmake Ubuntu jaoks loodud paigaldusskript:
wget https://installer.id.ee/media/install-scripts/install-open-eid.sh
- Andke sellele skriptile käivitamise õigus:
chmod +x install-open-eid.sh
- Käivitage skript, mis paigaldab ID-kaardi tarkvara. Olge nõus (vajutage
ENTER
), et tegemist ei ole Ubuntuga ja te ikka tahate tarkvara paigaldada. - Ühendage ID-kaardi lugeja virtuaalmasinaga
- Ainult Linux HOST kasutajad (ehk need kelle põhioperatsioonisüsteem, mis jooksutab Virtualboxi on Linux): Linuxi host masinas lisage enda kasutajanimi gruppi vboxusers:
sudo adduser $USER vboxusers
.
Nüüd logige välja ja siis uuesti sisse. - Ühendage ID-kaardi lugeja arvutiga ja sisestage ID-kaart lugejasse. Enamik smartcard lugejaid ei ole sisse lülitatud kui sinna pole sisestatud kaarti.
- Lisage VirtualBox virtuaalmasina seadetes USB-kaardilugeja seade (ka. enamik sisse-ehitatud lugejaid IT akadeemia sülearvutites tuntakse ära kui USB-seadmed) (
Devices
->USB
-> valigeGeneric EMV Smartcard Reader
või teie seadmele vastava nimega kaardilugeja). - Kontrollige kas kaardilugeja tunti virtuaalmasinas ära käsuga:
lsusb
.
- Ainult Linux HOST kasutajad (ehk need kelle põhioperatsioonisüsteem, mis jooksutab Virtualboxi on Linux): Linuxi host masinas lisage enda kasutajanimi gruppi vboxusers:
- Testige, et tarkvara sai paigaldatud. Avage ID-kaardi haldusvahend (
DigiDoc4
) ning ühendage enda ID-kaart lugejasse. Kui kaardilugeja on virtuaalmasinaga ühendatud, siis peaksite ID-kaardi haldusvahendis DigiDoc4 nägema infot oma ID-kaardi kohta (sakkminu eID
).
ID-kaardi haldusvahend (ID-card utility)
See info, mida te haldusvahendi kaudu näete on kättesaadav ka asutustele, kelle juures te kasutate enda ID-kaarti kliendikaardina. Seega näete haldusvahendist, mis info te ID-kaarti kasutades loovutate. Haldusvahend võimaldab muuta ID-kaardi PIN koode juhul kui need on meelest läinud või kui need on lekkinud. PIN koodide muutmiseks on vaja omada ID-kaardi PUK koodi. Üldiselt peaks PIN koodid pähe õppima ning PUK kood tuleks talletada turvalisse paika (mitte arvutisse). Kindlasti ei tohi PUK / PIN koode rahakoti vahel kaasas kanda.
- Kas on olemas kehtivad sertifikaadid?
- Mis kuupäevani sertifikaadid kehtivad?
- Mis kuupäevani kehtib ID-kaart?
- Mis krüptoalgoritmi kasutatakse digiallkirja andmiseks?
Kontrollküsimused
- Miks peavad ID-kaardi sertifikaadid kehtima?
- Miks on oluline, et kasutusel on turvalised võtme tehnoloogiad?
Krüpteerimine ID-kaardi abil
ID-kaardiga seonduvalt on võimalik kasutada krüpteerimise funktsionaalsust. On oluline mõista, et ID-kaardi krüpteerimise funktsionaalsus on eelkõige sobilik näiteks turvaliselt failide edastamiseks e-postiga konkreetsetele isikutele või organisatsioonidele. Ohtlik on kasutada andmete pikemaajaliseks krüpteeritud kujul hoidmiseks. Põhjus seisneb selles, et kui ID-kaart kaob / kui kiip saab kahjustada / sertifikaate & võtmeid uuendatakse, siis pole enam juurdepääsu dekrüpteerimiseks vajalikule salajasele võtmele ning andmeid ei saa enam dekrüpteerida. Dekrüptida saavad ainult adressaadid, st kui et kui ennast adressaadiks ei määra (adressaate võib olla rohkem kui üks), siis ise krüpteeritud konteinerit lahti ise ei saa. Adressaadi lisamiseks peate teadma tema isikukoodi, asutuste puhul asutuse nime.
ID-kaardil põhinevast krüpteerimisest tehnilisemalt
Selleks, et saata krüpteeritud andmeid kasutatakse adressaadi avalikku võtit. Krüpteerimiseks kasutatakse ainult esimest võtmepaari ehk seda, mida te igapäevaselt kasutate autentimiseks. Avaliku võtmega krüpteeritud andmeid saab dekrüpteerida ainult vastava salajase võtmega. Samas me teame, et salajast võtit pole võimalik ID-kaardi seest kätte saada ja ID-kaardil olev kiip on liiga aeglane selleks, et suurt andmehulka dekrüpteerida.
Lahenduseks on hübriidsüsteem, mis kasutab nii avaliku võtme krüptograafiat kui ka sümmeetrilist krüpteerimist. Kõigepealt genereeritakse juhuslik võti ja siis krüpteeritakse andmed kasutades genereeritud võtit ja sümmeetrilist krüptoalgoritmi (AES). Selleks, et adressaat saaks dekrüpteerida sümmeetrilise krüpteerimisalgoritmiga krüpteeritud andmeid peab ta omama krüpteerimisel kasutatud võtit. Seetõttu tuleb koos krüpteeritud failiga toimetada adressaadini ka krüpteerimiseks genereeritud võti. Selleks, et keegi teine ei saaks juurdepääsu saadetavale võtmele krüpteeritakse see adressaadi avaliku võtmega.
Ülesanne 1: Lugege failide krüpteerimise ja krüpteeritud failide avamise juhendit: https://www.id.ee/index.php?id=38804 . Looge uus tekstifail enda nimega ja faili sisuks kirjutage enda matrikli number (nö. salajane info). Nüüd krüpteerige vastav fail õppejõu Alo Peets
ID-kaardi avaliku võtmega, milleks vajate tema isikukoodi 38701112750
(võite täiendavalt lisada ka iseenda isikukoodi). Sulgege DigiDoc programm ja avage krüpteeritud konteiner uuesti. Esituseks tehke ekraanivaade DigiDoc4 tarkvarast, kus oleks näha teie nimi krüpteeritud failinimes ja et fail on krüpteeritud õppejõu Alo Peets avaliku võtmega. Esitage ekraanivaade ja krüpteeritud fail praktikumi lahenduseks.
Näide lahendusest:
Nüüd saaksite krüpteeritud konteineri saata ilma andmeleket kartmata üle ebaturvalise ühenduse (krüpteerimata e-mail). Sarnast lahendust kasutavad tundlike andmete edastamiseks mitmed riigiasutused oma kodanikele ja näiteks ka enamik digitaalseid trahviteatisi (liikluskaamera ja parkimise trahvid) saabuvad teile e-kirjaga, mille manus on krüpteeritud. Samuti eelistavad pangad digitaalseid lepinguid ja muid tundlikke andmeid saata enda klientidele võimalusel adressaadi ID-kaardi abil dekrüpteeritavana. PS! Krüpteeritud konteinerit saab avada ainult ID-kaardiga (mobiil-ID ja Smart-ID ei ole sobilikud).
Autentimine ID-kaardi abil
ID-kaart võimaldab kaardi omanikku elektrooniliselt identifitseerida ehk autentida. Identifitseerimiseks kasutatakse ID-kaardi kiibil olevat autentimise võtmepaari (1024 bitised võtmed vanal kaardil / 2048 bitised uuel kaardil), autentimise sertifikaati ja PIN1, mis võimaldab lahti lukustada kiibil olevat autentimise võtit. Autentimiseks peab isik näitama, et tal on võimalik sooritada operatsioone ID-kaardi kiibil oleva autentimise jaoks mõeldud salajase võtmega. Näiteks saab veebiserver saata kliendile (brauserile) juhuarvu, mis ID-kaardi poolt autentimise jaoks mõeldud salajase võtmega allkirjastatakse ning siis serverile tagasi saadetakse. Server saab kliendi sertifikaadi abil verifitseerida, et vastav allkiri kehtib ning see võimaldab klienti autentida. Eelduseks on see, et kliendi ID-kaarti koos PIN1 saab kasutada ainult klient ise. PIN1 koosneb numbritest ja on 4-12 sümbolit pikk. Tehniliselt kasutatakse veebis ID-kaardiga autentimiseks TLS protokolli kahepoolse autentimise tuge, lihtsalt antud juhul asub kasutaja salajane võti kiipkaardil mitte veebilehitseja võtmehoidlas.
Digiallkirjastamine
Digitaallkirjastamine oli varasemalt Eestis reguleeritud Digitaalallkirjastamise seadusega. Nüüdseks on digiallkirjastamise seadus asendatud E-identimise ja e-tehingute usaldusteenuste seadusega. Juriidiliselt on digiallkiri samaväärne tavalise allkirjaga. Digiallkirjastamiseks kasutatakse ID-kaardi kiibil olevat allkirjastamise võtit, allkirja sertifikaati ja PIN2, mis võimaldab teha operatsioone kiibil oleva allkirjastamise võtmega. Seega võib mõelda PIN2 kui lukuvõtmest, mis lukustab lahti kiibil oleva allkirjastamise jaoks kasutatava salajase võtme. PIN2 koosneb numbritest ja on 5..12 sümbolit pikk. Alates 2018 aasta novembrist on Smart-ID allkiri samaväärne ID-kaardi abil antud digi-allkirjaga ja füüsilise käega antud allkirjaga. https://digi.geenius.ee/rubriik/uudis/suur-uudis-smart-id-saab-vordseks-omakaelise-allkirja-ja-id-kaardiga/
Digiallkirja saab anda kasutades kas:
- Digidoc programmi
- Riigiportaali
- Digidoc portaali https://digidoc.sk.ee
- Smart-ID vahendusel lisainfo
Sertifikaat on iga kasutaja jaoks unikaalne, see seob allkirjastaja identiteedi ja avaliku võtme. Kuna avalik võti ja salajane võti on omavahel seotud, siis on avaliku võtme kaudu seotud ka ID-kaardi kiibil oleva salajane võti.
Sertifikaat on avalik ja selle sees oleva avaliku võtme abil saab kontrollida kas vastava salajase võtme abil antud allkiri on ehtne. Allkirjastamise protsessil kontrollitakse kas kasutaja sertifikaat on kehtiv, nimelt peab sertifikaat kehtima, et oleks võimalik allkirja anda. Selleks tehakse allkirjastamisel automaatselt päring sertifitseerimiskeskuse serverisse ja lisatakse allkirjale vastav tõend (ajatempel). Seaduse mõttes kehtivat digiallkirja saab anda ainult kehtiva allkirjastamise sertifikaadiga ja seega tuleb vastava sertifikaadi kehtivust kontrollida igal allkirjastamisel. See omakorda tähendab, et digiallkirja verifitseerimiseks ei ole vaja internetiühendust, sest ajatemplil olevat allkirja saab kontrollida vastava asutuse avaliku võtmega.
Digiallkirjastamine tehnilisemalt
Digiallkirjastamine (signeerimine) pole midagi muud kui allkirjastatavate andmete krüpteerimine salajase võtmega. Üheks ID-kaardi (ja üldisemalt kiipkaardi) pakutud garantiiks on see, et salajane võti ei lahku kunagi kaardi seest, st seda pole võimalik kopeerida. Seega, et salajase võtmega krüpteerida, tuleb need krüpteeritavad andmed saata kiipkaardi sisse ning välja tulebki krüptotekst. Et aga allkirjastatav dokument võib olla väga suur (te võite näiteks allkirjastada 4 GB faili) ja kiipkaardi operatsioonid on aeglased, ei ole mõistlik kogu dokumenti läbi kiipkaardi lasta. Selle asemel arvutatakse allkirjastatava dokumendi pealt kindla pikkusega krüptograafiline räsi (hash) ning allkirjastatakse see. Digiallkirjastatud andmed pannakse konteinerisse, kus on lisaks digiallkirjastatud räsile veel kasutatud räsialgoritmi nimetus, fail(id) mida allkirjastati, sertifikaat ning sertifikaadi kehtivuskinnitus.
Digiallkirja kontrollimiseks arvutatakse allkirjastatud dokumendi pealt sama räsifunktsiooni kasutades uuesti räsi ning võrreldakse seda avatekstiga, mis saadakse dokumendi allkirja (ehk salajase võtmega krüpteeritud räsi) dekrüpteerimisel allkirjastanud isiku avaliku võtme abil. Kui võrreldavad räsid on võrdsed, siis järelikult oligi allkirjastatud antud dokument.
Allkirja verifitseerimisele lisandub kindlasti veel allkirjastanud isiku sertifikaadi kehtivuse kontroll.
Kehtivuskinnitus
Vastavalt Digitaalallkirja seadusele on kehtivad vaid need allkirjad, mis on antud kehtiva allkirjastamise sertifikaadiga. Seetõttu tuleb vastava sertifikaadi kehtivust kontrollida igal allkirjastamisel.
Sertifikaadi kehtivust reaalajas kontrollitakse Online Certificate Status Protocol (OCSP) protokolli abil (RFC 2560). OCSP puhul küsib klient serverilt mingi konkreetse sertifikaadi kohta kinnitust ning serveri tagastab allkirjastatud vastuse, kus on selle sertifikaadi olek (kehtib/ei kehti/info puudub) ja kinnituse väljastamise aeg (ajatempel).
Kõikide väljastatud kehtivuskinnituste kohta peab AS Sertifitseerimiskeskus turvalogi. Lisaks on selles logis ka kõikide sertifikaatide olekumuutused (kehtetuks tunnistamised, peatamised, jne). Turvalogi kirjed on omavahel krüptograafiliselt lingitud, nii et iga järgmine logikirje on eelmistest sõltuv, millest tekib lineaarne ahel. Sellist ahelat ei saa isegi Sertifitseerimiskeskus võltsida, näiteks lisades kuhugi vahele "minevikus toimunud" kirjeid. Turvalogi hetkeseis (räsi) publitseeritakse perioodiliselt tagantjärele raskesti võltsitavate kanalite kaudu. Näiteks AS Sertifitseerimiskeskus publitseerib oma turvalogi olekut ajalehes Postimees.
- AS Sertifitseerimiskeskuse turvalogi kohta saab täpsemalt lugeda siit:
- Turvalisest ajatempliteenusest üldisemalt:
Harjutus (juhul kui te pole varem digiallkirja andnud / kehtivust kontrollinud)
- Tekita mõni fail ja digiallkirjasta see.
- Allkirjastatud fail saada oma naabrile (meili teel on kõige lihtsam).
- Naaber kontrollib, et vastav digiallkiri kehtib ja on korrektne.
DDOC ja BDOC
Digiallkirjastamise formaat on muudetud Euroopa Liidus standardipõhiseks, mis võimaldab teoorias üle kogu Euroopa Liidu saata ja vastu võtta digiallkirjastatud dokumente. 2015 aastal lõppes Eestis üleminek Eesti-spetsiifiliselt DDOC digiallkirja vormingult BDOC vormingule, mis ühildub ETSI (European Telecommunication Standards Institute) väljaantud ASiC allkirja konteineri standarditega. Ülemineku ajalugu on saate näha id.ee lehelt. Eesti ID-kaardi abil failide krüpteerimisel kasutatav CDOC formaat põhineb juba praegu rahvusvahelisel standardil XML-ENC. DDOC ja BDOC näidisfaile on võimalik näha järgneval veebilehel: http://www.id.ee/?lang=en&id=36161. Asice, BDOC ja DDOC konteinerite näol on tegemist tegelikult ZIP failidega. Vihje: kui tegu on zip failidega, siis saab neid lahti pakkida.
Kasutage viidatud näidisfaile, et uurida ja võrrelda DDOC failiformaati BDOC failiformaadiga. Milles seisnevad nende failiformaatide olulisemad erinevused? Konteineri formaati uurime ka järgmistes praktikumi ülesannetes.
Sertifikaadid
Eelmistest praktikumidest on juba teada, et sertifikaatide eesmärk on luua side võtmepaari ja selle omaniku vahel. Näiteks HTTPS korral annab sertifitseerimiskeskus välja sertifikaadi, millega antakse kinnitus, et sertifikaadis sisalduv avalik võti kuulub sertifikaadis märgitud domeenile. Kuna avalik võti on otseselt seotud salajase võtmega, siis on sertifikaadi abil kaudselt antud kinnitus ka selle kohta, et vastav salajane võti kuulub samale isikule / asutusele.
ID-kaardi korral antakse sertifikaadid, mis seovad ära isiku ja temale kuuluvad avalikud võtmed. Kuna ID-kaardis on kaks võtmepaari (esimene on autentimiseks ja teine digiallkirjastamiseks), siis on kummagi võtmepaari avaliku võtme jaoks vaja sertifikaati, mis kinnitab, et vastav võti kuulub ID-kaardi omanikule. Juhul kui teil on ka Mobiil-ID, siis on teil veel lisaks kaks sertifikaati, sest Mobiil-ID SIM-kaardil on samuti kaks võtmepaari. ID-kaardi sertifikaadid on avalikud ja neid saab pärida läbi LDAP-kataloogiteenuse.
Sertifikaatide uuendamine
Alates märtsist 2016 on ID-kaardi haldusvahendile lisatud sertifikaatide kauguuenduse võimalus. Kui ühendate ID-kaardi arvutiga, avate haldusvahendi ja see teatab, et saate sertifikaate uuendada, siis tuleks see protsess läbi teha. Kauguuendamise ajal on oluline omada stabiilset ühendust Internetiga. Samuti on oluline, et arvuti aku ei hakkaks tühjaks saama.
Sertifikaatide kauguuendamise võimaldamise üheks põhjuseks oli see, et osad kasutuselolevad sertifikaadid ei vastanud rahvusvaheliselt kehtivale vormingule ning seetõttu poleks neid ID-kaarte enam saanud kasutada veebilehitsejas Google Chrome. Põhjuseks oli üks mittestandardselt seatud bitt sertifikaadil olevas avalikus võtmes. Turvalisusele see ohtu ei kujutanud, aga suund on, et veebilehitsejad hakkavad üha rangemalt standardeid järgima ja vigaseid sertifikaate enam ei aktsepteeri.
2017 aastal pidid paljud ID-kaardi omanikud sertifikaate uuendama, et vahetada välja SHA-1 põhinevad sertifikaadid, mida ei peetud enam piisavalt turvaliseks. Kõik, kellel olid SHA-1 abil allkirjastatud sertifikaadid pidid need enne 2017 aasta 1. juulit uuendama. Kui see jäi tegemata, siis pärast 1. juulit kaarte enam uuendada ei saanud ning tuli hankida uus ID-kaart.
Täpsem info oli RIA ajaveebis:
- Probleem nr 532048 (2016)
- Uuenda oma ID-kaarti! (2016)
- Kauguuendamise kolmas laine (detsember 2016)
- Küülikukasvatusest e-riigis
Kontrollküsimused
- Kas vanu SHA-1 põhinevaid digiallkirju on võimalik juba praegu võltsida?
- Kuidas saab ära hoida tulevikus SHA-1 põhinevate digiallkirjade võltsimist? Võite eeldada, et SHA-1 põhinev digiallkiri on lepingule antud 2012 aastal.
ID-kaardi turvarisk (2017)
2017 aasta 5. septembril teatati, et osad Eesti ID-kaardid võivad olla haavatavad uut tüüpi ründele. Vastav info pärines Tšehhi teadlastelt, kes olid antud probleemi juba pikemat aega uurinud. Samad teadlased kirjutasid probleemi kohta teadusartikli, mis avaldati konverentsil ACM CCS 2017: The Return of Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli.
Probleemsed ID-kaardid tarnis Gemalto, kes omakorda kasutas ID-kaartides Infineoni toodetud kiipe. Turvaprobleem oli põhjustatud spetsiifilise Infineoni kiibi poolt, mida kasutasid uuema põlvkonna ID-kaardid (alates oktoobrist 2014). Seega polnud vanemad ID-kaardid antud probleemist mõjutatud. Siiski oli alates 2014 aasta oktoobrist välja antud umbes 750 000 probleemse kiibiga ID-kaarti, mistõttu oli tegu tõsise ohuga.
Turvaprobleem oli seotud sellega kuidas kiip genereeris juhuslikke numbreid. Eelmistes loengutes oleme rääkinud, et krüptosüsteemid tagavad lubatud turvataseme vaid juhul kui kasutatav võti on täiesti juhuslik. Antud juhul oli kiibitootja üritanud juhuslikkuse genereerimist kiiremaks muuta, aga teinud seda vigast meetodit kasutades. Seetõttu oli küll juhuslikkuse genereerimine kiirem, aga võimalike genereeritavate RSA võtmete arv väiksem kui see tegelikult pidanuks olema.
Seega avastati Tšehhi teadlaste poolt, et vigaselt genereeritud juhuslikkuse tõttu olid RSA võtmed osaliselt ennustatavas vahemikus ning seega oli võimalik vigasest võtmepaarist pärinevate avalike võtmete abil hakata arvutama vastavaid salajasi võtmeid. See peaks turvalise avaliku võtme krüptosüsteemi korral olema arvutuslikus mõttes võimatu ülesanne, aga kuna antud juhul polnud genereeritud võtmed piisavalt hajutatud, siis muutus rünne võimalikuks. Teemat uurinud teadlaste hinnangul kuluks ühe 2048 bitise salajase võtme lahtimurdmiseks keskmiselt 20 000 dollarit ja kõige keerukamal juhul 40 000 dollarit, kusjuures raha läheks arvutusvõimsuse rentimise peale. Juhul kui ründajal oleksid enda serverid või spetsiaalselt võtmete lahtimurdmiseks loodud seadmed, siis oleks rünne oluliselt odavam.
Eesti riik otsustas rünnete vältimiseks ajutiselt sulgeda LDAP teenuse, mis võimaldas sertifikaate pärida. LDAP sulgemine ei takista rünnet, kuid muudab ründaja jaoks raskemaks avalike võtmete andmebaasi koostamise. Vigaste kiipidega ID-kaartide sertifikaadid peatati 3. novembril. Kaartide parandamiseks tuli teha tarkvara uuendus ning hankida endale uued sertifikaadid. Vigaseid ID-kaarte sai uuendada kuni 31. märtsini 2018.
Kaardi uuendamise käigus vahetati välja osa ID-kaardi sisemisest tarkvarast, loodi ID-kaardi kiibi sees uued võtmed ning hangiti sertifitseerimiskeskuselt uutele avalikele võtmetele allkirjastatud sertifikaadid. Uuendatud ID-kaardid kasutavad RSA asemel elliptkõveratel põhinevat krüptograafiat, sest see ID-kaardi funktsionaalsus ei olnud turvaprobleemi poolt mõjutatud.
Kui tahate antud teema kohta täpsemat infot ja matemaatilist põhjendust, siis lugege RIA poolt tellitud krüptouuringu kolmandat peatükki.
LDAP kataloogiteenus
AS Sertifitseerimiskeskuse poolt pakutav kataloog sisaldab:
- AS Sertifitseerimiskeskuse sertifitseerijate sertifikaate ja kehtivaid tühistusnimekirju
- Kehtivaid isikutunnistustele väljastatud sertifikaate
- Kõiki väljastatud asutuste sertifikaate
Paigaldame paketi ldap-utils
:
$ sudo apt install ldap-utils
Uuri enda ja sõprade sertifikaate (asenda näites olev nimi ja isikukood enda nime ja isikukoodiga):
$ LDAPTLS_REQCERT=allow ldapsearch -H ldaps://esteid.ldap.sk.ee -b "c=EE" -x CN="PEETS,ALO,38701112750"
või
$ LDAPTLS_REQCERT=allow ldapsearch -H ldaps://esteid.ldap.sk.ee/ -x -b c=EE serialNumber="PNOEE-38701112750"
LDAP andmebaasi ja päringute lisainfo: https://www.skidsolutions.eu/repositoorium/ldap/esteid-ldap-kataloogi-kasutamine/
Salvesta LDAP vastus faili:
$ LDAPTLS_REQCERT=allow ldapsearch -H ldaps://esteid.ldap.sk.ee/ -x -b c=EE serialNumber="PNOEE-38701112750" > sert.txt
Redigeerige faili, jättes alles ainult ühe sertifikaadi kohta userCertificate;binary::
järel oleva ploki Nii tekib korrektne base64 kodeeritud fail, mis algab näite puhul sümbolitega MII...
.
Dekodeerige sertifikaadi info tekstikujule:
$ base64 -d < sert.txt | openssl x509 -inform der -text
Ülesanne 2: Esitage eelneva päringu abil leitud enda sertifikaadi täielik eraldusnimi (sertifikaadi väli Subject
). Kui sul endal sertifikaate pole lisa tõestuseks ekraanivaade, et sinu isikukoodiga sertifikaate ei leidu, seejärel kasuta päringu tegemiseks Alo Peets nime ja isikukoodi.
Failide digiallkirjastamine
Digiallkirjastamine (signeerimine) on sisuliselt allkirjastatavate andmete krüpteerimine salajase võtmega. Üheks ID-kaardi (ja üldisemalt kiipkaardi) pakutud garantiiks on see, et salajane võti ei lahku kunagi kaardi seest, st seda pole võimalik kopeerida. Seega, et salajase võtmega krüpteerida, tuleb need krüpteeritavad andmed saata kiipkaardi sisse ning välja tulebki krüptotekst. Et aga allkirjastatav dokument võib olla väga suur (te võite näiteks allkirjastada 4 GB faili) ja kiipkaardi operatsioonid on aeglased, ei ole mõistlik kogu dokumenti läbi kiipkaardi lasta. Samuti muutuks ka allkirjastatud fail umbes 2 korda suuremaks (algne fail(id) + krüpteeritud tulemus). Selle asemel arvutatakse allkirjastatava dokumendi pealt räsi (hash) (räsi on teatavasti fikseeritud pikkusega). Seejärel saadud räsi ja metaandmed krüpteeritakse privaatse võtmega ja lisatakse konteinerisse, kus on allkirjastatud fail(id) ise ja muu metainfo (kasutatud räsialgoritmi nimetus, sertifikaat, sertifikaadi kehtivuskinnitus jne).
Digiallkirja kontrollimiseks arvutatakse allkirjastatud dokumendi pealt sama räsifunktsiooni kasutades uuesti räsi ning võrreldakse seda avatekstiga, mis saadakse dokumendi allkirja (ehk salajase võtmega krüpteeritud räsi) dekrüpteerimisel allkirjastanud isiku avaliku võtme abil. Kui võrreldavad räsid on võrdsed, siis järelikult oligi allkirjastatud antud dokument. Allkirja verifitseerimisele lisandub kindlasti veel allkirjastanud isiku sertifikaadi ja ajatemplite kehtivuse kontroll.
- Looge Linux Mint virtuaalmasinas uus tekstifail nimega
matrikkel.txt
ning faili sisuks kirjutage enda matriklinumber. - Allkirjastage digitaalselt eelnevalt loodud fail
matrikkel.txt
ning salvestagematrikkel.asice
formaadis kettale. - Kuna
asice
on sisuliseltzip
fail saame selle lahti pakkidaunzip matrikkel.asice
- Otsige
META-INF
kaustast signatuuri infot sisaldav märgis (tag) ning leidke üles allkirjastatud failile vastav räsi väärtus. Lisainfo BDOC standardi kohta https://www.id.ee/?id=37026 ja https://www.id.ee/public/bdoc-spec212-est.pdf - Võtke lahti
terminal
ning tehke digiallkirja konteineris asuvast lähtefailist (digiallkirjastatud failistmatrikkel.txt
) räsi ning viige see samale kujule nagu räsi, mis oli eelnevalt uuritud XML failis. Linuxis saab digiallkirjas kasutatavaid sha256 räsisid arvutada käsugasha256sum matrikkel.txt
- teisendada räsi sobivale kujule:
sha256sum matrikkel.txt | cut -f1 -d\ | xxd -r -p | base64
- teisendada räsi sobivale kujule:
- Tehke failis
matrikkel.txt
väike muudatus (näiteks lisage faili lõppu tühik ning salvestage)- arvutage räsi uuesti ja veenduge et räsi oleks muutunud.
Ülesande lahendamiseks on teil vaja:
- kasutada
ID-kaarti
,Mobiil-ID
võiSmart-ID
jaDigiDoc4
klienti. Kuna ID-kaart on Eesti Vabariigis kohustuslik dokument, siis peaks see kõigil olemas olema. Juhul kui teil puuduvad aktiivsed sertifikaadid, siis esitage selle tõendamiseks LDAP vastus (tehke ekraanitõmmis vastavalt Ülesanne 2 juhendule) ning kasutage ülesande lahendamiseks näidis faile. Kui teie sertifikaadid kehtivad ja te ei saa mingil põhjusel anda digiallkirja, siis lisage vastav põhjendus ning kasutage eelnevalt viidatud faile.
- kasutada
- Ülesanne 3::
- Teie poolt loodud
matrikkel.asice
konteiner. - Ekraanitõmmis, kus on selgelt näha, et terminaliaknas loodud räsi on võrdne XML-failis oleva räsiga. Kindlasti joonige või tooge mingil muul moel esile vastavad räsi väärtused.
- Teie poolt loodud
Vabatahtlik lisaülesanne:
Minge veebilehele https://www.valimsied.ee perioodil 27.02.2023-03.03.2023 ja laadige sealt alla Linux operatsioonisüsteemile valijarakendus. Nüüd minge veebilehele https://www.valimised.ee/et/e-haaletamine/e-haaletamise-juhised/valijarakendused-ja-usaldusvaarsuse-kontrollimine ja tutvuge seal sektsiooniga: Valijarakenduse Linuxi versiooni autentsuse kontrollimine
. Vajalikud kontrollnumbrid võrdluseks leiate eelnevalt mainitud leheküljelt failist kontrollnumbrid-RK_2023.asice
Lisainfo:
Kui teil on soovi rohkem lugeda Eesti ID-kaardi ökosüsteemist ja tehnilisest kirjeldusest siis RIA BLOG on üks parimaid usaldusväärseid allikaid, kust infot eesti keeles lugeda: https://blog.ria.ee/id-kaardi-okosusteem/ ja https://blog.ria.ee/id-kaardi-uuendamisest/
Krüptograafilises ja tehniliselt detailsemas võtmes saab Eesti ID kaarti toimimisega tutvuda TÜ aines Rakenduslik krüptogtaafia (õppejõud: Arnis Paršovs
).
Tartu Ülikoolis tegelevad ka mitmed teadusrühmad e-identiteedi ja e-valimiste teemadega. Näiteks teadusprojekt mGov4EU
https://www.mgov4.eu oli TÜ üks peamisi partnereid.
E-hääletamine
Eesti on kuulus oma e-riigi ja e-valimiste poolest, mis tekitavad pidevalt ka arutelusid kas e-hääletamine on vähem turvalisem, kui valimiskabiinis oma hääle andmine paberile.
- Selle teema kohta käivad materjale leiate: infoturbe aine kodulehelt.
- Valimised.ee lehelt https://www.valimised.ee/et/e-h%C3%A1%C3%A1letamine
- Aprillis 2020 valmis ka Cybernetica AS poolt uus analüüs "Mobile voting feasibility study and risk analysis" https://www.valimised.ee/sites/default/files/uploads/eng/2020_m-voting-report.pdf
- Smart-ID ja valimised https://blog.ria.ee/smart-id-ja-valimised/
Pärast materjalidega tutvumist arutlege e-valimiste turvalisuse üle vastates järgmistele küsimustele:
- Kirjeldage võimalikult detailselt ja tehniliselt kuidas on tagatud hääle salajasus (kelle poolt sa hääletasid).
- Oma antud häält on võimalik kontrollida nutiseadmes. Kuidas on tagatud, et nutiseadmega oma hääle kontrollimine ei avalikusta sinu häält?
- Nutiseadmega ega Smart-ID'ga e-hääletamine ei ole võimalik. Kas vastav otsus on tehniline või poliitiline? Palun põhjenda enda vastust.
- Pärast e-valimiste tehnilise seletusega tutvumist milline on teie arvamus
Kas e-hääletamine on ebaturvalisem, sama turvaline või turvalisem võrreldes valimiskasti juures paberhääletamisega?
Palun põhjendage enda vastust ning tooge välja võimalikud ründekohad (probleemid turvalisusega), miks teie arvates üks või teine valimise vorm on turvalisem/ebaturvalisem.
Vastus võiks sisaldada mõisteid ümbrik, valimiskast, krüpteerimine, räsi, avalik võti, salajane võti, valimiste server, hääletaja arvuti, nutiseade, Smart-ID jne. Eeldatav maht iga küsimuse kohta on ~1 lõik teksti ja koguvastus umbes üks A4 lehekülg
pikkune arutelu e-valimiste turvalisuse teemal. Tekst peab olema kirjutatud täislausetega eesti keeles ja üle paari lause ei tohi olla kopeeritud viidatud materjalidest (sõnasta loetu oma sõnadega). Tutuvuge ka vastava nädala loengumaterjalidega enne esitamist.
Kui probleem PCSC teenus ei tööta: https://www.id.ee/artikkel/digidoc4-veateade-smartcard-pcsc-teenus-ei-toota/
Esitada Praktikum3:
Praktikumi ülesannete lahendamine annab neli punkti ja esitamiseks on umbes kaks nädalat alates praktikumi toimumisajast ( kuni 8. märts tähtajani).
- Ülesanne 1: Lugege failide krüpteerimise ja krüpteeritud failide avamise juhendit. Looge Linuxis uus tekstifail enda nimega ja faili sisuks kirjutage enda matrikli number (salajane info). Nüüd krüpteerige vastav fail õppejõu
Alo Peets
ID-kaardi avaliku võtmega, milleks vajate tema isikukoodi38701112750
. Sulgege DigiDoc programm ja avage krüpteeritud konteiner uuesti. Esituseks tehke ekraanivaade DigiDoc4 tarkvarast, kus oleks näha teie nimi krüpteeritud failinimes ja konteineri adressaadiks on õppejõud Alo Peets. -1p - Ülesanne 2: Esitage eelneva päringu abil leitud enda sertifikaadi täielik eraldusnimi (sertifikaadi väli
Subject
). Kui sul endal sertifikaate pole (lisa tõestuseks ekraanivaade), siis kasuta päringu tegemiseks Alo Peets'i nime ja isikukoodi. -1p - Ülesanne 3: Esitage
matrikkel.asice
ja ekraanivaade digiallkirjastatud faili räside võrdlusest digitaalse allkirja sees ja käsitsi käsurealt. -1p - Ülesanne 4: E-valimiste analüüs ehk vastused meie esitatud kontrollküsimustele juhendis. -1p