120
Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarstvo i automatiku Katedra za računarske nauke i informatiku Dalibor Trišić Biblioteka za rukovanje smart karticama u .NET okruženju diplomski rad

Biblioteka za rukovanje smart karticama u .NET okruženju

  • Upload
    d3lboy

  • View
    15

  • Download
    0

Embed Size (px)

DESCRIPTION

Pametna kartica je tema ovog rada, tj. kreiranje biblioteka sa metodima koji će omogućiti pristup i rukovanje pametnim karticama i čitačima pametnih kartica. U službi boljeg razumijevanja, potrebno je, prethodno, upoznati terminologiju pametnih kartica, steći osnovna znanja o fizičkim i električnim svojstvima, komunikacijskom modelu, operativnom sistemu , itd.

Citation preview

Page 1: Biblioteka za rukovanje smart karticama u .NET okruženju

Univerzitet u Novom SaduFakultet tehničkih nauka

Odsek za računarstvo i automatikuKatedra za računarske nauke i informatiku

Dalibor Trišić

Biblioteka za rukovanje smart karticamau .NET okruženju

diplomski rad

Novi Sad 2005.

Page 2: Biblioteka za rukovanje smart karticama u .NET okruženju

2

Page 3: Biblioteka za rukovanje smart karticama u .NET okruženju

UNIVERZITET U NOVOM SADUFAKULTET TEHNIČKIH NAUKA

ODSEK ZA RAČUNARSTVO I AUTOMATIKUKATEDRA ZA RAČUNARSKE NAUKE I INFORMATIKU

BIBLIOTEKA ZA RUKOVANJE SMART KARTICAMA U .NET OKRUŽENJU

diplomski rad

Kandidat: Mentor:Dalibor Trišić, E7347 Zora Konjović

Novi Sad 2005.

3

Page 4: Biblioteka za rukovanje smart karticama u .NET okruženju

4

Page 5: Biblioteka za rukovanje smart karticama u .NET okruženju

Naslov zadatka: Biblioteka za rukovanje smart karticama u .NET okruženju

Tekst zadatka: Upoznati se sa osnovnim karakteristikama .NET razvojnog okruženja i sa pristupom smart karticama i odgovarajućim uređajima putem PC/SC standarda. Specificirati i implementirati bibliotekuza rukovanje smart karticama i čitačima smart kartica putem PC/SC interfejsa za Windows platformu u okviru .NET razvojnog okruženja. O okviru biblioteke, kao posebnu podršku, implementirati funkcije Axalto Cryptoflex 8k kartice, što uključuje rad sa datotečnim sistemom i kriptografske funkcije. Dokumentovati rješenje.

5

Page 6: Biblioteka za rukovanje smart karticama u .NET okruženju

6

Page 7: Biblioteka za rukovanje smart karticama u .NET okruženju

Sadržaj

1. Uvod.......................................................................................................................................132. Pametna kartica....................................................................................................................14

2.1. Uvod u pametne kartice...................................................................................................142.2. Fizičke i električne karakteristike pametne kartice.........................................................15

2.2.1. Dimenzije...............................................................................................................................152.2.2. Čip..........................................................................................................................................152.2.3. Kontaktna površina.................................................................................................................162.2.4. CPU........................................................................................................................................162.2.5. Koprocesor.............................................................................................................................172.2.6. Memorija................................................................................................................................17

2.3. Komunikacijski model.....................................................................................................172.3.1. CAD uređaj i aplikacije terminala..........................................................................................172.3.2. Komunikacijski model kartičnih sistema...............................................................................182.3.3. APDU protocol.......................................................................................................................192.3.4. TPDU protokol.......................................................................................................................202.3.5. ATR........................................................................................................................................202.3.6. PTS.........................................................................................................................................20

2.4. Operativni sistem pametne kartice...................................................................................212.5. Standardi i specifikacije...................................................................................................23

2.5.1. ISO 7816 Standard.................................................................................................................232.5.2. GSM.......................................................................................................................................232.5.3. EMV.......................................................................................................................................232.5.4. PC/SC.....................................................................................................................................24

3. Cryptoflex 8k.........................................................................................................................263.1. Uvod................................................................................................................................26

3.1.1. Karakterisitike........................................................................................................................263.1.2. Struktura naredbe i odgovora.................................................................................................263.1.3. Reset kartice...........................................................................................................................273.1.4. Inicijalni datotečni sistem.......................................................................................................27

3.2. Tipovi datoteka u Cryptoflex pametnoj kartici................................................................283.2.1. Glavna datoteka (MF)............................................................................................................283.2.2. Namjenske datoteke (DF).......................................................................................................293.2.3. Elementarne datoteke (EF).....................................................................................................293.2.4. Rezervisani identifikacioni brojevi datoteka (FID)................................................................303.2.5. Izračunavanje veličine datoteke.............................................................................................303.2.6. Korisnički i administratorski PIN (CHV1 I CHV2)...............................................................313.2.7. Datoteka sa ključevima (External Key File)..........................................................................313.2.8. Datoteka sa ključevima (Internal Key File)...........................................................................323.2.9. Datoteke sa RSA ključevima (RSA Key File).......................................................................343.2.10. Serijski broj kartice (EF ICC Serial Number)......................................................................373.2.11. Odgovor na reset (ATR).......................................................................................................38

3.3. Uslovi pristupa (Access Conditions)...............................................................................393.3.1. ALW (Always).......................................................................................................................393.3.2. CHV1 (Card Holder Verification-User).................................................................................393.3.3. CHV2 (Card Holder Verification-Admin).............................................................................393.3.4. PRO (Protected).....................................................................................................................393.3.5. AUT........................................................................................................................................403.3.6. CHV1&PRO...........................................................................................................................41

7

Page 8: Biblioteka za rukovanje smart karticama u .NET okruženju

3.3.7. CHV2&PRO...........................................................................................................................413.3.8. CHV1&AUT..........................................................................................................................413.3.9. CHV2&AUT..........................................................................................................................413.3.10. NEV......................................................................................................................................41

3.4. Cryptoflex naredbe..........................................................................................................423.4.1. ChangeCHV (Izmjena PIN-a)................................................................................................433.4.2. CreateFile...............................................................................................................................433.4.3. CreateRecord..........................................................................................................................463.4.4. Decrease.................................................................................................................................463.4.5. DeleteFile...............................................................................................................................473.4.6. DirNext...................................................................................................................................473.4.7. ExternalAuthenticate..............................................................................................................483.4.8. GetChallenge..........................................................................................................................483.4.9. GetResponse...........................................................................................................................493.4.10. Increase.................................................................................................................................513.4.11. InternalAuthenticate.............................................................................................................523.4.12. Invalidate..............................................................................................................................523.4.13. ReadBinary...........................................................................................................................523.4.14. ReadRecord..........................................................................................................................533.4.15. Rehabilitate...........................................................................................................................543.4.16. RSAKeyGenerate.................................................................................................................543.4.17. RSASignature.......................................................................................................................553.4.18. Seek......................................................................................................................................553.4.19. Select....................................................................................................................................563.4.20. SHA-1Intermediate..............................................................................................................563.4.21. SHA-1Last............................................................................................................................573.4.22. UnblockCHV........................................................................................................................573.4.23. UpdateBinary........................................................................................................................583.4.24. UpdateBinaryEnciphered.....................................................................................................583.4.25. UpdateRecord.......................................................................................................................593.4.26. VerifyCHV...........................................................................................................................593.4.27. VerifyKey.............................................................................................................................603.4.28. Statusne riječi.......................................................................................................................60

4. Biblioteka SmartCard............................................................................................................634.1. Uvod................................................................................................................................634.2. Struktura biblioteke SmartCard.......................................................................................644.3. Podbiblioteka SmartCard.Controls..................................................................................64

4.3.1. SCReader................................................................................................................................654.4. Podbiblioteka SmartCard.Cryptoflex..............................................................................67

4.4.1. CryptoflexCard.......................................................................................................................684.4.2. Cryptoflex8k...........................................................................................................................694.4.3. Personalization.......................................................................................................................69

4.5. Terminal...........................................................................................................................704.6. Ostali, bitni elementi biblioteke SmartCard....................................................................71

4.6.1. SmartCard.SCUtils.................................................................................................................714.6.2. SmartCard.SCardCommand...................................................................................................714.6.3. SmartCard.SCCrypto..............................................................................................................724.6.4. SmartCard.SCPinDialog.........................................................................................................724.6.5. SmartCard.SCDisposition......................................................................................................724.6.6. SmartCard.SCCardStates.......................................................................................................73

8

Page 9: Biblioteka za rukovanje smart karticama u .NET okruženju

4.6.7. SmartCard.SCProtocols..........................................................................................................734.6.8. Smartcard.SCShareMode.......................................................................................................734.6.9. Cryptoflex.EFFileInfo i Cryptoflex.DFFileInfo – informacije o datoteci..............................744.6.10. Cryptoflex.EFAccessConditions..........................................................................................744.6.11. Cryptoflex.AccessConditions...............................................................................................754.6.12. Cryptoflex.FileTypes............................................................................................................75

5. Implementacija.....................................................................................................................775.1. Programsko okruženje.....................................................................................................775.2. Tok izrade........................................................................................................................775.3. Eksploatisanje biblioteke SmartCard..............................................................................78

6. Zaključak...............................................................................................................................797. Literatura..............................................................................................................................808. Biografija................................................................................................................................81

9

Page 10: Biblioteka za rukovanje smart karticama u .NET okruženju

10

Page 11: Biblioteka za rukovanje smart karticama u .NET okruženju

Akronimi

3DESACALWAUTATRAPDUATMCADCISCCHVCYDESDFEEPROMEFFIDICCLFLSBLSNLVMFMSBMSNNEVNRPINPROPTSRAMRFURLRSAROMTPDU

Triple DES (using DES keys in succession for encryption)access conditionalwaysauthenticateAnswer To ResetApplication Protocol Data UnitsAutomatic Teller MachineCard Acceptance DeviceComplex Instruction Set Computingcard holder verificationcyclic EFData Encryption StandardDedicated Fileelectrically erasable programmable read-only memoryElementary FileFile Identifierintegrated circuit cardlinear fixed EFleast significant byteleast significant nibblelinear variable EFMaster Filemost significant bytemost significant nibbleNevernumber of recordspersonal identification numberProtectedProtocol Type SelectionRandom Access Memoryreserved for future use ( FF)record lengthRivest, Shamir and Adleman, originalni tvorci RSA enkripcijeRead Only MemoryTransmission Protocol data Unit

11

Page 12: Biblioteka za rukovanje smart karticama u .NET okruženju

1.Uvod

Tehnologija danas, više nego ikad, određuje društvo u kome živimo. Ulazi u sve pore ljudskog djelovanja, stvara novi soj ljudi i poslova, ona je uzrok evolucije društva. Jedan izum objedinjuje i simbolizuje navedene promjene – računar.

Prvi računari izvodili su nekoliko operacija, dok današnji izvode 3D animacije i nakoliko milijardi operacija brzinom svjetlosti. Razvoj poluprovodničkih tehnologija doveo je do toga da se veličina računara sa prostora jedne sobe svede na nekoliko desetina kvadratnih milimetara. Time su stvroreni preduslovi za razvoj novih tehnologija. Jedna od njih je i pametna kartica.

Pametna kartica je i tema ovog rada, tj. kreiranje biblioteka sa metodima koji će omogućiti pristup i rukovanje pametnim karticama i čitačima pametnih kartica. U službi boljeg razumijevanja, potrebno je, prethodno, upoznati terminologiju pametnih kartica, steći osnovna znanja o fizičkim i električnim svojstvima, komunikacijskom modelu, operativnom sistemu , itd.

12

Page 13: Biblioteka za rukovanje smart karticama u .NET okruženju

2.Pametna kartica

2.1.Uvod u pametne kartice

Začetnikom pametne kartice (eng. Smart Card) smatra se francuski novinar Roland Moreno koji je 1974 godine registrovao idejne patente pametne kartice. Zato i ne čudi što je prva primjena pametnih kartica i ostvarena u Francuskoj. Telefonska industrija, odnosno francuski PTT, 1984.god. izdaje prvu telefonsku karticu.

Pametne kartice dijelimo u nekoliko grupa. Mogu biti podijeljene na memorijske kartice i mikroprocesorske kartice. Mogu, takođe, biti podijeljene na kontaktne i beskontaktne kartice bazirane na razlici u mehanizmu pristupa.

Slika 2.1 Podjela pametnih kartica

Memorijska kartica ima ugrađen čip s memorijom i neprogramljivom logikom, ne sadrži mikroprocesor. Usljed neprisustva mikroprocesora, neprogramljiva logika procesira podatke. Ona omogućuje direktan pristup memoriji i podržava nekoliko neprogramljivih naredbi. Tipičan predstavnik memorijskih kartica je telefonska kartica. Posljedica neprogramljivosti je da telefonska kartica postaje neupotrebljiva nakon što se potroši kredit. Prednost memorijskih kartica je jednostavna tehnologija, što rezultira niskom cijenom. Pohranjeni podaci se štite sigurnosnom logikom i zaštitom memorijskih ćelija. Ali i pored takve zaštite, memorijske kartice se mogu, relativno lako, falsifikovati.

