ID-kaart
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 krutü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.
Vanema (vasakul) ja uuema (paremal, alates 2011) põlvkonna ID-kaart, millel on kiip kaardi tagaküljel. Uusim 2019 aasta kaart alumine.
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.
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 odamavate ja kallimate kaardilugejate vahel seisneb turvalisuses. Kallimatel kaardilugejatel on PIN sõrmistik, mis võimaldab otse kaardilugejast PIN koode sisestada. Tavalist kaardilugejat kasutades sisestatakse PIN koodid arvuti klaviatuurilt ja ID-kaardi tarkvara suunab sisestatud info edasi kaardilugeja draiverile. Juhul kui arvuti on nakatunud pahavaraga, saab pahavara ligipääsu arvuti klaviatuurilt sisestatud PIN koodidele. Niisuguseid klaviatuuri jälgijaid nimetatakse klahvikuulajateks (keylogger), ülevaate klahvikuulajatest annab wikipedia: https://en.wikipedia.org/wiki/Keystroke_logging.
Sõrmistikuga kaardilugejalt saab sisestada PIN koodi ilma arvuti klaviatuuri kasutamata. Kaardilugeja sõrmistikult sisestatud PIN kood liigub otse ID-kaarti ja ei läbi arvuti operatsioonisüsteemi, mis võib olla nakatatud pahavaraga. Seetõttu soovitab Riigi Infosüsteemi Amet (RIA) võimaluse korral kasutada sõrmistikuga kaardilugejaid. 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 DigiDoc4 funktsionaalsusega)
- isikuandmete lugemine
- sertifikaatide registreerimine
- sertifikaatide salvestamine faili
- PIN ja PUK koodide vahetamine
- lukustatud PIN koodi lahti blokeerimine
- kaardi kasutamise statistika vaatamine
- Digidoc klienti
- digiallkirjastamine
- digiallkirjade kehtivuse kontrollimine
- avada / salvestada Digidoc konteineris asuvaid faile
- krüpteerida ja dekrüpteerida faile
- TeRa klienti
- võimaldab vanu digiallkirjastatud dokumente üleallkirjastada
- Brauserite laiendusi (extensions)
- lisab brauserile ID-kaardi toe autentimiseks ja digiallkirjastamiseks
ID-kaardi tarkvara paigaldamine virtuaalmasinasse
See praktikum on testitud Linux Mint 19.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 haldusvahend ja 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 5. 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
- Uuendage pakettide nimistut käsuga
sudo apt update
. Juhul kui uuendamine jääb 0% juures seisma, siis eemaldage faili/etc/gai.conf
reaprecedence ::ffff:0:0/96 100
eest kommentaari täistav sümbol (#). - Käivitage skript, mis paigaldab ID-kaardi tarkvara. Olge nõus, 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. - Lisage VirtualBox virtuaalmasina seadetes USB filter (Devices -> USB -> ...).
- Ühendage ID-kaardi lugeja arvutiga ja kontrollige kas see tunti virtuaalmasinas ära:
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 (ID-card utility) ning ühendage enda ID-kaart lugejasse. Kui kaardilugeja on virtuaalmasinage ühendatud, siis peaksite ID-kaardi haldusvahendis nägema infot oma ID-kaardi kohta.
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?
- Mis on sinu eesti.ee emaili aadress? Uuri selle seadistust.
Kontrollküsimused
- Miks peavad ID-kaardi sertifikaadid kehtima?
- Miks on oluline, et kasutusel on 2048 bit võtmed?
Krüpteerimine ID-kaardi abil
ID-kaart võimaldab kasutada krüpteerimise funktsionaalsust. On oluline mõista, et ID-kaardi krüpteerimise funktsionaalsust ei tohi kasutada andmete pikemaajaliseks krüpteerimiseks / krüpteeritud kujul säilitamiseks. 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 kunagi dekrüpteerida. ID-kaardi poolt pakutavat krüpteerimise ja dekrüpteerimise funktsionaalsust saab kasutada näiteks e-kirjade ja nende manuste turvamiseks.
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 (AES) 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.
- Praktikumiülesanne 1: Lugege failide krüpteerimise ja krüpteeritud failide avamise
juhendit. Tekitage olukord, kus teile on saadetud ID-kaardi krüpteerimistarkvara abil krüpeeritud kiri. Kirja saatja võib olla teie naaber, aga selle võite ka ise endale saata. Lahenduseks tuleb esitada ekraanitõmmis vastuvõetud kirjast koos saatja nime või meiliaadressiga ning DigiDoc Crypto aknast, kus vasakul paneelis on näha krüpteeritud fail ja paremal teie nimi. Näide lahendusest:
Autentimine ID-kaardi abil
ID-kaart võimaldab kaardi omanikku elektrooniliselt identifitseerida ehk autentida. Identifeerimiseks 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 allkirjastakse 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 allikiri 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 saljane 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. Allkirjastmise protsessil kontrollitakse kas kasutaja sertifikaat on kehtiv, nimelt peab serifikaat 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 mida taheti allkirjastada, 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 ja 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 ja BDOC 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 sertifiseerimiskeskus 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 kummangi 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 internetiühendust. Samuti on oluline, et arvuti aku ei hakkaks tühjaks saama.
Sertifikaatide kauguundamise 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 Google Chrome (ja tulevikus ja teised 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)
- ID-kaarti on kauguuendanud 100 000 inimest (2017)
- 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-kaartid 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. Vigasete kiipidega ID-kaartide sertifikaadid peatati 3. novembril. Kaartide paradamiseks 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):
$ ldapsearch -H ldaps://esteid.ldap.sk.ee -b "c=EE" -x CN="ROOS,MEELIS,37507042731"
Salvesta LDAP vastus faili:
$ ldapsearch -H ldaps://esteid.ldap.sk.ee -b "c=EE" -x CN="ROOS,MEELIS,37507042731" > sert.txt
Redigeerige faili, jättes alles ainult ühe sertifikaadi kohta userCertificate;binary::
järel oleva ploki, kuni reani objectClass: top
(välja arvatud). Eemaldage ka kõikide ridade alguses olevad tühikud. Nii tekib korrektne base64 kodeeritud fail, mis algab sümbolitega MII
.
Dekodeerige sertifikaadi info tekstikujule:
$ base64 -d < sert.txt | openssl x509 -inform der -text
- Praktikumiülesanne 2: Esitage eelneva päringu abil leitud enda sertifikaadi täielik eraldusnimi (sertifikaadi väli
Subject
). Kui sul endal sertifikaate pole, siis kasuta päringu tegemiseks kaastudengi nime / isikukoodi.
Failide digiallkirjastamine
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 mida taheti allkirjastada, 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. (sooritasime eelnevalt)
- 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 või Mobiil-ID. Kuna ID-kaart on 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) 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.
NB! kui saate digiallkirja luues TÜ võrgus errori, et IP pealt on antud juba liiga palju allkirju peaksite lubama seadistusest IP põhise tuvastuse. Antud lahendus töötab ainult TÜ sisevõrgust ehk Andmeturve
või eduroam
wifisse ühendatuna.
Esitada tuleb:
- 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
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 ilusas Eesti keeles lugeda saab. Näiteks: https://blog.ria.ee/id-kaardi-okosusteem/ ja https://blog.ria.ee/id-kaardi-uuendamisest/
Tagasiside
Praktikumi lõpus palume anda tagasisidet, sest see võimaldab meil antud praktikumi ja ka järgmisi praktikume paremaks muuta. Tagasiside on anonüümne ja tagasiside vormi leiate järgneva lingi abil: tagasiside vorm.
Praktikumi ülesanded
Praktikumi ülesannete lahendamine annab kaks punkti. Praktikumi ülesanne võiks valmis saada praktikumi lõpuks, aga juhul kui see ei õnnestu, siis saate seda esitada järgmise seitsme päeva jooksul.
- Lugege failide krüpteerimise ja krüpteeritud failide avamise juhendit: http://www.id.ee/?id=38804 . Tekitage olukord, kus teile on saadetud ID-kaardi krüpteerimistarkvara abil krüpeeritud manusega kiri. Kirja saatja võib olla teie naaber, aga selle võite ka ise endale saata. Lahenduseks tuleb esitada ekraanitõmmis vastuvõetud kirjast koos saatja nime või meiliaadressiga ning DigiDoc Crypto aknast, kus vasakul paneelis on näha krüpteeritud fail ja paremal teie nimi. Näide lahendusest:
- Esitage eelnevalt LDAP päringuga leitud enda sertifikaadi täielik eraldusnimi (sertifikaadi väli
Subject
). Kui sul endal sertifikaate pole, siis tee LDAP päring mõne sõbra sertifikaatile (sellisel juhul tuleb vastusesse kirjutada selgitus). - Esitage
matrikkel.asice
ja ekraanivaade digiallkirjastatud faili räside võrdlusest digi-allkirja sees ja käsitsi käsurealt.
Lahendusi võtame vastu järgmistes failiformaatides: .pdf, zip.
3. Praktikum 3 - ID kaartKodune ülesanne
Koduse ülesande lahendamine annab ühe punkti. Lahenduse esitamiseks on aega üks nädal ehk lahendus tuleks esitada järgmise seitsme päeva jooksul. Küsimustele vastuste leidmiseks võib vaja minna lisamaterjalide, mille viited leiate praktikumimaterjalide hulgast.
E-hääletamine
Eesti on kuulus oma e-riigi ja e-valimiste poolest, mis tekitavad pidevalt ka arutelusid kas digitaalne valimine kodust on vähem turvalisem kui valimiskabiinis oma hääle andmine paberile.
- Selle teema kohta käivad materjalid leiate : infoturbe aine kodulehelt.
- Valimised.ee lehelt https://www.valimised.ee/et/e-h%C3%A1%C3%A1letamine
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 kontrollime ei avalikusta sinu häält.
- Nutiseadmega ega smart-ID 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 miks teie arvates üks või teine valimise vorm on turvalisem.
Vastus võiks sisaldada mõisteid 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 1lk pikk arutelu e-valimiste turvalisuse teemal. Teks peab olema kirjutatud täislausetega eesti keeles ja üle paari lause ei tohi olla kopeeritud viidatud materjalidest (sõnastage loetu ümber).
Koduse ülesande lahendus tuleks esitada aine kodulehelt. Lahendusi võtame vastu järgmistes failiformaatides: .pdf, .zip.
18. Kodune ülesanne 3