Erinevus lehekülje "EID toorik" redaktsioonide vahel

Allikas: eid.eesti.ee
Jump to navigation Jump to search
(Kustutame tooriku, õige leht on nüüd EID_rakendusjuhend)
 
(ei näidata 4 kasutaja 280 vahepealset redaktsiooni)
1. rida: 1. rida:
<div style="font-size:26px; margin-top:50px; margin-bottom:50px; padding-left:50px; padding-bottom: 20px; color:#1C4B8C; border-bottom: 3px solid #1B4175; background-color:#E5E5E5;">
 
Elektroonilise identiteedi (e-ID)<br/>
 
rakendusjuhend tarkvaraarendajatele</div>
 
  
== Sissejuhatus ==
 
=== Projekti eesmärk ===
 
Vastavalt Riigi Infosüsteemi Ameti ja Cybernetica AS vahel 30.03.2012 sõlmitud lepingule ning Euroopa Liidu struktuurifondide programmi "Infoühiskonna teadlikkuse
 
tõstmine" raames koostas Cybernetica AS elektroonilise identiteedi (e-ID) rakendusjuhendi tarkvara arendajatele ja viis läbi vastavad analüüsid ja uuringud.
 
 
Valminud rakendusjuhend annab vajalikud tehnilised alusteadmised e-ID kasutuskeskkondade loomiseks. e-ID all mõistetakse Eesti ID-kaarti, digitaalset isikutunnistust (digi-ID-d), elektroonilist elamisloakaarti, digitaalset templit ja mobiil-ID-d ning eraldi väljatoodud juhtudel ka teiste riikide elektroonilisi identiteete.
 
 
Juhend on jaotatud kaheks põhiosaks:
 
# e-ID tutvustus ja selle kasutusvõimaluste hetkeseis;
 
# Lähtekoodinäidised keeltes C++, PHP, Java, Javascript ja .NET, suunitlusega platvormidele MS Windows ja Linux. Tellija soovil ja projekti mahupiirangutest tulenevalt ei käsitle juhendi see redaktsioon platvormi MacOS X.
 
 
=== Kaasatud siht- ja ekspertgrupi esindajad ===
 
Lisaks Cybernetica AS spetsialistidele olid projekti kaasatud järgmised asjatundjad ja kliendi esindajad.
 
* Aho Augasmägi (Codeborne)
 
* Ahto Jaago (SK)
 
* Ivar Jung (SMIT)
 
* Jaan Murumets (SK)
 
* Jargo Kõster (Innovaatik)
 
* Liisa Lukin (SK)
 
* Mark Ehrlich (RIA)
 
* Marko Alas (Swedbank)
 
* Martin Paljak (Logica, Ideelabor, OpenSC Project)
 
* Piret Aro (RIA)
 
* Taavi Valdlo (RISO)
 
* Veiko Sinivee (Sunset Software OÜ / SEB IT Partner OÜ)
 
* Ülar Kohari (Riiklik Eksami- ja Kvalifikatsioonikeskus)
 
 
=== Sihtgrupp, eeldused ===
 
Töö sihtrühmaks on ettevõtete IT-arhitektid ja tarkvaraarendajad, samuti IT-arenduste tellimise eest vastutavad isikud. Juhendi tekstiosa eeldab avaliku võtmega infrastruktuuri (PKI) põhiterminite ja põhimõistete nagu "digitaalsignatuur", "sertifikaat" jmt tundmist. Juhendi lähtekoodiosa eeldab vastava programmeerimiskeele või -raamistiku tundmist. Töö sihtrühmaks ei ole lõppkasutajad.
 
 
=== Lühendid ===
 
{|class="wikitable"
 
!Lühend
 
!Tähendus v selgitus
 
|-
 
|SK
 
|AS Sertifitseerimiskeskus
 
|-
 
|RIA
 
|Riigi Infosüsteemi Amet
 
|-
 
|RISO
 
|Riigi infossteemide osakond
 
|-
 
|STORK
 
|Secure Identity Across Borders Linked
 
|-
 
|SMIT
 
|Siseministeeriumi infotehnoloogia- ja arenduskeskus
 
|}
 
 
== eID lühitutvustus ==
 
=== Mis on mis ===
 
Eestis reglementeerib eID kasutamist Digitaalallkirja seadus (DAS)<ref>https://www.riigiteataja.ee/akt/694375?leiaKehtiv</ref> ja Isikut tõendavate dokumentide seadus (ITDS)<ref>https://www.riigiteataja.ee/akt/742623?leiaKehtiv</ref>, mille alusel väljastatakse Eesti ID-kaarti.<ref name="riso-identiteet"/>
 
 
==== ID-kaart ====
 
ID-kaart (EstID) on kohustuslik isikut tõendav dokument, mida saab kasutada elektroonselt digiallkirja andmise ja isikutuvastamise funktsioonides. ID-kaardile on salvestatud kaks sertifikaati: 1) sertifikaat digitaalseks isikutuvastuseks ning e-posti allkirjastamiseks ja krüpteerimiseks; 2) sertifikaat digitaalseks allkirjastamiseks, mille abil saab kaardi omanik anda kehtiva digitaalallkirja. Need sertifikaadid kehtivad 5 aastat.
 
 
==== Digitaalne isikutunnistus ====
 
Digitaalne isikutunnistus ehk digi-ID on riiklik digitaalne dokument, millega saab elektroonilises keskkonnas oma isikut tuvastada ja anda digitaalallkirja. Erinevalt ID-kaardist ei
 
kanta Digi-ID-kaardile isiku nime, fotot ega muud vajalikku, et teda saaks kasutada visuaalse isikut tõendava dokumendina. Krüptograafia seisukohast on tegu samasuguse kiipkaardiga nagu ID-kaart ning Digi-ID sertifikaatide väljastamisel kasutab Sertifitseerimiskeskus samu ülpõhimõtteid, ESTEID-kaardi sertifitseerimispoliitikat ning ESTEID sertifikaatide profiili. Seetõttu käsitleb juhend Digi-ID-d ja ID-kaarti samaväärsena. Digitaalne isikutunnistus antakse välja kehtivusajaga kolm aastat.
 
 
==== Digitaalne tempel ====
 
Digitaalne tempel e. digitempel on AS-i Sertifitseerimiskeskus (SK) firmapärane teenus, mille abil saavad juriidilised isikud (nt ettevõtted) anda digiallkirju dokumentidele, millega lisatakse dokumendile kinnitus, et dokument pärineb allkirjastanud ettevõttest ning et dokumenti ei ole vahepeal muudetud. Tüüpiliselt kasutatakse seda mass-produtseeritud dokumentide tarbeks, näiteks arved, maksekorraldused, kinnitused, tunnistused jne. Teenuse tellimisel väljastab SK ettevõttele kas kiipkaardil või USB-krüptopulgal X.509-sertifikaadi.
 
 
Tehnoloogiliselt on digitempel analoogiline digiallkirjale (teda võibki pidada juriidilise isiku digiallkirjaks) -- templi kasutamisel luuakse andmete allkirjastamisel DigiDOC-vormingus konteiner samamoodi nagu ID-kaardi või Digi-ID kasutamisel andmete allkirjastamiseks. Ainus vahe on selles, et erinevalt isiklikust digitaalallkirjast võib asutuse digitaalne kinnitus olla tekitatud erinevate põhimõtete kohaselt. Seetõttu lisanduvad digitaalseks kinnitamiseks väljastatud sertifikaadi semantikasse nn. "kinnituspõhimõtted" (''signing policy''), mis kirjeldavad digitaalse kinnituse otstarvet, tekitamise viisi jms. spetsiifikat.
 
 
Asutuse digitaalne kinnitusel on kaks põhilist kasutusjuhtu:
 
# Kinnituse lisamine digitaalselt allkirjastatud dokumendile – sellisel juhul tekib dokumendile asutuse mõõde ning allkirjastanud isikule allkirjastamise kontekst. ''
 
# Automaatselt genereeritud digitaalsed kinnitused (ilma digitaalallkirjata) – nt mitmesuguseid tõendeid ja väljavõtteid, mille puhul on hiljem võimalik tõendada info terviklust, päritolu ja moodustamise konteksti.
 
 
Digitempli andmise kord ja tõestusväärtus on reguleeritud seadusega, sertifitseerimisteenuse osutaja sertifitseerimispõhimõtetega ja templi andja tembelduspõhimõtetega.<ref>http://www.riso.ee/et/node/317</ref>
 
 
==== Elektrooniline elamisloakaart ====
 
Elektrooniline elamisloakaart väljastatakse ID-kaardi asemel Eestis elavatele välismaalastele, kes ei ole Euroopa Liidu kodanikud, ning sinna kantakse elamisloa andmed. ID-kaardi ja elamisloakaardi funktsionaalsus elektrooniliste teenuste kasutamiseks on sama. Ka elamisloakaardiga saab digitaalselt isikut tuvastada ning allkirja anda. Peamine erinevus seisneb selles, et Eesti ja Euroopa Liidu kodanikele välja antava ID-kaardiga saab Euroopa Liidu piires reisida, elamisloakaardiga väljaspool Eestit reisida ei saa. Teise erinevusena sisaldab elamisloakaart kontaktivaba kiipi, kuhu on salvestatud kasutaja sõrmejäljekujutised ja näokujutis. ID-kaardil kontaktivaba kiip puudub. Elamisloakaart kehtib kuni 5 aastat, kuid mitte kauem kui kehtib isikule välja antud elamisluba või elamisõigus.
 
 
==== Mobiil-ID ====
 
Mobiil-ID on protokoll kliendi autentimiseks. Selles protokollis püütakse klienti autentida sellega, et serveri genereeritud väljakutse (''challenge'') signeeritakse kliendi sertifikaadis
 
olevale avalikule võtmele vastava salajase võtmega, mis asub aga kasutajale kuuluva mobiiltelefoni SIM-kaardil.
 
 
=== Ülevaade eID rakendusvõimalustest ===
 
ID-kaardi rakendamisvõimalused:
 
* transpordikaart, s.t eelkõige ID-pilet. Viimane kujutab endast keskserveris olevat andmebaasi, kus isikukoodidega on seostatud vastavad sõiduõigused, enamasti teatud tüüpi kuukaardid. Sõiduõiguse kontrollimisel kasutatakse ID-kaardi lugejaid selleks, et kiiresti ja mugavalt tuvastada reisija isikukoodi -- ID-kaart ise ei sisalda mingit infot sõiduõiguse kohta.
 
* raamatukogukaart
 
* kliendikaart (lojaalsuskaart)
 