Kao što i sam naziv govori, mikroprocesorske kartice sadrže mikroprocesor. Mikroprocesor značajno podiže nivo sigurnosti. Omogućava ugradnju kriptografskih algoritama i primjenu širokog skupa zaštitnih mehanizama. Funkcionalnost mikroprocesorskih kartica ograničena je samo veličinom njihove memorije i snagom procesiranja. Koriste se u aplikacijama koje zahtijevaju sigurnost i privatnost podataka.

Uopšteno, naziv pametna kartica odnosi se i na memorijske i na mikroprocesorske kartice, ali zbog „inteligencije” koju pruža ugrađeni procesor često se naziv pametna kartica veže samo za

13

Page 14: Biblioteka za rukovanje smart karticama u .NET okruženju

mikroprocesorske kartice. Stoga će se u sljedećim poglavljima, ako drugačije nije eksplicitno navedeno, naziv kartica i naziv pametna kartica odnositi na mikroprocesorske kartice. Naziv čip kartica obuhvata i memorijske i mikroprocesorske kartice.

Slika 2.2 Pametna kartica

2.2.Fizičke i električne karakteristike pametne kartice

2.2.1.Dimenzije

Slika 2.3 Dimenzije pametne kartice

2.2.2.Čip

Čip je najvažniji elemenat pametne kartice. Za razliku od magnetne trake čip je krhak i ne može se jednostavno nalijepiti na površinu kartice. Umjesto toga čip se stavlja u neku vrstu kućišta, u cilju zažtite od vanjskih uticaja svakodnevnog korišćenja kartice. To kućište nazivamo modul čipa.

14

Page 15: Biblioteka za rukovanje smart karticama u .NET okruženju

2.2.3.Kontaktna površina

Dio površine modula služi kao 8-polna kontaktna površina preko koje pametna kartica, odnosno njen mikrokontroler komunicira sa okolinom.

(a) (b)Slika 2.4 Kontaktna površina pametne kartice

(a)realan izgled(b) šematski prikaz

Pametna kartica ima osam kontaktnih tačaka (slika 2.4). Dimenzije i lokacije kontakata opisuje standard ISO 7816, 2. dio.

- Na Vcc kontakt se dovodi napajanje. Naponski prag je 3V ili 5V, sa tolerancijom od ±10%.- RST kontakt služi za slanje reset signala mikroprocesoru.- Mikroprocesor pametne kartice ne posjeduje mogućnost generisanja signala takta. Na CLK kontakt se dovodi vanjski signal takta.- GND se koristi kao referentni napon. Najčešće je to nula.- Vpp kontakt se ne koristi.- RFU kontakti su rezervisani za buduću upotrebu

2.2.4.CPU

Centralna procesorska jedinica, kod većine današnjih čipova, je 8-bitni procesor baziran na CISC arhitekturi procesora Motorola 6805 i Intel 8051 sa signalom takta frekvencije 5MHz i 16-bitnim memorijskim adresiranjem.

Noviji kartični čipovi implementiraju 16-bitne i 32-bitne procesore. Razlog za izgradnju 32-bitnih procesora su sve zahtijevi za što boljim performansama. Međutim, jednostavnost izrade i mala cijena dovode do toga će se 8-bitni procesori zadržati još neko vrijeme.

15

Page 16: Biblioteka za rukovanje smart karticama u .NET okruženju

2.2.5.Koprocesor

Aplikacije, koje koriste pametne kartice, sve češće zahtijevaju primjenu kriptografskih algoritama. Kriptografski koprocesor je specijalno dizajniran za korišćenje računskih operacija asimetričnih kriptografskih algoritama, implementira operacije eksponenta i modula velikih brojeva . Time je omogućena i kartična generacija 1024-bitnih RSA ključeva. Negativna strana ugradnje dodatne jedinice je povećanje cijene čipa.

2.2.6.Memorija

Pametne kartice sadrže, obično, tri tipa memorije : ROM, EEPROM i RAM.

ROM memorija se koristi za skladištenje nepromjenljivog programskog koda. Sadrži operativni sistem i nepromjenljive podatke korisničkih aplikacija. Proces pisanja stalnih programskih komponenti u nepromjenljivu memoriju, naziva se maskiranje i odvija se u procesu proizvodnje. Nakon te faze, moguće je samo čitanje. Ova memorija čuva svoje podatke i bez prisustva napajanja.

EEPROM – Elektično izbrisiva programljiva memorija, koristi se za trajno smještanje podataka. Ali za razliku od ROM memorije, podaci se mogu upisivati u toku korišćenja kartice. Bitne karakteristike ove EEPROM-a su dužina trajanja, vrijeme pristupa i broj ciklusa pisanja. EEPROM, koji koriste pametne kartice, može trajati duže od 10 godina i izdržati preko 100.000 upisa. Čitanje iz ove memorije je brzo kao i čitanje kod RAM memorije, ali je zato upis sporiji oko 1000 puta.

RAM memorija se koristi za privremeno čuvanje podataka u toku korišćenja kartice. Gubitkom napajanja gube se i podaci čuvani u ovoj memoriji.

2.3.Komunikacijski model

2.3.1.CAD uređaj i aplikacije terminala

Uređaj koji prihvata karticu i komunicira sa njom naziva se uređaj za prihvat kartice – CAD. Dvije su vrste ovih uređaja : čitači pametnih kartica i terminali.

Pametna kartica komunicira sa računarom putem čitača pametnih kartica (eng. Smart Card Reader).Čitač je povezan sa računarom putem serijskog, paralelnog ili USB ulaza. Važno je napomenuti da čitač nema mogućnosti procesiranja podataka.

16

Page 17: Biblioteka za rukovanje smart karticama u .NET okruženju

Terminali su računari koji imaju integrisan čitač kao sopstvenu komponentu. Primjer terminala je bankovni ATM terminal. Pored funkcije čitača, terminal ima i mogućnosti procesiranja podataka i interfejs za komunikaciju su korisnikom.

Funkcionalno, terminali i računari sa čitačem pametnih kartica se ne razlikuju, osim po tome što je terminal specijalizovaniji. U daljem izlaganju za oba tipa CAD uređaja koristiće se izraz terminal.

Aplikacije koje komuniciraju sa pametnom karticom, nezavisno od toga da li se nalaze na računaru ili terminalu, nazivaju se aplikacije terminala.

Terminal, aplikacije terminala, pametnu karticu i njihove međusobne veze, u daljem izlaganju, nazivaćemo jednim imenom – kartični sistem.

2.3.2.Komunikacijski model kartičnih sistema

Komunikacijski kanal između pametne kartice i terminala podržava dvosmjernu komunikaciju, tj. prenos podataka u oba smjera, ali ne u isto vrijeme.

Dva računara komuniciraju tako što izmjenjuju pakete podataka, koji se konstruišu na temelju nekog protokola, kao što je TCP/IP. Na sličan način komunicira pametna kartica sa terminalom, koristeći sopstveni format paketa podataka – APDU. APDU nosi naredbu ili odgovor, odnosno razlikujemo APDU naredbu i APDU odgovor. Kartični sistem se bazira na gospodar-sluga komunikacijskom modelu. Ulogu sluge preuzima pametna kartica. Ona preuzima APDU naredbu od terminala i prosljeđuje APDU odgovor.

Slika 2.5 Komunikacijski model pametne kartice

17

Page 18: Biblioteka za rukovanje smart karticama u .NET okruženju

2.3.3.APDU protocol

APDU protokol je protokol na nivou aplikacija između terminala i pametne kartice. APDU naredbe obuhvaćene su sa dvije strukture: Prvu koristi aplikacija na strani terminala za slanje naredbi pametnoj kartici, a drugu pametna kartica za slanje odgovora aplikaciji terminala. Navedeni formati poruka se nazivaju APDU naredba (C-APDU) i APDU odgovor (R-APDU).Na slikama 2.6 i 2.7 je prikazana njihova struktura.

Zaglavlje TijeloCla Com P1 P2 Lc Podaci Le

Slika 2.6 APDU naredba

Tijelo Statusna riječPodaci SW1 SW2

Slika 2.7 APDU odgovor

Zaglavlje APDU naredbe se sastoji od 4 bajta: Cla (oznaka klase kojoj pripada instrukcija), Com (oznaka instrukcije), P1 i P2 (parametri instrukcije). Bajt klase identifikuje kategoriju APDU naredbe i APDU odgovora. Instrukcijski bajt određuje instrukciju naredbe. Parametri P1 i P2 se koriste kao proširenja funkcionalnosti instrukcije.

Nakon zaglavlja APDU naredbe slijedi tijelo APDU naredbe. Tijelo je opciono i varijabilne dužine. Lc polje određuje dužinu podataka koji se šalju (broj bajtova). Sljedeće polje sadrži podatke koji se šalju kartici za izvršavanje instrukcije naznačene u zaglavlju. Posljednji bajt APDU naredbe je Le polje. Le polje određuje koliki broj bajtova očekuje aplikacija terminala u sljedećem APDU odgovoru.

Kartica šalje APDU odgovor koji se sastoji od opcionog tijela i obaveznog završnog dijela. Tijelo obuhvata podatke čija je dužina određena Le poljem odgovarajuće APDU naredbe. Završni dio se sastoji od dva polja, SW1 i SW2, koja zajedno prave statusnu riječ. Statusna riječ opisuje u kojem je radnom stanju kartica nakon što izvrši instrukciju APDU naredbe. Npr. statusna riječ “0x9000” znači da je kartica uspješno i u potpunosti izvršila naredbu.

18

Page 19: Biblioteka za rukovanje smart karticama u .NET okruženju

2.3.4.TPDU protokol

TPDU protokol je protokol nižeg nivoa. Strukture podataka koje izmjenjuju terminal i kartica nazivaju se TPDU jedinice. Trenutno su u upotrebi dva protokola, T=0 i T=1. Oba su dvosmjerna i asinhrona. T=0 je bajt-orjentisan protokol, što znači da je najmanja prenesena jedinica jedan bajt. Za razliku od njega, kod T=1 protokola, najmanja prenesena jedinica je blok (niz bajta).

2.3.5.ATR

Nakon što se na kontaktnu površinu pametne kartice dovede signal napajanja, signal takta i reset signal, kartica preko I/O linije šalje terminalu ATR poruku. ATR porukom saopštava terminalu vrijednosti parametara potrebnih za uspostavljanje međusobne komunikacije. Dužina ATR poruke je maksimalno 33 bajta. Sadrži informacije o podržanom tipu prenosnog protokola, o brzini prenosa podataka, parametre kartičnog hardvera i druge slične informacije koje terminal mora znati da bi mogao uspostaviti pravilnu komunikaciju s datom karticom.

2.3.6.PTS

Prijemom ATR poruke terminal dobija sve potrebne informacije za uspostavljanje komunikacijskog puta između njega i pametne kartice. Ako terminal želi promijeniti jedan ili više parametara komunikacijskog protokola, šalje kartici PTS poruku. PTS poruka se mora poslati neposredno nakon ATR poruke. Nakon ATR poruke moguće je poslati samo jednu PTS poruku. Terminal na taj način može promijeniti parametre komunikacijskog protokola, naravno, samo one koje dotična kartica dozvoljava.

19

Page 20: Biblioteka za rukovanje smart karticama u .NET okruženju

2.4.Operativni sistem pametne kartice

Operativni sistem pametne kartice ima malu sličnost sa personalnim računarom. Između ostalog, nema korisnički interfejs i nema mogućnosti pristupa podacima na drugim medijima.Njihov osnovni zadatak obuhvata prenos podataka, kontrolu izvršavanja naredbi, upravljanje datotekama, upravljanje i izvršavanje kriptografskih algoritama. Optimiziraju sigurnost izvršavanja kartičnih programa i zaštitu kontrole pristupa podacima. Pružaju standardizovani skup instrukcija za izgradnju korisničkih aplikacija.

Standard ISO 7816-4 predstavlja temelj većine današnijh operativnih sistema pametnih kartica. Njegova najbitnija karakteristika je datotečna orijentacija.

Organizacija datoteka kartice temelji se na ISO 7816-4 i ima hijerarhijsku strukturu prikazanu slikom 2.8. ISO 7816-4 definiše tri tipa datoteka. Najviši nivo naziva se glavna datoteka – MF , ispod nje je nekoliko slojeva namjenskih datoteka – DF, i konačno sloj elementarnih datoteka – EF. Svaka datoteka je određena svojim 2-bajtnim identifikatorom – FID-om . Pomoću FID-a se jednoznačno selektuje datoteka. Svaka naredba nad datotekom zahtijeva prethodnu selekciju datoteke.

Slika 2.8 Organizacija datoteka na kartici

20

Page 21: Biblioteka za rukovanje smart karticama u .NET okruženju

