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 2 kasutaja 56 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<br/>   
 
<small><i>(toorversioon)</i></small></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. Projekt kestis
 
30.03.2012 - 31.10.2012.
 
 
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
 
|-
 
|DAS
 
|Digitaalallkirja seadus
 
|-
 
|ITDS
 
|Isikut tõendavate dokumentide seadus
 
|-
 
|RIA
 
|Riigi Infosüsteemi Amet
 
|-
 
|RISO
 
|Riigi infosüsteemide osakond
 
|-
 
|SK
 
|AS Sertifitseerimiskeskus
 
|-
 
|SMIT
 
|Siseministeeriumi infotehnoloogia- ja arenduskeskus
 
|-
 
|STORK
 
|Secure Identity Across Borders Linked
 
|}
 
 
= eID lühitutvustus =
 
== Mis on mis ==
 
Eestis reglementeerib eID kasutamist Digitaalallkirja seadus<ref name="das">https://www.riigiteataja.ee/akt/694375?leiaKehtiv</ref> ja Isikut tõendavate dokumentide seadus<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 (tehnilises mõttes [http://akit.cyber.ee/terms/587-digital-signature digisignatuuri]) 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 kaardiomanik 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 teavet, mis võimeldaks kaarti kasutada visuaalse isikut tõendava dokumendina. Krüptograafia seisukohast on tegu samasuguse kiipkaardiga nagu ID-kaart. Seetõttu kasutab SK Digi-ID sertifikaatide väljastamisel samu üldpõhimõtteid, ESTEID-kaardi sertifitseerimispoliitikat ning ESTEID sertifikaatide profiili. Samal põhjusel käsitleb juhend Digi-ID-d ja ID-kaarti samaväärsena. Digitaalne isikutunnistus antakse välja kehtivusajaga kolm aastat.
 
 
'''Tähelepanu:''' Digi-ID ja ID-kaardi sertifikaadid pole n-ö ristkasutatavad, ehk kui näiteks krüpteerida dokument digi-ID serdiga (ESTEID DIGI-ID), siis seda ID-kaardiga (ESTEID) avada ei saa.
 
 
=== Digitaalne tempel ===
 
 
DAS<ref name="das"/> määratlus (§ 21<sup>1</sup> lg 1 p 1):
 
  Digitaalne tempel on tehniliste ja organisatsiooniliste vahendite süsteemi abil moodustatud
 
  andmete kogum, mida digitaalse templi sertifikaadi omanik kasutab tõendamaks digitaalse dokumendi
 
  terviklust ning oma seost sellise dokumendiga.
 
 
Digitaalne tempel e. digitempel on AS-i Sertifitseerimiskeskus 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. Allkirjastada (sh mass-allkirjastada) saab nt arveid, maksekorraldusi, kinnitusi, tunnistusi jne. Teenuse tellimisel väljastab SK ettevõttele 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. 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 digitaalsel 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 mitmesugused tõendid ja väljavõtted, 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 elektrooniline isikut tõendav dokument, mis võimaldab elektroonilist isikutuvastamist ja digitaalset allkirjastamist mobiiltelefoni abil, kus telefon koos vastava SIM-kaardiga täidab ühel ajal nii ID-kaardi kui ka kaardilugeja funktsiooni. Erinevalt ID-kaardist ei ole võimalik Mobiil-ID sertifikaate kasutada dokumentide krüpteerimiseks. Mobiil-ID sertifikaadid kehtivad 3 aastat.<ref>http://mobiil.id.ee</ref>
 
 
Alates 01.02.2011 välja antud Mobiil-ID puhul on tegu digitaalse isikutunnistusega, mille väljaandmine toimub isikut tõendavate dokumentide seaduse alusel.<ref>http://mobiil.id.ee/mis-on-mobiil-id/</ref>
 
 
Mobiil-ID kasutamiseks on vajalik teenust võimaldav spetsiaalne SIM-kaart, mille saamiseks tuleb sõlmida teenusleping mobiilioperaatori juures. Mobiil-ID muutub kasutatavaks pärast aktiveerimist Politsei- ja Piirivalveameti elektroonilises taotluskeskkonnas.
 
 
''TODO: kirjutame järgmised infokillud lahti:''
 