* ukse- või pääsukaart
 
 
=== STORK ===
 
STORK (Secure idenTity acrOss boRders linKed) on konkurentsivõime tõstmise ja innovatsiooni raamprogramm, mis on kaasrahastatud EL poolt. STORK taotleb koostalitlusvõime süsteemi väljatöötamist Euroopa Liidus, mille eesmärgiks on elektroonilise identiteedi (eID) tuvastamise ja autentimise võimaldamine, mis omakorda võimaldab ettevõtlusel, kodanikel ja riigiametnikel kasutada nende riiklikke elektroonilisi identiteete kõikjal EL liikmesriikides. Eestit esindab STORK-programmis AS Sertifitseerimiskeskus.<ref name="stork-msc">Erend, Erkki. 2011. Eesti avaliku sektori identiteedi- ja pääsuõiguste haldus. Magistritöö. http://www.cs.tlu.ee/teemaderegister/get_file.php?id=104</ref>
 
 
STORK käsitleb ka ID-kaardist lahjemaid vahendeid. Nii näiteks on Hollandis kasutusel riiklikud paroolikaardid ja ka Inglismaal on autentimine paroolipõhine.<ref>http://forte.delfi.ee/news/digi/uleeuroopaline-elektrooniline-id-peagi-tegelikkus.d?id=21886009</ref>
 
 
 
Allikas: <ref name="stork">STORK Work Item 3.3.5 Smartcard eID Comparison. 09-12-2010. Final. https://www.eid-stork.eu/index.php?option=com_processes&Itemid=&act=streamDocument&did=1384</ref>
 
 
''This study gives a technical comparison of smartcard eIDs in STORK countries that already are issued on a large scale (Austria, Belgium, Estonia, Iceland, Italy, Portugal, Slovenia, and Spain). While STORK de-couples specifics of national solutions, this study shall serve as a reference material to give an insight where technical differences are.''
 
 
 