Unutrašnju strukturu svake datoteke čini zaglavlje i tijelo datoteke. Zaglavlje sadrži dozvole pristupa i informacije o strukturi tijela datoteke. Glavna datoteka i namjenska datoteka u svom tijelu sadrže zaglavlja svih namjenskih i elementarnih datoteka njima neposredno podređenih unutar hijerarhijske datotečne strukture. Namjenska datoteka ima funkciju direktorijuma kod datotečnog sistema personalnog računara. Elementarna datoteka je datoteka podataka, tj. njeno tijelo nosi podatke. Pristup do elementarne datoteke, odnosno do njenih podataka, mora ići kroz datoteke roditelja. Na taj način formiramo logički kanal do elementarne datoteke.

S obzirom na strukturu tijela elementarne datoteke razlikujem četiri vrste EF datoteka (slika 2.9).

Slika 2.9 Tipovi EF datoteka

Transparentna datoteka je karakteristična po tome da se podaci smještaju kao niz bajtova. Kod Linearne fiksne sadržaj je organizovan u blokove jednake dužine, dok su kod Linearne promjenljive blokovi proizvoljne dužine. Ciklična datoteka je organizovana kao prsten sa blokovima jednake dužine (LIFO mehanizam).

S obzirom na to ko koristi podatake razlikujemo radne i interne elementarne datoteke. Radni EF čuva podatke namijenjene spoljnjem svijetu, razmijenjuju se u komunikaciji s terminalom. Podatke internog EF-a isključivo koristi operativni sistem kartice (tajni ključevi, PIN). U bilo kojem slučaju datoteka mora biti selektovana prije izvođenja operacije nad njom. To je ekvivalentno otvaranju datoteke.

21

Page 22: Biblioteka za rukovanje smart karticama u .NET okruženju

Sumirajući strukturu datoteka i kontrolu pristupa podacima, podaci na kartici mogu biti zaštićeni individualno, podešavajući uslove pristupa u zaglavlju svake datoteke, i hijerarhijski, grupišući datoteke ispod jedne namjenske datoteke s postavljenim uslovima pristupa.

2.5.Standardi i specifikacije

2.5.1.ISO 7816 Standard

International Organization for Standardization izdala je standard ISO 7816 «Identification cards – Integrated circuit cards with contacts». On definiše najvažnije karakteristike kontaktnih čip kartica:

1. dio – fizičke karakterisitike 2. dio – dimenzije i položaj kontakata 3. dio – električni signali i transportni protokoli 4. dio – međuindustrijske naredbe 5. dio – identifikator aplikacije 6. dio – međuindustrijski elementi podataka 7. dio – međindustrijske SCQL naredbe

2.5.2.GSM

European Telecommunications Standards Institute (ETSI) izdao je standard koji pokriva korišćenje pametnih kartica u javnim i mobilnim telefonskim sistemima. GSM standardi su specifikacija međunarodnog zemaljskog mobilnog telefonskog sistema. Značajni su :

GSM 11.11 – specifikacija SIM modula GSM 11.14 – specifikacija alata za razvoj aplikacija SIM modula GSM 03.48 – sigurnosni mehanizmi alata za razvoj aplikacija SIM modula

2.5.3.EMV

Europay, MasterCard i Visa definisale su EMV specifikaciju. Ona je nastala kao proširenje ISO 7816 standarda u smjeru specifičnih potreba finansijske industrije. Posljednja verzija specifikacije, EMV 96 verzija 3.3.1, izdana je 1998 i dolazi u tri dijela:

EMV ´96 Integrated Circuit Card specifikacija EMV ´96 Integrated Circuit Card Terminal specifikacija EMV ´96 Integrated Circuit Card Application specifikacija

22

Page 23: Biblioteka za rukovanje smart karticama u .NET okruženju

2.5.4.PC/SC

PC/SC specifikacija vlasništvo je PC/SC WorkGroup, industrijskog konzorcijuma koji obuhvata sve važnije učesnike industrije pametnih kartica. PC/SC definiše arhitekturu namijenjenu korišćenju pametnih kartica u domenu personalnih računara.

U toj arhitekturi aplikacija terminala se gradi iznad PC/SC servisa i PC/SC menadžera. Servisi enkapsuliraju funkcionalnosti i specifičnosti pojedinih pametnih kartica i omogućuju da se kartici pristupi kroz programske naredbe visokog nivoa, a PC/SC menadžer povezuje operativni sistem personalnog računara sa CAD uređajem. Njih najčešće obezbjeđuje proizvođač kartica.

23

Page 24: Biblioteka za rukovanje smart karticama u .NET okruženju

24

Page 25: Biblioteka za rukovanje smart karticama u .NET okruženju

3.Cryptoflex 8k

3.1.Uvod

3.1.1.Karakterisitike

Cryptoflex pametne kartice izgrađene su od strane Axalto-a, ogranka kompanije Schlumberger. Bazirane su na maski Schlumberger Multiflex pametne kartice.

Iako postoji nekoliko vrsta Cryptoflex pametnih kartica, izraz Cryptoflex koristiće se samo za Cryptoflex 8k pametnu karticu, pošto je ona tema ovog rada Oznaka 8k nam govori da na kartici postoji približno 8 kilobajta slobodne memorije za upis.

Neke od osnovnih karakteristika ove pametne kartice su: Uspiješno je testirana na 100.000 transakcija (pisanje i brisanje) DES enkripcija 3DES enkripcija RSA-512, RSA-768,RSA-1024 enkripcija Generisanje ključeva 8kb EEPROM-a Koristi se samo T=0 protokol za komunikaciju

3.1.2.Struktura naredbe i odgovora

Razmjena podataka kartice i kartičnog čitača odvija se na nivou APDU protokola. Na slici 3.1 su dati svi elementi poruka naredbe i odgovora.

ID OpisCla Klasa instrukcijeCom Identifikator instrukcije

P1,P2 Ulazni parametri relevantni instrukcijiP3 Parametar identifikuje dužinu podataka

(polje Data) koji se šalju ili primaju.Ack Kartica šalje jedan bajt kojim govori da

je primila naredbu i da je spremna za prenos podataka. U PC/SC sistemima, ovaj bajt presreću drajveri čitača, tako da on

ne stiže do aplikacijeData Podaci koji se šalju ili primaju

SW1,SW2 Statusna riječ

Tabela 3.1 Struktura poruke

25

Page 26: Biblioteka za rukovanje smart karticama u .NET okruženju

Kada čitač želi da pošalje podatke kartici, on šalje klasu instrukcije (Cla), identifikator instrukcije (Com) i tri parametra (P1,P2,P3), a zatim čeka na odgovor. Nakon što primi naredbu, kartica vraća identifikator instrukcije kao znak da je spremna da primi podatke. Nakon toga čitač šalje podatke dužine P3. Poslije prijema podataka, kartica šalje statusnu riječ (SW1SW2) čime saopštava da je prijem uspiješno obavljen.Isto tako čitač može da zahtijeva podatke sa kartice. U tom slučaju P3 označava broj bajtova koji se očekuje.

3.1.3.Reset kartice

Kada aplikacija pošalje kartici reset signal dešava se sljedeće:

Kartica vrši provjeru RAM memorije. Ako je detektovana greška, kartica se stavlja u takvo stanje da nisu moguće nikakve operacije nad njom.

Selektuje se glavna datoteka (MF). Čitaču se šalje ATR string koji sadrži podatke bitne za uspostavljanje komunikacije.

3.1.4.Inicijalni datotečni sistem

Kada se dobije Cryptoflex kartica, njen datotečni sistem je organizovan tako da sadrži samo glavnu datoteku(MF) i jednu datoteku u kojoj se nalazi transportni ključ (EF External Key File), neophodan da se otključa kartica. Ponekad se tu nalazi i datoteka sa serijskim brojem kartice. Izgled inicijalnog datotečnog sistema dat je na slici 3.2.

Slika 3.2 Inicijalna organizacija datoteka

26

Page 27: Biblioteka za rukovanje smart karticama u .NET okruženju

3.2. Tipovi datoteka u Cryptoflex pametnoj kartici

Nakon što se kartica otključa, moguće je dodavati i brisati direktorijume i datoteke. Nikada ne treba brisati External Key File (0011) koji se nalazi u korijenskom direktorijumu, jer se, kasnije, neće moći pristupiti kartici. Jedan primjer organizacije datoteka dat je na slici 3.3.

Slika 3.3 Organizacija datoteka

Pojedine datoteke imaju rezervisana imena i biće kasnije objašnjene.

3.2.1.Glavna datoteka (MF)

Glavna datoteka je specijalan tip namjenske datoteke i ima FID 3F00. Ona predstavlja korijen datotečnog sistema i automatski se selektuje kada se konektujemo sa karticom. Struktura glavne datoteke je takva da sadrži samo zaglavlje u kome se pohranjuju uslovi izvršavanja pojedinih naredbi.

MF (3F00) ACDir Next AUT

RFU NEVCreate File AUTDelete File AUTRehabilitate AUTInvalidate AUT

Slika 3.4 Uslovi izvršavanja naredbi

27

Page 28: Biblioteka za rukovanje smart karticama u .NET okruženju

3.2.2.Namjenske datoteke (DF)

Namjenska datoteka ima funkciju direktorijuma. Ako DF-u postoji datoteka sa spoljnim ključevima (External Key File), onda se ona koristi za zadovoljenje uslova pristupa. U suprotnom koristi se ona koja se nalazi u prvom DF-u iznad.

Svaki DF može sadržati samo po jednu od sljedećih elementarnih datoteka: Ključevi za spoljnu autenitifikaciju(External Authentication Key) Ključevi za internu autentifikaciju(Internal Authentication Key) Korisnički PIN (CHV1) Administratorski PIN (CHV2) RSA javni ključevi (RSA Public Key) RSA tajni ključevi (RSA Private Key)

3.2.3.Elementarne datoteke (EF)

Elementarne datoteke služe za smještanje podataka, kao što su imena, datumi, serijski brojevi, itd. Cryptoflex koristi četiri tipa ovih datoteka:

Transparentna (Transparent) Linearna sa slogovima fiksne dužine (Linear Fixed) Linearna sa slogovima promjenljive dužine (Linear Variable) Linearna sa slogovima organizovanim u prsten (Cyclic)

Transparentne datotekeTransparentne datoteke sadrže niz bajtova, pa su pogodne za smještanje ključeva.

Linearne-fiksne datotekeTijelo ove datoteke čini niz blokova fiksne dužine. Svaki blok čini niz od, maksimalno, 255 bajta. Broj blokova, takođe, ne smije preći dužinu od 255. Svaki put kada se pozove naredba Create File dodaje se novi blok iza posljednjeg koji je kreiran, i pomijera se pokazivač na njega.

Linearne-promjenljive datotekeSve što je rečeno za Linearne-fiksne važi i za ovaj tip datoteka, osim što blokovi mogu biti proizvoljne dužine (1-255 bajta). Linearne datoteke sa blokovima promjenljive dužine mogu biti korisne zbog uštede prostora, kada je potrebna kombinacija kratkih i dugih blokova.

Ciklične datotekeCiklična datoteka je specijalan slučaj linearne-fiksne datoteke, gdje su slogovi iste dužine i pritom su organizovani u prsten. Niz slogova ima LIFO strukturu, tj. kada dodajemo novi slog, prvi slog koji je kreiran biva istisnut iz prstena. Pogodne su za praćenje „posljednih deset akcija“.

28

Page 29: Biblioteka za rukovanje smart karticama u .NET okruženju

3.2.4.Rezervisani identifikacioni brojevi datoteka (FID)

Određenoj datoteci se pristupa na osnovu njenog FID-a. Pri kreiranju sopstvenih datoteka mogu se koristiti sve heksadecimalne vrijednosti od 0000 do FFFF osim onih koje su priložene u tabeli 3.5.

Naziv FIDKorisnički PIN(CHV1) 0000

Interni ključevi(Internal Key File) 0001Serijski broj kartice 0002

Rezervisano za buduću upotrebu(RFU) 0005Spoljni ključevi(External Key File) 0011

RSA Privatni ključevi(RSA Private Keys) 0012Rezervisano za buduću upotrebu(RFU) 0015

Administratorski PIN(CHV2) 0100RSA javni ključevi (RSA Public Keys) 1012

Odgovor na reset (ATR) 2F01Korijenski direktorijum 3F00

Rezervisano za buduću upotrebu(RFU) 3F11Rezervisano za buduću upotrebu(RFU) 3FFFRezervisano za buduću upotrebu(RFU) FFFF

Tabela 3.5 Rezervisani FID-ovi

3.2.5.Izračunavanje veličine datoteke

Veličina korisnog prostora koji se može iskoristiti za kreiranje novih sadržaja, kod Cryptoflex 8k pametne kartice, sa inicijalnim setom datoteka, iznosi 7690 bajta. Svaka datoteka sastoji se od zaglavlja koje je opisuje i tijela u koje se smiješta sadržaj.

Ukupna veličina datoteke je zbir zaglavlje plus tijelo.U tabeli 3.6 date su veličine zaglavlja karakterističnih datoteka.

Tip (naziv) Tip (hex ID) Zaglavlje MF 38 24BDF 38 24B

EF-Transparentna 01 16BEF-Fiksni slog 02 16B

EF-Promjenljivi slog 04 16BEF-Ciklična 06 16B

Tabela 3.6 Veličine zaglavlja datoteka

29

Page 30: Biblioteka za rukovanje smart karticama u .NET okruženju

