2013-07-21

Järkeä tekijänoikeuslakiin loppusuoralla

(På svenska: https://www.kansalaisaloite.fi/sv/initiativ/70 )


Yllätin itseni viikonloppuna keräämällä nimiä tuntemattomilta torivierailta Tammelan torilla kansalaisaloitteeseen tekijänoikeuslain korjaamisen puolesta (sivusto http://järkeä.fi tiistaihin 23.7.2013 asti).

Kansalaisaloitteet ovat uusi asia kansan vaikuttamisen välineenä. 50000:n allekirjoituksen saanti takaa aloitteelle eduskuntakäsittelyn, mutta ei takaa aloitteen läpimenoa. Suurempi hyöty on asiasta keskustelu ja mahdollisuus suorempaan vaikuttamiseen kuin valitsemalla oma edustaja, jonka mahdollisuudet tuoda asioita käsittelyyn ei suuren suuri ole.

Torilla vilisi ihmisiä jo ysiltä alkaen pitkälle kahteen saakka, minä aikana meidän viisihenkinen tiimi sai arviolta 65 nimeä paperiin + monta ihmistä vinkattua www-sivulle allekirjoittamaan. Keräys suoritettiin feissarityyliin torin leveillä käytävillä leppoisasti kyselemällä ja kiusaamalla ihmisiä suoraan, mikä itselleni sosiaalisena mörkönä on kovin vaikea asia hyväksyä ja henkisesti raskasta. Jokaisen kohtaamisen jälkeen piti psyykata itsensä taas kuntoon uutta kohdetta varten. Yllättävää oli kuitenkin, että kaikki kohdatut ihmiset olivat kohteliaita, kieltäytyessäänkin. Monen kanssa sain harjoitella tuntemattoman kanssa kommunikointia, mutta ehkä suomalaiselle on helppoa olla hiljaa ja kuunnella mitä toisella on kerrottavaa. Lopputuloksena oli itsensäylittämisen olotila.

Tänään sunnuntaina, 48 tuntia ennen määräajan loppumista on kannatuksia annettu arviolta 43000. Ehdit siis vielä antaa oman äänen helposti osoittessa https://www.kansalaisaloite.fi/fi/aloite/70

Tarvitset tätä varten vahvan tunnistautumisen, joka onnistuu HST-kortilla, pankkitunnuksilla tai mobiilivarmenteella.

Eniten vastatut kysymykset toriväen osalta (FAQ)
  • K1 Mihin allekirjoitus sitoo minut?
  • V1: Kannatus ei sido mihinkään . Eduskunta ottaa aloitteen omaan käsittelyyn jos kannatuksia tulee 50000 tai yli ja mahdollisesti muokkaa sitä.
  • K2: Onko tämä puoluekysymys (esim. Piraattipuolue)?
  • V2: Ehdotus ei ole yhden puolueen ehdotus, vaan sen takana seisoo kaikki nuorisopuolueet vasemmalta oikealle, mukaanlukien mm. Piraattipuolue, perussuomalaiset ja kokoomus, keskusta ja vihreät.

Muokkaus  22.7.2013 klo 16:33. 
Kansalaisaloite.fi sivuston vahvasti tunnistetut varmat äänet kun vielä saadaan yli 49999:n, niin se oli siinä.
Kiitos levittäjille!

2013-03-15

Polkuja älykorttien kanssa osa2 - Toimii

Kuinka älykortteja voidaan hyödyntää, ihan käytännössä? Kuinka niiden vaatimien ohjelmistojen asennus onnistuu ja mitkä palvelut tukevat älykortteja? Haistellaanpa HST-korttia. Näytän, että sitä voi todella käyttää ja se toimii. Esimerkkinä kirjaudun ssh-yhteydellä etäkoneelle käyttäen PIN-koodia ja HST-korttiani.
 Myöhemmin käyn läpi myös FSFE:n (Free Software Foundation Europe) OpenPGP-korttia. Lisäksi uskon, että jotain tietoja saan ulos myös vanhentuneista korteista, kuten vanhat pankkiautomaattikortit ja eTampere-kortti, vähintäänkin niiden tunnisteet eli minkä tyypin kortti on kyseessä sekä kortin uniikit IDt.

Varoitus, teknoa edessä!


Varsinaisena työkaluna tässä toimii Debian GNU/Linux. Windowsia käytän vain siinä äärimmäisessä tapauksessa, kun kokeilen PIN-koodin syöttöä. Useat kortit nimittäin lukittuvat kolmen väärän PIN-koodin syötön jälkeen, enkä kaikilla korteilla ole vielä keksinyt tapaa avata niitä admin-PIN koodilla.

Windowsissa käytän Fujitsun mPollux kortinlukijaohjelmistoa, joka löytyy vrk.fi:n sivuilta ja Linuxissa pcscd:tä. USB-kortinlukijani, mallia SCR531, firmware täytyi päivittää versiosta 4.*- >5.22, ennen kuin sain sen toimimaan uudemmilla korteilla.


Asennettavat softat Linux puolella

  • pcscd
  • pcsc-tool
  • opensc
  • myöhemmin  jotain udev-scriptejä gnupg-korttia varten

Komennolla pcsc_scan näkee, onko kortti sisällä lukijassa ja mitä se sisältää. dmesg antaa vihjeen lukijasta. OpenPGP kortista tietoja saa vaikka "gpg --card-status" komennolla.

dmesg-tuloste, kun kortin lukija liitettiin tietokoneeseen:

[30008.992128] usb 6-2: new full-speed USB device number 3 using uhci_hcd
[30009.195216] usb 6-2: New USB device found, idVendor=04e6, idProduct=e001
[30009.195226] usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[30009.195234] usb 6-2: Product: SCRx31 USB Smart Card Reader
[30009.195240] usb 6-2: Manufacturer: SCM Microsystems Inc.
[30009.195246] usb 6-2: SerialNumber: 502000D4


Käynnistetään kortinlukijan ja kortin välisen liikenteen hoitava framework:
root@kone:/ $ /etc/init.d/pcscd start

Luetaan korttia:
root@kone:/ $ pcsc_scan 
PC/SC device scanner
V 1.4.20 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.8.3
Using reader plug'n play mechanism
Scanning present readers...
0: SCM Microsystems Inc. SCR 331 [CCID Interface] (502000D4) 00 00

Thu Mar 14 21:59:02 2013
Reader 0: SCM Microsystems Inc. SCR 331 [CCID Interface] (502000D4) 00 00
  Card state: Card removed, 

...SYÖTETÄÄN KORTTI SISÄÄN ...

Thu Mar 14 22:00:40 2013
Reader 0: SCM Microsystems Inc. SCR 331 [CCID Interface] (502000D4) 00 00
  Card state: Card inserted, 
  ATR: 3B 7B 94 00 00 80 62 12 51 56 46 69 6E 45 49 44

ATR: 3B 7B 94 00 00 80 62 12 51 56 46 69 6E 45 49 44
+ TS = 3B --> Direct Convention
+ T0 = 7B, Y(1): 0111, K: 11 (historical bytes)
  TA(1) = 94 --> Fi=512, Di=8, 64 cycles/ETU
    62500 bits/s at 4 MHz, fMax for Fi = 5 MHz => 78125 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 80 62 12 51 56 46 69 6E 45 49 44
  Category indicator byte: 80 (compact TLV data object)
    Tag: 6, len: 2 (pre-issuing data)
      Data: 12 51
    Tag: 5, len: 6 (card issuer's data)
      Card issuer data: 46 69 6E 45 49 44

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 7B 94 00 00 80 62 12 51 56 46 69 6E 45 49 44
3B 7B 94 00 00 80 62 1[1,2] 51 56 46 69 6E 45 49 44
        Finnish Electronic ID card (fineid card www.fineid.fi)

ATR kertoo tässä kortin tyypistä jotain ja tunnistaa sen (oikein) suomalaiseksi HST-kortiksi.



root@kone: ~$ opensc-tool -n
Using reader with a card: SCM Microsystems Inc. SCR 331 [CCID Interface] (502000D4) 00 00
SetCOS

Selvä, HST kortin tyyppi on SetCOS eli Setec:in valmistama kortti.

Mitä  algroritmejä kortti osaa?
root@kone: ~$ opensc-tool --list-algorithms

Using reader with a card: SCM Microsystems Inc. SCR 331 [CCID Interface] (502000D4) 00 00
Algorithm: rsa
Key length: 1024
Flags: padding ( pkcs1 ) hashes ( sha1 )

Algorithm: rsa
Key length: 2048
Flags: padding ( pkcs1 ) hashes ( sha1 )

Tiesin, että kortilla on kaksi salaista avainta, joista toinen on allekirjoitukseen (ilmeisesti tuo 1024bittinen) ja toinen salaukseen (2048bittinen). Seuraavaksi haluan ryhtyä käyttämään kortin avainpareja. 
Haluan käyttää älykortin prosessoria kryptologiseen operaatioon.

Koska se, miten X.509 varmenne on tallennettu kuvataan  pkcs15-standardissa, on komentokin osuvasti pkcs15-tool

Seuraava näyttää kortilla olevat varmenteet ([todentamis- ja salausvarmenne], [allekirjoitusvarmenne], [VRK Root CA], [VRK Gov. CA for Citizen Qualified Certificates])

root@kone: ~$ pkcs15-tool -c    
X.509 Certificate [todentamis- ja salausvarmenne]
        Object Flags   : [0x0]
        Authority      : no
        Path           : xxxxxxxx
        ID             : 45
        Access Rules   : read:;
        Encoded serial : 02 04 AAAAAAAAAA

Oman todentamisavaimen saa ulos selkokielisenä parsittuna
pkcs15-tool -r 45 | openssl x509 -noout -text

Tuossa 45 oli luettavan varmenteen id, tulos lähetetään eteenpäin ('|') , -noout jättää tulostamatta ASCII-varmenteen ja -text tekee selkokielisen parsinnan. 

Näytetään mun privat avaimet:

root@kone:~$ pkcs15-tool -k
Using reader with a card: SCM Microsystems Inc. SCR 331 [CCID Interface] (502000D4) 00 00
Private RSA Key [todentamis- ja salausavain]
        Object Flags   : [0x1], private
        Usage          : [0x26], decrypt, sign, unwrap
        Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
        Access Rules   : execute:01;
        ModLength      : 2048
        Key ref        : 0 (0x0)
        Native         : yes
        Path           : 3f004b01
        Auth ID        : 01
        ID             : 45

Private RSA Key [allekirjoitusavain]
        Object Flags   : [0x1], private
        Usage          : [0x200], nonRepudiation
        Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
        Access Rules   : execute:02;
        ModLength      : 2048
        Key ref        : 0 (0x0)
        Native         : yes
        Path           : 3f0050164b02
        Auth ID        : 02
        ID             : 46

Access Flags:it vaikuttavat mielenkiintoiselta. sensitive, alwaysSensitive, neverExtract, local.
Joku noista varmasti tarkoittaa sitä, että avainta ei koskaan saa ulos kortilta vaan sitä
voidaan operoida vain kortin prosessorilla. Joku muu operaatio taas tarkoittaa sitä, että käyttöön tarvitaan
PIN-koodi, mutta muuten kaikki vaikuttavat hyvin samankaltaisilta. Koska olin varma, ettei niitä salaisia avaimia näytetä, saatoin ajaa tämän komennon.

Käyttökohde: ssh-yhteys etäkoneeseen HST kortin avaimella

1) kopioi HST-kortin julkinen avain ssh-palvelimelle normaaliin tapaan
1.1) nouda julkinen avain kortilta (id:stä 45 täss)
pkcs15-tool --read-ssh-key 45 > kortti.pub
ssh-copy-id -i kortti.pub user@etakone

2)  varmista, että käyttäjällä ei ole pääsyä olemassaoleviin priva-avaimiin

Käytä opensc-kirjaston kautta avainta

root@kone :~# ssh -I /usr/lib/i386-linux-gnu/opensc-pkcs11.so user@etakone
Enter PIN for 'HENKILOKORTTI (perustunnusluku)':

...syötä tähän PIN1 koodisi ..

 etakone%   # ! perillä ollaan

Tässä tapauksessa käytettiin kortilla sijaitsevaa salaista avainta, jota ei pitäisi voida pystyä kopioimaan. Vastapäässä oli julkinen avain, jonka avulla pystytään vahvistamaan autentikoitu yhteys. Salasanoja ei lähetetty verkon yli.