Projekti kirjelduse jm huvitavat leiab [https://www.eid-stork.eu/pilots/pilot1_EE_more.htm siit] ja sellega peaks olema üldinformeeriv osa kaetud. Arendusosas tuleks veeö kommenteerida, kuidas teiste riikide ID-kaarte käsitleda (nt kuidas neilt isikukoodi välja lugeda). Huvitav on siit nt:
 
* Pilootprojekt nr. 1 "Piiriülene autentimine e-teenuste jaoks". See pilootprojekt võimaldab kodanikele turvalist ligipääsu teenustele kasutades nende enda riigi poolt välja antud e-identiteeti samaaegselt omades kontrolli oma andmete üle.
 
* Pilootprojekt nr. 4 "Piiriülene e-edastus". See pilootprojekt võimaldab ühe riigi kodanikul kasutada e-edastuse portaali teises riigis ning vastu võtta dokumente kasutades omamaist e-identiteeti.
 
* Pilootprojekt nr. 5 "Aadressi vahetus". See lihtsustab asjaomaste asutuste informeerimist aadressi vahetuse puhul. Välismaine kodanik saab logida sisse oma e-identiteediga ja üles laadida Aadressideklaratsioon või siis nõutada seda ning alla laadida.
 
* Pilootprojekt nr. 6 "Komisjoni teenused". Tänu STORK-i integreerimisele Euroopa Komisjoni Autentimissüsteemiga (ECAS), saavad kodanikud kasutada oma e-identiteeti ning pääseda juurde Euroopa Komisjoni mitmesugustele e-teenustele, mis on mõeldud ametnikele, firmadele ja organisatsioonidele.
 
 
==== European Citizen Card ====
 
Olemas on Euroopa kodanikukaardi ehk European Citizen Card (ECC) standard. Idee on luua üle-euroopaline ID-kaart.<ref>http://ec.europa.eu/idabc/servlets/Doc59a8.pdf?id=28716</ref> Viimased uudised pärinevad aastast 2009, sh teade, et Oberthur Technologies on loonud esimese, MS Windows 7-ga ühilduva ECC. Hilisemad uudised ECC staatusest puuduvad.
 
 
== Üldteavet arendajatele ==
 
Teave, mida saab ära kasutada nii olemasolevate kui ka uute rakenduste arendamisel.
 
 
=== Arendusvahendid ===
 
Kuna ei saa eeldada, et igal arendajal või arendushuvilisel on võimalus osta Windowsi ja arendusvahendite litsentsid, siis on alljärgnevalt toodud legaalsed võimalused nende proovimiseks.
 
* [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17851 Microsoft .NET Framework 4 (Web Installer)]
 
* [http://www.microsoft.com/download/en/details.aspx?id=8442 Windows SDK for .NET4] (ISOd) ja [http://msdn.microsoft.com/en-us/library/ff660763.aspx loetelu selle sisust]
 
* [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279 Windows SDK for Windows 7 and .NET Framework 4] (Web Installer, s.t saab komponente valida)
 
* [http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express Visual Studio 2010 Express] (piiratud .NET ja C#'ga, aga tasuta)
 
* Windows 7 prooviversioon on 3 kuud, mis on tasuta pikendatav 8 kuuni.
 
 
Soovitatav operatsioonisüsteem on Windows 7 põhjusel, et Windows XP tugi lõpeb täielikult 8.04.2014, aga Windows 7'l 14.01.2020.
 
 
=== Testvahendid ===
 
AS-ist Sertifitseerimiskeskus saab tellida testotstarbelisi ID-kaarte, digi-ID'sid ja digitempleid ([http://www.eyenetwatch.com/Products/202-aladdin-etoken-pro-usb-pki.aspx eToken krüptopulgal]). Digitempli puhul on võimalik tellida kohandatud väärtustega subjektiväli (CN, Common Name). Hinnakirja ning täpsustava teabe leiab SK [http://www.sk.ee/teenused/testkaardid/ testkaartide lehelt].
 
 
=== Isikuandmete faili kasutamine ===
 
Infoturbe koosvõime raamistik <ref>Infoturbe koosvõime raamistik. 2007. http://www.riso.ee/et/files/InfoturbeRaamistik.odt</ref>:
 
 
ID-kaardi isikuandmete fail sisaldab sama informatsiooni, mis on kaardile kantud visuaalselt. See sisaldab kaardiomaniku nime, kaardi kehtivuse aega ja muud sarnast. Oluline on, et see sisaldab ka kaardiomaniku isikukoodi. Kui omanik sisestab kaardi kiipkaardilugejasse, on süsteemil võimalik sealt kiirelt välja lugeda isikukood ja kasutada seda oma edasistes toimingutes.
 
 
Isiku tuvastamist ID-kaardi isikuandmete faili abil on mõistlik kasutada kohtades, kus on võimalik kontrollida kaardiomaniku isikusamasust füüsilisel moel (näiteks piiri ületamine).
 
 
==== ID-kaardil sisalduvad andmed ====
 
Allolevaid andmeid saab lugeda ilma PIN-koodi sisestamata (piisab, kui kaart on lugejas). '''TODO:''' Kas alljärgnev teave on üldse vajalik?
 
 
Omaniku andmed:
 
* eesnimi
 
* keskmine nimi
 
* perekonnanimi
 
* sünnipäev
 
* sünnikoht
 
* isikukood
 
* rahvus
 
* sugu
 
* elamisloa tüüp
 
 
ID-kaardi enda kohta saab lugeda järgmiseid andmeid:
 
* ID-kaardi seerianumber
 
* ID-kaardi aegumise aeg
 
* ID-kaardi väljaandmise aeg
 
 
Kaardi üheseks indentifitseerimiseks on võimalik kasutada infot failist FID=EEEE/5044 (Personal Data File).<ref name="idcard-faq">Teadmistebaas: administraatoritele. http://www.id.ee/index.php?id=30571</ref>
 
 
==== Isikuandmete faili kasutamine veebis ====
 
Uue Digidoc-pluginaga pole võimalik lugeda ID-kaardilt isikuandmete faili. Ainus võimalus faili lugemiseks üldse (SK kommentaar 31.05.12) on kasutades ID-kaardi tarkvaraga kaasasolevat
 
utiliiti eidenv.exe. Seetõttu rakendusjuhend seda alamteemat ei käsitle.
 
 
=== ID-kaardi @eesti.ee meiliaadressi kasutamine ===
 
ID-kaardi autentimissertifikaadis sisaldub ka riigi poolt kaardiomanikule omistatav eluaegne meiliaadress kujul Eesnimi.Perenimi_XXXX@eesti.ee, kus XXXX on juhuslikult genereeritud neljakohaline arv. Alates 2005. aastast väljastatakse sertifikaatide uuendamisel ja uute ID-kaartide väljastamisel e-posti aadress kujul Eesnimi.Perenimi@eesti.ee; juhul, kui sama ees- ja perenimega isikuid on mitmeid, saavad järgnevad isikuid aadressi kujul Eesnimi.Perenimi.N@eesti.ee, kus N on järjenumber. Eelmised aadresskujud jäävad samuti kehtima.
 
 
=== Failivormingud ===
 
''TODO Kirjuta failivormingute kohta - allikas: http://id.ee/index.php?id=30289''
 
 
==== DDOC ====
 
DigiDoc failivorming on tegelikult standardi [http://uri.etsi.org/01903/v1.2.2/ ETSI 101 903] ("XML Advanced Electronic Signatures – XAdES") profiil.
 
 
==== BDOC ====
 
''TODO rohkem infot: http://www.id.ee/?id=34070''
 
 
==== CDOC ====
 
 
== eID kasutamine olemasolevate rakendustega ==
 
 
=== Töölaua rakendused ===
 
'' Enne kirjutamist tuleb teha konkreetselt piiritletud valik (nt Outlook ja seal krüpteerimine, signeerimine) ''
 
 
==== ID-kaardiga sisselogimine Windowsisse ====
 
Selleks on vahend IDLogin (http://id.ee/index.php?id=30274), aga tehniliselt on see piiratud võimalustega:
 
* ID-kaardiga Windowsisse sisse logimine ei tööta uuemate ID-kaardi draiveritega kui versioon 1.3.118 (mis pärineb oletatavasti aastast 2007)
 
* IDLogini kasutamisel Windows XP-s ei tööta Remote Desktop Connection.
 
* IDLogin ei tööta uue ID-kaardi baastarkara versioonidega.
 
 
 
Tundub, et vastav teadmus kolis http://www.jaja.ee/tooted.php juurde, kes müüb edasiarendatud toodet litsentsitasuga alates 1000€.
 
Funktsionaalsus (pärit JaJa lehelt):
 
* identifitseerib Windowsi (Active Directory või SAMBA) kasutaja ID-kaardi abil
 
* saab kasutada paroolipõhiseid ja teiste kiipkaartide lahendusi samaaegselt
 
* kiipkaardipõhine turvalisus – transaktsioonid toimivad krüptograafiliste meetoditega, ainult paroolide teadmisest ei piisa, kaarti on ikkagi vaja ehk teisisõnu on tegemist kahetasandilise turvalisusega
 
* tööjaamade kasutus on turvalisem
 
* tööjaamade kasutus on efektiivsemalt monitooritav (kasutaja log-in ja log-out on võimalik process logidest nt tööajaarvestussüsteemi eksportida)
 
* võimaldab tekitada paindliku ja lihtsalt hallatava guest-juurdepääsu arvutivõrgule
 
* tsentraalselt hallatavad turvaelemendid - sertifikaatide kehtivusajad, protsessid juhuks, kui kaart eemaldatakse lugejast
 
* töötab W2K ja WinXP-ga
 
 
 
 
==== ID-kaardiga sisselogimine Linuxisse ====
 
todo
 
 
=== eID rakendamine kliendikaardina ja läbipääsusüsteemides ===
 
 
==== ID-kaart kliendikaardina ====
 
Eesti ID kaardi tehnoloogia lähteuuring<ref name="eid-uuring">Eesti ID-kaardi tehnoloogia lähteuuring. 1998. http://www.id.ee/public/cyberaruanne_20070322030353.pdf</ref> visioneerib:
 
Näitab, et kaardi valdajal on kas teenuse või soodustuse saamise õigus. Lihtsal
 
elektroonilisel kliendikaardil ilmselt mõtete ei ole, sest võltsimise risk on
 
suhteliselt väike. Keerulisem kliendikaart sisaldab aga juba käitumise ajalugu,
 
kliendi boonuspunkte ja on seetõttu juba kvantitatiivne volitustõend.
 
 
==== ID-kaart läbipääsusüsteemides ====
 
Eesti ID-kaardi tehnoloogia lähteuuring<ref name="eid-uuring"/> visioneerib:
 
Pääsu reguleerimine on tüüpiline ID kaardi rakendus, kus kaardi omanikule
 
antakse pääs mingite ressursside juurde. Lihtsamal juhul on see pääs kaitstud
 
territooriumile. Arvutisüsteemi pääsu reguleerimisel on mõistlik kaardile salvestada
 
veel ka isiku profiil infosüsteemis, andmete konfidentsiaalsust tagavad salajased
 
võtmed ja isiku digitaalallkiri.
 
 
2012 seisuga: Ektaco ARGOS-seeria läbipääsusüsteemides (nt Argos 3010) on võimalik võtmena kasutada ka Eesti ID-kaarti.
 
 
== Uute eID rakenduste loomine ==
 
'' Uute rakenduste loomise osas vajavad käsitlemist: digiallkirjastamine, krüpteerimine (piirame end CDOC-iga), isikutuvastamine veebis (siia alla ka OCSP, CRL, LDAP), isikuandmete faili kasutamine, DigidocService kasutamine. ''
 
 
=== DigiDoc teegid ===
 
Töölauarakendustes e-ID funktsionaalsuse kasutamiseks on loodud neli erinevat teeki:<ref name="digidoc-teegid">http://id.ee/index.php?id=30290</ref>
 
* '''jdigidoc''' -  Java teek, mis on ühtlasi ka esmane soovitus uute arenduste tegemisel.<br />Toetatud formaadid: '''DDOC''', '''BDOC''', '''CDOC'''.
 
* '''libdigidoc''' - C teek, millelt on plaan tugi asenduse tekkimisel ära kaotada. Ei ole soovitatud uute arenduste tegemisel.<br />Toetatud formaadid: '''DDOC''', '''CDOC'''.
 
* '''libdigidocpp''' - C++ teek, mis on kasutuses DigiDoc3 kliendi koosseisus. Eraldiseisvana teda arendajatele ei pakuta, ent on kättesaadav koos kliendiga.<br />Toetatud formaadid: '''BDOC'''.
 
* '''libdigidoccom''' - <abbr title="Component Object Model">COM</abbr> liides libdigidoc teegile.<br />Toetatud formaadid: '''DDOC''', '''CDOC'''.
 
 
Tulevikus on plaanitud luua ka .NET teek, mis asendaks COM teegi.<ref name="digidoc-teegid" />
 
 
{|class="wikitable"
 
!Teek
 
!DDOC
 
!BDOC
 
!CDOC
 
|-
 
|jdigidoc
 
|X
 
|X
 
|X
 
|-
 
|libdigidoc
 
|X
 
|
 
|X
 
|-
 
|libdigidocpp
 
|
 
|X
 
|
 
|-
 
|libdigidoccom
 
|X
 
|
 
|X
 
|}
 
 
=== DigiDocService ===
 
Alternatiiviks teekide kasutamisele on olemas ka DigiDocService, mis on <abbr title="Simple Object Access Protocol">SOAP</abbr>-põhine tasuline veebiteenus. See võimaldab isikutuvastuse, digitaalallkirjastamise ja allkirjade kontrollimise funktsionaalsust siduda teiste infosüsteemidega. Teenust on võimalik kasutada erinevatelt arenduskeskkondadelt/platvormidelt, millel on SOAP 1.0 <abbr title="Remote Procedure Call">RPC</abbr>-encoded tugi.
 
 
Teenuse poolt pakutav funktsionaalsus:
 
* Isikusamasuse kontroll Mobiil-ID'ga
 
* Sertifikaatide kehtivuse kontroll (võimaldab isikusamasuse kontrolli ID-kaardi ja muu kiipkaardiga)
 
* DigiDoc failide moodustamine
 
* Digitaalallkirjastamine Mobiil-ID'ga
 
* Digitaalallkirjastamine ID-kaardi (ja muu kiipkaardiga)
 
* Digitaalallkirjastatud failide (DigiDoc) sisu ja allkirjade kehtivuse kontroll.
 
 
DigiDocService toetab ainult DDOC formaadis allkirjastatud dokumente - BDOC tugi hetkel puudub ('''''TODO''''' Seda väidab 2009 a. dokumentatsioon - kas äkki nüüd juba toetab?).
 
 
Teenusele ligipääsu võimaldatakse IP aadressi põhiselt, selle kasutamiseks tuleb rakenduse pakkujal sõlmida leping AS Sertifitseerimiskeskusega. Teenuse kasutamise maksumus sõltub allkirjastamise ja autentimise päringute arvust kuus ja ühelt rakenduselt tulevatest üheaegsete päringute arvust.<ref name="digidocservice">http://id.ee/index.php?id=30291</ref>
 
 
Testimiseks ja arendamiseks on olemas ka tasuta testkeskkond.<ref name="digidocservice-test">http://id.ee/index.php?id=30340</ref>
 
 
=== Digitaalne allkirjastamine ===
 
Uusi digitaalseid allkirju luuakse kahes eri formaadis: [[#DDOC|DIGIDOC-XML]] ja [[#BDOC|BDOC]]. Esimest neist toetavad jdigidoc, libdigidoc, libdigidoccom, teist jdigidoc ning libdigidocpp (plaanitavalt ka .NET teek). Siit on näha, et ainus teek, mis mõlemat formaati toetab, on jdigidoc, mistõttu seda soovitatakse ka uute arenduste tegemisel.<ref name="digidoc-teegid" /> Ka DigiDocService toetab vaid DDOC formaate.<ref name="digidocservice" />
 
 
Kuigi formaat erineb, on lähenemine sama (seda nii teekide kui ka DigiDocService puhul):
 
# luuakse konteiner,
 
# lisatakse allkirjastatavad failid,
 
# üle andmete genereeritakse räsi,
 
# räsi allkirjastatakse osapoolte salajaste võtmetega,
 
# allkirjastatud räsile küsitakse kehtivuskinnitus ning
 
# räsi ja kinnitus lisatakse konteinerisse.
 
 
Selguse ja turvalisuse tagamiseks peab iga rakendus, kus on digiallkirjastamise funktsioon, vastama kahele nõudmisele:<ref>http://id.ee/index.php?id=31039</ref>
 
# Enne allkirjastamist peab kasutaja saama mõistlikul moel andmetega tutvuda.
 
# Peale allkirjastamist saab kasutaja kontrollida, millele tema allkiri anti, ehk tal on ligipääs DigiDoc-konteinerile koos esialgsete allkirjastatud andmete ja allkirjadega.
 
 
Dokumentide digitaalset allkirjastamist on demonstreeritud nii [[#Allkirjastamise_rakendus|eraldiseisva utiliidina]] kui ka avalduste esitamise kasutusmallis - nii veebis, kasutades [[#Veebivorm|DigiDocService teenust]] või [[#Avaldusi_t.C3.B6.C3.B6tlev_teenus|SWIG mähkurit]], kui ka [[#Avalduste_rakendus|töölauarakenduses]].
 
 
=== Krüpteerimine ===
 
e-ID kontekstis kasutatakse krüpteerimiseks [http://www.w3.org/TR/xmlenc-core/ XML-ENC] standardit, et saata salastatud faile kindlatele addressaatidele. Küll kasutatakse DigiDoc rakenduste spetsiifilist lähenemist, kus failid lisatakse enne krüpteerimist DIGIDOC-XML konteinerisse, mis võib, kuid ei pea olema allkirjastatud.
 
 
Andmed pannakse DDOC konteinerisse, mis krüpteeritakse sümmeetrilise algoritmiga (128-bitise võtmega AES) ning tulemuseks on CDOC konteiner. Krüpteerimisel kasutatud võti krüpteeritakse saajate isikutuvastus sertifikaatide avalike võtmetega ning tulemused lisatakse CDOC konteinerisse. Samuti lisatakse sinna metaandmed krüpteeritud failide kohta, et kasutaja näeks, mis seal sees on. Metaandmeid näevad ka kõik teised, ilma konteinerit lahti krüpteerimata, nii et peab olema ettevaatlik selle suhtes, mis seal kuvatakse.
 
 
Konteineri kättesaamisel kasutab adressaat oma isikutuvastuse sertifikaadi salajast võtit, et saada kätte AES võti, millega omakorda saab ta failid lahti krüpteerida.
 
 
Sellist krüpteerimist saab kasutada vaid lühiajaliselt - näiteks andmete transportimiseks. Kuna krüpteeritud andmeid saavad avada ainult saajateks märgitud isikud oma krüpteerimise ajahetkel kehtivate sertifikaatidega, siis ei sobi see lahendus pikaajaliseks arhiveerimiseks - sertifikaatide aegumisel asendatakse need kasutaja kaardil uutega ning vana salajast võtit pole enam võimalik kasutada.<ref>http://id.ee/index.php?id=30264</ref>
 
 
Krüpteerimist toetavad libdigidoc (ja seega ka libdigidoccom) ning jdigidoc teegid. DigiDocService teenust pole võimalik krüpteerimiseks kasutada, ega poleks see ka mõistlik, sest sel juhul tuleks salastatavad andmed enne SK-le saata. Krüpteerimist demonstreeritakse [[#Avaldusi_t.C3.B6.C3.B6tlev_teenus|avaldusi töötlevas teenuses]] ning dekrüpteerimist [[#Avalduste_rakendus|avalduste rakenduses]].
 
 
=== Isikutuvastamine ===
 
e-ID kaartidel on sertifikaat digitaalseks isikutuvastuseks. Kui kasutaja suudab tõestada, et tal on ligipääs selle sertifikaadi salajasele võtmele, siis usume, et tegu on sertifikaadi omanikuga.
 
 
Isiku tuvastamine näeb enamasti välja selline:
 
# Kasutaja esitab süsteemile mingi sertifikaadi ning väidab, et ta on selle omanik.
 
# Süsteem genereerib juhusliku, ühekordse arvu (''nonce''), mis antakse kasutajale allkirjastamiseks.
 
# Kasutaja lukustab lahti kaardil oleva salajase võtme, kasutades selleks PIN 1.
 
# Kaardile antakse ''nonce'', mille see allkirjastab, ning kaardilt loetakse tulemus, mis edastatakse süsteemile.
 
# Süsteem kontrollib, kas antud allkiri verifitseerub sertifikaadil oleva avaliku võtmega.
 
# Süsteem küsib sertifikaadi kohta kehtivuskinnitust.
 
 
Kui kõik õnnestus, siis võime arvata, et kasutaja on tõesti sertifikaadi omanik - ja kuna sertifikaadil on isiku nimi ning isikukood, siis teame, kellega tegu. Kuigi tegelikult võib olla kasutaja lihtsalt keegi, kellel on sertifikaadi omaniku kaart ning teab selle PIN 1, ei saa me seda enam kuidagi kontrollida.
 
 
Isikutuvastamise näitekoodi näeb [[#Isikutuvastuse_rakendus|eraldiseisva rakendusena]] ning ka [[#Avalduste_rakendus|avalduste kasutusmalli]] koosseisus.
 
 
==== Veebis ====
 
Veebis tehakse isiku tuvastamine SSL/TSL käepigistuse käigus. Põhjalik kirjeldus on kättesaadav [http://en.wikipedia.org/wiki/Transport_Layer_Security#Client-authenticated_TLS_handshake Wikipediast], ent lühidalt kokkuvõttes tehakse sama, mis eelnevalt kirjeldatud, ent ''nonce'' asemel antakse allkiri kõigi eelnevate sõnumite räsile - kuna sõnumid sisaldavad endas juhuarve, siis on ka nende räsi juhuslik.
 
 
Veebis isiku tuvastamist tehakse näitekoodis [[#Veebivorm|veebivormil]].
 
 
===== SSL/TLS taasläbirääkimise viga =====
 
2009. aastal tuvastati SSL/TSL protokollis viga, millega sai ühendustesse ründaja valitud teksti sisestada. <ref>http://www.theregister.co.uk/2009/11/05/serious_ssl_bug/</ref><ref>http://www.theregister.co.uk/2009/11/14/ssl_renegotiation_bug_exploited/</ref> Selle tulemusena täiendati SSL/TLS spetsifikatsioonis taasläbirääkimist (''renegotiation''), ent need täiendused ei olnud tagasiühilduvad.<ref>http://tools.ietf.org/html/rfc5746</ref> Seetõttu pole vanemad SSL/TLS kliendid ja ka veebilehitsejad suutelised taasläbirääkima täiendatud versiooni kasutava serveriga.
 
 
Kui alustada SSL/TLS seanss ilma kasutaja sertifikaati küsimata, s.t isikut tuvastamata, siis hiljem on selle tegemiseks vaja läbi viia taasläbirääkimised - näiteks kui kasutaja külastab veebilehte kasutades HTTPS protokolli ning siis mingi hetk soovib end ID-kaardiga sisse logida, tuleb teha taasläbirääkimine. Vanemad veebilehitsejad seda aga uue protokolli kohaselt ei oska. Kui siiski on soov sellist olukorda võimaldada, siis on vaja luua kaks eraldi ühenduspunkti: esimene, mis teeb "lihtsalt" SSL/TLS'i, ja teine, mis küsib kasutaja sertifikaati.
 
 
Kui isikut tuvastav server on eraldi ühenduspunktis, siis sellega seanssi alustades küsitakse kasutajalt kohe isikutuvastuse sertifikaati ning hiljem taasläbirääkimisi pole vaja teha.
 
 
Eraldi ühenduspunktid peaksid olema erinevate IP aadresside peal või vähemalt kasutama erinevat porti. Eraldi virtuaalsetest hostidest ei piisa, kuna enne luuakse SSL/TLS seanss ning alles siis vaadatakse, millist virtuaalset hosti kasutada.
 
 
==== Mobiil-ID ====
 
''TODO''
 
 
=== Isikuandmete faili kasutamine ===
 
ID-kaardile talletatud [[#Isikuandmete_faili_kasutamine|isikuandmete faili]] ei oska ükski DigiDoc teekidest lugeda. Selle jaoks võib kasutada kas [[#eidenv|eidenv]] rakendust või kaardiga otse suhelda.
 
 
Otse suhtlemiseks tuleb kaardile saata vajalikud baidijadad ning lugeda vastuseid. Näiteks isikuandmete faili lugemiseks oleks vaja saata (kasutame T=0 protokolli):<ref name="esteid-juhend">EstEID turvakiibi rakenduse kasutusjuhend. http://id.ee/public/EstEID_kaardi_kasutusjuhend.pdf</ref>
 
<pre>
 
00 A4 00 0C          # Valime juurkataloogi
 
00 A4 01 0C 02 EE EE # Valime kataloogi EEEE
 
00 A4 02 04 02 50 44 # Valime faili 5044, mis sisaldab isikuandmeid
 
00 B2 XX 04          # Loeme isikuandmete failist kirje nr XX (vt tabelit)
 
                    # Kaart vastab 61 YY, kus YY tähistab, mitu baiti ootavad lugemist
 
00 C0 00 00 YY      # Loeme kaardilt YY baiti
 
                    # Kaart vastab ... 90 00, kus ... on soovitud andmed ning 90 00 tähistab OK staatust
 
</pre>
 
 
{|class="wikitable"
 
!Kirje number
 
!Sisu
 
!Maksimaalne pikkus baitides
 
|-
 
|1
 
|Perenimi
 
|28
 
|-
 
|2
 
|Eesnime rida 1
 
|15
 
|-
 
|3
 
|Eesnime rida 2
 
|15
 
|-
 
|4
 
|Sugu
 
|1
 
|-
 
|5
 
|Kodakondsus
 
|3
 
|-
 
|6
 
|Sünnikuupäev (pp.kk.aaaa)
 
|10
 
|-
 
|7
 
|Isikukood
 
|11
 
|-
 
|8
 
|Dokumendi number
 
|8
 
|-
 
|9
 
|Kehtivuse viimane päev (pp.kk.aaaa)
 
|10
 
|-
 
|10
 
|Sünnikoht
 
|35
 
|-
 
|11
 
|Väljaandmise kuupäev (pp.kk.aaaa)
 
|10
 
|-
 
|12
 
|Elamisloa tüüp
 
|50
 
|-
 
|13
 
|Märkuste rida 1
 
|50
 
|-
 
|14
 
|Märkuste rida 2
 
|50
 
|-
 
|15
 
|Märkuste rida 3
 
|50
 
|-
 
|16
 
|Märkuste rida 4
 
|50
 
|}
 
 
Kui kasutada kaardiga suhtlemiseks mõnda teeki, siis on võimalik, et viimast sammu ei ole vaja teha. Näiteks kasutades [http://docs.oracle.com/javase/7/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html javax.smartcardio] klasse saame baidijadale <tt>00 B2 XX 04</tt> vastuseks [http://docs.oracle.com/javase/7/docs/jre/api/security/smartcardio/spec/javax/smartcardio/ResponseAPDU.html ResponseAPDU] objekti, mille [http://docs.oracle.com/javase/7/docs/jre/api/security/smartcardio/spec/javax/smartcardio/ResponseAPDU.html#getData%28%29 getData()] meetod tagastab soovitud andmed ning [http://docs.oracle.com/javase/7/docs/jre/api/security/smartcardio/spec/javax/smartcardio/ResponseAPDU.html#getSW%28%29 getSW()] tagastab staatuse.<ref>http://docs.oracle.com/javase/7/docs/jre/api/security/smartcardio/spec/javax/smartcardio/CardChannel.html#transmit%28javax.smartcardio.CommandAPDU%29</ref> Seega pole vaja saata eraldi sõnumit <tt>00 C0 00 00 YY</tt>.
 
 
Näidet isikuandmete lugemisest on võimalik näha [[#Avalduste rakendus|avalduste rakenduses]].
 
 
=== Draiverid jms ===
 
(See osa tuleb ilmselt kuhugi mujale liigutada.)
 
 
Kirjutamise hetkel on eToken-krüptopulk SK poolt toetatud ainult Windows-keskkonnas. Linux jt platvormid on SK poolt testimata ja toetamata, kuid vastavaid eTokeni draivereid on nad nõus teadlikule kasutajale jagama. Konteiner, mis sisaldab kõike vajalikku Linuxile koos dokumentatsiooniga on allalaetav aadressilt: https://installer.id.ee/media/SafeNetAuthenticationClient_Linux_8.1.zip
 
 
Toetatud tarkvara:
 
* Red Hat Enterprise 5.4 (32-bit and 64-bit) on 2.6 kernel
 
* CentOS 5.4 (32-bit and 64-bit) on 2.6 kernel
 
* SUSE Linux Enterprise 11 (32-bit and 64-bit) on 2.6 kernel
 
* Fedora 11 (32-bit)
 
* Fedora 12 (32-bit)
 
* Ubuntu 9.10 (32-bit)
 
* Ubuntu 10.04 (32-bit and 64-bit) on 2.6 kernel
 
 
 
=== Abiks viited ===
 
(See osa tuleks tõenäoliselt lehe lõppu viia, sarnaselt sellega, kuidas Wikipedia artiklitel on lõpus "Välised lingid"/"External links")
 
 
Siinkohal on välja toodud mitmed viited ning olemasolevad näiterakendused, mis on abiks uute e-ID rakenduste loomisel.
 
* [http://courses.cs.ut.ee/2007/internet/Main/IDkaart "Kuidas töötab ID kaart ja kuidas turvatakse temaga Internetis tehtavaid operatsioone."]
 
* Hea alguspunkt on ID.ee [http://id.ee/index.php?id=10584 "Arenda teenuseid"] leht.
 
** [http://id.ee/index.php?id=30053 DigiDoc maailm].
 
** [http://id.ee/index.php?id=30257 Mõistete selgitusi, terminoloogia].
 
** [http://id.ee/index.php?id=30270 Näidisrakendused].
 
** [http://id.ee/index.php?id=30268 ID-kaardi toe seadistamine Apache ja IIS veebiserveritele].
 
*** ''TODO OCSP konfimine.''
 
* Uue ID-kaardi baasktarkvara loomise käigus tehti uus allkirjastamisplugin ning JavaScript teek, mis peidab erinevad allkirjastamise moodulid ühtse liidese taha. Info nende kohta ning lihtne näidisrakendus teegi kasutamiseks [http://id.ee/index.php?id=30369 siin].
 
* [http://id.ee/index.php?id=30368 PHP näidisrakendus] koos lähtekoodiga veebis EstEID pluginaga allkirjastamiseks. Rakendus kasutab eelmises punktis mainitud JavaScript teeki ning on aluseks ka [[#Avalduste_esitamise_kasutusmall|avalduste kasutusmalli]] PHP rakendustele.
 
* [http://id.ee/index.php?id=30339 PHP näidisrakendus] koos lähtekoodiga veebis Mobiil-ID'ga allkirjastamiseks.
 
* JDigiDoc kasutab IAIK PKCS#11 teeki. Selle dokumentatsioon on [http://javadoc.iaik.tugraz.at/pkcs11_wrapper/1.2.15/iaik/pkcs/pkcs11/package-summary.html siin].
 
 
''TODO Järgnev ei töötanud väga hästi/üldse - uurida kiste antud [https://installer.id.ee/media/SafeNetAuthenticationClient_Linux_8.1.zip linki]''
 
*[http://www.isecurity.info/downloads.aspx eToken tarkvara Linuxile] - vajalik digitempli kasutamiseks, sealt võtta "eToken Linux SDK and Middleware".
 
** Vajab 32-bitist libpcsclite'i, samuti võib olla vajalik muuta .deb paki control faili, et sõltuvus käsitsi ära kustutada.
 
** Loe kindlasti ka [[#Kahtlased_kohad|kahtlaseid kohti]].
 
 
=== Huvitavad rakendused ===
 
==== eidenv ====
 
Käsurea rakendus <tt>eidenv</tt> kuvab kaardil olevad isikuandmed, asendades endist IDUtil rakendust. Seda levitatakse [http://www.opensc-project.org/opensc OpenSC] tarkvara koosseisus ning on ka ID-kaardi baastarkvara pakis.
 
 
Kasutades <tt>-x</tt> võtit käivitab argumendiks antud programmi keskonnas, kuhu on lisatud <tt>ESTEID_*</tt> muutujad samade andmetega. Näiteks test-ID-kaardil on nendeks:
 
<pre>
 
$ eidenv -x /usr/bin/printenv
 
...
 
ESTEID_SURNAME=MÄNNIK
 
ESTEID_GIVEN_NAMES1=MARI-LIIS
 
ESTEID_GIVEN_NAMES2=
 
ESTEID_SEX=N
 
ESTEID_CITIZENSHIP=EST
 
ESTEID_DATE_OF_BIRTH=01.01.1971
 
ESTEID_PERSONAL_ID=47101010033
 
ESTEID_DOCUMENT_NR=AS0010876
 
ESTEID_EXPIRY_DATE=01.02.2017
 
ESTEID_PLACE_OF_BIRTH=EESTI / EST
 
ESTEID_ISSUING_DATE=01.02.2012
 
ESTEID_PERMIT_TYPE=
 
ESTEID_REMARK1=
 
ESTEID_REMARK2=
 
ESTEID_REMARK3=
 
ESTEID_REMARK4=
 
</pre>
 
Tänu selle on võimalik luua erinevaid isikuandmeid kasutavaid rakendusi ilma, et oleks vaja kaardiga otse suhelda - need kasutavad lihtsalt vastavat keskkonnamuutujat. Sellist rakendust on aga väga lihtne ära petta, kuna väärtuste allikat ei saa kontrollida. Ent mitte-kriitilistes rakendustes ei tohiks see probleemiks olla.
 
 
Et saada rohkem infot rakenduse kohta, tuleb ta käivitada <tt>-h</tt> või <tt>--help</tt> võtmega.
 
 
==== cdigidoc, digidoc-tool, jdigidoc ====
 
<tt>cdigidoc</tt>, <tt>digidoc-tool</tt> ning <tt>jdigidoc</tt> (mitte segi ajada jdigidoc teegiga) on rakendused, mis lubavad teha elementaarseid e-ID operatsioone. Kõik need demonstreerivad omapoolt kasutatava teegi (vastavalt libdigidoc, libdigidocpp ning jdigidoc) võimalusi ning on heaks näitekoodi allikaks.
 
 
Et saada juhendeid rakenduse kasutamiseks, piisab nende käivitamisest ilma käsureavõtmeteta - selle peale kuvatakse abitekst. <tt>cdigidoci</tt> ning <tt>jdigidoc</tt> rakendustest saab rohkem lugeda ka vastava teegi dokumentatsioonist.<ref name="cdigidoc-doc">http://id.ee/public/SK-CDD-PRG-GUIDE.pdf</ref><ref name="jdigidoc-doc">http://id.ee/public/SK-JDD-PRG-GUIDE.pdf</ref>
 
 
=== Kahtlased kohad ===
 
==== cdigidoc ====
 
03.05.2012 seisuga on <tt>cdigidoc</tt> rakendus vigane. Mingi hetk lisati võtmed <tt>-encrypt-sk</tt> ja <tt>-decrypt-sk</tt>, mis teevad SK spetsiifilist krüpteerimist (kõigepealt loovad DDOC konteineri, mis pannakse CDOC sisse), ent selle käigus lõhuti ära <tt>-encrypt</tt> ja <tt>-decrypt</tt> funktsionaalsus, millega sai teha n-ö tavalist (de)krüpteerimist (vastavalt XML-ENC standardile).
 
 
==== Java ja libpcsclite ====
 
Java üritab kaardilugejatega töötamiseks kasutada /usr/lib/libpcsclite.so, mis Debiani/Ubuntu peal pole selles kohas. Asja töötamiseks tuleb luua sümlink:<ref>http://www.opensc-project.org/opensc/wiki/FrequentlyAskedQuestions#Q:IhaveasmartcardreaderinstalledbutaJavaapplicationdoesnotseeit</ref>
 
<pre>
 
sudo ln -s /lib/libpcsclite.so.1 /usr/lib/libpcsclite.so      # Ubuntu
 
sudo ln -s /usr/lib/libpcsclite.so.1 /usr/lib/libpcsclite.so  # Debian
 
</pre>
 
 
==== eToken ====
 
Koos eToken vahevaraga suudab PC/SC üles leida digitemplil olevad andmed. OpenSC seda aga (esialgsel testimisel) ei suuda.
 
 
Kui paigaldada eToken vahevara Linuxile, siis sellega on kaasas ka paar QT teegi moodulit, mille installer paneb /usr/lib/eToken kausta ning ütleb ld.so.conf'ile, et nüüd terve süsteem neid kasutaks. Ubuntu 11.10 peal tekitas see hulga jama (näiteks Skype lõpetas töötamise), kuna kaasas olid QT versiooni 4.2.3 moodulid, ent ülejäänud süsteem kasutas 4.7.4.
 
 
Kui kasutada eTokenit VirtualBoxis jooksva Windowsiga (ka teiste OS'ide korral?), siis on vaja paigaldada VirtualBox Extension Pack - vastasel juhul kuvatakse küll krüptopulga kaardilugeja, ent arvatakse, et see on tühi. (''TODO see üle kontrollida - vist oli probleem teises asjas'')
 
 
== Kasutuselevõtu analüüs ==
 
TODO: ID‐kaardi kasutuselevõtu kulude, tulude ja riskide analüüs.
 
 
=== Riskid ID-kaardi kasutuselevõtul (kliendikaardina) ===
 
* Piiratud rahvusvaheline kasutus (sisuliselt on kaart kasutatav vaid Eestis)
 
* Tunnusgraafika puudumine (vs harilik kliendikaart, kuhu saab trükkida firma logo, rekvisiidid vmt). Kliendikaart on mõnes mõttes kaubamärgi esindaja.
 
 
ID-kaardi kasutuspiirangud<ref>http://www.seminar.aripaev.ee/images/originalimages/%C3%84rip%C3%A4eva%20seminar_ID%20kaart_Statoil_Realo_230811_Albert-71440.pdf</ref>:
 
* Teatud hulk inimesi pole kas ID-kaarti taotlenud, pole Eesti kodanikud või elavad Eestis ajutiselt.
 
* Piirangud klienditoes – ei saa aidata klienti, kel on ID-kaardi kasutamisega probleeme (kiip ei tööta, sertifikaat aegunud vms).
 
* Kuluefektiivsus – jättes kasutusele paralleelselt kliendikaardi ja ID-kaardi, puudub kokkuhoiuefekt – alles jäävad kaarditoorikute, personaliseerimise ja logistikakulud.
 
* ID-kaart kulub ära nagu pangakaart (kuni ei tule kontaktivaba ID-kaarti)
 
 
* Psühholoogiline hirm: kasutajad võivad arvata, et kaardilt loetakse välja ei tea mis personaalset infot.<ref>http://www.seminar.aripaev.ee/images/originalimages/AP_seminar_Apollo_loetud_Albert-1d820.pdf</ref>
 
 
=== Kulud ===
 
* [http://www.ap3.ee/?PublicationId=31503ED6-39D4-4163-9D98-74AA1E3959CE&code=32560 ID-kaardi tegemine kliendikaardiks maksab 500 eurot] (2011).
 
* SK [http://eturundus.eu/digiallkirja-kalkulaator/ digiallkirja tasuvuskalkulaator] võimaldab ligikaudselt välja selgitada dokumentide allkirjastamisega kaasnevad kulusid.
 
 
= Näiterakendused =
 
''TODO: Siia mingi jutt selle kohta, mis on eeldused keskkonnale. Sh mis keskkonnas ja konfiga on testrakendused loodud.''
 
== Sõltuvused ==
 
Näitekood on loodud Ubuntu 11.10 ehk Oneiric Ocelot peal kasutades vaikimisi pakutavate pakkide versioone:
 
* libdigidoc 3.5.5782.613-ubuntu-11-04
 
* libdigidocpp 3.5.5814.662-ubuntu-11-04
 
* gcc 4.6.1
 
* Java 1.7.0_147
 
* PHP 5.3.6-13ubuntu3.7
 
* Apache 2.2.20
 
 
Eraldi on kasutatud veebist alla laetud [http://id.ee/index.php?id=30393 JDigiDoc] 3.6.0.157 teeki.
 
 
Need on arendamisel kasutatud versioonid - kood võib töötada ka vanematega ning võib uuematega lihtsam olla. Kui mõne rakenduse jaoks on kindlad erinõudeid versiooni või keskkonna osas, siis on need selle juures välja toodud.
 
 
== Keeled ==
 
=== C++ ===
 
Kasutab libdigidocpp teeki, mida levitatakse DigiDoc3 kliendi koosseisus - eraldiseisvana seda arendajatele ei pakuta. Kui arendaja aga juhtub olema Linuxi-põhisel operatsioonisüsteemil, siis on võimalik teek alla laadida RIA Fedora, openSUSE või Ubuntu repositooriumitest ilma klientrakenduseta.
 
 
Testimisel ilmnes, et kui kasutada libcrypto 0.9.8 (millest libdigidocpp sõltub) asemel mõnda uuemat versiooni, siis tekivad ''segmentation fault'''id: seega, kui süsteemi on paigaldatud uuem, võib olla vaja linkida see versioon käsitsi.
 
 
Näiteks: <pre>gcc main.cpp /lib/libcrypto.so.0.9.8 -ldigidocpp</pre>
 
 
Vaikimisi kasutatakse rakendustes PIN küsimiseks enda loodud lahendust, mis sõltub <tt>unistd.h</tt>'st (mida Windowsil pole). libdigidocpp teegi SVN hoidlas on [https://svn.eesti.ee/projektid/idkaart_public/trunk/libdigidocpp/src/crypto/signer/EstEIDConsolePinSigner.cpp EstEIDConsolePinSigner] klass, mis töötab ka Windowsi all, ent 02.05.2012 seisuga ei ole RIA Ubuntu repodes olevas teegis. Kui see klass aga on olemas, siis tuleb selle kasutamiseks lisada näiterakendusi kompileerides võti <tt>-DHAVE_ESTEID_CONSOLE_PIN_SIGNER</tt>.
 
 
=== Java ===
 
 
Kasutab JDigiDoc teeki. Näitekoodis on teeki kasutatud vaid klientrakenduste loomiseks, ent analoogselt on seda võimalik kasutada ka serverrakendusdes.
 
 
==== Java konfiguratsiooni fail ====
 
JDigiDoc teek kasutab [http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load%28java.io.Reader%29 Properties] faili konfiguratsiooni haldamiseks. Failist loetavad võtmed on välja toodud jdigidoc teegi dokumentatsiooni lisas 1.<ref name="jdigidoc-doc" />
 
 
Märkimisväärsed read konfiguratsioonifailis:
 
* <tt>DIGIDOC_SIGN_PKCS11_DRIVER</tt> - kaardi PKCS11 API ohjur,
 
* <tt>DIGIDOC_LOG4J_CONFIG</tt> - logimise konfiguratsiooni fail,
 
* <tt>SIGN_OCSP_REQUESTS</tt> - kas allkirjastada OCSP päringud (seda on vaja näiteks AS Sertifitseerimiskeskuse kehtivuskinnituse teenuse kasutamiseks),
 
** <tt>DIGIDOC_PKCS12_CONTAINER</tt> - allkirjastamiseks kasutatava sertifikaadi asukoht, PKCS12 formaadis,
 
** <tt>DIGIDOC_PKCS12_PASSWD</tt> - parool allkirjastamiseks kasutatava sertifikaadi PKCS12 faili avamiseks,
 
** <tt>DIGIDOC_OCSP_SIGN_CERT_SERIAL</tt> - allkirjastamiseks kasutatava sertifikaadi seerianumber,
 
* <tt>DIGIDOC_CA_1_CERT#</tt>, <tt>DIGIDOC_CA_1_OCSP#_CERT</tt>, <tt>DIGIDOC_CA_1_OCSP#_CA_CERT</tt> - sertifikaatide asukohad; kasutada eesliidet <tt>jar://</tt>, et anda asukoht classpathist.
 
 
=== PHP ===
 
==== DigiDocService ====
 
PHP's allkirjastamiseks ning allkirjade kontrollimiseks on võimalik kasutada [http://id.ee/index.php?id=30291 DigiDocService] teenust. Et võimaldada teenusega suhtlus üle HTTPS'i on PHP'le vaja paigaldada [http://www.php.net/curl cURL] laiendus.
 
 
DigiDocService teenuse liides on defineeritud <abbr title="Web Services Description Language">WSDL</abbr>'is, mille põhjal genereeritakse PHP klass teenuse kasutamiseks. Kuigi PHP 5 tuleb juba sisse-ehitatud SOAP kliendi ning WSDL põhjal klassi genereerimise võimalustega, kasutab näitekood kaasas olevat [http://pear.php.net PEAR]'ist pärit SOAP moodulit, tänu mille töötab kood ka vanemate versioonidega. Kood peaks töötama vähemalt PHP 4.3.4 peal, ent ei ole välistatud, et ka vanematel. Kui veebirakenduses kasutatakse PHP 5, siis on soovitatav uute arenduste puhul kasutada sisse-ehitatud vahendeid.
 
 
XML-failide ning DigiDoc konteinerite lugemiseks ja töötlemiseks kasutatakse kärbitud ning veidi muudetud varianti näitekoodist, mis on saadaval aadressil https://www.openxades.org/ddservice/. Kui kärbitud variandist puudub soovitud funktsionaalsus, siis on võimalik, et see on olemas täisversioonis.
 
 
==== SWIG ====
 
Kui puudub võimalus või soov kasutada DigiDocService teenust, siis on alternatiiviks kasutada DigiDoc teeke. PHP jaoks ühtegi kirjutatud ei ole, mistõttu on vaja kasutada mähist (''wrapper'') mõne olemasoleva ümber.
 
 
Lihtsustamaks liidest teegiga ning võimalikult vähendada mähitavat pinda, loodi näitekoodis lihtne vahekiht, mis peidab libdigidoc teegi kasutamise mõne funktsiooni taha. Vahekiht on ülesande-spetsiifiline, mistõttu see ei sobi üldkasutuseks, ent annab aimu, milline see võiks olla. Seejärel loodi SWIG mähis hoopis vahekihi, mitte teegi ümber. Tulemuseks on PHP laiendus, mille kaasamisel on võimalik kõiki vahekihi meetodeid kasutada.
 
 
Laiendust kasutatakse serveripoolse vastuse allkirjastamiseks ning krüpteerimiseks. Viimast neist polegi võimalik DigiDocService teenusega teha, kinnitades teekide kasutamise vajadust.
 
 
===== Laiendi kompileerimine =====
 
Tänu loodud vahekihi on näitekoodis olev digidoc.i liides väga lihtne - seal polegi kirjas muud, kui et see kaasaks digidoc.h päised. Liidesest saab genereerida mähkuri koodi käsuga:
 
<pre>swig -php digidoc.i</pre>
 
 
Selle tulemusena luuakse kolm uut faili: <tt>digidoc_wrap.c</tt>, <tt>digidoc.php</tt> ja <tt>php_digidoc.h</tt>. Esimene, <tt>digidoc_wrap.c</tt> sisaldab PHP laienduse kompileerimiseks vajalikku C koodi. Teist, <tt>digidoc.php</tt>'d saab kaasata PHP skriptidesse. See üritab laiendust dünaamiliselt laadida ning paneb mähitud funktsioonid abstraktsesse klassi <tt>digidoc</tt>. Viimane, <tt>php_digidoc.h</tt> sisaldab vajalikku päiseinformatsiooni, kui on soov laiend staatiliselt PHP interpretaatorisse linkida. Kui seda soovi pole, siis pole ka seda faili vaja.<ref name="swig-php">http://www.swig.org/Doc1.3/Php.html</ref>
 
 
Seejärel tuleb lihtsalt vahekihi kood koos genereeritud mähkuri C koodiga üheks jagatud objektiks kokku kompileerida. Selle käigus tuleb ette anda ka PHP interpretaatori päiste asukohad, mida saab teha <tt>php-config</tt> tööriistaga, ning linkida libdigidoc teek. Näiteks GCC peal näeks kompileerimine välja:
 
<pre>
 
$ gcc `php-config --includes` -fPIC -c digidoc.c digidoc_wrap.c
 
$ gcc -shared digidoc.o digidoc_wrap.o -ldigidoc -o digidoc.so
 
</pre>
 
 
''TODO Kas ka Windows jaoks on ehitamise näidet vaja? Kui jah, siis mis vahenditega?''
 
 
===== Laiendi laadimine =====
 
<tt>digidoc.php</tt> kaasamisel üritatakse loodud laiend dünaamiliselt laadida <tt>dl</tt> käsuga (kui see pole juba laetud). Kuna <tt>dl</tt> käsuga on probleeme olnud<ref>http://php.net/manual/en/function.dl.php</ref>, on parem moodul enne käsitsi laadida. Selle jaoks tuleb lisada <tt>php.ini</tt> konfiguratsioonifaili rida (või muuta olemasolevat):
 
<pre>
 
extension=digidoc.so  # Linux
 
extension=digidoc.dll # Windows
 
</pre>
 
 
== Avalduste esitamise kasutusmall ==
 
''TODO Teha mingi ilus arhitektuurijoonis, mis annaks ülevaate komponentide omavahelisest suhtlusest''
 
 
Näitamaks erinevaid e-ID võimalusi ning nende omavaheliseks seostamiseks kasutatakse järgmist kasutusmalli:
 
 
<blockquote>Oletame, et meil on asutus, kellele saab esitada avaldusi. Selleks on neil püsti veebiserver veebivormiga. Suhtlus serveriga käib üle HTTPS ning nõuab, et kasutaja end tuvastaks[1]. Vormis on nime ning isikukoodi lahtrid eeltäidetud kasutaja sertifikaadilt saadud andmetega. Seejärel kirjutab kasutaja vormi oma avalduse, mille veebiteenus DigiDocService abiga paneb DigiDoc konteinerisse koos nime ja isikukoodiga[2.1]. Viimaks palutakse kasutajal konteiner veebilehitsejas allkirjastada[2.2].</blockquote>
 
 
<blockquote>Loodud konteiner edastatakse teisele teenusele, mis kontrollib allkirja[2.3] ning saadab automaatselt vastuse konteineris, mis on asutuse digitaalse templiga allkirjastatud ning kasutaja sertifikaadil oleva avaliku võtmega krüpteeritud[3]. Kasutaja saab esitatud avalduse ning saadud vastuse oma arvutisse salvestada ning siis DigiDoc kliendiga uurida.</blockquote>
 
 
<blockquote>Paralleelselt veebivormiga on rakendus, kus kasutaja peab end tuvastama[4] ning mis koostab allkirjastatud konteineri juba kliendi arvutis[5, 6] ja saadab terves tükis samale teenusele mis veebivormgi. Lisaks avaldusele paneb rakendus konteinerisse ka ID-kaardi isikuandmete failis leiduva info[7]. Serveri vastus on sama, ent seekord krüpteeritakse ta ka lahti[8] ning allkirja kontrollitakse rakenduse sees[8], mitte DigiDoc kliendiga.</blockquote>
 
 
Seega kasutusmallis demonstreeritakse
 
# veebis isiku tuvastamist,
 
# DigiDocService kasutamist
 
## konteinerite loomiseks,
 
## allkirja andmiseks ja
 
## allkirja kontrollimiseks,
 
# faili krüpteerimist saaja sertifikaadiga,
 
# rakenduses isiku tuvastamist,
 
# rakenduses konteineri koostamist,
 
# rakenduses allkirja andmist,
 
# ID-kaardi isikuandmete faili lugemist,
 
# faili lahti krüpteerimist ning
 
# rakenduses allkirja kontrollimist.
 
 
=== Veebiserver ===
 
''TODO kirjutada SSL reneg bugist, mille tõttu peavad vanemate veebilehitsejate jaoks olema isikut tuvastavad ning seda mitte tegevad serverid eraldi IP'de peal.''
 
 
Veebiserveriks on kas [http://httpd.apache.org/ Apache httpd] või [http://www.iis.net/ Microsoft IIS]. Mõlemal juhul on vaja paigaldada PHP tugi ning server konfigureerida kasutama HTTPS'i ning küsima kasutajalt tema sertifikaati. Juhendi selleks leiab [http://id.ee/index.php?id=30268 siit].
 
 
Kindlasti on vaja ka kontrollida kasutaja sertifikaadi kehtivust. Ei piisa vaid sertifikaadil oleva kehtivuse lõppkuupäeva kontrollist, kuna sertifikaadi väljaandja võib selle teatud põhjustel varem kehtetuks tunnistada. Kehtivuse kontrolliks on kaks valikut:
 
* '''<abbr title="Certificate Revocation List">CRL</abbr>''', mis on nimekiri kõikidest kehtetuks tunnistatud sertifikaatidest. Selle puuduseks on, et nimekiri laetakse sertifitseerimiskeskuselt alla perioodiliselt, mistõttu pole andmed alati kõige värskemad.
 
* '''<abbr title="Online Certificate Status Protocol">OCSP</abbr>''', mis annab vastuse sertifikaadi kehtivuse kohta reaalajas, ent mille kasutamine on (erinevalt CRL'ist) tasuline. Rohkem infot [http://www.sk.ee/teenused/kehtivuskinnituse-teenus/ siin].
 
** ''TODO Kas nad autentimise OCSP'd lasevad tasuta teha? Vaata: http://www.sk.ee/teenused/kehtivuskinnituse-teenus/autentimise-ocsp/''
 
 
Näiterakendustes kasutame kontrolliks OCSP'd.
 
 
==== Apache httpd ====
 
Alates Apache 2.3'st saab kasutada mod_ssl'i sisseehitatud OCSP klienti järgmiste direktiividega:
 
<pre>
 
SSLOCSPEnable on
 
SSLOCSPDefaultResponder http://www.openxades.org/cgi-bin/ocsp.cgi  # tootekeskkonnas http://ocsp.sk.ee
 
SSLOCSPOverrideResponder on                                        # vajalik ainult selleks, et testimisel ka päris ID-kaartide kehtivuskinnitused saata
 
                                                                  # testkeskkonda ning mitte kaardil olevale aadressile - tootes võib selle direktiivi
 
                                                                  # välja jätta
 
</pre>
 
Varasemates Apache versioonides tuleb OCSP kehtivuskinnitus teha rakenduse tasemel - juhendi selleks leiab [http://id.ee/index.php?id=30338 siit].
 
 
==== Microsoft IIS ====
 
''TODO Kirjeldada OCSP konfimist IIS'is, kuna eelnevad juhendid seda ei kata.''
 
 
=== Veebivorm ===
 
Veebivorm on kirjutatud PHP's ning kasutab konteinerite koostamiseks ja allkirjastamiseks DigiDocService't. Lähemalt PHP kasutamise kohta loe [[#PHP|keelte alt]].
 
 
Veebivorm koosneb neljast lahtrist, millest kolm (eesnimi, perenimi ja isikukood) on eeltäidetud isiku tuvastamisel saadud andmetega. Vormi esitamisel saadetakse päringuga lahtrite sisu ja kasutaja allkirjastamissertifikaat ning selle seerianumber (kuigi seerianumbrit oleks võimalik ka sertifikaadilt lugeda on parem lasta see töö ära teha kliendi poolel). Vormi sisestatud andmetest luuakse tekstifail, mis salvestatakse serveris ajutisse kausta. DigiDocServicega alustatakse uus seanss ning luuakse konteiner, kuhu pannakse vastloodud faili räsi (<tt>StartSession</tt>). Kuigi teenusele on võimalik saata ka algfailid, on privaatsuse ning andmemahu mõttes parem piirduda räside saatmisega. Seejärel valmistutakse ette konteineri allkirjastamiseks, mis tähendab, et DigiDocService'le saadetakse kasutaja sertifikaat ning allkirja metainfo s.t roll ja asukoht (näitekoodis kasutatakse nendeks konstante, kuna nende kasutajalt küsimine on triviaalne ning ei vaja eraldi näidet). Vastuseks saadetakse konteineri räsi, mida klient peab allkirjastama (<tt>PrepareSignature</tt>).
 
 
Kasutajale kuvatakse järgmine leht, millel on allkirjastamiseks kasutatava sertifikaadi seerianumber ning allkirjastatav räsi. Kasutaja vajutab nupule "Allkirjasta", mille peale antakse tööjärg üle JavaScript teegile, millega hangitakse kasutajalt allkiri räsile. Räsi saadetakse järgmise päringuga tagasi veebivormile, mis viib allkirjastamise lõpuni (FinalizeSignature), laeb allkirjastatud konteineri alla (<tt>GetSignedDoc</tt>) ning lõpetab seansi(<tt>CloseSession</tt>). Saadud konteineris asendatakse failide räsid nende päris sisuga ja saadetakse avaldusi töötlevale serverile ning salvestatakse ajutisse kausta, kust kasutaja neid hiljem alla laadida saab. Avaldusele saadud vastus salvestatakse samamoodi ajutisse kausta ning pakutakse alla laadimiseks.
 
 
=== Avaldusi töötlev teenus ===
 
Avaldusi töötlev teenus on kirjutatud PHP's ning kasutab avaldusel oleva allkirja kontrolliks DigiDocService teenust. Vastuse allkirjastamiseks ja krüpteerimiseks kasutatakse SWIG mähkurit libdigidoc teegi ümber.
 
 
Teenusele esitatavas POST päringus on kaks kohustuslikku välja '''<tt>claim</tt>''' ja '''<tt>cert</tt>'''. <tt>cert</tt> väljal peab olema vastuse saaja isikutuvastamise sertifikaat ning <tt>claim</tt> väljal allkirjastatud avaldus. Viimane peab olema kas <tt>application/x-ddoc</tt> või <tt>application/vnd.bdoc-1.0</tt> tüüpi.
 
 
Teenus kontrollib, et üles laadimine õnnestus ning et avaldusel olev allkiri kehtib. Kehtivuse kontrolliks saadetakse avaldus DigiDocService teenusele <tt>StartSession</tt> päringuga, kus on <tt>bHoldSession</tt> lipp pandud eitavaks, et ühendus kohe suletaks. Vastuseks saadab DigiDocService allkirja staatuse.
 
 
Kui allkiri oli kehtiv, siis luuakse vastus. Selle sisu pole meie jaoks oluline, nii et tegu on konstantse sõnega. Seejärel lähtestatakse libdigidoc teek ning luuakse allkirjastamise konteiner (SWIG mähkuris <tt>initialize</tt> ning <tt>new_signature_container</tt> meetodid). Konteinerisse lisatakse loodud vastus (<tt>add_data_file</tt>) ning see allkirjastatakse (<tt>sign_container</tt>). Allkirjastamiseks kasutatav PIN võib olla nii allkirjastamise funktsiooni argumendiks kui ka libdigidoc teegi konfiguratsioonifailis võtme <tt>AUTOSIGN_PIN</tt> väärtus (sel juhul jäetakse funktsiooni väljakutsel parameetri <tt>pin</tt> väärtuseks <tt>NULL</tt>). Allkirjastatud vastus kirjutatakse kettale ning vabastatakse mälust (<tt>save_signed_document<tt> ja <tt>free_signature_container</tt> - ''FIXME Siinkohal on otstarbekam seda mälus alles hoida, kuna ta loetakse kohe kettalt tagasi.'').
 
 
Teenus loob uue krüpteerimise konteineri (<tt>new_encryption_container</tt>) ning krüpteerib vastloodud vastuse (<tt>encrypt_ddoc</tt>). Kasutatud transpordivõti krüpteeritakse <tt>cert</tt> väljal oleva sertifikaadi avaliku võtmega ning see lisatakse konteinerisse (<tt>add_recipient</tt>). Krüpteeritud konteiner salvestatakse kettale (<tt>save_encrypted_container</tt> - seda on vaja sellepärast, et mälus konteineri XML kujule teisendamine on teegis meie eest peidetud ning ainus võimalus selle saamiseks on faili kirjutamine), selle mälu vabastatakse (<tt>free_encryption_container</tt>) ning vastus saadetakse esialgse päringu tegijale.
 
 
=== Avalduste rakendus ===
 
''TODO Kirjutada rakenduse tööst ning kasutamisest.''
 
 
Tegu on käsurearakendusega, mis kasutajalt ja isikutunnistuselt saadud info põhjal loob avalduse, paneb selle konteinerisse ja allkirjastab ning saadab avaldusi töötlevale teenusele. Vastuseks tuleb uus konteiner, mille see krüpteerib lahti, kontrollib allkirja ning siis kuvab sisu kasutajale. Rakendus on algselt kirjutatud Javas ning seejärel porditud .NET'i. Mõned alamosad on ümber kirjutatud ka C++'i, kuid kuna selle kasutamine on piisavalt sarnane Javale, siis polnud vajadust tervet rakendust ümber portida.
 
 
Algselt käivitades küsitakse kasutajalt sisendit avaldusele - tegu on lihtsa, üherealise tekstisisestusega. Kuna JDigiDoc teek oskab kasutada vaid kettale salvestatud faile ''['''TODO''' kontrollida üle uue versiooniga]'', siis salvestame sisestatud info ajutisse faili. Samuti salvestame ajutiselt kettale kaardilt loetud isikuandmed (JDigiDoc teek isikuandmete faili lugemist ei toeta''['''TODO''' kontrollida üle uue versiooniga]'', mistõttu tehakse seda käsitsi lähtudes [http://id.ee/public/EstEID_kaardi_kasutusjuhend.pdf EstEID kaardi kasutusjuhendist]). Andmed pannakse konteinerisse ning allkirjastatakse - viimase käigus kontrollitakse ka allkirjastamiseks kasutatava sertifikaadi kehtivust. Peale seda kontrollitakse igaks juhuks üle, et konteiner verifitseerub ning see kirjutatakse kettale.
 
 
''TODO Praegu kirjeldab hetkeseisu. Kui rakendus uueneb, siis uuendada ka wikit.''
 
 
== Allkirjastamise rakendus ==
 
('''NB!''' Kui JDigiDoc ning libdigidoc uuenesid, siis kaaskirjas mainiti, et BDOC pole hästi juurdunud ning kuna on tulemas muudatused, siis ei tasugi juurutada. Kas need rakendused peaks ümber tegema DIGIDOC-XML 1.3 peale?)
 
 
Käsurea utiliit, millele antakse ette nimekiri failidest ning tulemuseks on BDOC konteiner allkirjastatud failidega ja OCSP kehtivuskinnitusega.
 
 
=== C++ ===
 
Kasutus: <pre>./sign infile:mimetype... outfile</pre>
 
 
* <tt>infile</tt> - failid, mida allkirjastada
 
* <tt>mimetype</tt> - allkirjastatava faili [http://en.wikipedia.org/wiki/Internet_media_type MIME tüüp], nt <tt>text/plain</tt>
 
* <tt>outfile</tt> - loodava BDOC konteineri nimi, soovitatav laiendus <tt>.bdoc</tt>
 
 
=== Java ===
 
Kasutus: <pre>java JavaSign [-cfg config] infile... outfile</pre>
 
 
* <tt>config</tt> - kasutatav [[#Java konfiguratsiooni fail|konfiguratsioonifail]], vaikimisi otsitakse praegusest kaustast <tt>jdigidoc.cfg</tt>
 
* <tt>infile</tt> - failid, mida allkirjastada
 
* <tt>outfile</tt> - loodava BDOC konteineri nimi, soovitatav laiendus <tt>.bdoc</tt>
 
 
Vajab Java versiooni 1.7 või uuemat, kuna allkirjastatava faili MIME tüübi tuvastamiseks kasutatakse [http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#probeContentType%28java.nio.file.Path%29 Files] klassi.
 
 
== Isikutuvastuse rakendus ==
 
Käsurea utiliit, mis teeb kindlaks, kas kasutajal on ligipääs sertifikaadile vastavatele privaatvõtmele ehk kas ta teab ID-kaardi PIN1'e.
 
 
C++ puhul käivitatakse rakendus ilma argumentideta, Java puhul on võimalik anda valikuline argument <tt>-cfg config</tt>, mis töötab nii nagu [[#Allkirjastamise_rakendus|allkirjastamise rakenduse]] puhul. Kasutaja sisestab lugejas oleva kaardi PIN1 ning kuvatakse vastus, kas isiku tuvastamine õnnestus või mitte. Kui peaks tekkima mingeid muid tõrkeid (nt. on ID-kaardil olev sertifikaat kehtetu), siis kuvatakse vastav veateade.
 
 
(NB! C++ rakendus hetkel OCSP kontrolle läbi ei vii, kuna libdigidocpp ei võimalda seda. Lähiajal lisan funktsionaalsuse kasutades libdigidoci. - Kas seda on üldse vaja, kuna sai kokku lepitud, et isikutuvastus tehakse Javas?)
 
 
 
 
== Märkused ==
 
=== USB õigused ===
 
Ubuntu masinatel oli probleeme kaardilugeja kasutamisega, kuna sellega suhtleval pcscd deemonil polnud kirjutamisõiguseid. Lihtsaim lahendus sellest mööda saamiseks on käsitsi vajalike õiguste andmine. Selleks tuleb teada saada, mis siinil kaardilugeja on ning mis on selle seadmenumber.
 
<pre>
 
$ lsusb
 
...
 
Bus 002 Device 003: ID 058f:9520 Alcor Micro Corp. EMV Certified Smart Card Reader
 
</pre>
 
 
Ehk käesoleval juhul on kaardilugeja siinil 2 seade number 3. Seega tuleb teha:
 
<pre>
 
# chown :pcscd /dev/bus/usb/002/003
 
# chmod g+w /dev/bus/usb/002/003
 
</pre>
 
Selle tulemusena peaks <tt>ls -l</tt> kuvama <tt>crw-rw-r-- 1 root pcscd ... 003</tt>.
 
 
See lahendus küll töötab, ent pole väga hea - näiteks seadmenumbri muutudes kaovad õigused ära. Parem oleks see teha udev'i või mõne analoogse vahendiga, kus saab paika panna seadmespetsiifilisi reegleid.
 
 
= Piiriülene eID =
 
== Üldist ==
 
RISO veebist
 
<ref>eIdentiteedi töörühma 9.12.2011 nõupidamine. http://www.riso.ee/wiki/EID2011-12-09</ref>:
 
 
<cite>
 
Baastarkvara probleem on Linuxite tugi, kus tarkvara on ajaliselt maas Linuxite reliisidest, näiteks Ubuntu puhul ühe põlvkonna võrra. Ettepanek on toetada üksnes Ubuntu distributsiooni kui enimlevinut ja ülejäänute Linuxite jaoks valmistada lähtekoodi pakid koos kompileerimisjuhendiga. Senine arendushange on keskendunud peamiselt lõppkasutaja toele. Lisaks sellele vajab lahendamist korporatiivlahenduste tugi, tugi serverlahendustele ja .net platvormi tugi. Koostamisel on statistika, et saada paremat ülevaadet platvormidest. Kaardistatakse Windows serverite ja .net platvormil baseeruvate lahenduste vajadus. Serverikeskkonna tellimisel ja platvormi valiku peab teadma, millisele on võimalik ID-kaardi tugi ehitada.
 
</cite>
 
 
* Alates 01.11.2008 on Äriregistri Ettevõtjaportaal avatud ka Portugali, Soome, Belgia ja Leedu ID-kaardi omanikele, mis võimaldab nende riikide kodanikel Eestisse äriühing asutada Interneti vahendusel.<ref>Järv, Maris; Vali, Ingmar. http://www.riso.ee/et/files/3.1.2_Piiriylesed_digiallkirjad_M.Jarv_I.Vali_IT2008.pdf</ref>
 
* Seisuga 22.12.2010 on lisatud DigiDoc-portaali kasutamise võimalus STORK projektis osalevate välisriikide kodanikele.<ref>DigiDoc Portaali muudatuste nimekiri. http://www.id.ee/index.php?id=30455</ref>
 
 
== Konkreetsed riigid ==
 
Toetatuks märgitud eID-d:
 
* Belgia: http://www.opensc-project.org/opensc/wiki/BelgianEid
 
* Hispaania: http://www.opensc-project.org/opensc/wiki/SpanishEid (suletud lähtekood)
 
* Itaalia: http://www.opensc-project.org/opensc/wiki/ItalianEid =~ http://www.opensc-project.org/opensc/wiki/ItalianCNS
 
* Portugal: http://www.opensc-project.org/opensc/wiki/PortugueseEid
 
* Soome: http://www.opensc-project.org/opensc/wiki/FinnishEid
 
* Saksamaa: http://www.opensc-project.org/opensc/wiki/GermanEid (toetatud OpenSC projektis, kuid mitte Eestis)
 
 
 
== Huvitavaid linke ==
 
RISO koosvõime veeb<ref name="riso-identiteet">http://www.riso.ee/et/koosvoime/identiteet</ref> kirjutab:
 
''Teiste riikide eID mehhanisme tunnustatakse Eestis juhul, kui vastava riigi sertifitseerimisteenuse osutaja ja sertifikaatide turvalisus on võrdväärsel tasemel Eesti ID-kaardi omaga. Praegusel etapil saab hinnangud anda ühekaupa iga konkreetse riigi kohta eraldi. Teiste riikide sertide hindamisel on kasutatud dokumendis ''Teiste riikide eID hindamise põhimõtted'' toodud metoodikat.'''
 
Kvalifitseeritud on järgmiste riikide sertifikaadid:
 
* Belgia
 
* Hispaania
 
* Itaalia: [http://www.vldb.org/conf/2001/P629.pdf ID-kaardi arhitektuur]
 
* Leedu
 
* Portugal
 
* Sloveenia: üldinfot on [http://m.epractice.eu/en/cases/eidgovslovenia siin], aga jääb mulje, et neil seisab asi 2007. aastast. (2008 oli korraks mingi ID-kaardi alane elavnemine, aga see jäi soiku.) Nt 2008: "Proposals to introduce a new eID card, incorporating several different functions on just one card, have met with opposition in Slovenia." <ref>http://www.epractice.eu/en/news/284552</ref>
 
* Soome - PKCS #15 compatible. Pikem kirjeldus [http://www.fidis.net/resources/deliverables/hightechid/int-d36000/doc/30/ siin], lisainfot veel [http://www.vrk.fi/default.aspx?id=21 Electronic Identity and Certificates] lehel.
 
 
* [http://sr.riik.ee/et/usaldusnimekiri/Euroopa Euroopa Komisjoni loetelu liikmesriikide usaldusnimekirjadest]
 
* [http://www.icegov2011.icegov.org/us/content/download/562/2442/file/Tutorial_3%20Peter%20Kustor.pdf Austria eID kirjeldus]
 
 
= Allikaviited =
 
<references />
 

Viimane redaktsioon: 23. oktoober 2012, kell 12:36