3.2.6.Korisnički i administratorski PIN (CHV1 I CHV2)

Korisnički i administratorski lični identifikacioni brojevi su smješteni u transparentne datoteke sa identifikacionim brojevima 0000 (CHV1) i 0100 (CHV2). Struktura ovih datoteka data je u tabeli 3.7.

Transp. 0000(CHV1)/0100(CHV2) zaglavlje-16B AC

Uslovi

Read Binary NEVUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1 Aktivacioni bajt(bit0=1-aktivan,bit0=0

neaktivan)1B

2 RFU 1B3 RFU 1B

4-11 PIN 8B12 Maksimalan broj pokušaja 1B13 Preostali broj pokušaja 1B

14-21 Pin za deblokaciju 8B22 Maksimalan broj pokušaja 1B23 Preostali broj pokušaja 1B

Tabela 3.7 Struktura CHV datoteka

3.2.7.Datoteka sa ključevima (External Key File)

Datoteka u koji se smiještaju ključevi potrebni za zadovoljenje AUT i PRO uslova pristupa i autentifikaciju aplikacije terminala prema pametnoj kartici, naziva se External Key File i ima identifikacioni broj 0011.

Na novoj, nepersonalizovanoj pametnoj kartici nalazi se jedna datoteka ovog tipa u korijenskom direktorijumu (3F00) sa dva ključa. Prvi ključ je fabrički (na poziciji 0), a drugi je transportni ključ (pozicija 1). Cryptoflex karticu dobijamo zaključanu, da ne bi došlo do pokušaja falsifikovanja prilikom transporta., a odvojenom pošiljkom dobijamo transportni ključ. Da bi se otključala potrebno je izvršiti naredbu VerifyKey nad ključem na poziciji 1.

Distribucija fabičkog ključa se ne vrši. Pošto su ključevi heksadecimalni stringovi, umjesto VerifyKey instrukcije, radije se koristi ExternalAuthenticate.

U tabeli 3.8 data je struktura ovih datoteka.

30

Page 31: Biblioteka za rukovanje smart karticama u .NET okruženju

Transp. 0011 (External Key File) zaglavlje-16B AC

Uslovi

Read Binary NEVUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1 RFU 1B2 Dužina ključa 0 (x bajta) 1B3 ID algoritma (00-DES, 02-3DES) 1B

4-(3+x) Ključ 0 (00) xB4+x Maksimalan broj pokušaja 1B5+x Preostali broj pokušaja 1B6+x Dužina ključa 1 8B... ... ...

Tabela 3.8 Struktura External Key File datoteke

Dužina ključa 00 znači da nema više ključeva u datoteci, dok dužina 01 znači da ključ na datoj poziciji ne postoji, ali da nije posljednji u datoteci.

3.2.8.Datoteka sa ključevima (Internal Key File)

Transparentna datoteka koja sadrži DES ključeve. Koristi sa da izvrši autentifikaciju kartice prema aplikaciji terminala. FID broj ove datoteke je 0001.

Transp. 0011 (External Key File) zaglavlje-16B AC

Uslovi

Read Binary NEVUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1 RFU 1B2 Dužina ključa 0 (x bajta) 1B3 ID algoritma (00-DES, 02-3DES) 1B

4-(3+x) Ključ 0 (00) xB4+x Maksimalan broj pokušaja 1B5+x Preostali broj pokušaja 1B6+x Dužina ključa 1 8B... ... ...

Tabela 3.9 Strukturan Internal Key File datoteke

31

Page 32: Biblioteka za rukovanje smart karticama u .NET okruženju

Dužina ključa 00 znači da nema više ključeva u datoteci, dok dužina 01 znači da ključ na datoj poziciji ne postoji, ali da nije posljednji u datoteci. Datoteka može da sadrži, maksimalno, 16 ključeva.

3.2.9.Datoteke sa RSA ključevima (RSA Key File)

Postoje dva tipa ovih datoteka: Datoteka sa privatnim ključevima (EF RSA-PRIV FID-0012) Datoteka sa javnim ključevima (EF RSA-PUB FID-1012)

One sadrže privatne i javne ključeve neophodne za kriptografske operacije. Više od jednog ključa može biti smješteno u datoteku i ključevi mogu biti različite dužine. Dužina bloka za privatne ključeve može biti 163,243 ili 323 bajta zavisno od toga da li je RSA-512, RSA-768 ili RSA-1024 bajtna enkripcija, dok dužina bloka za javne ključeve je 167,247 ili 327 bajta.

Kod Cryptoflex 8k kartice, kada se izvrši naredba RSA Key Generate , generišu se javni i tajni ključevi i smještaju se u odgovarajuće datoteke, tako što se, uvijek, napišu preko prvog ključa (pozicija 0). Ključevi se mogu dodavati i manualno, korišćenjem naredbe UpdateBinary.

EF RSA-PRI (RSA-512 bit)

Transp. 0012 (EF RSA-PRI) zaglavlje-16B AC

Uslovi

Read Binary NEVUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1-2 Dužina bloka(npr. 00A3) 2B3 Ključ 0 (00) 1B

4-35 Primarni faktor javnog koeficijenta(P) 32B36-67 Primarni faktor javnog koeficijenta(Q) 32B68-99 Inverzno P (a = Q-1 mod P) 32B100-131 Privatni subeksponent(c=Ks mod (P - 1)) 32B132-163 Privatni subeksponent(f=Ks mod (Q - 1)) 32B164-165 Dužina bloka 2B

... ... ...

Tabela 4.0 Struktura datoteke EF RSA-PRI (RSA-512 bit)

32

Page 33: Biblioteka za rukovanje smart karticama u .NET okruženju

EF RSA-PRI (RSA-768 bit)

Transp. 0012 (EF RSA-PRI) zaglavlje-16B AC

Uslovi

Read Binary NEVUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1-2 Dužina bloka(npr. 00A3) 2B3 Ključ 0 (00) 1B

4-51 Primarni faktor javnog koeficijenta (P) 48B52-99 Primarni faktor javnog koeficijenta (Q) 48B100-147 Inverzno P (a = Q-1 mod P) 48B148-195 Privatni subeksponent(c=Ks mod (P - 1)) 48B196-243 Privatni subeksponent(f=Ks mod (Q - 1)) 48B244-245 Dužina bloka 2B

... ... ...

Tabela 4.1 Struktura datoteke EF RSA-PRI (RSA-768 bit)

EF RSA-PRI (RSA-1024 bit)

Transp. 0012 (EF RSA-PRI) zaglavlje-16B AC

Uslovi

Read Binary NEVUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1-2 Dužina bloka(npr. 00A3) 2B3 Ključ 0 (00) 1B

4-67 Primarni faktor javnog koeficijenta (P) 64B68-131 Primarni faktor javnog koeficijenta (Q) 64B132-195 Inverzno P (a = Q-1 mod P) 64B196-259 Privatni subeksponent(c=Ks mod (P - 1)) 64B260-323 Privatni subeksponent(f=Ks mod (Q - 1)) 64B324-325 Dužina bloka 2B

... ... ...

Tabela 4.2 Struktura datoteke EF RSA-PRI (RSA-1024 bit)

33

Page 34: Biblioteka za rukovanje smart karticama u .NET okruženju

EF RSA-PUB (RSA-512bit)

Transp. 1012 (EF RSA-PUB) zaglavlje-16B AC

Uslovi

Read Binary ALWUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1-2 Dužina bloka(npr. 00A3) 2B3 Ključ 0 (00) 1B

4-67 Javni koeficijent (N) 64B68-99 J0 –Montgomerijeva konstanta 32B100-163 H –Montgomerijeva konstanta 64B164-167 Javni eksponent (e) 4B168-169 Dužina bloka 2B

... ... ...

Tabela 4.3 Struktura datoteke EF RSA-PUB (RSA-512 bit)

EF RSA-PUB (RSA-768bit)

Transp. 1012 (EF RSA-PUB) zaglavlje-16B AC

Uslovi

Read Binary ALWUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1-2 Dužina bloka(npr. 00A3) 2B3 Ključ 0 (00) 1B

4-99 Javni koeficijent (N) 96B100-147 J0 –Montgomerijeva konstanta 48B148-243 H –Montgomerijeva konstanta 96B244-247 Javni eksponent (e) 4B248-249 Dužina bloka 2B

... ... ...

Tabela 4.4 Struktura datoteke EF RSA-PUB (RSA-768 bit)

34

Page 35: Biblioteka za rukovanje smart karticama u .NET okruženju

EF RSA-PUB (RSA-1024bit)

Transp. 1012 (EF RSA-PUB) zaglavlje-16B AC

Uslovi

Read Binary ALWUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1-2 Dužina bloka(npr. 00A3) 2B3 Ključ 0 (00) 1B

4-131 Javni koeficijent (N) 128B132-195 J0 –Montgomerijeva konstanta 64B196-323 H –Montgomerijeva konstanta 128B324-327 Javni eksponent (e) 4B328-329 Dužina bloka 2B

... ... ...

Tabela 4.5 Struktura datoteke EF RSA-PUB (RSA-1024 bit)

3.2.10.Serijski broj kartice (EF ICC Serial Number)

Serijski broj kartice se čuva u transparentnoj datoteci sa brojem 0002. Služi za identifikovanje svake kartice među milionim sličnih.

Transp. 0002 (EF ICC Serial Number) zaglavlje-16B AC

Uslovi

Read Binary ALWUpdate Binary NEV

RFU NEVRFU NEV

Rehabilitate NEVInvalidate NEV

Bajt Opis Dužina1-4 Serijski broj 4B5 Korisnički kod 1B6 RFU 1B7 RFU 1B

Tabele 4.6 Struktura datoteke EF ICC Serial Number

35

Page 36: Biblioteka za rukovanje smart karticama u .NET okruženju

3.2.11.Odgovor na reset (ATR)

Kada se ubaci u čitač ili kada se resetuje, kartica šalje odgovor na reset u vidu heksadecimalnog stringa. ATR datoteka se ugrađuje u masku u toku proizvodnje i sadrži podatke potrebne za uspostavljanje komunikacije.

Pošto je ugrađen u masku, ATR se ne može direktno modifikovati, ali se zato može dodati nova datoteka sa FID-om 2F01 i u njoj postaviti noci parametri.

Transp. 2F01 (ATR) zaglavlje-16B AC

Uslovi

Read Binary ALWUpdate Binary AUT

RFU NEVRFU NEV

Rehabilitate AUTInvalidate AUT

Bajt Opis Dužina1 Dužina ATR string (x) 1B

2-(x+1) ATR string xB

Tabela 4.7 Struktura datoteke ATR

36

Page 37: Biblioteka za rukovanje smart karticama u .NET okruženju

3.3.Uslovi pristupa (Access Conditions)

U sljedećoj tabeli je predstavljeno 16 uslova pristupa koji mogu biti primijenjeni na DF ili EF datotekama.

Vrijednost AC Vrijednost AC0 ALW 8 CHV1&AUT1 CHV1 9 CHV2&AUT2 CHV2 A RFU3 PRO B RFU4 AUT C RFU5 RFU D RFU6 CHV1&PRO E RFU7 CHV2&PRO F NEV

Tabela 4.8 Uslovi pristupa

3.3.1.ALW (Always)

Akcija je uvijek moguća.

3.3.2.CHV1 (Card Holder Verification-User)

Uslov koji se zadovoljava kada se izvrši naredba Verify CHV nad relevantnom CHV1 datotekom. Relevantna je ona CHV1 datoteka koja se nalazi u tekućem direktorijumu. Ako se ne nalazi u datom direktorijumu, naredba se izvršava nad datotekom u roditeljskom direktorijumu. Broj pokušaja je određen brojačem, koji se smanjuje ukoliko se naredba neuspiješno izvrši, ali se i vraća na maksimalnu vrijednost ako se VerifyCHV uspiješno obavi.

3.3.3.CHV2 (Card Holder Verification-Admin)

Sve što važi za CHV1, važi i za CHV2

3.3.4.PRO (Protected)

PRO uslov pristupa zahtijeva autentifikaciju kako naredbe tako i podataka koji se šalju kartici. Može biti primijenjen nad sljedećim naredbama:

Create File (for a DF) Create Record Decrease Delete File (for a DF) Dir Next (for a DF)

37

Page 38: Biblioteka za rukovanje smart karticama u .NET okruženju

Increase Invalidate Rehabilitate Update Binary Update Record

Ovaj uslov pristupa mora se obezbijediti svaki put prije izvršenja neke naredbe, pod uslovom da ga ta naredba zahtijeva.

Da bi se zadovoljili PRO uslovi pristupa moraju se izvršiti sljedeći koraci:

1) Kombinuju se parametri naredbe (Com,P1,P2), dužina podataka (Length), podaci (Input) i broj bajta koji se dodaje na kraj (Fill Block) da bi se dobio blok dijeljiv sa 8.

Com P1 P2 Length Input Fill Block1B 1B 1B 1B xB yB

Tabela 4.9 Struktura bloka

2) Izvrši se GetChallenge naredba koja vraća zahtijevani broj bajta ( 8 u ovom slučaju).3) Koristeći 8 bajta dobijenih od kartice i prvih 8 bajta bloka izračunava se ekluzivno ILI

