Author Archive

Debian ja ID-kaardi tarkvara (UUENDATUD)

ID-kaardi ametlik tarkvara ei tule Debiani pakkidega. Kaardi madala taseme PKCS#11 draiver (OpenSC) on küll pakkide hulags olemas aga puudu on DigiDoc klient ja veebis allkirjastamiseks vajalikud pluginad, sertifikaadid jms. (Viitaks, kui vastav tekst installer.id.ee lehel lingitav oleks ja ei nõuaks JavaScripti kaudu hüpikakna näitamist...)

Naised saunas räägivad, et osadele Debiani versioonidele saab paigaldada ka Ubuntu pakke. Või kasutada nii-öelda alternatiivset tarkvara (mis küll suures osas on sama lähtekoodiga). Aga see ei kõla nagu päris õige tegu. Kuna tegemist on avatud lähtekoodiga, peaks ju olema võimalik Ubuntu asemel .deb pakke Debiani peal teha ka ametlikust algkoodist?

UUENDATUD 04.01.2012: Töötab ka viimase Ubuntu peal, build-skripti lisatud OpenSC paki ehitamine.

Võtame appi "ID-kaardi baastarkvara pakendusjuhend" dokumendi ja SVN-is oleva lähtekoodi ning ehitame ise Debiani pakid! Järgnevates punktides olevate käskude mõtestatud copy-paste peaks tulemuseks andma paigaldatava ID-kaardi tarkvara.

  1. Tiri alla väike patch ja build-skript:
    wget http://martinpaljak.net/ria-debian-hack.tar.gz
  2. Paki lahti:
    tar xzvf ria-debian-hack.tar.gz
  3. Paki sees on ka väike README-tüüpi fail:
    cd ria-debian-hack
    more README
  4. Paigalda ehitamiseks vajalikud pakid:
    sudo apt-get install --no-install-recommends subversion doxygen xsdcxx cdbs cmake build-essential libxml2-dev ruby zip rubygems dpkg-dev libssl-dev libp11-dev libpcsclite-dev libldap2-dev libgtk2.0-dev libqt4-dev libxerces-c-dev libxml-security-c-dev libtool autoconf automake
    Squeeze ja amd64 platvormi peal lapi vigane g++-4.4 kompilaator:
    sudo ln -sf /usr/lib/libstdc++.so.6 /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.so
  5. Tiri SVN-ist algkood (võtab natuke aega...):
    svn co https://svn.eesti.ee/projektid/idkaart_public/trunk/ idkaart
  6. Lisa /etc/apt/sources.list faili ehitatavate pakkide repositoorium:
    sudo sh -c "echo 'deb file://$HOME/repository ./' >> /etc/apt/sources.list"
  7. Lapi SVN-is olev kood ja valimistu tarkvara ehitamiseks:
    mkdir -p idkaart/current && ln -s  ../packaging idkaart/current/packaging
    (cd idkaart && patch -p0 < ../debian.diff)
  8. Ehita pakid (võtab samuti natuke aega...):
    ./builder.sh
  9. Kui kõik lõpeb vigadeta (joru lõpus on "dpkg-scanpackages: info: Wrote 22 entries to output Packages file."), paigalda tarkvara:
    sudo apt-get update
    sudo apt-get install estonianidcard
  10. Sina ei tohi himustada oma ligimese naist, sulast, ümmardajat, kariloomi ega midagi muud, mis on tema oma.

