<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Makdaam.eu &#187; smartcard</title>
	<atom:link href="http://www.makdaam.eu/tag/smartcard/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.makdaam.eu</link>
	<description>Admiration of simplicity</description>
	<lastBuildDate>Thu, 01 Sep 2011 18:43:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Czytnik Gemplus ExpressCard (od Lenovo)</title>
		<link>http://www.makdaam.eu/2009/07/gemplus-expresscard/</link>
		<comments>http://www.makdaam.eu/2009/07/gemplus-expresscard/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 16:36:03 +0000</pubDate>
		<dc:creator>Makdaam</dc:creator>
				<category><![CDATA[Drobnica]]></category>
		<category><![CDATA[smartcard]]></category>
		<category><![CDATA[sprzęt]]></category>

		<guid isPermaLink="false">http://www.makdaam.eu/?p=42</guid>
		<description><![CDATA[W związku z coraz większym zainteresowaniem kartami chipowymi na tle podpisów elektronicznych, elektronicznej legitymacji studenckiej oraz zastosowań pokrewnych (np. wpis Zal&#8217;a na temat kart openpgp) postanowiłem opisać na 100% działający zarówno pod Windowsem (PC/SC) jak i pod Linuxem (PCSC-Lite) zakup z ostatniego tygodnia. Niedawno kupiłem nowy czytnik do kart chipowych. Szukałem czegoś do laptopa (interfejs [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.makdaam.eu/wp-content/gallery/gemplus/gemplus_m.jpg" title="" class="shutterset_singlepic101" >
	<img class="ngg-singlepic ngg-right" src="http://www.makdaam.eu/wp-content/gallery/cache/101__320x240_gemplus_m.jpg" alt="Gemplus ExpressCard" title="Gemplus ExpressCard" />
</a>
 W związku z coraz większym zainteresowaniem kartami chipowymi na tle podpisów elektronicznych, elektronicznej legitymacji studenckiej oraz zastosowań pokrewnych (np.<a href="http://blog.4zal.net/2009/06/27/openpgp-smartcard/"> wpis Zal&#8217;a na temat kart openpgp</a>) postanowiłem opisać na 100% działający zarówno pod Windowsem (PC/SC) jak i pod Linuxem (PCSC-Lite) zakup z ostatniego tygodnia.</p>
<p>Niedawno kupiłem nowy czytnik do kart chipowych. Szukałem czegoś do laptopa (interfejs ExpressCard), znalazłem nowy czytnik za około 100PLN i jestem z niego zadowolony. Czytnik jest zgodny z CCID, w związku z tym działa pod Linuxem (było to dla mnie kluczowe), przedstawia się jako urządzenie USB (wbudowany host USB na ExpressCard).</p>
<p>Dodatkowym atutem tego czytnika jest to, że nie wystaje poza obudowę laptopa. Co oznacza, że nie muszę go demontować na czas transportu komputera. Obecnie dostępnych jest jeszcze 9 czytników i całkiem możliwe, że nie zostaną sprzedane do końca aukcji.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.makdaam.eu%2F2009%2F07%2Fgemplus-expresscard%2F&amp;title=Czytnik%20Gemplus%20ExpressCard%20%28od%20Lenovo%29" id="wpa2a_2">Podziel się wpisem</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.makdaam.eu/2009/07/gemplus-expresscard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Czytanie ELS przez interfejs stykowy</title>
		<link>http://www.makdaam.eu/2008/04/czytanie-els-przez-interfejs-stykowy/</link>
		<comments>http://www.makdaam.eu/2008/04/czytanie-els-przez-interfejs-stykowy/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 01:19:08 +0000</pubDate>
		<dc:creator>Makdaam</dc:creator>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[els]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[smartcard]]></category>

		<guid isPermaLink="false">http://www.makdaam.eu/?p=17</guid>
		<description><![CDATA[Poniższy artykuł jest krótkim opisem moich eksperymentów z ELS. Mam nadzieję, że pomoże rozpocząć zabawę z kartami 7816, które z jednej strony są już zastępowane przez karty z interfejsem bezstykowym, z drugiej (głównie ze względu na bezpieczeństwo i pobór mocy) wchodzą do naszego życia codziennego.]]></description>
			<content:encoded><![CDATA[<p>Poniższy artykuł jest krótkim opisem moich eksperymentów z ELS. Mam nadzieję, że pomoże rozpocząć zabawę z kartami 7816, które z jednej strony są już zastępowane przez karty z interfejsem bezstykowym, z drugiej (głównie ze względu na bezpieczeństwo i pobór mocy) wchodzą do naszego życia codziennego.<span id="more-17"></span></p>
<h3>Co to jest ELS?</h3>
<p>ELS, czyli Elektroniczna Legitymacja Studencka jest kartą chipową zawierającą informacje o studencie podpisane <a href="http://pl.wikipedia.org/wiki/Podpis_elektroniczny_%28prawo%29">kwalifikowanym podpisem elektronicznym</a> przez wydawcę. Dokładne informacje na temat wyglądu nośnika jak i zawartości można znaleźć w <a href="http://isap.sejm.gov.pl/DetailsServlet?id=WDU20062241634">odpowiednim rozporządzeniu</a>. O samej legitymacji i przygodach związanych z jej wdrażaniem można przeczytać na stronie VaGli:</p>
<ul>
<li><a href="http://prawo.vagla.pl/node/6631">ELS: w jedności, neutralności i kompatybilności siła</a> – <a href="http://prawo.vagla.pl/vagla" target="_self">VaGla</a> o dodatkowej funkcjonalności ELS w Warszawie</li>
<li><a href="http://prawo.vagla.pl/node/6605">Rozmiękczanie plastiku czyli komu bije ELS</a> – <a href="http://www.put.poznan.pl/%7Etommy">Tomasz Kokowski</a>, osoba odpowiedzialna za wdrożenie ELS w Poznaniu i nie tylko, o tym, jakie trudności napotkano podczas pierwszego przetargu (w odpowiedzi na artykuł w Rzeczypospolitej)</li>
<li><a href="http://prawo.vagla.pl/node/7106">Jaka karta ELS?</a> &#8211; Jacek Biskupski, opinia vice prezesa jednej z firm dystrybuujących karty i startujących w przetargu, polecam szczególnie dyskusję w komentarzach.</li>
<li><a href="http://prawo.vagla.pl/node/7639">Komu bije ELS v2.0</a> – Tomasz Kokowski, co jeszcze można było (można by) zrobić przy okazji wdrażania ELS</li>
</ul>
<p>Karta powinna być zgodna ze standardem <a href="http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816.aspx">ISO 7816</a>, a dane na niej zawarte powinny być zapisane w formacie <a href="http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf">ASN.1 Basic Encoding Rules</a> zgodnie ze specyfikacją w <a href="http://isap.sejm.gov.pl/DetailsServlet?id=WDU20062241634">załączniku nr 3 do rozporządzenia</a>. Nie znalazłem szczegółowych informacji na temat interfejsu bezstykowego, ale z <a href="http://prawo.vagla.pl/node/7599#comment-7416">wiarygodnego źródła</a> wiem, że ELSki wyposażone w interfejs Mifare pozwalają na odczytanie danych związanych z legitymacją (imię, nazwisko, nr albumu, PESEL) każdemu bez żadnego uwierzytelniania. Nie mam jeszcze sprzętu do czytania kart RFID 13,56MHz (w tym Mifare), ale w najbliższym czasie powinienem mieć dostęp do odpowiednich czytników.</p>
<h3>Sprzęt</h3>
<p>Do zabaw z kartami chipowymi używam bardzo starego czytnika do kart stykowych Schlumberger Reflex USB, który nabyłem okazyjnie na allegro. <a href="http://pcsclite.alioth.debian.org/">PCSC-lite</a> pozwala mi rozmawiać z tym sprzętem na odpowiednio wysokim poziomie i do tego ma API niemal identyczne z Windowsowym PCSC (łatwiej będzie przeportować).</p>
<h3>Zawartość karty</h3>
<p>Pierwsza wersja programu odczytującego służyła do skanowania karty w poszukiwaniu wybieralnych plików. Dane na każdej karcie stykowej zgodnej z ISO 7816 są ułożone w strukturę drzewiastą. Odpowiednikami katalogów są pliki DF (Dedicated File – czasami nazywane Directory File), rolę plików zwykłych pełnią pliki EF (Elementary File), każdy plik ma 2 bajtowy adres. Korzeniem drzewa jest plik 0x3F00, oznaczony jako MF (Master File). Oprócz tego zarezerwowane są adresy 0x3F00 (obecny katalog, odpowiednik &#8216;.&#8217;) i 0xFFFF. Wszystkie DFy dostępne z MF muszą być zarejestrowane (aby uniknąć kolizji w przypadku więcej niż jednej aplikacji na jednej karcie) i szczerze mówiąc nie wiem gdzie znaleźć ich spis <img src='http://www.makdaam.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (najprawdopodobniej jest dostępny za drobną opłatą u podmiotu rejestrującego).</p>
<p>Przeskanowanie ujawniło następujące pliki DF:</p>
<ul>
<li>0&#215;0101 (DF.SELS) – Elektroniczna Legitymacja Studencka
<ul>
<li>0&#215;0001 TRANSPARENT (EF.CERT) – kwalifikowany certyfikat emitenta</li>
<li>0&#215;0002 TRANSPARENT (EF.ELS) – plik z danymi legitymacji + podpis</li>
</ul>
</li>
<li>0&#215;5011 DF – nieznany
<ul>
<li>0&#215;8001</li>
<li>0&#215;8002</li>
<li>0&#215;8003</li>
<li>0&#215;8004 hic sunt dracones</li>
<li>0&#215;8005</li>
<li>0&#215;8006</li>
<li>0&#215;8007</li>
</ul>
</li>
</ul>
<p>Skanowanie wszystkich 65535 możliwości trwało około 4h. Jeżeli chodzi o DF 0&#215;5011 jest on najprawdopodobniej interfejsem do wgrywania aplikacji na kartę.</p>
<h3>Wyjaśnienie kodu programu</h3>
<p>Nie będę tutaj opisywać inicjalizacji komunikacji z kartą, szczegóły można znaleźć w dokumentacji ISO. Kod załączony do artykułu wywołuje wszystkie funkcje potrzebne do połączenia i pracy z kartą przez interfejs PCSC. Pozwala też na łatwą modyfikację i automatyzację niektórych działań (licencja GNU GPLv3).</p>
<p>Ogólna struktura komend wysyłanych do karty chipowej ma następującą postać (kolejne bajty numerowane od 0):</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4&#8230;</td>
<td>ostatni</td>
</tr>
<tr>
<td>CLA</td>
<td>INS</td>
<td>P1</td>
<td>P2</td>
<td>pola opcjonalnych danych</td>
<td>Le</td>
</tr>
</tbody>
</table>
<p>gdzie CLA to klasa komend (przyjąłem 0&#215;00 &#8211; patrz <a href="http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx#chap5_4_1">ISO 7816-4 5.4.1</a>), INS to bajt wskazujący instrukcję, a P1 i P2 to dwa parametry komendy. W przypadku, gdy komenda wymaga wysłania więcej niż dwóch bajtów danych (np. zapis do pliku) stosuje się pola opcjonalne, z których pierwszy bajt opisuje długość, a pozostałe zawierają konkretne dane. Ostatnim polem jest Le, które najczęściej podaje liczbę bajtów jaką jest w stanie przyjąć nasz czytnik kart.</p>
<p>Aby odczytać zawartość pliku na karcie, musimy go najpierw wybrać przy pomocy komendy SELECT FILE (0xA4), która przyjmuje 2 parametry określające sposób wyboru pliku (my wybieramy na podstawie identyfikatora i nie interesuje nas na razie jakie informacje zwróci komenda – P1 = 0&#215;00 i P2 = 0&#215;00). Następnie podajemy długość danych (0&#215;02) i same dane, czyli identyfikator pliku (np. 0&#215;0101), bajt Le zostawiamy pusty (nie wysyłamy go).</p>
<p>Po wybraniu odpowiedniego pliku odczytujemy jego zawartość za pomocą komendy READ BINARY (0xB0), która przyjmuje przesunięcie danych w pliku jako jeden parametr zajmujący P1 i P2 (2 bajty), a bajt Le wskazuje liczbę danych jakie jesteśmy w stanie przetworzyć.</p>
<p>Jeżeli kod nadal nie jest czytelny proszę o kontakt. Zaznaczam jednak, że nie udzielam lekcji z podstaw programowania w języku C, ani nie zajmuję się tłumaczeniami standardów ISO na polski <img src='http://www.makdaam.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . W następnym artykule na temat ELS postaram się opisać strukturę samego pliku danych i certyfikatu oraz zaprezentować weryfikację podpisu legitymacji.</p>
<h3>Uaktualnienie</h3>
<p>Jak się okazuje same dwubajtowe identyfikatory plików (FID) nie muszą być globalnie takie same. Poniższą, uniwersalną metodę selekcji DF.SELS przesłał <a href="http://www.kress-net.com/">Krzysztof Rutecki</a> z Wrocławia, za co serdecznie dziękuję. Preferowanym sposobem wyboru DF.SELS (najprawdopodobniej także DFów innych aplikacji) jest AID (Application ID), który to właśnie znajduje się w odpowiednim załączniku do piątej części ISO7816 i jest zarezerwowany tylko dla danej aplikacji. Pełna komenda wybierająca DF.SELS przez AID znajduje się w funkcji &#8222;selectDfselsByAID&#8221; nowego kodu źródłowego. Jest to zwykły SELECT FILE, tyle że P1=0&#215;04, a P2=0&#215;00, później znajdziemy długość AIDu w bajtach i sam AID. Ten sposób powinien zagwarantować zgodność oprogramowania z legitymacjami innymi niż te z Poznania.</p>
<h3>Linki</h3>
<p>Załącznik do artykułu: <a href="http://www.makdaam.eu/wp-content/uploads/2008/04/els_reader.tar.gz">els_reader.tar.gz</a></p>
<p><a href="http://lukaszkulasek.pl/">Łukasz Kulasek</a> napisał <a href="http://lukaszkulasek.pl/pliki/czytajels.zip">klasę w Javie</a> służącą do odczytywania zawartości ELS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.makdaam.eu/2008/04/czytanie-els-przez-interfejs-stykowy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