(XOR) i dobija rezultat od 8 bajta.4) Koristeći DES ključ koji se nalazi u odgovarajućoj EF External Key File datoteci,

enkriptovati XOR rezultat.5) Koristeći enkriptovanu vrijednost i sljedećih 8 bajta bloka, ponovo, izračunati XOR.6) Ponavljati korake 4 i 5 dok se ne dobije finalni kriptogram od 8 bajta.7) Od finalnog kriptograma se uzima samo prvih 6 bajta.8) Rezultat (Crypto) se šalje zajedno sa naredbom kao što je to naznačeno u tabeli 4.10

Cla Com P1 P2 P3 Data TrailLength Input Fill Bl. Crypto

1B 1B 1B 1B 1B 1B xB yB 6B

Tabela 4.10 Struktura zahtijeva

Nakon što dobije podatke, kartica ponavlja operacije 1-7 i izračunava finalni kriptogram. Ako je isti kao i onaj što smo poslali, PRO uslov pristupa je zadovoljen. Broj pokušaja je određen brojačem, koji se vraća na početnu vrijednost ukoliko uspiješno izvrši autentifikacija.

3.3.5.AUT

AUT uslov pristupa se zadovoljava nakon uspiješnog izvršavanja VerifyKey ili ExternalAuthenticate naredbe. Ovaj uslov pristupa zahtijeva da se aplikacija terminal potvrdi svoju autentičnost kartici.

38

Page 39: Biblioteka za rukovanje smart karticama u .NET okruženju

3.3.6.CHV1&PRO

Zahtijeva zadovoljenje CHV1 i PRO uslova.

3.3.7.CHV2&PRO

Zahtijeva zadovoljenje CHV2 i PRO uslova.

3.3.8.CHV1&AUT

Zahtijeva zadovoljenje CHV1 i AUT uslova.

3.3.9.CHV2&AUT

Zahtijeva zadovoljenje CHV2 i AUT uslova.

3.3.10.NEV

Akcija može biti uvijek izvršena.

39

Page 40: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.Cryptoflex naredbe

Operativni sistem Cryptoflex 8k pametne kartice podržava dva tipa naredbi: Naredbe za manipulaciju datotekama Kriptografske naredbe

Instrukcije za manipulaciju datotekama

ChangeCHV CreateFile CreateRecord Decrease DeleteFile DirNext GetResponse Increase Invalidate ReadBinary

ReadRecord Rehabilitate Seek Select UnblockCHV UpdateBinary UpdateRecord VerifyCHV VerifyKey

Kriptografske instrukcije

ExternalAuthenticate GetChallenge InternalAuthenticate RSAKeyGenerate

RSASignature SHA1-Intermediate SHA1-Last UpdateBinaryEnciphered

40

Page 41: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.1.ChangeCHV (Izmjena PIN-a)

Naredba služi za promjenu postojećeg PIN-a. CHV datoteka ne mora biti selektovana da bi se izvršila ova instrukcija.

PIN-ovi su 8 bajta dugi. Koriste se heksadecimalne vrijednosti za bilo koje standardne ASCII karaktere. Zajedno sa instrukcijom šalju se vrijedosti starog i novog PIN-a. Nakon izvršenja instrukcije kartica vraća statusnu riječ (SW1SW2).

AC: Nisu definisani

Instrukcija Cla Com P1 P2 P3ChangeCHV F0 A4 00 CHV type 10

Parametri

Parametar Dužina ZnačenjeP1 1B 00P2 1B CHV tip (00-CHV1, 02-CHV2)P3 1B Dužina podataka koji se šalju uz naredbu (16B)

Data 16B Stari PIN (8B)+Novi PIN(8B)SW1SW2 2B Statusna riječ

3.4.2.CreateFile

Instrukcija CreateFile se koristi za kreiranje datoteke (DF ili EF) u izabranom direktorijumu. Nakon što se kreira, datoteka biva automatski selektovana i spremna za unos podataka (UpdateBinary).

Zaglavlje i struktura tijela datoteke se šalju zajedno sa naredbom.

AC: Moraju biti zadovoljeni oni uslovi pristupa koji su naznačeni za datoteku u kojoj se kreira nova.

Instrukcija Cla Com P1 P2 P3CreateFile F0 E0 Init records x

ParametriNaziv Dužina Značenje

P1 1B Inicijalizacija tijela datotekaP2 1B Broj blokovaP3 1B Dužina podataka koji se šalju (x)

Data xB Podaci koji opisuju strukturu datotekeSW1SW2 2B Statusna riječ

41

Page 42: Biblioteka za rukovanje smart karticama u .NET okruženju

P1Vrijednost Značenje

00 Tijelo datoteke se inicijalizuje nulama (00)

FF Bez inicijalizacije tijela (FF)

P2Broj slogova Značenje

00 Za DF i transparentnu EF01-FF Broj slogova u datoteci (maksimalno 255)

P3Tip datoteke Dužina u heksadecimalnom obliku

DF 16BTransparentna EF 16B

EF sa promjenljivim slogom 16BEF sa fiksnim slogom 17B

Ciklična EF 17B

DataBajt EF DF Dužina1-2 RFU(FF FF) RFU(FF FF) 2B3-4 Veličina datoteke Veličina datoteke 2B5-6 FID FID 2B7 Tip datoteke 38 1B

8-11 Uslovi pristupa Uslovi pristupa 4B12 Aktivacioni bajt Aktivacioni bajt 1B

13 Broj bajta nakon bajta 13 (03 ili 04)

03 1B

14-16 Pozicije ključeva Pozicije ključeva 3B17 Dužina sloga - 1B

Bajt 3-4: Određuje veličinu datoteke. Ako je ona sa fiksnim slogom ili ciklična, veličina je broj slogova pomnožen sa dužinom sloga. U slučaju DF-a veličina mora biti veća od sume veličina svih datoteka u njoj plus veličina zaglavlja.

Uslovi pristupa za DFBajt 8-11:

U bajte 8-11 se postavljaju uslovi pristupa koji će se morati zadovoljiti kada se budu koristile naznačene naredbe nad direktorijumom koji se kreira. Npr. Ako želimo da za naredbu DeleteFile bude zadovoljen uslov pristupa AUT, a za CreateFile uslov pristupa CHV1, bajt 10 se formira na sljedeći način: MSN=4, LSN=1 => byte10=41 .

Bajt MSN LSN8 RFU RFU9 DirNex RFU10 DeleteFile CreateFile

42

Page 43: Biblioteka za rukovanje smart karticama u .NET okruženju

11 RFU RFU

Bajt 12: Posljednji bit određuje da li datoteka poslije kreiranja postaje aktivna. (1-da,0-ne).

Bajt 14-16:Za svaku naredbu opisanu u bajtima 9-11, za koju je uslov pristupa AUT, naznačava sa broj ključa u relevantnom ExternalKeyFile-u.

Bajt MSN LSN14 DirNex RFU15 DeleteFile CreateFile16 RFU RFU

Uslovi pristupa za EFBajt 8:Samo posljednja dva bita su važna. Opisuju da li su dozvoljene naredbe Increase i Decrease.

Bit 7 Bit 8 Značenje0 0 Decrease i Increase nisu dozvoljene1 0 Samo je Decrease dozvoljeno0 1 Samo Increase je dozvoljeno1 1 Dozvoljene su obje naredbe

Bajt 9-11:

U bajte 9-11 se postavljaju uslovi pristupa koji će se morati zadovoljiti kada se budu koristile naznačene naredbe nad datotekom koja se kreira.

Bajt MSN LSN9 ReadBinary,Seek UpdateBinary,Decrease10 Increase CreateRecord11 Rehabilitate Invalidate

Bajt 12: Posljednji bit određuje da li datoteka poslije kreiranja postaje aktivna. (1-da,0-ne).

Bajt 14-16:Za svaku naredbu opisanu u bajtima 9-11, za koju je uslov pristupa AUT, naznačava sa broj ključa u relevantnom ExternalKeyFile-u.

Bajt MSN LSN14 ReadBinary,Seek UpdateBinary,Decrease15 Increase CreateRecord16 Rehabilitate Invalidate

43

Page 44: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.3.CreateRecord

Naredba zapisuje jedan slog na logički kraj datoteke. Koristi se za EF sa fiksnim i EF sa promjenljivim slogom. Prije upisa, datoteka mora biti selektovana.

AC: Moraju biti ispunjeni oni uslovi koji su naznačeni za ovu naredbu prilikom kreiranja datoteke.

Instrukcija Cla Com P1 P2 P3CreateRecord C0 E2 00 00 x

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B x – dužina sloga

Data xB Slog koji se upisujeSW1SW2 2B Statusna riječ

3.4.4.Decrease

Koristi se na brojnim vrijednostima u Cikličnim datotekama. Decrease naredba umanjuje vrijednost posljednjeg sloga za zadati broj. Nakon uspiješnog izvršenja, slog postaje prvi u datoteci.

AC: Moraju biti ispunjeni oni uslovi koji su naznačeni za ovu naredbu prilikom kreiranja datoteke.

Instrukcija Cla Com P1 P2 P3Decrease F0 30 00 00 03

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 03

Data 3B Vrijednost za koju se umanjujeSW1SW2 2B Statusna riječ

44

Page 45: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.5.DeleteFile

Instrukcija briše datoteke iz selektovanog direktorijuma i oslobađa prostor na kartici. Brisanje, u ovom slučaju, znači pisanje vrijednosti 0 (00) preko datoteke.

Kada se kreiraju, nove datoteke su poređane u FIFO redoslijedu. Na primjer, ako su zapisana četiri EF-a, a zatim izbrišemo drugi, taj izbrisani prostor ne može se više iskoristiti, jer kada pravimo novu datoteku, ona ne biva kreirana na mjestu datoteke 2, nego iza četvrte. Stoga, datoteke se moraju brisati u obrnutom redoslijedu u odnosu na onaj kojim su zapisane. To je najizraženije kod DF-ova, jer ako izbrišemo DF, a nismo izbrisali sav sadržaj iz njega, prostor ostaje nupotrebljiv.

AC: Moraju biti ispunjeni oni uslovi koji su naznačeni za ovu naredbu prilikom kreiranja datoteke.

Instrukcija Cla Com P1 P2 P3DeleteFile F0 E4 00 00 02

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 02

Data 2B FIDSW1SW2 2B Statusna riječ

3.4.6.DirNext

Naredba izlistava datoteke koje sadrži selektovani direktorijum, svakim pozivanjem po jednu.

AC: Moraju biti ispunjeni oni uslovi koji su naznačeni za ovu naredbu prilikom kreiranja direktorijuma.

Instrukcija Cla Com P1 P2 P3DirNext F0 A8 00 00 01≤x≤0F

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 02

Data xB Informacije o datoteciSW1SW2 2B Statusna riječ

45

Page 46: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.7.ExternalAuthenticate

Ova naredba, kao i VerifyKey, služi kako bi aplikacija terminala dokazala autentičnost kartici, tj. dokazala da posjeduje ključ u relevantnoj datoteci sa ključevima (ExternalKeyFile). Za razliku od instrukcije VerifyKey , kojom se ključ šalje, nekriptovan, od aplikacije ka kartici, kod ExternalAuthenticate instrukcije šalje se zahtijev za nasumičnim osmobajtnim stringom, koji se kriptuje poznatim ključem, a zatim se taj kriptogram šalje kartici na dekriptovanje i poređenje. Samim time, ova naredba je mnogo sigurnija od VerifyKey.

Koriste se DES i 3DES algoritmi za enkripciju.

Dokazivanje autentičnosti putem naredbe ExternalAuthenticate se odvija u sljedećim koracima:

1) Izvršava se instrukcija GetChallenge2) Kartica vraća osmobajtni string3) String se kriptuje putem DES ili 3DES sa ključem koji se nalazi nakartici, a finalni

kriptogram se formira odsijecanjem posljednja dva bajta.4) Kriptogram (6 bajta) se, zajedno sa pozicijom na kojoj se nalazi ključ u

ExternalKeyFile-u, šalje kartici.5) Kartica poredi naš kriptogram, sa rezltatom koji je ona dobila, i ako se podudaraju,

AUT uslov pristupa je zadovoljen.

AC: Nisu definisani

Instrukcija Cla Com P1 P2 P3ExternalAuthenticat

eC0 82 00 00 07

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B Dužina podataka koji se šalju

Data 7B Pozicija ključa+kriptogramSW1SW2 2B Statusna riječ

3.4.8.GetChallenge

Koristi se za dobijanje nasumičnog alfanumeričkog stringa, koji se koristi za kriptografske potrebe. Ovom naredbom moguće je dobiti, najviše, 64 bajta. Za DES operacije Challenge mora biti 8 bajta, dok je za RSA 64,96 ili 128 bajta, zavisno od toga da li je u pitanju RSA-512,RSA-768 ili RSA-1024 . Ta bi se dobio tekst duži od 64 bajta, naredba se izvršava više puta.

46

Page 47: Biblioteka za rukovanje smart karticama u .NET okruženju

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3GetChallenge C0 84 00 00 x

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B Dužina podataka koji se zahtijevaju