Debiani puhul on parem paigaldada OpenSC unstable-st (lisa vastav rida /etc/apt/sources.list faili, tee apt-get update & apt-get install opensc/unstable.

Antud pakid pole küll Debiani vaatenurgast kõige ilusamad (lintian leiab kokku 92 probleemi, millest 36 vead ja ülejäänud hoiatused) aga nad töötavad. amd64 peal saab Google Chrome kaudu peale väikest nikerdamist (kiika README sisse) nii sisse logida kui näiteks mID lepingut allkirjastada. Edaspidise osas peaks abi ja viiteid saama installer.id.ee lehelt.

Head buildimist!

PS. Kõlakad räägivad, et Portugali ID-kaardi avatud lähtekoodiga tarkvara arendajad pakuvad koodist leitud kriitilise vea eest 1000€ ... Go figure...

Comments (5)

Tule kohtu teiste progejatega Stack Overflow päeval!

pinu.ee egiidi all toimub Tartus Dorpati konverentsikeskuses 6. aprillil Stack Overflow fännipäev. Kohapeal näeb teisi Lõuna-Eesti progejaid ja saab kuulata huvitavaid ettekandeid. Üldine sumisemine ja andmevahetus jätkub Pläsku saunas (jah, seal kõrgel).

Kui Sa ei ole veel seda teinud, siis mine pane ennast kirja ja hääleta huvitavate teemade poolt!

Tunned huvi kiipkaartide vastu ja tahaksid lähemalt teada, mida kujutab endast JavaCardide programmeerimine? Mine pane linnuke kirja vastavale teemale, et teaksin ettekandeks valmistuda.

Comments

Insecure HP USB Smart Card Keyboard

Smart cards are the most versatile two factor authentication devices and essential for secure PKI deployments. Two factors means that for successful use, you need to have something (a smart card) and know something (a PIN code). While still better than simple passwords, a PIN code entered like a password through standard computer keyboard is exposed to host software and thus easily intercepted by the worst kind of malware - trojans, which could then abuse your inserted card and do covert transactions with the card once the PIN code has been captured by the trojan (or keylogger).

To protect against such attacks, secure PIN entry devices (commonly known as pinpad readers) exist. Such devices are supposed to be with specially designed hardware which guarantee that PIN codes travel directly from the device keypad to the smart card, without passing through the host computer and thus not visible to possibly hostile software on the host computer.

This is a reminder to not be fooled by marketing alone. A device with Hewlett-Packard logo (model KUS0133) claims secure PIN entry and modification capability in the CCID descriptor but in fact does not enforce the secure PIN entry promise - the entered code can be read by host software. This behavior was discovered by accident - the device *seems* to work flawlessly on Linux but have a look what happens on Mac OS X 10.6.6:

mrtn:~ martin$ opensc-tool -l
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    No    PIN pad   HP USB Smart Card Keyboard 00 00
mrtn:~ martin$ pkcs11-tool --login --test --slot 1 --module /Library/OpenSC/lib/opensc-pkcs11.so 
1234

error: PKCS11 function C_Login failed: rv = CKR_GENERAL_ERROR (0x5)

Small explanation:

  • After the keyboard has been connected and identified to Mac OS X, OpenSC detects the reader and the advertised pinpad capability
  • Trying to do some operations with the inserted smart card leads to the point where the software sends the correct command to the reader to do a secure PIN entry operation and the "secure PIN entry" led on the keyboard is turned on, signaling that the PIN code should be entered on the numpad of the keyboard. On Linux, keys other than ESC (which cancel the transaction) and ENTER (which confirms the entered PIN) don't work in this mode (nothing appears on the screen at least).
  • Now the unexpected happens: the entered PIN ("1234" in this example) is shown on standard input! In fact, all keys work and entry to stdin is possible. The expected output should be the tool showing test results of operations with keys on the card without any keyboard input.

Without further investigation I can guess there are two possibilities of what's going on:

  1. It is possible for the host software to set the device firmware to a state where the pinpad is malfunctioning and sends keyboard input to the host
  2. The entered PIN code is always transmitted over USB but Linux "correctly" routes those packets to /dev/null

Either way the reader can't be considered as a secure PIN entry device as the host software can affect the functioning of the device and the secure PIN entry mode is not enforced by the keyboard firmware.

What next?

  • The next release of OpenSC shall disregard the advertised pinpad capability of this reader and enforce normal (no pinpad) mode
  • Probably an upcoming release of the open source CCID driver shall have the pinpad feature disabled already in the driver layer
  • The myth that devices that claim to do everything actually do nothing well got reassured. If you are worried about the secrecy of your PIN code, buy a dedicated pinpad reader with tamper evident features (like a hologram sticker and certified firmware)
  • Remember to keep your computer up to date with security patches and don't install software or visit websites you don't trust - the best protection against trojans. Also make sure that you remove your smart card from the reader as soon as you have finished using it, to limit the time when hostile software could abuse your connected smart card

Comments (1)

Panen selle blogi kinni …

... kui .ee domeen hakkab maksma 300 krooni aastas. Aastal 2003, kui minu toonane internetikodu .com aadress aegus, registreerisin endale (martin.)paljak.pri.ee domeeni. Sellel ajal oli veel võimalik .ee domeeni kohta pärida kõik sealsed nimed ja neid oli kokku ~15000, millest ~400 olid .pri.ee domeenid. Nüüd on väidetavalt ~70000 .ee domeeni. Valisin .ee selle pärast, et see on osake minu identiteedist - olen ju lõppude lõpuks eestlane! Paljudele ei vaja ka eraldi selgitamist milline räpane äri on "vaba turumajanduse" domeenibisins - squatterid, pliiatsist imetud hinnad, küsitava väärtusega ärilised ja tehnilised trikid jms. Tasuta .pri.ee domeen, kus osad neist probleemidest puudusid, tundus seega palju parem kui visuaalselt seksikam ja globaalsem martinpaljak.com. On ju domeenisüsteemi peamine funktsioon Internetis olevate asjade lihtsam üles leidmine nime kaudu - pole ju palju vahet, kas http://195.222.13.111:80/ asemel on nimesildiks martinpaljak.net või martinpaljak.com või martins.lv, martinpaljak.cc või martinpaljak.org - eriti kui rääkida vabast turumajandusest, siis on võimalik natuke rahakotti paotades endale hoopis toredam nimi leida mõne muu punkt-nime all (ja soodsamalt kui 300 krooni). Riikide domeenid (.ee, .lv, .fi jne) seonduvad minu jaoks millegi diplomaatilise ja globaalsega nagu ÜRO või ISO. Tipptaseme domeenid aga ei ole seda teps mitte, see on ajaloolistel põhjustel (DNS *on* ajalooline) tekkinud ärivõimalus mida ICANN ka usinalt kasutada püüab. Keegi ei saa olle .ee domeeni käigus hoidmise reeglistiku kaasajastamise või siiani segase ja piirava otse .ee alla mitme domeeni registreerimise lihtsustamise vastu. Aga vaja oleks
  1. .pri.ee domeenide jätkuvalt tasuta võimaldamist eraisikutele
  2. tasuta või väga mõisliku hinnaga esimest .ee nime Eestis registreeritud ettevõtetele
  3. korralikku iseteenindust .ee domeeni haldamiseks (ID-kaart, äriregister, rahvastikuregister jms viisakalt ühendatud, ehk isegi integreeritud DNS haldamine)
  4. 300 krooni tükk aastas kõigile teistele soovijatele
Miks?
  • .ee on osake meie rahvuslikust identiteedist, see ei ole ainult kurgid turul.
  • Eesti püüab olla e-riik. E-riigi jaoks on internet ja selles toimuv eriti oluline. "Üldlevinud euroopalikud tavad" igal tasandil teeks meist "üldlevinud euroopalikul tasemel" e-riigi mis oleks midagi Hispaania sarnast (loe: heal juhul keskpärane)
  • Internet ja .ee on osake riigi poolt pakutavast infrastruktuurist, mida hoitakse käigus maksudega; riik teeb palju utoopilisemaid ja küsitavama rakenduslikkusega e-projekte (e-tervis jmt), samas kui domeeninimede puhul on tegu väga selge ja lihtsa tehnoloogilise lahendusega, umbes nagu rahvastikuregister.
  • Vaevalt, et üks andmebaas nõuab enda käigus hoidmiseks 300 krooni aastas ühe kirje hoidmise, töötlemise ja edastamise eest? See teeks rahvastikuregistri käitlemise kuludeks (~1300000 * 300) 390000000 krooni ehk ligi 400 miljonit aastas. Tõesti? Kohustuslik e-teenindus ühekordse investeeringuna ja sellest tulenevalt vähenenud tööjõukulu võiks võtta 5 inimest 20000/kuus + sama palju tehnika peale = 10*40000*12 = ~5 miljonit krooni aastas.
  • Sellise mudeli puhul maksavad ületarbijad (squatterid jne) kinni teiste baasvajadused.
Võibolla ma olen millestki valesti aru saanud või mõni oluline infokild on puudu, aga praegu jääb mulje, et .pri.ee domeenide omanikud peaks enda õiguste kaitseks ühinema, looma "pri.ee registri", maksma kellelegi 300 krooni/.pri.ee/aasta ja siis lunima riigi käest kompensatsiooni praeguse korra säilimiseks? Riigi seisukohast võib see olla ka pseudoprobleem, kui valitute jaoks on riik ainult "eesti.ee ja osale.ee" ja muud osapooled on ainult "riigiteenuse tarbijad". Ma vaataks kogu .ee ruumile otsa nagu regionaalminister peaks Eesti kaarti vaatama - näiteks Soomes on Internet igaühe õigus. Mõtlemisainet! Igatahes, avalik arutelu (avalik? kus on siis nimekiri kõigist seni edastatud muudatusettepanekutest?) käib juttude järgi kuni 22.11.2009. Kõik .pri.ee omanikud, ÜHINEGE!
* Kuigi siin blogis on valitsenud mitu kuud vaikus, ei plaani seda siiski veel reaalselt kinni panna. Elu 300 km Tallinnast, Misso valla metsas nõuab sisse elamist, toimetamist ja tööd, et elu Eesti ääreladel välja ei sureks. Talvine aeg toob tubased tegevused - siis on rohkem aega ka kirjutada.

Comments (12)

Kuidas lugeda biomeetrilise passi kiipi.

Eestis, nagu paljudes teistes riikides, on kasutusel passid koos biomeetrilise infoga RFID kiibil. Praegu veel ainult näolapp kuid selle aasta maikuus peaks kiibile lisanduma ka sõrmejäljed EDIT: Kodakondsus- ja Migratsiooniameti uudis: 29.06.2009 Tänasest kantakse reisidokumentidesse digitaalsed sõrmejäljed. Minu käest on tihti küsitud, et kuidas lugeda ID-kaardi kiibilt (kus sees on aga ainult vahendid digitaalseks isikutuvastuseks ja allkirjastamiseks) kaardil olevat pilti. Küllap on ID-kaardi puhul pilti ja kiipi koos nähes lihtsam tekkima valearvamus, et see pilt ka sellelt va kiibilt loetav on. Erinevalt ID-kaardist ei ole passi sees olev kiip silmaga nähtav ja ei saa ka selle nähtamatu kiibi abiga internetipanka logida. Küll aga on selle peidus oleva kiibi sees olemas ilus värviline pilt passiomanikust. Järgneva retseptiga saab kodustes tingimustes selles ise veenduda. Vaja läheb:
  • 1 Linuxiga x86 arvuti (Ubuntu 8.10)
  • 1 ACR122 RFID lugeja (osta näiteks siit)
  • java6, pcscd, ccid tarkvara (sudo apt-get install sun-java6-bin pcscd libccid)
  • 1 biomeetriline pass
Kuidas valmistada:
  1. Tiri endale JMRTD (Java MachineReadableTravelDocument) tarkvara aadressilt jmrtd.org (vali platform independent JAR file: jmrtd_installer.jar)
  2. Paigalda JMRTD: java -jar Desktop/jmrtd_installer.jar
  3. Käivita JMRTD: ~/JMRTD/jmrtd.sh
  4. Vali "Add" ja sisesta enda passi number, enda sünnikuupäev ja passi kehtivuse aeg (see on Basic Access Control ehk BAC): BAC sisestamine
  5. Aseta enda pass lugejale ja oota kümmekond sekundit. Passist loetakse kõik andmed, sealhulgas pilt: Passi sisu

Rohkem lugemist e-passis olevast RFID kiibist: EDIT 10.08.2009: Lisatud viide BAC-ile ja mig.ee uudisele.

Comments (4)

« Previous entries Next Page » Next Page »