* Vt ka: [http://math.ut.ee/~peeter_l/research/nordsec09.pdf mobiil-ID protokolli formaalne analüüs]. (Lisada see [[#V.C3.A4lised_lingid|väliste linkide]] alla?)
 
 
==== Isikutuvastamine ====
 
Isikutuvastamine Mobiil-ID abil toimub järgmiselt:<ref>http://www.id.ee/index.php?id=30389</ref>
 
# Kasutaja sisestab oma telefoninumbri ja/või isikukoodi ning viimase välja andnud riigi koodi. Need andmed edastatakse teenusele DigiDocService.
 
# DigiDocService kontrollib OCSP abil üle, et kasutaja Mobiil-ID isikutuvastuse sertifikaat kehtib.
 
# DigiDocService samaaegselt
 
#* saadab mobiiloperaatorile isikutuvastuse päringu (mis edastab selle kasutaja telefonile) ning
 
#* tagastab kontrollkoodi ja kasutaja sertifikaadi.
 
#** '''NB!''' Teenus tagastab kõigest tuvastatava isiku sertifikaadi—see ei tähenda, et kasutaja oleks autenditud.
 
# Rakendus kuvab kasutajale isikutuvastuspäringu kontrollkoodi.
 
# Rakendus hakkab perioodiliselt käima teenuse DigiDocService käest isikutuvastuspäringu olekut küsimas.
 
#* Olekupäring on võimalik teha ka sünkroonselt, s.t DigiDocService hoiab ühendust lahti ning ei tagasta midagi enne, kui mobiiltelefonilt on tulnud vastus.
 
# Kasutaja telefonil kuvatakse teade isikutuvastuspäringu kohta ning ta kinnitab, et telefonil kuvatav kontrollkood langeb kokku rakenduse poolt kuvatavaga.
 
# Kasutaja sisestab Mobiil-ID PIN1, teenuse poolt saadetud väljakutse (''challenge'') allkirjastatakse SIM-kaardil oleva salajase võtmega ning tulemus saadetakse mobiiloperaatorile, mis edastab selle teenusele DigiDocService.
 
# Järgmine kord, kui rakendus tuleb teenuselt küsima, mis on päringu olek, vastatakse, et kasutaja on autenditud.
 
 
==== Digitaalne allkirjastamine ====
 
Allkirjastamine käib sarnaselt isikutuvastamisega, järgmiste erinevustega:
 
* Teenusele saadetakse allkirjastatavad dokumendid või nende räsid ning Mobiil-ID allkirja küsitakse hoopis nende räsile, mitte juhuarvule.
 
* Allkiri antakse digitaalallkirjastamise salajase võtmega, mitte isikutuvastamise omaga. Sellest tulenevalt peab kasutaja sisestama PIN 2, mitte PIN 1.
 
 
Eelneva tulemusena moodustab teenus allkirjastatud konteineri, mille rakendus saab alla laadida. Kui alguses saadeti teenusele vaid allkirjastatavate dokumentide räsid, siis lisasammuna peab konteineris asendama räsid dokumentide endiga.
 
 
== Ülevaade eID rakendusvõimalustest ==
 
=== Isiku autentimine ===
 
''TODO''
 
 
=== Digiallkirjade andmine ===
 
* Veebirakendustes on ID-kaardiga allkirjastamise jaoks loodud JavaScripti teek, mille programmeerimisliides (API) on ühtne ning võimaldab erinevaid allkirjastamispluginaid – sõltumata kasutaja operatsioonisüsteemist ja brauserist – ühte moodi kasutada. Täpsem info [http://id.ee/index.php?id=30279 siit].
 
* Mobiil-IDga allkirjastamine ja autentimine on käsitletud [http://id.ee/index.php?id=30388 siin].
 
''TODO''
 
 
=== Digitembeldamine ===
 
Täpsem info [http://id.ee/index.php?id=30282 siit].
 
''TODO''
 
 
=== Krüpteerimine / dekrüpteerimine ===
 
ID-kaart võimaldab faile krüpteerida ja dekrüpteerida, kasutades ID-kaardi autentimissertifikaati. Funktsioon on mõeldud eelkõige failide turvaliseks transpordiks, vastandina andmete pikaajalisele säilitamisele. Standardile XML-ENC vastavad vahendid krüpteerimiseks ja dekrüpteerimiseks on saadaval [http://www.id.ee/?id=30391 DigiDoci teekides], lisainfot leiab vastavalt [http://www.id.ee/index.php?id=30264 id.ee lehelt].
 
 
'''Tähelepanu:'''  Aegunud või uuendatud sertifikaadiga ega ka uue ID-kaardiga ei saa eelmise sertifikaadiga krüpteeritud dokumenti dekrüpteerida.
 
 
=== Alternatiivsed 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
 
 
= Üldteavet arendajatele =
 
Jaotis sisaldab teavet, 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.
 
 
== Testimisvahendid ==
 
AS-ist Sertifitseerimiskeskus saab tellida testotstarbelisi ID-kaarte, digi-IDsid 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].
 
 
Testkaartide kasutamiseks tuleb paigaldada ka testsertifikaadid: Windowsis on selleks [https://installer.id.ee/media/windows/Eesti_ID_kaart_testsertifikaadid.msi testsertifikaatide pakk] ning Linuxis kas <tt>esteidcerts-dev</tt> või <tt>esteidcerts-devel</tt> pakk (olenevalt pakihaldurist).
 
 
== eToken-krüptopulga kasutamine ==
 
Kirjutamise hetkel on eToken-krüptopulk SK poolt toetatud ainult Windows-keskkonnas ning kõik vajalik allalaetav aadressilt: https://installer.id.ee/media/SafeNetAuthenticationClient_8_1_SP1Windows.zip.
 
 
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
 
 
Pakid sisaldavad endas mitmeid utiliite, ent oluliseimaks on seal leiduvad draiverid ning PKCS#11 moodulid. Viimaste asukohad on <tt>%SYSTEMROOT%\System32\eToken.dll</tt> (Windows) ning <tt>/lib/libeToken.so.8</tt> (Linux; lõpus olev number sõltub versioonist) — neid läheb vaja, kui on soovi PKCS#11 API kaudu digitempliga suhelda.
 
 
== Isikuandmete faili kasutamine ==
 
Infoturbe koosvõime raamistik <ref>Infoturbe koosvõime raamistik. 2007. http://www.riso.ee/et/files/InfoturbeRaamistik.odt</ref> sätestab:
 
''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 ka visuaalne isikutuvastamine (näiteks piiri ületamisel).
 
 
=== ID-kaardil sisalduvad andmed ===
 
Allolevaid andmeid saab lugeda ilma PIN-koodi sisestamata (piisab, kui kaart on lugejas).
 
 
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 (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 ==
 
=== DDOC ===
 
DigiDoc failivorming on standardi [http://uri.etsi.org/01903/v1.2.2/ ETSI 101 903] (''XML Advanced Electronic Signatures'' – XAdES) profiil "XAdES-X-L". Antud standard kirjeldab digitaalallkirjastatud dokumentide struktuuri ning profiil võimaldab allkirjaga siduda järgnevad allkirjastatavad atribuudid:<ref name="digidoc-vormingud">http://id.ee/index.php?id=30289</ref>
 
* Allkirjastamiseks kasutatav sertifikaat
 
* Allkirjastamise aeg
 
* Allkirjastamise asukoht
 
* Allkirjastaja roll või resolutsioon
 
* <abbr title="Online Certificate Status Protocol">OCSP</abbr> serveri sertifikaat
 
* OCSP vastus
 
 
DigiDoc konteiner on sisuliselt XML-dokument, mille elementideks on algfailid või nende asukohad ning räsid, failidega seotud allkirjad ja igas allkirjas sisalduvad allkirjastaja sertifikaat, kehtivuskinnitus ja kehtivuskinnituse teenuse sertifikaat.
 
 
DigiDoc failivormingu versioon 1.0 kandis nime SK-XML, kuid kõik järgnevad kannavad nime DIGIDOC-XML. Failivormingu versioon on kirjutamise hetkel 1.3.
 
 
Kõik seda vormingut järgivad allkirjastatud konteinerid kannavad laiendit '''.ddoc'''.<ref name="digidoc-vormingud" />
 
 
=== BDOC ===
 
BDOC on uus digitaalallkirja vorming, mis on loodud selleks, et asendada Eesti-spetsiifiline [[#DDOC|DDOC]] digitaalallkirja vorming.
 
 
Suurim erinevus DDOC-vormingust on OpenDocument<ref>ISO/IEC 26300:2006 Open Document Format for Office Applications (OpenDocument) v1.0</ref> standardi järgimine: selle tulemusena on tegu zip-konteineriga, milles on allkirjastatud failid ning allkirjad üksteistest eraldatud. Tänu selle on BDOC-konteinerit võimalik avada iga zip-formaati tundva rakendusega ning seal sees olevad failid lihtsalt loetavad - erirakendusi nagu DigiDoc klient on vaja ainult algfailide tervikluse ja allkirjade kontrollimiseks.
 
 
Kuna ZIP on pakitud vorming, võivad BDOC-vormingus failid olla DDOCist oluliselt väiksemad. Lisaks on BDOC-failide meili teel edastamine paremini toetatud, kuna DDOC-vormingus dokumentide edastamisel on esinenud probleeme (osad meiliserverid filtreerisid DDOC-vormingus manused välja).<ref name="digidoc-bdoc">http://www.id.ee/?id=34070</ref>
 
 
Täpsemat tehnilist infot hetkel kasutuses oleva BDOC-vormingu kohta saab lugeda Eesti standardidokumendist [http://www.evs.ee/tooted/evs-821-2009 EVS 821:2009].
 
 
Tarkvaraarendajad peaksid arvestama, et 2012 seisuga on käimas BDOC-vormingu uuendused seoses uue rahvusvahelise ASiC allkirja konteineri standarditega (ETSI TS 102 918, ETSI TS 103 171, ETSI TS 103 174), mistõttu tuleb kirjutamishetkel toetatud BDOC-vormingus veel muudatusi.  Kuna hetkel kasutuses olev BDOCi standardile vastav allkiri ei ole infosüsteemides kasutust leidnud, siis soovitab SK seda ka lähitulevikus mitte juurutada. See võimaldab tulevikus uuele rahvusvahelisele standardile valutumat üleminekut. Ajakohane info BDOC-vormingu kohta on kättesaadav aadressilt http://ww.id.ee/bdoc.
 
 
Ülaltoodud põhjustel ei käsitle BDOCi praegu ka näiterakendused.
 
 
=== CDOC ===
 
CDOC-vormingu puhul järgitakse ''[http://www.w3.org/TR/xmlenc-core/ XML Encryption Syntax and Processing]'' (XML-ENC) standardis väljatoodud struktuuri. Krüpteerimise kohta saab rohkem lugeda [[#Kr.C3.BCpteerimine|krüpteerimise]] peatükist.
 
 
Konteineriks on XML-dokument juurelemendiga ''EncryptedData'' - selle sees on:
 
* krüpteerimisalgoritmi AES-128-CBC identifikaator,
 
* sümmeetriline võti krüpteeritud kujul (iga vastuvõtja jaoks eraldi):
 
** krüpteerimisalgoritmi RSA 1.5 identifikaator,
 
** vastuvõtja nimi,
 
** vastuvõtja sertifikaat (mille avalikku võtit kasutati krüpteerimiseks),
 
** võti krüpteeritud kujul
 
* sisalduvate andmete metainfo:
 
** algfaili nimi,
 
** faili suurus,
 
** faili MIME tüüp,
 
* algandmed krüpteeritud kujul.
 
 
Kuigi XML-ENC toetab suvalise hulga failide krüpteerimist, kasutatakse DigiDoc rakendustes lähenemist, mille korral pannakse kõik algfailid DDOC-konteinerisse ning siis krüpteeritakse see üks fail.
 
 
= eID kasutamine olemasolevate rakendustega =
 
 
== Töölauarakendused ==
 
'' Enne kirjutamist tuleb teha konkreetselt piiritletud valik (nt Outlook ja seal krüpteerimine, signeerimine) ''
 
 
=== ID-kaardiga sisselogimine Windowsisse ===
 
==== Domeeni sisselogimine ====
 
Domeeni logimine on ID-kaardi baastarkvaras toetatud alates versioonist 3.5 ning oma domeeni seadistamiseks lisakomponente installeerida ei ole vaja. Küll aga pakub SK süsteemiülematele [http://www.sk.ee/upload/files/ID-login_juhend.pdf juhendit] ja [http://www.sk.ee/upload/files/IDLogin%20Util.zip skripti], mis võimaldavad sertifikaatide kergemat haldust Windows Vista, Windows 7 ja Windows Server 2008 käitavates klientarvutites.
 
 
Domeeni logimist soovitatakse kasutada koos autentimissertifikaatide kehtivusinfot väljastava kehtivuskinnitusteenusega, mille kohta saab lisainfot SK [http://www.sk.ee/teenused/kehtivuskinnituse-teenus/autentimise-ocsp/ autentimise OCSP] lehelt.
 
 
Alternatiivse lahendusena on võimalik kasutada IDLogin komponenti, mida pakub litsentsitasu eest [http://www.jaja.ee/tooted.php JaJa Arendus]
 
 
==== Eraldiseisvasse arvutisse sisselogimine ====
 
Windowsi kiipkaardiga sisselogimise tugi on aga sisse-ehitatud ainult domeenidel; eraldiseisvates arvutites see puudub. Selle lisamiseks saab kasutada [http://www.mysmartlogon.com/products/eidauthenticate.html ''EIDAuthenticate''] rakendust:
 
# Laadida alla ning käivitada paigalduspakk aadressilt http://www.mysmartlogon.com/products/eidauthenticate.html
 
# Windowsi juhtpaneelist käivitada sinna lisatud valik "''Smart Card Logon''"
 
#* Valikulise sammuna, saab siin vajutada "''Check online database for known incompatibilities''" peale, et veenduda, kas käesolev kaart toimib rakendusega. Kõik Eesti ID-kaardid peaksid sobima.
 
# Valida "''Use preconfigured card''", kuna ID-kaartidel on juba vajalikud sertifikaadid olemas.
 
# Kahest pakutavast valida esimene, isikutuvastussertifikaat. Õige sertifikaadi valikut kinnitab see, kui "''Crypto''" ning "''Encryption''" lõikudes on kõik korras—allkirjastamissertifikaadi puhul kuvatakse mõlemas vead.
 
#* Kuna isikutuvastussertifikaadi peal puuduvad rakenduse soovitud ''Extended Key Usage'' bitid, siis "''Trust''" all kuvatakse viga. Sellest mööda saamiseks tuleb vastav kontroll lihtsalt välja lülitada, vajutades "''Don't check EKU''" peale.
 
#* Kui kuvatakse veateade, et sertifikaat pole usaldatud, siis peab veenduma, et ID-kaardi väljaandja sertifikaadid oleks arvutisse paigaldatud (eriti kehtib see testkaartide korral, mille väljaandja sertifikaate ei paigaldata baastarkvara raames).
 
# Järgmisele lehele liikudes küsitakse kontoparooli, mida on vaja kasutaja sisselogimiseks. Samuti tasub võtta valik "''Launch a test after the completion of this wizard''", et veenduda seadistuse korrektsuses.
 
#* Kuigi rakendus töötab ka juhul, kui kasutajal pole parooli, ei oma see suurt mõtet, kuna siis saab ka vaevatult ilma ID-kaardita sisse logida.
 
# Edasi liikudes küsitakse kasutajalt testimiseesmärgil PIN 1 ning kui kõik õnnestus, siis on seadistamine lõpetatud.
 
 
Kui edaspidi arvuti sisselogimisekraanil sisestada rakendusele tuttav ID-kaart, siis tekib lisavalik "''Smart card credential''", millega saab pärast PIN 1 sisestamist kaardiga seotud kontosse sisse logida.
 
 
=== ID-kaardiga sisselogimine Linuxisse ===
 
ID-kaardiga sisselogimist Linuxis on võimalik teha kasutades OpenSC projekti PKCS#11 <abbr title="Pluggable Authentication Module">PAM</abbr> autentimismoodulit.<ref name="pam-pkcs11">http://www.opensc-project.org/pam_pkcs11/</ref>
 
 
Lisainfot saab [http://www.opensc-project.org/doc/pam_pkcs11/pam_pkcs11.html ametlikust dokumentatsioonist], millel ka järgnev põhineb.
 
 
==== Paigaldamine ====
 
Debiani-põhistel distributsioonidel saab vajaliku mooduli <tt>libpam-pkcs11</tt> pakist. Teistes distributsioonides võib see moodul samuti pakihalduriga kättesaadav olla.
 
 
Kui valmisehitatud pakki aga ei leidu, siis tuleb moodul ehitada lähtekoodist. Kood on kättesaadav [http://www.opensc-project.org/pam_pkcs11/#download ametlikult kodulehelt] ning ehitamine ja paigaldamine käib "tavaliselt":<ref name="pam-pkcs11-install">http://www.opensc-project.org/doc/pam_pkcs11/pam_pkcs11.html#install</ref>
 
<pre>
 
$ ./configure
 
$ make
 
# make install
 
</pre>
 
 
==== Seadistamine ====
 
Paki seadistamine:<ref name="pam-pkcs11-install" /><ref name="pam-pkcs11-howto">http://www.opensc-project.org/doc/pam_pkcs11/pam_pkcs11.html#HOWTO</ref>
 
# Luua kaust <tt>/etc/pam_pkcs11/</tt> seadistuste jaoks.
 
# Kopeerida näitekonfiguratsioon sinna kausta ning panna nimeks <tt>pam_pkcs11.conf</tt>. Debiani-põhistel distributsioonidel asub näide <tt>/usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz</tt> (sel juhul tuleb ta kindlasti ka enne lahti pakkida). Lähtekoodis asub see <tt>etc/</tt> kaustas.
 
# Luua kaust <tt>/etc/pam_pkcs11/cacerts/</tt> ning sinna laadida sisselogimiseks kasutatavate sertifikaatide väljaandjate sertifikaadid. Eesti ID-kaartide puhul on väljaandjaks SK ning sertifikaadid kättesaadavad [https://www.sk.ee/repositoorium/sk-sertifikaadid/ nende kodulehelt].
 
#* Näiteks 2012. aastal väljaantud testkaartide jaoks tuleks laadida [https://www.sk.ee/upload/files/TEST_EECCRCA.cer TEST of EE Certification Centre Root CA] ja [https://www.sk.ee/upload/files/TEST%20ESTEID-SK%202011.cer TEST of ESTEID-SK 2011].
 
# Pakiga on kaasas utiliit <tt>pkcs11_make_hash_link</tt> (lähtekoodis asub see kaustas <tt>tools/</tt>), millega saab lihtsalt luua viitu sertifikaatidele kasutades nende räsisid. See on vajalik selleks, et leida õige sertifikaat kiirelt tema räsi järgi, ent siiski säilitada inimloetavad nimed. <pre># pkcs11_make_hash_link /etc/pam_pkcs11/cacerts/</pre>
 
#* Näiteks kahe eespool välja toodud testsertifikaadi puhul on viidad vastavalt <tt>600c2b9f.0</tt> ja <tt>ecc5099c.0</tt>.
 
#* '''NB!''' <tt>pkcs11_make_hash_link</tt> on vigane ning ei pane sertifikaatide failinimesid jutumärkidesse. Seetõttu ei tohi <tt>/etc/pam_pkcs11/cacerts/</tt> kaustas olevad sertifikaadid sisaldada tühikuid ega muid erisümboleid.
 
# (Valikuline) Kui ei ole soovi iga kord sisselogides käia internetist sertifikaatide tühistusnimekirja küsimas, siis võib need kohalikku arvutisse alla laadida. Sellisel juhul tuleb aga ise vastutada nende uuendamise eest!
 
## Luua kaust <tt>/etc/pam_pkcs11/crls/</tt> ning sinna laadida sertifikaatide tühistusnimekirjad. SK omad on taaskord kättesaadavad [https://www.sk.ee/repositoorium/CRL/ nende kodulehelt].
 
## Kasutada <tt>pkcs11_make_hash_link</tt> tööriista, et luua viidad. Ka tühistusnimekirjade failinimed ei tohi sisaldada tühikuid ega muid erisümboleid.
 
# Seadistada <tt>/etc/pam_pkcs11/pam_pkcs11.conf</tt>. Üldiselt on ta hästi dokumenteeritud ning tänu selle lihtsasti muudetav. Kindlasti soovitaks kasutatava PKCS#11 mooduli <tt>cert_policy</tt> väärtuseks panna "<tt>ca,signature,crl_auto</tt>". See tagab, et kontrollitakse sertifikaadi väljaandjat, PIN'i ning ka tühistusnimekirju. Kui internetist ei soovita tühistusnimekirju alla laadida, siis viimaseks väärtuseks panna <tt>crl_offline</tt>.
 
 
==== Kasutajate kaardistamine ====
 
Kuna kaardil oleva info põhjal ei saa teada, millise kasutaja oma see on, tuleb need siduda kasutajakontodega. Selliseks kaardistamiseks on mitmeid erinevaid võimalusi ning neid on võimalik ka ise juurde luua.<ref>http://www.opensc-project.org/doc/pam_pkcs11/pam_pkcs11.html#mappers</ref>
 
 
Pakkide ja lähtekoodiga on kaasas ka mõned näitekonfiguratsioonid sertifikaadi omaniku, selle räsi või sellel oleva e-maili aadressi põhjal kasutaja leidmiseks.
 
 
Näites kasutame sertifikaadi omaniku põhjal kasutaja tuvastamist. See ei vaja uuendamist, kui kasutaja sertifikaat (ning seega ka selle räsi) muutub, ning on parem kui ainult e-maili kasutamine. Mooduliga on kaasas ka mitmed teised ning võimsamad kaardistamise moodulid (eriti võib huvi pakkuda LDAP oma), ent lihtsuse mõttes me neid ei demostreeri.
 
 
# Seadistada <tt>/etc/pam_pkcs11/pam_pkcs11.conf</tt>:
 
## Seada <tt>use_mappers</tt> väärtuseks <tt>subject, null</tt>. Siia võib lisada ka teisi mooduleid, ent näite jaoks on see minimaalne väärtus. <tt>null</tt> moodul peab alati viimane olema.
 
## Seadistada <tt>mapper subject</tt> blokk. Vaikeväärtused peaksid sobima, ent tasub üle vaadata.
 
## Seadistada <tt>mapper null</tt> blokk. See moodul kas alati keelab sisselogimise või alati õnnestub ning tagastab vaikekasutaja (nt <tt>nobody</tt>). Taaskord peaksid vaikeväärtused sobima.
 
# Luua kaardistus:
 
## Sisestada sisselogimiseks kasutatav ID-kaart ning käivitada PAM mooduliga kaasas olev <tt>pkcs11_inspect</tt> rakendus, mis kuvab kaardistuse jaoks vajaliku info. Loomulikult võib selle info ka ise välja uurida, ent nii kuvatakse see täpselt sellisel kujul nagu kaardistamiseks vaja.
 
## Luua <tt>mapper subject</tt> blokis viidatud ''mapfile'', näiteks <tt>/etc/pam_pkcs11/subject_mapping</tt>. Sinna lisada rida kujul <code>... -> <kasutaja></code>, kus "<tt>...</tt>" on <tt>pkcs11_inspect</tt> poolt antud info ning "<tt><kasutaja></tt>" kaardi omaniku kasutajanimi.
 
##* '''NB!''' Tühikud kahelpool "<tt>-></tt>" on vajalikud ning neid ei tohi ära jätta.
 
## Käivitada PAM mooduliga kaasas olev <tt>pklogin_finder</tt> rakendus. See kuvab sisestatud kaardile vastava kasutajanime ning aitab veenduda, et kaardistamine õnnestus.
 
 
Näiteks test-ID-kaardiga näeks <tt>subject_mapping</tt> välja:
 
<pre>
 
# Mapping file for Certificate Subject
 
# format: Certificate Subject -> login
 
/C=EE/O=ESTEID/OU=authentication/CN=M\xC3\x84NNIK,MARI-LIIS,47101010033/SN=M\xC3\x84NNIK/GN=MARI-LIIS/serialNumber=47101010033 -> mariliis
 
</pre>
 
 
Lisaabi kaardistuste loomiseks leiab [http://www.gooze.eu/howto/gnu-linux-smartcard-logon-using-pam-pkcs11 sellest juhendist].
 
 
==== PAM'i seadistamine ====
 
Et moodul kasutusele võtta, tuleb ta PAM'is ära seadistada. See on lihtsustatud <tt>pam-auth-update</tt> vahenditega.<ref>pam-auth-update(8) ''manpage'' Hurricane Electric lehel. http://man.he.net/man8/pam-auth-update</ref><ref>http://www.gooze.eu/howto/gnu-linux-smartcard-logon-using-pam-pkcs11/configuring-pam-pkcs11</ref>
 
 
Esiteks lisada <tt>/usr/share/pam-configs/</tt> kausta uus fail järgmise sisuga (faili nimi pole oluline, võib olla näitaks "pkcs11"):
 
<pre>
 
Name: PKCS#11 authentication
 
Default: no
 
Priority: 800
 
Auth-Type: Primary
 
Auth: sufficient pam_pkcs11.so
 
</pre>
 
* ''Name'' - mooduli nimi.
 
* ''Default'' - kas moodul on vaikimisi kasutusel.
 
* ''Priority'' - kasutatakse moodulite järjestamiseks.
 
* ''Auth-Type'' - mooduli tüüp.
 
* ''Auth'' - rida, mis lisatakse PAM autentimismoodulite konfiguratsioonifaili.
 
 
'''NB!''' Et vältida end arvutist välja lukustamist tuleb enne jätkamist mõnes teises terminalis juurkasutajana sisse logida. Kui nüüd midagi valesti läheb, siis saab seda terminali kasutada, et viga kõrvaldada või süsteem taastada.
 
 
Järgmisena käivitada juurkasutaja õigustes käsk <tt>pam-auth-update</tt>. Seepeale kuvatakse dialoog, kust saab PKCS#11 mooduli lubada (kui ta pole juba vaikimisi lubatud). Valides "''OK''" rakendatakse muudatused ning nüüd saab (loodetavasti) kasutada ID-kaarti arvutisse sisse logimiseks. Seda saab kohe katsetada <tt>su</tt> või <tt>sudo</tt> käsuga.
 
 
Kui midagi läks valesti, siis kasutada eespool avatud tagavara terminali - sellega saab <tt>pam-auth-update</tt> uuesti käivitada, et vigane moodul keelata.
 
 
= 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.
 
 
Kliendikaardina kasutamine tähendab eelkõige seda, et ID-kaardilt loetakse elektrooniliselt välja isikuandmete fail ja salvestatakse kliendibaasi (või kontrollitakse kaarti selle vastu).
 
 
Võib väita, et iga ID-kaarti kliendikaardina kasutada tahtev ettevõtte loob selleks tarbeks oma lahenduse (s.t puudub üks universaalne teek/plugin/rakendus, mis oleks ühtemoodi kasutuses Apollos, Rademaris ja Cinamonis). Seega arendaja, kes soovib niisugust lahendust realiseerida, peaks eelkõige juhinduma jaotisest [[#Isikuandmete faili kasutamine 2|Isikuandmete faili kasutamine]].
 
 
== 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.
 
 
Tööpõhimõte on sellistel süsteemidel tavaliselt ühesugune: kiipkaardilugeja loeb lugejasse asetatud ID-kaardilt unikaalse kaardinumbri ja edastab selle läbipääsu- ehk pääslasüsteemile. Juhul kui konkreetse kaardi number on lisatud lubatud numbrite andmebaasi, pääseb inimene näiteks lukustatud uksest sisse. Kui aga numbrit andmebaasis ei ole, siis kaardi kasutajat läbi ei lubata.
 
 
Leidub ka vastuargumente ID-kaardi kasutamisele:
 
* Kuna ID-kaart on kontaktkiibiga, siis tihedal kasutusel (nt paljude töötajatega büroo) kuluvad mitte üksnes kaardid, vaid ka kaardilugejad (vähemalt sellised, kus lugemispea vajutatakse vastu kiipi). Seetõttu kasutatakse sellistes süsteemides harilikult kontaktivabu (nt RFID-tehnoloogiaga) pääsutõendeid.
 
* ID-kaardi andmeedastuskiirus on 9600 b/s ning kaardilt andmete lugemiseks kulub umbes sekund (lisandub andmete töötlemisaeg). Väga tiheda läbikäimisega kohtades võib see osutuda liiga aeglaseks.
 
* Kui ID-kaart kaob, on läbipääsusüsteem kaardiomaniku jaoks tõkestatud mitmeks päevaks uue kaardi saamiseni (erinevalt magnetkaardist, mille saab n-ö pakist võtta ja mõne minutiga valmendada).
 
 
Läbipääsusüsteeme pakkuvaid ettevõtteid on Eestis palju, kuid enamik kasutab pääsutõendina magnetkaarti; ID-kaardi tugi on kirjutamishetkel veel vähestel:
 
* [http://www.telegrupp.ee/tooted-ja-teenused/labipaasususteemid Telegrupp]
 
* [http://www.ektaco.ee/labipaasud Ektaco] - 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'''.
 
* '''ndigidoc''' - .NET teek krüpteerimiseks ja dekrüpteerimiseks. Hetkel toetab ainult tarkvaralisi võtmepaare, s.t ID-kaarti kasutada ei saa; saaja salajane võti peab olema kõvakettal [http://www.rsa.com/rsalabs/node.asp?id=2138 PKCS#12] formaadis konteineris.<br />Toetatud formaadid: '''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
 
|-
 
|ndigidoc
 
|
 
|
 
|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.
 
 
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>
 
 
== Sertifikaatide kehtivuse kontroll ==
 
Sertifikaadi kehtivust tuleb eraldi kontrollida ka väljaandja käest; ei piisa vaid sertifikaadil oleva kehtivuse algus- ja lõppkuupäeva kontrollist, kuna sertifikaadi väljaandja võib selle teatud põhjustel varem kehtetuks tunnistada.
 
 
Kehtivuse kontrolliks on kaks valikut:
 
* Tühistusnimekiri (''Certificate Revocation List'') ehk '''CRL''', mis on perioodiliselt allalaetav nimekiri kõikidest kehtetuks tunnistatud sertifikaatidest. AS Sertifitseerimiskeskuse tühistusnimekirjade kasutamine on tasuta.
 
* Kehtivuskinnitus (''Online Certificate Status Protocol'') ehk '''OCSP''', mis esitab päringu sertifikaadi kehtivuse kohta OCSP-serverile (edaspidi responder), mis annab vastuse reaalajas. AS Sertifitseerimiskeskuse kehtivuskinnituse teenuse kasutamine on '''tasuline'''.<ref>http://www.sk.ee/teenused/kehtivuskinnituse-teenus/</ref>
 
** Autentimise OCSP on piloteerimisfaasis tasuta, edaspidi tasuline ja IP-põhine ning eeldab lepingu sõlmimist SK-ga. Vt http://www.sk.ee/teenused/kehtivuskinnituse-teenus/autentimise-ocsp/
 
 
Kuigi tühistusnimekirjade kasutamine on tasuta ning neil on eelis käideldavuse osas (kui CRL-serverid muutuvad kättesaadamatuks, siis on ikkagi teada viimane kord allalaetud seis), ei ole nendes olev info reaalajaline esitus sertifikaatide kehtivusest. Värskeima kehtivusinfo saamiseks tuleb kasutada kehtivuskinnituse teenust, mis aga on tasuline ning responderi mitte-kättesaadavuse korral puudub igasugune info sertifikaatide kohta (ka mitte mõni hetk tagasi kehtinud). Iga veebiteenuse korral on vaja eraldi uurida nõudeid ning otsustada, kumb sobib paremini.
 
 
'''Tähelepanu:''' Tarkvaraarendajad on mõnikord kasutanud isikutuvastamise juures LDAP-teenust sertifikaatide kehtivuskontrolli vahendina. '''See on teenuse väärkasutus ja sellisena keelatud, ''' isegi kui see (mõnikord) annab korrektseid tulemusi.
 
 
=== SSL/TLS seansis ===
 
Eraldi teema on SSL/TLS seansi alguses kliendi antud sertifikaadi kehtivuse kontrollimine, kuna selle peaks läbi viima veebiserver, mitte -rakendus. Käesolev juhend käsitleb vaid [http://httpd.apache.org/ Apache httpd] ning [http://www.iis.net/ Microsoft IIS] servereid, kuigi see jutt võib rakenduda ka teistele.
 
 
Tühistusnimekirjade kasutamise korral töötab kõik hästi ning veebiserverid on suutelised neid iseseisvalt kasutama. Serveri konfigureerimiseks vaata [[#Veebiserver|näiteseadistust]].
 
 
Kehtivuskinnituse kasutamisel on aga mõned lisatingimused, mida käsitlevad järgmised peatükid.
 
 
==== OCSP rakenduse tasemel ====
 
Kuigi nii Apache-l kui ka IIS-il on sisseehitatud vahendid OCSP kehtivuskinnituse küsimiseks, soovivad need, et vastuses oleks kaasas ka OCSP responderi sertifikaat. Sertifikaadi lisamine on aga valikuline ning Sertifitseerimiskeskuse OCSP teenus seda ei tee. Seetõttu ei ole võimalik OCSP kehtivuskinnitust küsida vaikimisi vahenditega. Olemasolevatele seansihaldusvahenditele tuleb lisada tugi OCSP kehtivuskinnituse küsimiseks, et uue seansi alustades saaks veenduda, et kasutaja antud sertifikaat ikkagi kehtib.
 
 
Üks võimalus kehtivuse kontrolliks on kasutada [[#DigiDocService|DigiDocService]] meetodit <tt>CheckCertificate</tt>, mis tagastab parameetriks antud sertifikaadi OCSP staatuse. See on üks lihtsamaid lahendusi, ent nõuab ligipääsu DigiDocService-le (mis on tasuline) ning et veebirakenduses on vahendid SOAP-serveriga suhtlemiseks.
 
 
Alati on aga võimalik kasutada alternatiivseid vahendeid, mis suudavad suhelda Sertifitseerimiskeskuse OCSP-teenusega ning ei vaja selleks DigiDocService'i abi; neile tuleb lihtsalt responderi sertifikaat käsitsi ette anda.
 
 
Näitekoodi DigiDocService-ga sertifikaadi kehtivuse kontrolliks leiab [[#Veebivorm|veebivormist]] ja OpenSSL-i kasutavaks alternatiiviks [http://id.ee/index.php?id=30338 ID.ee näiterakendusest].
 
 
==== Autentimise OCSP ====
 
Sertifitseerimiskeskus pakub lisaks "tavalisele" OCSP teenusele ka autentimise OCSP teenust: see on mõeldud kasutamiseks süsteemidesse sisselogimisel. Autentimise OCSP ei kanna kehtivuskinnituse päringuid turvalogisse, mistõttu puudub hilisem tõestus sel hetkel kehtivuse kohta. Samuti on hinnakiri teistsuguse ülesehitusega: tasuma peab erinevate sertifikaatide eest, mille olekut päritakse, mitte päringute hulga eest. Tänu selle on ta sobilik väikese hulga kasutajatega süsteemide jaoks, ent mitte avalike veebiteenuste jaoks.<ref>https://www.sk.ee/teenused/kehtivuskinnituse-teenus/autentimise-ocsp/</ref>
 
 
Autentimise OCSP tagastab oma vastustes ka responderi sertifikaadi, nii et seda saab kasutada Apache ja IIS-i sisseehitatud OCSP-kehtivuskontrolli vahenditega. Seda tasub teha aga vaid tingimusel, kui eelmises lõigus mainitud hinnakirja eripärad on vastuvõetavad, kuna mitme unikaalse kasutaja korral võib teenus osutuda kallimaks tavalisest OCSP-st.
 
 
Autentimise OCSP-l puudub ka test-teenus, mistõttu tuleb arendamisel/testimisel saata päringuid ''live''-responderile.
 
 
== 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 toimub vastavalt allolevale (lihtsustatud) protokollile:
 
# 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 nonss (''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õib eeldada, et kasutaja on tõesti sertifikaadi omanik - ja kuna sertifikaadil on isiku nimi ning isikukood, siis on ka teada omaniku identiteet. Kuigi tegelikult võib olla kasutaja lihtsalt keegi, kellel on sertifikaadi omaniku kaart ning teab selle PIN1, ei saa seda enam kuidagi kontrollida.
 
 
Isikutuvastamise näitekoodi näeb [[#Isikutuvastuse_rakendus|eraldiseisva rakendusena]] ning ka [[#Avalduste_rakendus|avalduste kasutusmalli]] koosseisus.
 
 
=== Veebis ===
 
Veebis toimub isiku tuvastamine SSL/TLS käepigistuse (''handshake'') käigus, kus kontrollitakse ka kliendi sertifikaati. Protokolli 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, kuid nonsi (''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/TLS 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 algatada 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 hiljem 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, tuleb luua kaks eraldiseisvat ühenduspunkti: esimene, mis teeb "puhast" SSL/TLS'i, ja teine, mis küsib kasutaja sertifikaati.
 
 
Kui isikut tuvastav server on eraldiseisvas ü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 virtuaalhostidest ei piisa, kuna enne luuakse SSL/TLS seanss ning alles siis vaadatakse, millist virtuaalhosti kasutada.
 
 
== Digitaalne allkirjastamine ==
 
Uusi digitaalseid allkirju luuakse kahes erinevas vormingus: [[#DDOC|DIGIDOC-XML]] ja [[#BDOC|BDOC]]. Esimest neist toetavad jdigidoc, libdigidoc, libdigidoccom; teist jdigidoc ja libdigidocpp (plaanitavalt ka .NET teek). Siit on näha, et ainus teek, mis mõlemat formaati toetab on jdigidoc, mistõttu soovitatakse seda kasutada ka uute arenduste tegemisel.<ref name="digidoc-teegid" /> Ka DigiDocService toetab vaid DDOC vorminguid.<ref name="digidocservice" />
 
 
Kuigi vorming erineb, on nii teekide kui ka DigiDocService puhul lähenemine sama:
 
# luuakse konteiner,
 
# lisatakse allkirjastatavad failid,
 
# üle andmete genereeritakse räsi,
 
# räsi allkirjastatakse osapoolte salajaste võtmetega,
 
# allkirjastaja sertifikaadile 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.
 
# Pärast 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_kasutusmall|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 toimub krüpteerimine vastavalt standardis ''[http://www.w3.org/TR/xmlenc-core/ XML Encryption Syntax and Processing]'' esitatud põhimõtetele, 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), andes tulemuseks CDOC-konteineri. 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 teegid libdigidoc (ja seega ka libdigidoccom) ning jdigidoc. DigiDocService-teenust pole võimalik krüpteerimiseks kasutada, aga see poleks ka mõistlik, sest sel juhul tuleks salastatavad andmed enne saata SK-le. Krüpteerimist demonstreeritakse [[#Avaldusi_t.C3.B6.C3.B6tlev_teenus|avaldusi töötlevas teenuses]] ning dekrüpteerimist [[#Avalduste_rakendus|avalduste rakenduses]].
 
 
== Mobiil-ID ==
 
[[#Isikutuvastamine|Isikutuvastamise]] ja [[#Digitaalne_allkirjastamine|digitaalse allkirjastamise]] korral on võimalik kasutada ka [[#Mobiil-ID|Mobiil-ID]] abi. Protsessid on samad nagu kirjeldatud vastavates peatükkides, ent allkiri räsile või nonsile antakse läbi Mobiil-ID.
 
 
Mobiil-ID on kasutatav ainult läbi [[#DigiDocService|DigiDocService]]'i—seega võib tekkida vajadus seni sellest sõltumatule teenusele DigiDocService tugi lisada. Samuti ollakse sellega kaasnevalt sunnitud usaldama teenusepakkujat. Vastutasuks on arendamise lihtsus—implementatsiooni detailid ning mobiilioperaatoritega suhtlemine on arendaja eest peidetud ning Mobiil-ID kasutamiseks piisab mõne parameetri andmisest vastavale teenusele.
 
 
Mobiil-ID protokoll on asünkroonne, s.t esitatud päringule ei tule kohe vastus, vaid seda on vaja käia hiljem eraldi küsimas; kuna Mobiil-ID päringute käigus peavad kasutajad koode verifitseerima ning PIN-e sisestama, mis võib võtta omajagu aega, siis on otstarbekas võrguühenduse ressursid vahepeal vabastada. Seega kutsutakse esiteks välja päringumeetod ning seejärel käiakse perioodiliselt olekut kontrollimas.<ref name="digidocservice-spec-est">http://www.sk.ee/upload/files/DigiDocService_spec_est.pdf</ref><ref name="digidocservice-spec-eng">http://www.sk.ee/upload/files/DigiDocService_spec_eng.pdf</ref>
 
 
Vajalikud DigiDocService meetodid on:<ref name="digidocservice-spec-est" /><ref name="digidocservice-spec-eng" />
 
* <tt>MobileAuthenticate/GetMobileAuthenticateStatus</tt> - Mobiil-ID abil autentimiseks.
 
* <tt>MobileCreateSignature/GetMobileCreateSignatureStatus</tt> - Loob allkirjastatud dokumendi uues sessioonis.
 
* <tt>MobileSign/GetStatusInfo</tt> - Allkirjastab olemasoleva sessiooni dokumendid.
 
* <tt>GetMobileCertificate</tt> - Mobiil-ID teenuse olemasolu ja sertifikaatide pärimiseks. Kuna siin ei ole vaja kasutaja sekkumist, siis see operatsioon tehakse sünkroonselt.
 
 
Mobiil-ID ülevaadet näeb [[#Mobiil-ID|eID lühitutvustuses]] ning kasutamise näiteid [[#Mobiil-ID_3|avalduste kasutusmallis]].
 
 
=== Testnumbrid ===
 
OpenXAdES-e test-DigiDocService-teenuses on võimalik kasutada testtelefoninumbreid, et vältida mobiilivõrkude kasutamist arendamisel. Kasutades testteenust, peab rakenduse nimeks (meetodite parameeter <tt>ServiceName</tt>) alati panema "Testimine".<ref>http://www.openxades.org/dds_test_phone_numbers.html</ref>
 
 
{|class="wikitable"
 
!Number
 
!Isikukood
 
!Riik
 
!Kirjeldus
 
!Päringu esitamine
 
!Oleku kontroll
 
|-
 
|37200001     
 
|38002240211
 
|EE
 
|Mobiil-ID ei ole aktiveeritud
 
|viga 303
 
|
 
|-
 
|37200002     
 
|14212128020
 
|EE
 
|Mobiil-ID funktsionaalsus ei ole veel kasutatav, proovi mõne aja pärast uuesti
 
|OK
 
|MID_NOT_READY
 
|-
 
|37200003
 
|14212128021
 
|EE
 
|Päringu saatmine telefonile ebaõnnestus
 
|OK
 
|SENDING_ERROR
 
|-
 
|37200004
 
|14212128022
 
|EE
 
|Kasutaja katkestas
 
|OK
 
|USER_CANCEL
 
|-
 
|37200005
 
|14212128023
 
|EE
 
|Teenuse sisemine viga
 
|OK
 
|INTERNAL_ERROR
 
|-
 
|37200006
 
|14212128024
 
|EE
 
|SIM rakenduse viga
 
|OK
 
|SIM_ERROR
 
|-
 
|37200007     
 
|14212128025
 
|EE
 
|Edukas autentimine/allkirjastamine
 
|OK
 
|USER_AUTHENTICATED
 
|-
 
|37200008
 
|14212128026
 
|EE
 
|Telefon ei ole levis
 
|OK
 
|PHONE_ABSENT
 
|-
 
|37200009
 
|14212128027
 
|EE
 
|Mobiil-ID sertifikaat on aegunud või kehtetu
 
|viga 302
 
|
 
|}
 
 
Alternatiivina võib enda Mobiil-ID-d toetava telefoninumbri [http://www.openxades.org/ddsregisteruser/ OpenXAdES-es registreerida] ning testimisel seda kasutada.
 
 
== 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. Veebirakendus kasutaja isikuandmeid lugeda ei saa, kuna uus veebilehitseja plugin seda ei võimalda.
 
 
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 käsitsi saata sõnumit <tt>00 C0 00 00 YY</tt>.
 
 
Näidet isikuandmete lugemisest on võimalik näha [[#Avalduste rakendus|avalduste rakenduses]].
 
 
 
== eID abirakendused: eidenv, cdigidoc, digidoc-tool, jdigidoc ==
 
=== 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. <tt>eidenv</tt> lähtekood on saadaval aadressil: http://www.opensc-project.org/opensc/browser/OpenSC/src/tools/eidenv.c
 
 
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 see 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>
 
 
== Tehnilised märkused ja tähelepanekud ==
 
=== 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.
 
 
''TODO Mingi hetk tuli koos libccid pakiga udev reegel, mis teeb selle automaatselt.''
 
 
=== 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>
 
 
= 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 tundlikku 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.
 
 
Samas on ka eraldi kliendikaardil arvestatavad kulud (kujundus, toorikud, kodeerimine, trükkimine, piisava laoseisu hoidmine ja jälgimine), mida ID-kaardil pole.
 
 
== Abiks IT-arenduste tellijale ==
 
''TODO: Siin anname orienteerivad hinnangud inimtöötundides mitmesuguste eID-põhiste arenduste läbiviimiseks (nt "allkirjastamisteenuse juurutamine Java-platvormil", "Java-rakenduse juurutamine veebikeskkonnas"), backend-mootori või süsteemi funktsioonide tasemel.''
 
 
= Näiterakendused =
 
== Sõltuvused ==
 
Näitekood on loodud platvormil '''Ubuntu 11.10''' ehk ''Oneiric Ocelot'' (64-bit), 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
 
 
Lisaks neile tuleb Java-rakenduste käitamiseks kasutada järgmisi väliseid teeke:
 
* [http://id.ee/index.php?id=30393 JDigiDoc] 3.6.0.157
 
 
'''Märkus:''' Tegu on arendamisel kasutatud versioonidega teekidest. See tähendab, et lähtekood võib kompileeruda ka vanemate teekidega ning samas võivad uuemad teegid seda lihtsustada (nt mugavama API mõttes). 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 serverrakendustes.
 
 
==== Java konfiguratsioonifail ====
 
JDigiDoc-teek kasutab faili [http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load%28java.io.Reader%29 Properties] konfiguratsiooni haldamiseks. Failist loetavad võtmed on esitatud ''jdigidoc'' teegi dokumentatsiooni lisas 1.<ref name="jdigidoc-doc" />
 
 
Olulised 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 [[#DigiDocService|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<ref>http://php.net/manual/en/class.soapclient.php</ref>, 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 =====
 
[[Meedia:swig.tar.gz|Vahekihi lähtekood]]
 
 
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>
 
 
===== libdigidoc konfiguratsioon =====
 
Kuna SWIG-mähkur kasutab libdigidoc teeki, siis selle konfigureerimiseks tuleb muuta ''digidoc.conf'' faili. Vaikeväärtused enamasti sobivad, ent seal on üks oluline rida: '''DIGIDOC_OCSP_URL''' määrab kelle poole pöördutakse OCSP-päringutega. Testimise jaoks on vaja selle väärtuseks seada http://www.openxades.org/cgi-bin/ocsp.cgi.
 
 
'''NB!''' Ära unusta seda tagasi muuta, kui soovid libdigidoc teegiga esitada mitte-test päringuid.
 
 
=== JavaScript ===
 
Erinevate operatsioonisüsteemide ja veebilehtisejate jaoks on tehtud mitmeid allkirjastamise pluginaid, ent nende API erineb mõnevõrra. Et veebirakendustes allkirjastamise toe lisamine lihtsam oleks, loodi JavaScripti teek, mis pakub ühtset liidest kõigi pluginatega suhtlemiseks.<ref name="javascript-teek">JavaScripti klienditeek (idCard.js) veebis allkirjastamise lihtsustamiseks. http://id.ee/index.php?id=30369</ref><ref name="javascript-allkirjastamine">Veebilehel allkirjastamine ID-kaardi ja digi-ID'ga. http://id.ee/index.php?id=30279</ref>
 
 
Teegi liides võimaldab:
 
* laadida operatsioonisüsteemi ja veebilehitseja jaoks parim paigaldatud plugin,
 
* lugeda ID-kaardilt kasutaja allkirjastamise sertifikaati ja
 
* allkirjastada etteantud räsi kasutaja ID-kaardiga.
 
 
Teegi veateated on eesti, inglise, leedu ja vene keeles. Soovitud keele valimiseks tuleb <code>loadSigningPlugin()</code> meetodi väärtuseks anda vastavalt "est", "eng", "lit" või "rus".
 
 
Kõike kolme kasutatakse [[#Veebivorm|avalduste esitamise veebivormis]] ning sealt on kättesaadav ka näitekood.
 
 
Teek koos juurdekuuluva dokumentatsiooniga on kättesaadav aadressilt: http://id.ee/index.php?id=30369
 
 
Lisaks loodi koos teegiga ka uus universaalne plugin, mida levitatakse ID-kaardi baastarkvara kooseseisus ning soovitatakse edaspidi kasutada, kuna vanem Java applet enam uuendusi ei saa.<ref name="javascript-allkirjastamine" />
 
 
== Avalduste esitamise kasutusmall ==
 
[[Pilt:kasutusmall-osapooled.png|thumb|Kasutusmalli osapooled]]
 
Selleks et demonstreerida mitmesuguseid e-ID võimalusi ning nende omavahelist seostamist, 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 ===
 
Veebiserveriks on kas [http://httpd.apache.org/ Apache httpd] või [http://www.iis.net/ Microsoft IIS] (ilmselgelt võib ka mõni muu olla, ent neid ei käsitleta). Mõlemal juhul on vaja paigaldada PHP tugi ning server konfigureerida kasutama HTTPS-i. Kõik see käib tavaliselt ning puudub e-ID spetsiifika.
 
 
Lisaks on ID-kaardiga sisselogimise jaoks vaja seadistada server küsima vastaval leheküljel kasutajalt tema sertifikaati—juhendid selleks leiab [http://id.ee/index.php?id=30268 ID.ee lehelt]. Käesolevas kasutusmallis küsitakse ID-kaarti vaid [[#Veebivorm|veebivormil]], nii et juhend tuleb läbida vaid selle rakenduse jaoks. Kui kõik rakendused jooksevad sama veebiserveri peal, siis tuleb sertifikaadi küsimine seadistada ainult veebivormi jaoks: kindlasti ei tohi sertifikaati küsida [[#Avaldusi_t.C3.B6.C3.B6tlev_teenus|avaldusi töötlev teenus]], muidu ei saa teised rakendused sellele avaldusi esitada.
 
 
Nende juhendite järgi seadistatud serverid kontrollivad kasutajate sertifikaatide kehtivust ainult tühistusnimekirjade (CRL, ''Certificate Revocation List'') abil—tasuks lisada ka kehtivuskinnituse (OCSP, ''Online Certificate Status Protocol'') küsimine. Aga nagu [[#SSL.2FTLS_seansis|sertifikaatide kehtivuse kontrolli]] juures mainitud, siis seda veebiserveris niisama lihtsalt teha ei saa.
 
 
Kuid nagu juba mainitud, siis kliendi sertifikaati kasutame me SSL/TLS seansis ainult [[#Veebivorm|veebivormi]] juures, kus meil on juba DigiDocService tugi olemas: seega saame ka kehtivuskinnitust läbi selle teenuse küsida. [[#Mobiil-ID_3|Mobiil-ID veebivormis]] teeb DigiDocService kehtivuse kontrolli juba meie eest ära, nii et seal pole seda eraldi vaja teha.
 
 
=== Veebivorm ===
 
[[Pilt:kasutusmall-veebivorm.png|thumb|Veebivormi järgnevusskeem]]
 
[[Meedia:webform.tar.gz|Veebivormi lähtekood]]
 
 
Veebivorm on kirjutatud PHP's ning kasutab konteinerite koostamiseks ja allkirjastamiseks DigiDocService-teenust. Lähemalt PHP kasutamise kohta loe [[#PHP|keelte alt]].
 
 
# [[#Veebiserver|Veebiserver]] viib SSL/TLS käepigistuse käigus läbi [[#Isikutuvastamine|isikutuvastuse]].
 
# Rakendus kasutab DigiDocService-teenust, et kontrollida kliendisertifikaadi kehtivust. Vt [[#Veebiserver|veebiserverite peatükki]], et lugeda, miks seda tehakse niimoodi.
 
# Kasutajale kuvatakse veebivorm, mis koosneb neljast lahtrist. Kolm neist (eesnimi, perenimi ja isikukood) on eeltäidetud isiku tuvastamisel saadud andmetega.
 
# Vormi esitamisel saadetakse serverile 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.
 
# DigiDocService-teenusega 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.
 
# Valmistutakse ette konteineri allkirjastamiseks: DigiDocService-teenusele saadetakse kasutaja sertifikaat ning allkirja metainfo s.t roll ja asukoht (<tt>PrepareSignature</tt>). Näitekoodis kasutatakse metainfoks konstante, kuna nende kasutajalt küsimine on triviaalne ning ei vaja eraldi näidet. Teenuselt saadakse vastuseks konteineri räsi, mille klient peab allkirjastama.
 
# 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|JavaScript]] teegile, mis hangib kasutajalt räsile allkirja.
 
# Allkiri saadetakse järgmise päringuga tagasi veebivormile, mis viib allkirjastamise lõpuni (<tt>FinalizeSignature</tt>), laeb allkirjastatud konteineri alla (<tt>GetSignedDoc</tt>) ning lõpetab seansi (<tt>CloseSession</tt>).
 
# Allalaetud konteineris asendatakse failide räsid nende päris sisuga, mis enne kettale salvestati, ja saadetakse avaldusi töötlevale teenusele.
 
# Allalaetud konteiner ning asutuselt saadud vastus salvestatakse kettale, kust kasutaja saab neid alla laadida.
 
 
Pärast veebivormi paigaldamist tuleb veenduda, et sellel oleks enda kaustas kirjutamisõigus, ning muuta <tt>claims.php</tt> algust: seal olev <tt>require_once</tt> käsk peab viitama avaldusi töötlevas teenuses olevale failile <tt>DigiDoc.class.php</tt>. Kui on soov veebivorm ja avaldusi töötlev teenus eraldi masinatesse paigaldada, siis tuleb ka viidatud fail avaldusi töötleva teenuse lähtekoodist veebivormi ümber kopeerida.
 
 
==== Mobiil-ID ====
 
[[Pilt:kasutusmall-veebivorm-mobiil.png|thumb|Mobiil-ID veebivormi järgnevusskeem. Sinistes kastides olevaid lõike korratakse, kuni saadakse päringu tulemus. Skeemilt puudub mobiilioperaatori suhtlus kasutajaga, kuna see pole arenduse seisukohalt oluline.]]
 
[[Meedia:webform-mobile.tar.gz|Veebivormi lähtekood]]
 
 
Variant veebivormist, mis kasutab Mobiil-ID-d. Üldjoontes on tegu samasuguse rakendusega nagu [[#Veebivorm|veebivorm]] (vt sealt ka paigaldamisnõudeid), kahe olulise erinevusega.
 
 
Esiteks ei küsita SSL/TLS käepigistuse käigus kliendi sertifikaati—sertifikaat on Mobiil-ID SIM-i peal ning kasutaja veebilehitsejal puudub juurdepääs sellele. Selle asemel kasutame DigiDocService meetodit <tt>MobileAuthenticate</tt> autentimispäringu esitamiseks. Meetodiparameetriteks anname kasutaja telefoninumbri ning keele-eelistuse. Peale seda kutsume iga viie sekundi tagant välja meetodi <tt>GetMobileAuthenticateStatus</tt>, kuni see tagastab autentimise tulemuse. Meetod tagastab ka kasutaja sertifikaadi, mille kehtivust on juba kontrollitud.
 
 
Teiseks, dokumendi allkirjastamiseks ei kasutata veebilehitseja pluginat, vaid Mobiil-ID-d. Selle tulemusena ei kutsu me välja meetodeid <tt>PrepareSignature</tt> ja <tt>FinalizeSignature</tt>, vaid <tt>MobileSign</tt> ning <tt>GetStatusInfo</tt>: esimene saadab allkirjastamispäringu ning teist kontrollime iga viie sekundi tagant, kuni saame tulemuse. Ülejäänud sammud, mis on vajalikud dokumentide räsimiseks, konteinerite koostamiseks ning metainfo määramiseks, on samad, mis veebivormi korral.
 
 
Mõlema olekukontrolli meetodi intervalliks valitud viis sekundit on hea testimise korral, kus testnumbrid vastavad kiirelt. Tootekeskkonnas kulub kasutajatel Mobiil-ID päringule vastamiseks oluliselt kauem, mistõttu võib ka intervalli suurendada (eriti just ooteaega enne esimese päringu tegemist).
 
 
''Märkus:'' Avaldusi töötlevalt teenuselt saadud vastus on krüpteeritud ning ainsaks vastuvõtjaks on pandud kasutatud Mobiil-ID isikutuvastussertifikaat—Mobiil-ID aga krüpteerimist ei toeta, mistõttu ei ole ka võimalik seda vastust lugeda. Ent vastuse sisu ei oma mingit tähtsust—see, et vastus üldse tagastati, näitab, et avaldus oli korrektne ning selle saatmine õnnestus.
 
 
=== Avaldusi töötlev teenus ===
 
[[Pilt:kasutusmall-teenus.png|thumb|Avaldusi töötleva teenuse järgnevusskeem]]
 
[[Meedia:claim-service.tar.gz|Teenuse lähtekood]] (vajab töötamiseks ka [[#Laiendi_kompileerimine|SWIG-mähkurit]])
 
 
Avaldusi töötlev teenus on kirjutatud PHP-s ning kasutab avaldusel oleva allkirja kontrolliks DigiDocService-teenust. Vastuse allkirjastamiseks ja krüpteerimiseks kasutatakse [[#SWIG|SWIG]]-mähkurit libdigidoc-teegi ümber.
 
 
# Teenusele esitatakse POST-päring, millel on kaks kohustuslikku välja: '''<tt>claim</tt>''' ja '''<tt>cert</tt>'''.
 
#* <tt>cert</tt> peab sisaldama vastuse saaja isikutuvastamise sertifikaati base64 kodeeritud [http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER]-kujul (tegu pole PEM'iga, kuna puuduvad BEGIN ja END read),
 
#* <tt>claim</tt> peab sisaldama allkirjastatud avaldust. Faili MIME-tüüp peab olema kas <tt>application/x-ddoc</tt> või <tt>application/vnd.bdoc-*</tt>.
 
# Teenus kontrollib, kas üleslaadimine õnnestus ning kas avaldusel olev allkiri kehtib. Kehtivuse kontrolliks saadetakse avaldus DigiDocService-teenusele, kasutades päringut <tt>StartSession</tt>, kus lipp  <tt>bHoldSession</tt> on pandud eitavaks, et ühendus kohe suletaks. Vastuseks saadab DigiDocService allkirja staatuse.
 
#* Taaskord, DigiDocService-teenusele ei saadeta terve avaldus, vaid andmefailid asendatakse nende räsidega.
 
# Avalduse seest loetakse selles sisalduvad andmefailid ning need kirjutatakse kettale.
 
# Kui allkiri on kehtiv, siis luuakse vastus. Selle sisu pole meie jaoks oluline, nii et tegu on konstantse sõnega.
 
# 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> - NB! Siinkohal oleks otstarbekam konteiner mälus alles hoida, kuna ta loetakse kohe kettalt tagasi - seda aga hetkel ei saa teha, kuna teegifunktsioon <tt>createSignedDocInMemory</tt> toodab vigast XML-i, nii et me peame kasutama kettale kirjutavat versiooni).
 
# 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> - NB! Taaskord oleks parem konteinerit kettale mitte kirjutada, ent mälus konteineri XML kujule teisendamine on teegis meie eest peidetud ning ainus võimalus XML saamiseks on faili kirjutamine), selle mälu vabastatakse (<tt>free_encryption_container</tt>) ning vastus saadetakse esialgse päringu tegijale.
 
 
Teenust paigaldades tuleb veenduda, et sellel oleks enda kaustas kirjutamisõigus, ning kohendada <tt>conf.php</tt> faili, kus minimaalselt tuleb ära muuta <tt>DD_RESPONSE_SERVER</tt> aadress (seda kasutab [[#Veebivorm|veebivorm]] ning selle väärtuseks peab olema avaldusi töötleva teenuse aadress).
 
 
==== Digitaalse templi seadistamine ====
 
Selleks, et teenus kasutaks vastuse allkirjastamiseks digitaalset templit ning mitte ID-kaarti, on vaja '''libdigidoc versiooni 3.7''' või uuemat ning tuleb paigaldada digitaalse templi ohjurid. Samuti tuleb teha mõned muudatused libdigidoc-teegi seadete failis.
 
 
Ohjurite paigaldamiseks vaata peatükki [[#eToken-kr.C3.BCptopulga_kasutamine|krüptopulga kasutamine]].
 
 
libdigidoc-teegi seadete faili leiab vaikimisi <tt>%PROGRAMFILES%\Estonian ID card\digidoc.ini</tt> (Windows) või <tt>/etc/digidoc.conf</tt> (Linux).
 
 
Seadete failis peaksid leiduma järgmised read (mooduli asukoht võib erineda):
 
<pre>
 
DIGIDOC_DEFAULT_DRIVER=1
 
DIGIDOC_DRIVERS=1
 
DIGIDOC_DRIVER_1_NAME=OpenSC
 
DIGIDOC_DRIVER_1_DESC=OpenSC projects PKCS#11 driver
 
DIGIDOC_DRIVER_1_FILE=/usr/lib/opensc-pkcs11.so
 
</pre>
 
 
Siinkohal on vaja kasutada OpenSC mooduli asemel vastpaigaldatud SafeNet eToken oma. Selleks saab lihtsalt asendada olemasolev mooduli või lisada uue. Viimane variant näeks välja järgmine (taaskord võivad moodulite asukohad erineda):
 
<pre>
 
DIGIDOC_DEFAULT_DRIVER=2
 
DIGIDOC_DRIVERS=2
 
DIGIDOC_DRIVER_1_NAME=OpenSC
 
DIGIDOC_DRIVER_1_DESC=OpenSC projects PKCS#11 driver
 
DIGIDOC_DRIVER_1_FILE=/usr/lib/opensc-pkcs11.so
 
DIGIDOC_DRIVER_2_NAME=eToken
 
DIGIDOC_DRIVER_2_DESC=SafeNet eToken PKCS#11 driver
 
DIGIDOC_DRIVER_2_FILE=/lib/libeToken.so.8
 
</pre>
 
 
=== Avalduste rakendus ===
 
[[Pilt:kasutusmall-rakendus.png|thumb|Avalduste rakenduse järgnevusskeem]]
 
[[Meedia:client.tar.gz|Avalduste rakenduse lähtekood]]
 
 
''TODO Kui wiki seda lubama hakkab, siis laadida üles kompileeritud .jar''
 
 
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.
 
 
# Rakendus viib läbi isikutuvastuse nii nagu kirjeldatud [[#Isikutuvastamine|isikutuvastuse]] juures ning realiseeritud eraldiseisvas [[#Isikutuvastuse_rakendus|isikutuvastuse rakenduses]].
 
# Kasutajalt küsitakse sisendit avaldusele - tegu on lihtsa, üherealise tekstisisestusega. Kuna JDigiDoc teek oskab kasutada vaid kettale salvestatud faile, siis salvestame sisestatud info ajutisse faili.
 
# Salvestame ajutiselt kettale kaardilt loetud isikuandmed (JDigiDoc teek isikuandmete faili lugemist ei toeta, mistõttu tehakse seda käsitsi lähtudes [http://id.ee/public/EstEID_kaardi_kasutusjuhend.pdf EstEID kaardi kasutusjuhendist] - täpsem seletus [[#Isikuandmete_faili_kasutamine_2|isikuandmete faili kasutamise]] all).
 
# Andmed pannakse DDOC-konteinerisse ning allkirjastatakse - viimase käigus kontrollitakse ka allkirjastamiseks kasutatava sertifikaadi kehtivust.
 
# Kontrollitakse üle, kas konteiner verifitseerub ning see kirjutatakse kettale.
 
# Konteiner saadetakse avaldusi töötlevale teenusele ning vastuseks saadakse krüpteeritud konteiner.
 
# Konteineris olev transpordivõti krüpteeritakse lahti kasutaja isikutuvastussertifikaadi salajase võtmega ning seda kasutatakse teenuse poolt allkirjastatud vastuse lahti krüpteerimiseks.
 
# Allkirjastatud vastus salvestatakse kettale ning seejärel kontrollitakse sellel olevat allkirja.
 
# Kasutajale kuvatakse teenuse vastuse sisu.
 
 
Vajab Java versiooni 1.7 või uuemat.
 
 
==== Rakenduse kasutamine ====
 
Rakendusega on kaasas [http://ant.apache.org/ Ant] ehitusskript, mis kompileerib kõik klassid ning loob neist JAR-faili. Skript nõuab vähemalt Ant versiooni 1.7.
 
 
Enne kompileerimist tuleb Ant skripti sees ära muuta kasutatavate teekide asukohad. Peale seda piisab vaid <tt>ant</tt> käsu käivitamisest, mis loob <tt>client.jar</tt>'i.
 
 
Seejärel saab rakendust käivitada käsuga: <pre>java -jar client.jar [-cfg config] [url]</pre>
 
* <tt>config</tt> - kasutatav konfiguratsioonifail, vaikimisi otsitakse praegusest kasutast <tt>jdigidoc.cfg</tt>
 
* <tt>url</tt> - avaldusi töötleva teenuse aadress, vaikimisi https://localhost/eid/submit.php
 
 
Rakendus sõltub järgmistest teekidest:
 
* bcprov-jdk15on-147.jar
 
* commons-codec-1.6.jar
 
* commons-compress-1.3.jar
 
* esteidtestcerts.jar
 
* iaikPkcs11Wrapper.jar
 
* jakarta-log4j-1.2.6.jar
 
* jdigidoc-3.6.0.157.jar
 
 
Kui teenusega luuakse HTTPS-ühendus (tungivalt soovitatav), siis kontrollitakse, et serveri sertifikaadi väljaandja oleks Java ''keystore'''s olemas. Kui teenus kasutab enda allkirjastatud sertifikaate (näiteks testimisel), siis on vaja need enne <i>keystore</i>'i lisada:
 
<pre>keytool -import -alias <sertifikaadi alias> -file <sertifikaadi asukoht> -keystore <keystore asukoht></pre>
 
Näiteks Ubuntu all:
 
<pre># keytool -import -alias snakeoil -file /etc/ssl/certs/ssl-cert-snakeoil.pem -keystore /usr/lib/jvm/default-java/jre/lib/security/cacerts</pre>
 
 
== Allkirjastamise rakendus ==
 
Rakendus on käsureautiliit, millele antakse sisendandmetena ette nimekiri failidest ning mis väljastab konteineri allkirjastatud failidega ja OCSP kehtivuskinnitusega.
 
 
=== C++ ===
 
[[Meedia:cpp-sign.tar.gz|Lähtekood]]
 
Kompileerimine: <pre>gcc sign.cpp common/EstEIDConsolePinSigner.cpp -ldigidocpp -o sign</pre>
 
 
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 ===
 
[[Meedia:JavaSign.java|Lähtekood]]
 
Kompileerimine (kus <tt>$JAVA_LIB</tt> on vajalike Java teekide asukoht): <pre>javac -cp $JAVA_LIB/jdigidoc.jar JavaSign.java</pre>
 
 
Kasutus: <pre>java JavaSign [-cfg config] infile1 ... infileN outfile[.bdoc]</pre>
 
 
* <tt>config</tt> - kasutatav [[#Java konfiguratsioonifail|konfiguratsioonifail]], vaikimisi otsitakse praegusest kaustast <tt>jdigidoc.cfg</tt>
 
* <tt>infile</tt> - failid, mida allkirjastada
 
* <tt>outfile</tt> - loodava konteineri nimi; kui faili nimi lõppeb laiendiga <tt>.bdoc</tt>, siis luuakse BDOC formaadis allkiri, muidu DIGIDOC-XML
 
 
Käivitamisel peavad olema Java classpathil järgmised teegid:
 
* bcprov-jdk15on-147.jar
 
* commons-codec-1.6.jar
 
* commons-compress-1.3.jar
 
* esteidtestcerts.jar
 
* iaikPkcs11Wrapper.jar
 
* jakarta-log4j-1.2.6.jar
 
* jdigidoc-3.6.0.157.jar
 
 
Vajab Java versiooni 1.7 või uuemat, kuna allkirjastatava faili MIME-tüübi tuvastamiseks kasutatakse klassi [http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#probeContentType%28java.nio.file.Path%29 Files].
 
 
== Isikutuvastuse rakendus ==
 
Rakendus on käsureautiliit, mis teeb kindlaks, kas kasutajal on juurdepääs sertifikaadile vastavatele privaatvõtmele, s.t kas ta teab ID-kaardi PIN1-koodi. Kasutaja sisestab lugejas oleva kaardi PIN1-koodi, mille peale kuvatakse teade, 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.
 
 
=== C++ ===
 
[[Meedia:cpp-auth.tar.gz|Lähtekood]]
 
 
Kompileerimine: <pre>gcc auth.cpp common/EstEIDConsolePinSigner.cpp -ldigidocpp -ldigidoc -o auth</pre>
 
 
Rakendus käivitatakse ilma argumentideta:
 
<pre>./auth</pre>
 
 
=== Java ===
 
[[Meedia:JavaAuth.java|Lähtekood]]
 
 
Kompileerimine (kus <tt>$JAVA_LIB</tt> on vajalike Java teekide asukoht): <pre>javac -cp $JAVA_LIB/jdigidoc.jar:$JAVA_LIB/bcprov-jdk15on-147.jar JavaAuth.java</pre>
 
 
Rakenduse käivitamisel on võimalik anda valikuline argument <tt>-cfg config</tt>, mis töötab nii nagu [[#Allkirjastamise_rakendus|allkirjastamise rakenduse]] puhul:
 
<pre>java JavaAuth [-cfg config]</pre>
 
Käivitamisel peavad olema Java classpathil järgmised teegid:
 
* bcprov-jdk15on-147.jar
 
* commons-compress-1.3.jar
 
* esteidtestcerts.jar
 
* iaikPkcs11Wrapper.jar
 
* jakarta-log4j-1.2.6.jar
 
* jdigidoc-3.6.0.157.jar
 
 
== Allkirja kontrollimise rakendus ==
 
Käsureautiliit, mis kontrollib etteantud konteineril olevat allkirja.
 
 
=== C++ ===
 
[[Meedia:cpp-verify.tar.gz|Lähtekood]]
 
 
Kompileerimine: <pre>gcc verify.cpp -ldigidocpp -o verify</pre>
 
 
Kasutus: <pre>./verify infile</pre>
 
* <tt>infile</tt> - fail, mille allkirju kontrollida
 
 
== Andmete dekrüpteerimise rakendus ==
 
Käsureautiliit, mis dekrüpteerib etteantud konteineri.
 
 
=== C++ ===
 
[[Meedia:cpp-decrypt.tar.gz|Lähtekood]]
 
 
Kompileerimine: <pre>g++ decrypt.cpp -ldigidoc -o decrypt</pre>
 
 
Kasutus: <pre>./decrypt infile pin outfile</pre>
 
* <tt>infile</tt> - fail, mida dekrüpteerida
 
* <tt>pin</tt> - dekrüpteerimisel kasutatava kaardi PIN 1
 
* <tt>outfile</tt> - fail, kuhu dekrüpteeritud tulemus salvestada
 
 
= Piiriülene eID, STORK ja Euroopa kodanikukaart =
 
== Üldist ==
 
* 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>
 
 
 
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: http://www.opensc-project.org/opensc/wiki/BelgianEid
 
* Hispaania: http://www.opensc-project.org/opensc/wiki/SpanishEid (suletud lähtekood)
 
* Itaalia: [http://www.vldb.org/conf/2001/P629.pdf ID-kaardi arhitektuur], http://www.opensc-project.org/opensc/wiki/ItalianEid =~ http://www.opensc-project.org/opensc/wiki/ItalianCNS
 
* Leedu: ?
 
* Portugal: http://www.opensc-project.org/opensc/wiki/PortugueseEid
 
* 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: http://www.opensc-project.org/opensc/wiki/FinnishEid. 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.
 
* Saksamaa (toetatud OpenSC projektis, kuid mitte Eestis): http://www.opensc-project.org/opensc/wiki/GermanEid
 
 
 
== STORK ==
 
STORK (Secure Identity Across Borders Linked) on konkurentsivõime tõstmise ja innovatsiooni raamprogramm, mida kaasrahastab Euroopa Liit. STORK taotleb koostalitlusvõime süsteemi väljatöötamist EL-is, mille eesmärk on võimaldada elektroonilise identiteedi (eID) tuvastamist ja autentimist, mis omakorda võimaldab ettevõtjatel, kodanikel ja riigiametnikel kasutada nende riiklikke elektroonilisi identiteete kõikjal EL liikmesriikides. Teisisõnu on eesmärk luua süsteem, kus mingi riigi sertimisorgan (CA) vahendab teiste riikide sertimisorganeid. 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> Algsele STORKi projektile järgnes STORK 2.0.
 
 
STORK käsitleb ka ID-kaardist nõrgema turvalisusega autentimisvahendeid. 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>
 
 
Selle uurimuse raames on üks olulisi STORKi dokumente "Smartcard eID Comparison" <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>, mis esitab tehnilise võrdluse kiipkaardi-põhistest autentimisvahenditest STORKi riikides.
 
 
''TODO: 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 veel 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 laiemale publikule suunatud uudised ECC staatusest puuduvad, kuid eksisteerib ECC tehnilise spetsifikatsiooni standard:
 
* CEN/TS 15480-1:2007. Identification card systems - European Citizen Card - Part 1: [http://www.evs.ee/tooted/cen-ts-15480-1-2007 Physical, electrical and transport protocol characteristics]
 
* CEN/TS 15480-2:2012. Identification card systems - European Citizen Card - Part 2: [http://www.evs.ee/tooted/cen-ts-15480-2-2012 Logical data structures and security services]
 
* CEN/TS 15480-3:2010. Identification card systems - European Citizen Card - Part 3: [http://www.evs.ee/tooted/cen-ts-15480-3-2010 European Citizen Card Interoperability using an application interface]
 
* CEN/TS 15480-4:2012. Identification card systems - European Citizen Card - Part 4: [http://www.evs.ee/tooted/cen-ts-15480-4-2012 Recommendations for European Citizen Card issuance, operation and use]
 
 
Lisaks võib STORKi kontekstis huvi pakkuda:
 
* ECC Position Paper ehk [https://www.eid-stork.eu/dmdocuments/public/ecc-position-paper-final.pdf Kaardi eesmärk, profiil ja spetsifikatsioon] 2008. a seisuga.
 
 
Samuti pakuvad mitmed kaarditootjad ECC standardiga ühilduvaid kiipkaarte:
 
* [http://www.gemalto.com/products/multiapp_id_ias_ecc/ Gemalto MultiApp ID]
 
* Morpho (vana nimega Sagem) [http://www.morpho.com/e-documents/id-documents/products/id-cards-and-resident-cards/?lang=en IDeal Citiz]
 
* Oberthur ID-ONE
 
 
Tasub veel äramärkimist, et 19.09.2012 toimub konverents ''World e-ID Congress'', kus üks teemasid on ülevaade ECC seisust. Võib oletada, et konverentsijärgselt ilmub Internetti kaardi hetkeseisu kohta rohkem teavet.
 
 
= Välised lingid =
 
== Näiterakendustega seotud lingid ==
 
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."]
 
* Rohkem küll kasutaja kui arendaja vaatenurgast: [http://kuutorvaja.eenet.ee/wiki/Eesti_ID-kaardi_kasutamine_Debianiga Eesti ID-kaardi kasutamine Debianiga]
 
* 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].
 
* 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].
 
 
== Piiriülene eID ==
 
* [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