Data xB rezultujući Challenge SW1SW2 2B Statusna riječ

3.4.9.GetResponse

Ova naredba se koristi za dobijanje podataka izračunatih i adresiranih od strane prethodne naredbe. Instrukcija GetResponse se mora pozvati odmah nakon naredbe na koju se odnosi.

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3GetResponse C0 C0 00 00 x

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B Dužina podataka koji se zahtijevaju

Data xB Podaci SW1SW2 2B Statusna riječ

Parametar Data ima specifične vrijednosti za pojedine naredbe. U sljedećim tabelama su prikazana značenja parametra Data za pojedine instrukcije.

DecreaseBajt Značenje Dužina

1-x Vrijednost umanjenog sloga xB(x+1)-(x+3) Vrijednost za koju se umanjuje 3B

IncreaseBajt Značenje Dužina

1-x Vrijednost uvećanog sloga xB(x+1)-(x+3) Vrijednost za koju se uvećava 3B

47

Page 48: Biblioteka za rukovanje smart karticama u .NET okruženju

InternalAuthenticateBajt Značenje Dužina

1-6 Prvih 6 bajta kriptograma 6B1-8 Potpun kriptogram 8B

RSA-512 SignatureBajt Značenje Dužina

1-64 Kriptogram 64B

RSA-768 SignatureBajt Značenje Dužina

1-96 Kriptogram 96B

RSA-1024 SignatureBajt Značenje Dužina

1-128 Kriptogram 128B

Nakon Select EFBajt Značenje Dužina

1-2 RFU 2B3-4 Dužina tijela datoteke 2B5-6 FID 2B7 Tip datoteke 1B

8-11 Uslovi pristupa 4B12 Status 1B13 Dužina podataka koji slijede(01 ili 02) 1B14 RFU 1B

15 Dužina sloga(EF-fiksni slog,ciklični EF)

1B

Nakon Select DFBajt Značenje Dužina

1-2 RFU 2B3-4 Slobodan prostor u DF-u 2B5-6 FID 2B7 Tip datoteke (38) 1B

8-11 Uslovi pristupa 4B12 Status 1B

13

Dužina podataka koji slijede05=Ne postoje CHV datoteke

07=Postoji samo CHV109=Postoje i CHV1 i CHV2

1B

14 Karakterisitke direktorijuma: 1B

48

Page 49: Biblioteka za rukovanje smart karticama u .NET okruženju

bit8=0 CHV1 ne postoji ili nije aktivanbit8=1 CHV1 postoji i aktivan je

15 Broj DF-ova u tekućem DF-u 1B16 Broj EF-ova u tekućem DF-u 1B17 00=CHV ne postoji

02=CHV1 i deblokirajući CHV104=postoje svi

1B

18 RFU 1B19 Broj preostalih CHV1 pokušaja 1B20 Broj preostalih deblokirajućih pokušaja 1B21 Bit3-bit0=broj preostalih CHV2 pokušaja

Bit7=0 CHV2 neaktivanBit7=1 CHV2 aktivan

1B

22

Bit3-bit0=broj preostalih deblokirajućih CHV2 pokušaja

Bit7=0 CHV2 neaktivanBit7=1 CHV2 aktivan

1B

23 RFU 1B

SHA-1 LastBajt Značenje Dužina

1-x Vrijednost SHA-1 operacije xB

3.4.10.Increase

Ova naredba je suprotna naredbi Decrease. Koristi se nad brojnim vrijednostima slogova u cikličnim datotekama.

AC: Moraju biti ispunjeni oni uslovi koji su naznačeni za ovu naredbu prilikom kreiranja datoteke.

Instrukcija Cla Com P1 P2 P3Increase F0 32 00 00 03

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 03

Data 3B Vrijednost za koju se uvećavaSW1SW2 2B Statusna riječ

49

Page 50: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.11.InternalAuthenticate

Naredba služi da kartca dokaže da dijeli isti ključ sa aplikacijom terminala. Za razliku od naredbe ExternalAuthenticate, ova instrukcija koristi ključeve iz datoteke InternalKeyFile.

Izvršavanje se vrši u sljedećim koracima:1) Šalje se VerifyCHV naredba, da bi se zadovoljio CHV uslov pristupa.2) Aplikacija terminala šalje naredbu InternalAuthenticate sa pozicijom odgovarajućeg

ključa i nasumičnim stringom. Kartica, kriptuje string i vraća statusni broj, koji može biti 6106 ili 6108. U prvom slučaju, posljednji bajt nam govori da će rezultujući kriptogram biti odsječen (prvih šest bajta), a u drugom da će biti potpun.

3) Aplikacija šalje instrukciju GetResponse, sa dužinom 06 ili 08, da bi dobila kriptogram.4) Aplikacija , takođe, vrši enkripciju početnog stringa sa istim ključem. Ako se dobijeni

rezultat podudara sa rezultatom dobijenim sa kartice, operacija je uspiješno obavljena.

AC: Mora se zadovoljiti CHV uslov pristupa

Instrukcija Cla Com P1 P2 P3InternalAuthenticat

eC0 88 00 key 08

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B Pozicija ključaP3 1B Dužina stringa koji se šalje

Data 8B StringSW1SW2 2B Statusna riječ

3.4.12.Invalidate

Naredba se koristi za proglašavanje datoteke nevažećom.

AC: Moraju se zadovoljiti uslovi pristupa koji su naznačeni za ovu naredbu.

Instrukcija Cla Com P1 P2 P3Invalidate F0 04 00 00 00

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 00

Data 0B -SW1SW2 2B Statusna riječ

50

Page 51: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.13.ReadBinary

Naredba služi za čitanje stringa(niz bajta) iz transparentne datoteke. Kao parametri komande se šalju: početna pozicija (0000-FFFF oblika MSB,LSB) i broj bajta koji treba da se pročita. Datoteka mora biti selektovana prije čitanja.

AC: Moraju se zadovoljiti uslovi pristupa koji su naznačeni za ovu naredbu.

Instrukcija Cla Com P1 P2 P3ReadBinary C0 B0 MSB LSB x

ParametriNaziv Dužina Značenje

P1 1B MSB-prvi bajt pozicijeP2 1B LSB-posljednji bajt pozicijeP3 1B x-dužina podataka za pročitati

Data xB Vraćeni podaciSW1SW2 2B Statusna riječ

3.4.14.ReadRecord

Koristi se za čitanje vrijednosti jednog sloga iz datoteka sa linearnim i fiksnim slogom i iz cikličnih datoteka. Prije izvršavanja, EF mora biti selektovan.

Postoje dva načina čitanja slogova : apsolutni i tekući. Oba ova načina se koriste za isčitavanje slogova kod EF sa fiksnim i EF sa promjenljivim slogom, ali se samo tekući se koristi kod cikličnih datoteka. Način čitanja se postavlja u parametru P2. Pri apsolutnom (P2=04), slog koji se treba pročitati, naznačen je u parametru P1.U tekućem modu, P2 se postavlja za čitanje prvog sloga (P2=00) ili posljednjeg sloga (P2=01). Ponovnim izvršavanjem naredbe isčitava se, u prvom slučaju naredni (P2=02), a u drugom slučaju prethodni slog (P2=03).

AC: Moraju se zadovoljiti uslovi pristupa koji su naznačeni za ovu naredbu.

Instrukcija Cla Com P1 P2 P3ReadRecord C0 B2 Num Mode x

ParametriNaziv Dužina Značenje

P1 1B num-broj sloga koji se čitaP2 1B mode-način čitanjaP3 1B x-dužina sloga koji se čita

Data xB Vraćeni slogSW1SW2 2B Statusna riječ

51

Page 52: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.15.Rehabilitate

Naredba se koristi za aktiviranje datoteke.

AC: Moraju se zadovoljiti uslovi pristupa koji su naznačeni za ovu naredbu.

Instrukcija Cla Com P1 P2 P3Rehabilitate F0 44 00 00 00

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 00

Data 0B -SW1SW2 2B Statusna riječ

3.4.16.RSAKeyGenerate

Naredba, nakon uspiješnog izvršenja, generiše par ključeva (tajni i javni) i smješta ih u odgovarajuće datoteke. RSA-PRI i RSA-PUB datoteke moraju biti kreirane i inicijalizovane prije pozivanja ove naredbe. Novi ključevi se postavlju na poziciju 00.

AC: Moraju se zadovoljiti CHV uslovi pristupa.

Instrukcija Cla Com P1 P2 P3RSAKeyGenerate F0 46 00 Mode 04

ParametriNaziv Dužina Značenje

P1 1B 00

P2 1B

Mode-dužina koeficijenta javnog ključaMode=40 za RSA-512 bitMode=60 za RSA-768 bitMode=80 za RSA-1024 bit

P3 1B Dužina eksponenta javnog ključaData 4B Eksponent javnog ključaSW1SW2 2B Statusna riječ

52

Page 53: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.17.RSASignature

RSASignature naredba se koristi za RSA enkripciju stringa poslatog od strane aplikacije. Najčešće je to HASH koji treba da se potpiše. Da bi se dobio kriptogram, odmah nakon ove instrukcije mora se pozvati naredba GetResponse. Primalac kriptograma mora da posjeduje javni ključ da bi ga verifikovao.

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3RSASignature C0 88 00 Num 40/60/80

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B Broj ključa u RSA_PRI

P3 1B Željena dužina kriptograma(64B,96B,128B)

Data 64/96/128B Kriptogram SW1SW2 2B Statusna riječ

3.4.18.Seek

Instrukcija Seek se koristi za provjeru da li linearna datoteka sadrži slog sa traženim stringom. Nakon uspiješnog izvršavanja, slog u kome je pronađen traženi string postaje tekući.

AC: Moraju biti zadovoljeni oni uslovi pristupa koji su naznačeni za ovu operaciju.

Instrukcija Cla Com P1 P2 P3Seek F0 A2 Pos Mode x

ParametriNaziv Dužina Značenje

P1 1B Pos-redni broj bajta (u slogu) od koga se pretražuje

P2 1B Mode=0 –od početka unaprijedMode=2 –od tekućeg sloga unaprijed

P3 1B x-dužina stringa koji se tražiData xB Traženi string

SW1SW2 2B Statusna riječ

53

Page 54: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.19.Select

Naredba pomijera datotečni pokazivač na željenu datoteku. Može se primijeniti na sledeće datoteke:

Bilo koju datoteku koja je u hijerarhiskom smislu direktni potomak tekućeg direktorijuma.

Bilo koju datoteku koja je direktni potomak korijenskog direktorijuma. Na direktorijum koji je roditelj trenutno selektovane datoteke Korijenski direktorijum (3F00)

Upiješno izvršena instrukcija vraća statusnu riječ u obliku 61xx, gdje xx predstavlja dužinu podaka (informacije o selektovanoj datoteci) koji se mogu dobiti pozivanjem naredbe GetResponse.

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3Select C0 A4 00 00 02

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 02Data 2B FID datoteke

SW1SW2 2B Statusna riječ

3.4.20.SHA-1Intermediate

Koristi se izvršavanje SHA-1 operacije nad blokovima čija dužina prelazi 64 bajta.Na primjer, ako je blok dužine 80 bajta, instrukcijom SHA-1Intermediate se izračunava SHA-1 za prva 64 bajta, a instrukcijom SHA-1Last za ostatak,tj. 16 bajta.

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3SHA-1Intermediate 14 40 00 00 40

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B 40-64 bajta dužina blokaData 64B Hash blok

SW1SW2 2B Statusna riječ

54

Page 55: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.21.SHA-1Last

Kristi se za izvođenje operacije SHA-1 za blokove dužine manje od 64 bajta.

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3SHA-1Last 04 40 00 00 x

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B 00P3 1B x-dužina HASH blokaData xB Hash blok

SW1SW2 2B Statusna riječ

3.4.22.UnblockCHV

Kada se dostigne maksimalan broj neuspješnih pokušaja, CHV datoteka postaje blokirana. Da bi se vratila u prvobitno stanje potrebno je izvršiti ovu naredbu. Nakon što se uspiješno izvrši, brojač se vraća na vrijednost 10 (heksadecimalno).

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3UnblockCHV F0 2C 00 Num 10

ParametriNaziv Dužina Značenje

P1 1B 00

P2 1B 01-CHV102-CHV2

P3 1B 10Data 16B Deblokirajući+novi PIN

SW1SW2 2B Statusna riječ

55

Page 56: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.23.UpdateBinary

Instrukcija UpdateBinary namijenjena je ažuriranju sadržaja u transparentnim datotekama.

AC: Moraju biti zadovoljeni oni uslovi pristupa koji su naznačeni za ovu operaciju.

Instrukcija Cla Com P1 P2 P3UpdateBinary C0 D6 MSB LSB x

ParametriNaziv Dužina Značenje

P1 1B MSB-prvi bajt adrese od koje se unosiP2 1B LSB-posljednji bajt adreseP3 1B x-dužina stringa koji se unosiData xB string

SW1SW2 2B Statusna riječ

3.4.24.UpdateBinaryEnciphered

Naredba UpdateBinaryEnciphered daje isti rezultat kao i naredba UpdateBinary. Kod ove naredbe podaci se kriptuju, koristeći DES, ključem koji se odnosi na ovu naredbu(broj ključa postavljen prilikom kreiranja datoteke), a zatim sešalju kartici koja ih dekriptuje i upisuje na željeno mjesto.

AC: Moraju biti zadovoljeni oni uslovi pristupa koji su naznačeni za ovu operaciju.

Instrukcija Cla Com P1 P2 P3UpdateBinaryEnciphere

dC0 DE MSB LSB x

ParametriNaziv Dužina Značenje

P1 1B MSB-prvi bajt adrese od koje se unosiP2 1B LSB-posljednji bajt adreseP3 1B x-dužina kriptogramaData xB kriptogram

SW1SW2 2B Statusna riječ

56

Page 57: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.25.UpdateRecord

Instrukcija UpdateRecord upisuje sadržaj u naznačeni slog selektovane datoteke. Koristi se kod linernih sa fiksnim i promjenljivim slogom i kod cikličnih datoteka.

Postoje dva načina upisivanja slogova : apsolutni i tekući. Oba ova načina se koriste za upisivanje slogova kod EF sa fiksnim i EF sa promjenljivim slogom, ali se samo tekući se koristi kod cikličnih datoteka. Način upisivanja se postavlja u parametru P2. Pri apsolutnom (P2=04), slog u koji treba pisati, naznačen je u parametru P1.U tekućem modu, P2 se postavlja za pisanje prvog sloga (P2=00) ili posljednjeg sloga (P2=01). Ponovnim izvršavanjem naredbe upisuje se, u prvom slučaju u naredni (P2=02), a u drugom slučaju u prethodni slog (P2=03).

AC: Moraju se zadovoljiti uslovi pristupa koji su naznačeni za ovu naredbu.

Instrukcija Cla Com P1 P2 P3UpdateRecord C0 DC Num Mode x

ParametriNaziv Dužina Značenje

P1 1B num-broj sloga u koji se pišeP2 1B mode-način upisivanjaP3 1B x-dužina sloga koji se upisuje

Data xB Slog koji se upisujeSW1SW2 2B Statusna riječ

3.4.26.VerifyCHV

Instrukcija se koristi za verifikovanje PIN-a koji korisnik unese i za ostvarenje CHV uslova pristupa. Broj pokušaja je određen vrijedošću brojača. Nakon što brojač dostigne vrijednost 0(00), CHV datoteka postaje blokirana.

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3VerifyCHV C0 20 00 CHV 08

ParametriNaziv Dužina Značenje

P1 1B 00

P2 1B 01=CHV102=CHV2

P3 1B 08Data 8B PINSW1SW2 2B Statusna riječ

57

Page 58: Biblioteka za rukovanje smart karticama u .NET okruženju

3.4.27.VerifyKey

Naredba VerifyKey se koristi da bi aplikacjia terminala dokazala da posjeduje ključ koji se nalazi u odgovarajućem ExternalKeyFile-u. Nakon uspješnog izvršenja obezbjeđuje se AUT uslov pristupa koji je validan dok se ne desi sljedeće:

Ključ je blokiran Kartica je resetovana Promijenjen je tekući direktorijum (u novom postoji ExternalkeyFile)

AC: Nisu definisani.

Instrukcija Cla Com P1 P2 P3VerifyKey F0 2A 00 Key 08

ParametriNaziv Dužina Značenje

P1 1B 00P2 1B Key-redni broj ključaP3 1B 08

Data 8B ključSW1SW2 2B Statusna riječ

3.4.28.Statusne riječi

Vrijednost Značenje61xx xx-dužina podataka koji čekaju na preuzimanje6106 6 bajta čekaju na preuzimanje6108 8 bajta čeka na preuzimanje6281 Podaci su vjerovatno oštećeni6283 Proglašenje datoteke nevažećom neuspiješno6283 EF ili DF je neaktivan6300 Autentifikacija neuspiješna6581 Problem sa memorijom6581 Ažuriranje neuspiješno67xx P3 nije valjan6700 Dužina ulaznih parametara je prevelika6981 EF ne postoji ili ne postoji ključ u datoteci6982 Nisu zadovoljeni uslovi pristupa6983 Svi pokušaji su iskorišteni.Ključ je blokiran.6986 EF nije selektovan6A80 FID već postoji.6A80 Slog je predugačak6A82 FID nije pronađen ili nema više datoteka u DF6A83 Izvan dometa ili slog nije pronađen6A84 Isuviše malo slobodnog prostora6B00 Pogrešni P1P2

58

Page 59: Biblioteka za rukovanje smart karticama u .NET okruženju

6D00 Nepoznata komanda6E00 Nepoznata klasa komande6F00 Neidentifikovan tehnički problem9000 Komanda je uspiješno završena

9850 Increase/Decrease ne može biti izvedeno.Max/Min dostignut.

59

Page 60: Biblioteka za rukovanje smart karticama u .NET okruženju

60

Page 61: Biblioteka za rukovanje smart karticama u .NET okruženju

4.Biblioteka SmartCard

4.1.Uvod

Pošto Windows .NET Framework nema ugrađenu podršku za rukovanje pametnim karticama i čitačima, javila se potreba za izgradnjom biblioteka koje bi obezbjeđivale ove funkcije na višem nivou od Windows API funkcija.

SmartCard.dll je biblioteka pisana u C# programskom jeziku, na .NET platformi. Nastala je kao odgovor na potrebe pristupa i manipulacije pametnim karticama i njihovim čitačima. Izgrađena je oslanjajući se na Windows Smart Card API (WinSCard.dll ) .

61

Page 62: Biblioteka za rukovanje smart karticama u .NET okruženju

4.2.Struktura biblioteke SmartCard

Biblioteka Smartcard sastoji se iz dvije logičke cjeline. Prvu čine svi elementi iz korijena biblioteke, osim podbiblioteke Cryptoflex. Namijenjeni su rukovanju čitačima pametnih kartica i komunikaciji čitač-kartica na nivou komande.Drugi dio predstavlja podbiblioteka Cryptoflex u kojoj su obrađeni mehanizmi za rukovanje Cryptoflex pametnim karticama, sa posebnim osvrtom na Cryptoflex8k.

Slika 4.1 Elementi biblioteke SmartCard

4.3.Podbiblioteka SmartCard.Controls

SmartCard.Controls, ogranak biblioteke SmartCard, je kolekcija klasa namijenjenih rukovanju čitačima i ostvarivanju komunikacije čitač-pametna kartica, na višem nivou od Windows Smart card API funkcija.

Slika 4.2 Elementi biblioteke SmartCard.Controls

62

Page 63: Biblioteka za rukovanje smart karticama u .NET okruženju

Napomena: Elementi UML dijagrama su dati bez atributa i funkcija zbog preglednosti.

Klasa SCWin sadrži definicije Windows Smart card API funkcija, klase SCErrorHandler i SCException namijenjene su obradi izuzetaka.

4.3.1.SCReader

U ovoj klasi obrađeni su svi potrebni metodi koji obezbjeđuju rukovanje čitačima pametnih kartica i komunikaciju čitač-pametna kartica. Izgrađeni su tako da nisu specijalizovani za jedan tip čitača ili jedan tip kartica, nego pružaju mogućnost izbora čitača, a podržavaju bilo koju pametnu karticu, uključujući i memorijske kartice. U principu, ova klasa predstavlja jezgro u procesu izgradnje specijalizovanih biblioteka koje će se baviti određenim tipom kartica.

Slika 4.3 Klasa SCReader (sa karakterističnim metodima)

63

Page 64: Biblioteka za rukovanje smart karticama u .NET okruženju

Metodi namijenjeni rukovanju čitačem

Da bi se uspiješno uspostavila komunikacija čitač-kartica, prethodno je potrebno izabrati čitač koji će se koristiti i alocirati resurse neophodne za njegovo funkcionisanje. Da bi određeni čitač bio spreman za prijem kartice potrebno je uspiješno izvršiti sljedeće korake:

1) Pozvati SCEstablishContext 2) Potrebno je iz svih grupa tipova čitača koje sistem poznaje izabrati onu koja će se

koristiti. To se ostvaruje pozivanjem metoda SCListReaderGroups . Za PC/SC sisteme koristi se SCard$DefaultReaders grupa.

3) Iz određene grupe čitača, pozivanjem metoda SCListReaders, dobijaju se svi čitači koji su u toj grupi.

4) Od svih čitača biramo jedan koji ćemo koristiti.

Na drugi način, moguće je samo pozvati SCSelectReader(SCListReaderGroups) , pa da se u Windows formi u obliku dijaloga izaberu grupe i željeni čitač. Neophodni parametri se smještaju u konfiguracijsku datoteku, da se ne bi svaki put prolazila ista procedura.

Uspostavljanje komunikacije sa pametnom karticom

Nakon što smo uspiješno inicijalizovali čitač, potrebno je uspostaviti komunikaciju sa karticom. Da bi se to ostvarilo potrebno je pozvati SCConnect, sa parametrima SCShareMode i SCProtocols. Prvi parametar nam govori na koji način želimo da koristimo čitač ( a ujedno i karticu), u dijeljenom, ekskluzivnom ili direktnom režimu. Dijeljini režim podrazumijeva da i druge aplikacije mogu istovremeno koristiti čitač. Za razliku od njega, ekskluzivni režim nam govori da niko drugi ne može koristiti čitač i karticu, osim nas. Oba ova režima zahtijevaju karticu u čitaču, u suprotnom metod SCConnect vraća grešku. Direktni režim se koristi onda kada aplikacija zahtijeva povezivanje se čitačem bez obzira da li se unutra nalazi kartica.Parametar tipa SCProtocols naznačava koji ćemo protokol koristiti pri prenosu podataka.

Nakon inicijalizacije čitača i povezivanja sa pametnom karticom, dobijaju se svi potrebni parametri neophodni za dalji rad. Sve promjenljive koje se odnose na čitač i pametnu karticu se nalaze u dijeljenom slogu ScardResources, koji se nalazi u korijenu biblioteke SmartCard.

Slika 4.4 Slog SCardResources

64

Page 65: Biblioteka za rukovanje smart karticama u .NET okruženju

Prenos podataka

Prenos podataka, tj. slanje naredbi kartici i preuzimanje odgovora, ostvaruje se pozivanjem metoda SCTransmit. Svaka transakcija ima svoj početak i svoj kraj, tako da je na početku potrebno pozvati SCStartTransaction,čime se čitač priprema za prenos podataka, a nakon obavljene transakcije SCEndTransaction, koji oslobađe sve resurse zauzete pri prenosu. Sve ovo obezbjeđuje da prenos prenos podataka teče nesmetano, tj. blokira druge aplikacije i ne dozvoljava njihov pristup kartici u toku jedne transakcije.

4.4.Podbiblioteka SmartCard.Cryptoflex

Podbiblioteka SmartCard.Cryptoflex sadrži metode namijenjene rukovanju Cryptoflex pametnim karticama. Sadrži tri klase: CryptoflexCard, Cryptoflex8k i Personalization.

Slika 4.5 Struktura podbiblioteke SmartCard.Cryptoflex (Karakteristični elementi)

65

Page 66: Biblioteka za rukovanje smart karticama u .NET okruženju

4.4.1.CryptoflexCard

Klasa CryptoflexCard sadrži metode karakteristične za sve Cryptoflex pametne kartice. Ona predstavlja jezgro koje se može koristiti za realizaciju metoda za rukovanje svim vrstama kartica iz Cryptoflex programa.

Slika 4.6 Klasa CryptoflexCard (nepotpun prikaz)

Metodi, koji su implementirani u ovu klasu, ne zahtijevaju poznavanje Cryptoflex instrukcija i velikog broja parametara koji se vežu za instrukcije, ali je ipak potrebno razumijevanje Cryptoflex datotečnog sistema opisanog u Poglavlju 3 da bi se mogli pravilno koristiti.

66

Page 67: Biblioteka za rukovanje smart karticama u .NET okruženju

4.4.2.Cryptoflex8k

Ova klasa u potpunosti nasljeđuje klasu CryptoflexCard, ali je i nadograđuje novim metodima koji su karakteristični za karticu Cryptoflex 8k.

Slika 4.7 Strukura klase Cryptoflex8k

Novi metodi se odnose na RSA kriptografske operacije i veličinu ključeva koji se koriste, tako da možemo kreirati datoteke tajnog i javnog ključa, generisati ključeve, za operacije RSA-512,RSA-768 i RSA-1024. RSASignature metod služi za RSA kriptovanje ulaznog stringa, obično je to HASH koji treba potpisati.

4.4.3.Personalization

Klasa Personalization sadrži jedan primjer kako bi se trebala izvršiti personalizacija kartice. Pozivom metoda personalize() kreira se direktorijum sa svim potrebnim datotekama, generišu se javni i tajni ključevi, upisuju eksterni i interni ključevi...

Slika 4.8 Struktura klase Personalization

67

Page 68: Biblioteka za rukovanje smart karticama u .NET okruženju

4.5.Terminal

SCTerminal je klasa sa skupom metoda koji obezbjeđuju inicijalizaciju čitača, povezivanje čitača sa karticom i praćenje događaja koji su u direktnoj vezi sa čitačem i karticom. Nalazi se u korijenu biblioteke SmartCard.

Nakon što se pokrene (Start()), terminal osluškuje da li je ubačena kartica u čitač. Ako se to uradi vraća se događaj OnCardIn. Nakon toga moguće je povezati se sa karticom metodom Connect(), nakon čega je moguće slati naredbe kartici i preuzimati odgovore. Nakon što se izvadi kartica iz čitača, izvršava se događaj OnCardOut.

Rukovanje događajima je, ovdje, vrlo važno zato što oni nisu obrađeni na relaciji Windows-SmartCardReader-SmartCard. Kartica se obraća čitaču, bez prethodnog zahtijeva, samo onda kada se resetuje (to može biti i kada se ubacuje u čitač i dok je u čitaču), te je zato bilo neophodno obraditi događaje.

Slika 4.9 Struktura klase SCTerminal

68

Page 69: Biblioteka za rukovanje smart karticama u .NET okruženju

4.6.Ostali, bitni elementi biblioteke SmartCard

4.6.1.SmartCard.SCUtils

Nalazi se u korijenu biblioteke i sadrži skup metoda kao što je konverzija podataka jednog tipa u drugi (bajti u heksadecimalne, heksadecimalne u string vrijednosti, itd.), te metode za upis vrijednosti u konfiguracionu datoteku...

Slika 4.10 SCUtils

4.6.2.SmartCard.SCardCommand

Slog SCardCommand je skup parametara komande grupisan u slog.

Slika 4.11 Slog ScardCommand

69

Page 70: Biblioteka za rukovanje smart karticama u .NET okruženju

4.6.3.SmartCard.SCCrypto

Ova klasa je namijenjena za kriptovanje podataka koristeći DES enkripciju. Kao ključevi se koriste relevantni ključevi na kartici.

Slika 4.12 SCCrypto klasa

4.6.4.SmartCard.SCPinDialog

Vizuelna forma koja od korisnika traži da unese odgovarajući PIN.

Slika 4.12 SCPinDialog klasa

4.6.5.SmartCard.SCDisposition

Vrijednosti nabrojivog tipa SCDisposition su ona stanja u kojima želimo da ostavimo karticu nakon uspiješno završene transakcije. Podrazumijevana vrijednost je LeaveCard, tj. ostavljamo karticu u stanju u kome je bila prije transakcije.

Slika 4.13 SCDisposition

70

Page 71: Biblioteka za rukovanje smart karticama u .NET okruženju

4.6.6.SmartCard.SCCardStates

Nabrojivi tip podataka koji predstavlja stanja u kojima se može naći kartica.

Slika 4.14 SCCardStates

4.6.7.SmartCard.SCProtocols

Vrijednosti protokola koji se mogu koristiti. Za pametne kartice, najčešće se koriste protokoli T0 i T1. Kod Cryptoflex 8k kartice podržan je samo T0 protokol.

Slika 4.15 SCProtocols

4.6.8.Smartcard.SCShareMode

Vrijednosti ovog nabrojivog tipa već su opisane u poglavlju 4.3.1 SCReader.

Slika 4.16 SCShareMode

71

Page 72: Biblioteka za rukovanje smart karticama u .NET okruženju

4.6.9.Cryptoflex.EFFileInfo i Cryptoflex.DFFileInfo – informacije o datoteci

Nakon što se izvrši selekcija određene datoteke, dobijaju se informacije o toj datoteci, bilo da se radi od DF ili EF tipu. Ako je u pitanju DF, informacije su smještene u slog DFFileInfo, u suprotnom nalaze se u slogu EFFileInfo.

Slika 4.17 Slogovi DFFileInfo i EFFileInfo

4.6.10.Cryptoflex.EFAccessConditions

Prilikom kreiranja EF datoteke, potrebno je naznačiti uslove pristupa za određene operacije. Uslov pristupa sa određenom operacijom povezuje slog EFAccessConditions.

Slika 4.18 EFAccessConditions slog

72

Page 73: Biblioteka za rukovanje smart karticama u .NET okruženju

4.6.11.Cryptoflex.AccessConditions

Nabrojivi tip AccessConditions sadrži uslove pristupa i njihove vrijednosti.

Slika 4.19 AccessConditions

4.6.12.Cryptoflex.FileTypes

Nabrojivi tip koji sadrži imena tipova datoteka i njihove vrijednosti.

Slika 4.20 FileTypes

Napomena:U poglavlju 4 data je struktura biblioteke SmartCard i opis njenih najbitnijih dijelova (ne svih elemenata), dovoljno da se razumije njen koncept.

73

Page 74: Biblioteka za rukovanje smart karticama u .NET okruženju

74

Page 75: Biblioteka za rukovanje smart karticama u .NET okruženju

5.Implementacija

5.1.Programsko okruženje

Biblioteka SmartCard pisana je u C# programskom jeziku, jeziku .NET razvojnog okruženja. Korišteni operativni sistem je WindowsXP SP2 na kome je instaliran i pravilno konfigurisan .NET Framework verzija 1.1.

SmartCard biblioteka nije vezana ni za jedan SDK koji je namijenjen za rukovanje čitačima i pametnim karticama. Izgrađena je od početka, oslanjajući se samo na WinSCard API.

Tokom izrade i za testiranje korišten je EZ100PU čitač pametnih kartica i Cryptoflex8k pametna kartica.

5.2.Tok izrade

Prilikom izrade biblioteke SmartCard, najviše vremena je potrošeno na upoznavanje i razumijevanje funkcionisanja čitača, pametnih kartica, komunikacije čitač-kartica, zatim strukturu protokola i naredbi.

Postojao je problem sa kriptovanjem podataka koristeći DES algoritam. Naime, ovaj algoritam spada u simetrične algoritme koji koriste ključ i IV vektor za kriptovanje podataka, dok je prilikom kriptovanja kartica koristila samo ključ. Ostao je problem koju vrijednost naznačiti za ključ. Konsultacijom sa odjeljenjem za tehničku podršku Axalto korporacije problem je riješen tako što se IV vektor postavlja na nultu vrijednost.

Još jedan problem se javio sa DES kriptovanjem podataka. Koristeći DESCryptoProvider (za kriptovanje blokova od 8 bajta) nakon kripcije od 8 bajta dobijao se rezultat od 16 bajta. Naime, DESCryptoProvider je modifikovani DES alogoritam, gdje je, ako drugačije nije naznačeno,podrazumijevana dužina bloka 8 bajta, a PaddingMode PKCS7. PaddingMode.PKCS7 nam, u ovom slučaju, govori da se ulaznom bloku od n bajta dodaje još 1-8 bajta tako da rezultujući blok bude djeljiv sa 8. tako bi se za blok od 8 bajta dobijao izlazni kriptogram od 16 bajta. Problem je riješen tako što se PaddingMode postavlja na None.

Pri korištenju biblioteke o problemima sa DES enkripcijom ne treba razmišljati, pošto je kreirana klasa SCCrypto koja sadrži metode DESEncrypt i DESDecrypt koji zahtijevaju samo unos ključa i stringa koji se kriptuje.

75

Page 76: Biblioteka za rukovanje smart karticama u .NET okruženju

5.3.Eksploatisanje biblioteke SmartCard

Biblioteka SmartCard, iako je pisana u C# programskom jeziku može se koristiti i u drugim jezicima .NET razvojnog okruženja. Nakon što se uključi u projekat, potrebno je u zaglavlju pozvati dijelove koji se koriste. U narednoj tabeli je dat prikaz kako se biblioteka poziva iz različitih programskih jezika .NET okruženja.

C#

using SmartCard;using SmartCard.Controls;using SmartCard.Cryptoflex;

Visual Basic

Imports SmartCardImports SmartCard.ControlsImports SmartCard.Cryptoflex

J#

import SmartCard.*;import SmartCard.Controls.*;import SmartCard.Cryptoflex.*;

Tabela 5.1 Pozivanje biblioteke SmartCard

76

Page 77: Biblioteka za rukovanje smart karticama u .NET okruženju

6.Zaključak

Ovaj rad je imao za cilj upoznavanje sa pametnim karticama, njihovim čitačima, postojećim protokolima i komunikacijom. Nakon toga, kreirana je biblioteka namijenjena rukovanju pametnim karticama i čitačima pametnih kartica, sa posebnim osvrtom na Cryptoflex pametne kartice.

Iako pametne kartice podliježu određenim standardima, ipak se javlja neusklađenost među njima. Tako na primjer instrukcija kod jedne kartice ne odgovara instrukciji druge, stoga aplikacija napravljena da eksploatiše jedan tip kartica možda neće biti validna za upotrebu sa drugim tipom pametnih kartica. Zato je, u biblioteci SmartCard, jedan dio namijenjen rukovanju karticama na nivou naredbe, tako da se može iskoristiti za izgradnju specijalizovanih metoda za rukovanje svih ostalih pametnih kartica, uključujući i memorijske kartice. Drugi dio predstavlja metode na višem nivou i specijalizovani su za operacije sa Cryptoflex8k pametnim karticama.

Rad je pokrio jednu izuzetno zanimljivu oblast. Pametne kartice će u budućnosti, gotovo sigurno, imati veliku ekspanziju u oblastima kao što su transakcija podataka, identifikacija, autorizacija...

U pionirskim danima pametnih kartica rečeno je da će jednoga dana postati važne isto koliko i računari. Napravljena je samo jedna greška, jer su pametne kartice, već, mini računari.

77

Page 78: Biblioteka za rukovanje smart karticama u .NET okruženju

7.Literatura

[1] W. Rankl, W. Effing:Smart Card Handbook Second Edition

[2] Smart Cards and Private Currencies by J. Orlin Grabbe

[3] Axalto http://axalto.com

[4]CryptoflexReferenceManualhttp://cryptoflex.com

[5]MSDN 2003

78

Page 79: Biblioteka za rukovanje smart karticama u .NET okruženju

8.Biografija

Dalibor Trišić, rođen 2.12.1976 u Tuzli.Gimnaziju završio 1995 godine u Bijeljini, nakon čega se upisuje na Elektrotehnički Fakultet u Novom Sadu, na smjeru „Računarska tehnika“.

Dalibor Trišić

79

Page 80: Biblioteka za rukovanje smart karticama u .NET okruženju

KLJUČNA DOKUMENTACIJSKA INFORMACIJA

Redni broj,RBR:

Identifikacioni broj,IBR:

Tip dokumentacije, TD: monografska publikacija

Tip zapisa, TZ: tekstualni štampani dokument

Vrsta rada, VR: diplomski rad

Autor, Dalibor TrišićAU:

Mentor, prof.dr. Zora KonjovićMN:

Naslov rada, Biblioteka za rukovanje smart karticama u .NET okruženjuNR:

Jezik publikacije,JP: srpski (latinica)

Jezik izvoda, JI: srpski / engleski

Zemlja publikovanja,ZP: Srbija i Crna Gora

Uže geografsko područje, UGP: Vojvodina

Godina, GO: 2005

Izdavač, IZ: autorski reprint

Mesto i adresa, MA: Novi Sad, Fakultet tehničkih nauka, Odsek za

računarstvo i automatiku, Trg D. Obradovića 6

Fizički opis rada, FO:

Naučna oblast, NO: računarske nauke

Uža naučna oblast, SmartCard sistemi, .NET razvojno okruženje

80

Page 81: Biblioteka za rukovanje smart karticama u .NET okruženju

ND: informacioni sistemi

Predmetna odrednica/ključne reči, PO:

UDK broj,UDK:

Čuva se u, ČU: Biblioteka Fakulteta tehničkih nauka,

Trg D. Obradovića 6, Novi Sad

Važna napomena,VN

Izvod,IZ:

Datum prihvatanja teme odnaučno-nastavnog veća,DP:

Datum odbrane, DO:

Članovi komisije,KO

Predsednik: Milan Vidaković

Član: Branko Milosavljević

Mentor: Zora Konjović

KEY WORDS DOCUMENTATION

Accession number,ANO:

Indentification number,INO:

Document type,DT: Monographic publication

Type of recordset,TR: Textual material

Contents code,CC: BSC Thesis

Author, Dalibor Trišić

81

Page 82: Biblioteka za rukovanje smart karticama u .NET okruženju

AU:

Mentor,MN:

Title,TI:

Language of text,LT: Serbian (latin)

Language of abstract,LA: Serbian and English

Country of publication,CP: Serbia and Montenegro

Locality of publication,LP: Vojvodina

Publication year,PY: 2005

Publisher,PB: Author reprint

Publish place,PL: Novi Sad, 21000, SCG

Trg Dositeja Obradovića 6

Physical descriptionPD:

Scientific field,SF: Computing Science

Scientific discipline,SD: Information systems

Subject/Key words,SX:

UC:

Holding data,AB: Library of Faculty of Technical Sciences,Novi Sad, SCGNote,NT:

Abstract,AB:

82

Page 83: Biblioteka za rukovanje smart karticama u .NET okruženju

Accepted by ScientificBoard on:ASP:

Defended on,DE:

Thesis defended board (named/degree/title/faculty),DB:

President: Milan Vidaković

Member: Branko Milosavljević

Member: Zora Konjović

83