Upload
phamhuong
View
229
Download
0
Embed Size (px)
Citation preview
I. Pendahuluan
1.1. Latar Belakang Penelitian
1.1.1. Aspek Smartcard
Dewasa ini di negara Indonesia smartcard semakin luas penggunaannya di
berbagai sektor. Fitur keamanan bertransaksi yang tinggi, dukungan multi aplikasi dalam
satu kartu, serta kenyamanan dalam penggunaan menjadi faktor utama meningkatnya
tren penggunaan smartcard. Mulai dari sektor akademis, telekomunikasi, transportasi,
kesehatan hingga pemerintahan sudah menggunakan teknologi kartu ini.
Tidak seperti pemakaian smartcard di bidang telekomunikasi dan perbankan yang
menggunakan standard yang sama yaitu misalnya GSM ataupun CDMA untuk
telekomunikasi dan EMV untuk perbankan, implementasi di bidang-bidang lain seperti
akademis dan transportasi belum menerapkan skema yang terstandarisasi. Sehingga
masing-masing pengembangan menerapkan cara masing-masing dalam implementasi
smartcard. Selain keragaman standard sistem smartcard, penggunaan perangkat keras
pemroses kartu juga berbeda-beda. Fenomena ini menyebabkan smartcard menjadi lebih
sulit digunakan dalam skema silang layanan antar sistem atau antar vendor. Kemampuan
smartcard yang berfungsi sebagai satu kartu multi layanan menjadi tidak berarti lagi. Itu
artinya, satu smartcard hanya bisa digunakan untuk mengakses satu layanan tertentu
saja. Dengan adanya standardisasi ini, diharapkan satu smartcard bisa digunakan untuk
mengakses berbagai layanan.
1.1.2. Aspek Hardware Pengakses Smartcard
Pada umumnya, hardware pengakses smartcard dibuat menggunakan
mikroprosesor 8 bit yang umum terdapat di pasaran. Hal ini membuat mikroprosesor tidak
bisa menangani program yang rumit dan periferal yang banyak. Ketahanan hardware juga
menjadi kurang karena menggunakan komponen kualitas rendah. Hardware yang
memanfaatkan smartcard biasanya adalah alat-alat yang dihidupkan dalam waktu yang
lama sehingga butuh kehandalan yang tinggi. Alat juga harus berinteraksi dengan
smartcard serta periferal yang lain dan melakukan operasi-operasi enkripsi dan dekripsi
terhadap data smartcard. Mikroprosesor di dalamnya harus mampu menangani operasi-
operasi dan struktur program yang rumit. Oleh karena itu hardware membutuhkan
dukungan mikroprosesor 32 bit yang lebih tangguh dari mikroprosesor 8 bit yang tersedia
di pasaran. Proses perakitan juga perlu mendapat perhatian untuk menjamin ketahanan
dan keawetan alat dan mempermudah perawatan alat.
1.2. Permasalahan yang Dipecahkan
Masalah yang dipecahkan oleh penelitian ini adalah sebagai berikut:
a. Penggunaan smartcard yang belum optimal sebagai multi purpose card. Smartcard
pada dasarnya bisa dipakai untuk melayani berbagai macam aplikasi. Pada
kenyataannya, pemakaian smartcard dalam berbagai aplikasi masih saling
terpisah. Belum ada silang layan antar aplikasi. Sebagai contoh adalah
pemakaian smartcard di UGM. Mahasiswa UGM sudah menggunakan smartcard
sebagai kartu mahasiswa, tetapi kartu tersebut hanya dipakai sebatas tanda
pengenal saja. Fungsi kartu sebagai suatu smartcard-nya belum dimanfaatkan.
Contoh yang lain adalah pada sistem tiket bus Trans Jogja. Smartcard pada
aplikasi tersebut hanya digunakan sebagai tiket dan tidak bisa digunakan untuk
aplikasi lain. Penelitian ini akan diarahkan pada penerapan multi aplikasi pada
satu smartcard dengan case study pada bidang transportasi dan akademis.
b. Reliabilitas hardware pengakses smartcard masih kurang. Reliabilitas mencakup
ketahanan hardware terhadap lingkungan, kemampuan hardware berinteraksi
dengan dengan smartcard, kemampuan mikrokontroler mengatasi banyak periferal
dan kemudahan penggunaan.
1.3. Tujuan Khusus Penelitian
Riset ini bertujuan untuk memberikan usulan standard interoperabilitas baik untuk
sistem maupun struktur dalam kartu, serta mekanisme komunikasi kartu dengan hardware
pemrosesnya.
1.3.1. Aspek Smartcard
Riset dibatasi pada implementasi di bidang akademis dan transportasi sebagai
studi kasus. Pemilihan bidang transportasi disebabkan gencarnya implementasi
smartcard sebagai pengganti tiket kertas di sistem transportasi massal yang diterapkan
oleh departemen perhubungan. Pada sektor akademik pemanfaatan smartcard juga
makin luas di berbagai kampus maupun universitas, sehingga implementasi standar
interoperabilitas ini sangat tepat untuk dikembangkan. Pada riset ini akan dikembangkan
standar interoperabilitas memungkinkan silang layan antar mode transportasi, sekaligus
silang layan antar universitas. Secara bersama-sama kartu akademis dapat pula
digunakan sebagai kartu transportasi. Untuk mengembangkan standardisasi ini, akan
dipelajari juga beberapa standar smartcard yang telah digunakan di berbagai negara yaitu
di Inggris dan Singapura.
1.3.2. Aspek Hardware Pengakses Smartcard
Pada penelitian ini akan dikembangkan prototype hardware yang mendukung
pengaksesan smartcard untuk keperluan akademis maupun transportasi. Pengembangan
hardware diarahkan pada keandalan, kemudahan berinteraksi dengan pengguna dan
kemampuan berinteraksi dengan smartcard. Hardware juga dirancang untuk diberi
aplikasi enkripsi smartcard. Pada riset ini sistem mikrokontroler dirancang sehingga
mampu dihubungkan dengan berbagai periferal.
II. Studi Pustaka
Smartcard merupakan kartu plastik seukuran kartu magnetik atau kartu kredit
biasa yang dilengkapi dengan suatu chip yang dapat menyimpan informasi di dalamnya
( Kilicli, 2001). Ada dua penggolongan smartcard berdasar kemampuan komputasinya
• Smartcard tanpa prosesor di dalamnya (Memory card)
• Smartcard dengan prosesor di dalamnya (orang cenderung mengasosiasikan kata
smartcard dengan kartu memori dengan kemampuan komputasi, dan dalam tulisan ini
penggunaan kata smartcard selalu mengacu pada jenis smartcard ini)
Smartcard juga dapat digolongkan berdasarkan ada-tidaknya kontak elektris ataupun
interface akses untuk melakukan transaksi data antara smartcard dan terminal (reader)
yaitu (Rankl, 2003):
• Contact Smartcard – terdapat konektor chip berupa lempengan tembaga yang
menjembatani aliran sinyal elektrik antara chip dan reader
• Contactless smartcard – tidak ada kontak langsung antara kartu dan reader, transfer
data melalui sinyal elektromagnetik yang terjadi karena adanya induksi medan
elektromagnetik yang dipancarkan oleh reader dan dipancarkan ulang oleh chip
smartcard melalui suatu antena.
• Combo smartcard – merupakan gabungan antara kedua jenis smartcard di atas.
Chip smartcard terdiri atas beberapa bagian sebagaimana layaknya sebuah
microcontroler, yaitu (Rankl, 2003) :
• Central processing unit (CPU)
• Random access memory (RAM)
• Read only memory (ROM)
• Erasable electronicaly programmable read only memory (EEPROM)
Smartcard dikembangkan oleh beberapa perusahaan semikonduktor ternama
dengan detail implementasi dan teknologi yang berbeda-beda sehingga diperlukan suatu
standar yang menjembatani interoperabilitas di lapangan. Spesifikasi teknis smartcard
dijabarkan secara mendetail dalam dokumen standar ISO 7816 (ISO,1994), yang
meliputi :
1. Karakteristik fisik dari kartu
2. Dimensi dan posisi kontak elektris dari kartu
3. Sinyal dan protokol komunikasi data
4. Standar instruksi untuk berkomunikasi dengan smartcard
Sebagai teknologi baru, smartcard menawarkan beberapa fitur yang lebih
daripada yang ditawarkan oleh kartu magnetik, antara lain ( Zoreda, 1994) :
a. Lebih aman dengan proteksi kunci kriptografik sehingga memungkinkan pemangkasan
biaya operasional yang mengharuskan adanya autentifikasi transaksi secara online
b. Dibandingkan dengan teknologi kartu magnetik, smartcard memiliki ukuran
penyimpanan data yang relatif lebih besar sehingga dengan satu kartu memungkinkan
banyak layanan yang bisa diakses
c. Lebih membuka peluang yang memungkinkan lebih banyak pengembang yang dapat
bergabung sehingga makin banyak layanan yang akan ditawarkan kepada pengguna
2.1. Organisasi File Smartcard
Data yang tersimpan dalam suatu smartcard disusun dalam suatu struktur yang
mirip dengan struktur direktori pada sistem operasi DOS ataupun Linux. Pada smartcard
hanya terdapat dua lapis direktori, dan tiap lapis direktori hanya bisa menyimpan sampai
63 file anak. File dalam smartcard dibedakan menjadi dua yaitu directory file (DF) dan
elementary file (EF) (Gemplus, 2001). Dua lapis struktur direktori pada smartcard bisa
diistilahkan sebagai global level dan local level, diilustrasikan pada Gambar 1.
Sebuah master file (MF) merupakan file root dan hanya terdapat satu buah dalam
tiap smartcard. Master file memiliki id 3F 00 dan dibawahnya terdapat satu elementary file
dengan id 3F 01 yang dipakai sebagai penyimpan system key.
Elementary file 3F 01 tersebut merupakan kunci gerbang autentifikasi untuk
memulai sesi pengoperasian data di dalam smartcard (Gemplus, 2001).
2.2. Format Instruksi Smartcard
Perintah-perintah yang dikirim melalui terminal reader ke smartcard untuk
memanipulasi data yang tersimpan di dalamnya adalah rangkain application data unit
(APDU).
Gambar 1. Struktur file smartcard
Rangkaian apdu tersebut tersusun mengikuti format instruksi yang diatur dalam
bagian empat dokumen standar ISO 7816. Sebuah instruksi dikelompokan menjadi dua
yaitu bagian header dan bagian body. Bagian header menentukan jenis instruksi beserta
parameternya sedangkan bagian body merupakan data yang akan dioperasikan ke
smartcard yang bersangkutan. Komponen-komponen header dan body sebuah instruksi
didefinisikan seperti pada Gambar 2.
Gambar 2. Format apdu instruksi smartcard
Penjelasan komponen-komponen sebuah instruksi smartcard tersebut dijabarkan pada
Tabel 1.
2.3. Studi tentang standar smartcard ITSO dan implementasinya
Data disimpan pada kartu secara elektronis. Data ini disusun dalam sebuah
arsitektur yang dirancang sedemikian rupa sehingga dapat memenuhi kebutuhan untuk
menyimpan berbagai tipe dan macam produk, dan dapat digunakan pada berbagai
macam jenis kartu. Berdasarkan dokumentasi ITSO (ITSO, 2008), Arsitektur ITSO terdiri
dari tiga lapisan yang terpisah, yang ditunjukkan pada gambar 3.
Tabel 1 Format instruksi smartcard
Lapis Aplikasi
Lapis Produk
Lapis Media
Gambar 3. Arsitektur logik struktur kartu
Dari gambar tersebut ditunjukkan bahwa satu buah media (kartu) dapat memiliki
satu aplikasi atau lebih. Untuk setiap satu aplikasi, dapat memiliki lebih dari satu produk.
2.3.1. Lapis media
Lapisan ini merupakan lapisan yang di dalamnya bisa terdiri dari jenis-jenis kartu
atau medium yang dapat digunakan menyimpan data-data secara elektronis. Sebagai
contoh jenis kartu yang beredar luas di pasar misalnya kartu Mifare 1K/4K, Mifare
Ultralite, JCOP, dan Calypso.
2.3.2. Lapis shell
Lapisan ini merupakan lapisan yang di dalamnya berupa data yang
menginformasikan tentang perusahaan yang resmi menerbitkan kartu tersebut.
Perusahaan itulah yang bertanggung jawab terhadap layanan yang dikandung oleh kartu
tersebut.
2.3.3. Lapis produk
Lapis produk merupakan lapisan yang menjadi lokasi di mana tiap-tiap aplikasi
menempatkan data-data yang spesifik terkait dengan layanannya.
Data yang akan disimpan pada smartcard secara logika juga dipisahkan dalam satu
satuan yang dinamakan dengan grup data. Grup data ini berisi data-data yang
menginfomasikan berbagai hal terkait dengan aplikasi atau produk yang tersimpan pada
kartu. Sebuah grup data secara umum terdiri atas empat bagian sesuai yang ditunjukkan
pada gambar 4, yaitu:
Label
Isi Data
Instans
Seal
Berfungsi sebagai bagian yang mendeskripsikan grup data secara keseluruhan
Merupakan bagian utama dari suatu grup data.
Merupakan bagian dari grup data yang digunakan untuk mengidentifikasikan segala perubahan pada grup data
Merupakan bagian dari grup data yang dapat digunakan untuk verifikasi keseluruhan grup data
Gambar 4. Bagian-bagian dari Grup Data
- Label
Label merupakan bagian dari Grup Data yang berfungsi untuk mengidentifikasi dan
menginfomasikan isi grup data secara keseluruhan.
- Isi Data
Bagian ini merupakan bagian utama dari Grup Data.
- Instans
Bagian ini merupakan bagian dari grup data yang digunakan untuk menginfomasikan
perubahan pada grup data. Bagian ini diubah ketika ada perubahan pada grup data.
- Seal
Seal merupakan bagian yang dapat digunakan untuk memverifikasi keseluruhan grup
data.
Seperti ditunjukkan pada gambar 5, dalam suatu kartu, terdapat empat buah grup data
yang dapat disimpan, yaitu:
1. Grup data aplikasi
2. Grup data direktori
3. Grup data produk
4. Grup data log
Gambar 5. Pembagian-pembagian Grup Data
Aplikasi
Direktori
Aplikasi 1
Aplikasi 2
Aplikasi n
...
Log
III. Metode Penelitian.
3.1. Persiapan
Persiapan pelaksanaan RUSNAS 2009 dengan judul “Aplikasi Smartcard dalam
Bidang Akademis dan Transportasi” bisa dibagi menjadi kegiatan sebagai berikut:
3.1.1. Mempelajari berbagai standar struktur kartu
Untuk menerapkan Smartcard dalam multi-aplikasi, diperlukan suatu standar
yang bisa mendukung berbagai aplikasi. Suatu sistem layanan berbasis smartcard juga
dimungkinkan diakses dengan tipe smartcard yang berbeda-beda. Oleh karena itu, suatu
standar smartcard dibutuhkan untuk menjadi suatu kerangka kerja bagi smartcard multi-
aplikasi dan sistem dengan smartcard multi-tipe. Saat ini, beberapa negara sudah mulai
menerapkan smartcard secara multi-aplikasi seperti Singapura dan Inggris. Dokumen-
dokumen standar smartcard dari pengembang-pengembang di negara tersebut dipelajari
untuk kemudian ditentukan standar mana yang akan dipakai.
3.1.2. Membuat perbandingan teknologi antar beberapa jenis kartu
Pembandingan teknologi antar smartcard akan menghasilkan suatu rekomendasi,
teknologi mana yang akan digunakan. Smartcard dengan teknologi yang berbeda
ternyata juga mempunyai cara pengaksesan yang berbeda. Termasuk di dalamnya
adalah enkripsi data yang disimpan di smartcard. Smartcard yang direkomendasikan
adalah yang datanya terenkripsi dengan cukup aman, sulit untuk dibobol baik pada kartu
maupun pada sistem, serta smartcard tersebut harus cukup ekonomis.
3.1.3. Studi tentang sistem mikroprosesor yang akan digunakan
Teknologi yang dikembangkan beberapa di antaranya akan diterapkan di piranti
embedded. Peralatan embedded yang dikembangkan antara lain door access, mesin
tiket, dan terminal Point Of Sales. Hal-hal yang perlu diperhatikan adalah lebar bit data
prosesor, kecepatan prosesor, kapasitas penyimpanan program, dan kapasitas memori
data untuk pengolahan. Sebagai platform, dipilih komputer embedded dengan
mikroprosesor ARM 9 yang mempunyai lebar data 32 bit. Setelah memilih
mikroprosesor, berikutnya adalah pemilihan sistem komputer embedded berbasis ARM 9
yang tersedia di pasaran. Pemilihan berdasarkan kapasitas memori program dan data.
3.1.4. Persiapan hardware dan software
Instalasi komputer dan software yang dibutuhkan untuk pengembangan piranti
embedded yaitu sistem operasi Linux dan compiler arm-linux-gcc. Hardware yang
digunakan adalah SBC (single board computer) dengan prosesor ARM 9. SBC sudah
mempunyai sistem operasi Linux.
3.2. Proses Pelaksanaan Penelitian
3.2.1. Pemilihan Rekomendasi Standar Struktur Kartu dan Pengembangannya
Standar smartcard yang dipelajari untuk pengembangan smartcard multi-aplikasi
ada dua pilihan sebagai berikut:
- CePAS (Contactless e-Purse Application)
CePAS adalah standardisasi struktur smartcard yang berlaku di Singapura.
Standar ini didapat dengan cara membeli dari pengembang CePAS. CePAS lebih focus
pada penggunaan uang elektronik (e-purse) yang disimpan di dalam sistem smartcard.
Standard ini menjabarkan tentang proses debit (pengurangan nilai uang) dan proses
kredit (penambahan nilai uang). Didalam standard dibahas pula tentang mekanisme
pengamanan dan komputasi algoritma enkripsi. Skema standard ini kurang fleksibel
untuk diterapkan sebagai standard identitas universitas. Namun dapat diterapkan dalam
skema e-purse untuk transaksi mikro di lingkungan kampus. Standard penyimpanan data
tidak dibahas dalam dokumen ini, namun mengacu ke standard lain.
- ITSO (Integrated Transport Smartcard Organisation)
Standar ini digunakan di negara Inggris Raya. ITSO bermula dari penggunaan
smartcard untuk sistem transportasi. Tujuan utamanya adalah aspek interoperabilitas
baik layanan maupun sistem. Sistem disini mencakup kartu, reader, host computer dan
mekanisme keamanan serta komunikasi data. Standard ITSO memungkinkan satu kartu
berisi bermacam produk. Strukturnya terdiri dari ITSO Shell, Directory dan Product Entity.
Dalam perkembangannya ITSO dapat menyimpan identitas pengguna, sehingga
dapat diterapkan tidak hanya di lingkungan transportasi namun juga dapat digunakan
sebagai identitas mahasiswa. Standar struktur kartu dari ITSO ini bisa didapatkan
dengan cuma – cuma.
3.2.1.1. Pemilihan ITSO
Standard ITSO dipilih karena dukungan interoperabilitas yang ditawarkan. Skema
dukungan terhadap banyak tipe kartu juga menjadi kelebihan dari standard ini. ITSO
merupakan Open Standard yang dapat diadopsi dan memiliki dokumentasi yang sangat
lengkap.
ITSO mendukung kartu dengan tipe storage card hingga processor card. Sehingga
untuk implementasi berbiaya murah dapat memanfaatkan skema sistem ITSO dengan
kartu storage card saja.
2.2. Penentuan rekomendasi teknologi smartcard
Untuk menentukan teknologi smartcard yang akan direkomendasikan, terlebih
dahulu dilakukan studi komparasi terhadap beberapa teknologi smartcard, yaitu Mifare
Classic MF1S50, Mifare Classic MF1S70, DesFire MF3ICD40, dan ATMEL AT88RF020.
Fitur-fitur yang dibandingkan adalah antarmuka RF, spesifikasi EEPROM, dan security.
Perbandingan antara beberapa jenis kartu tersebut bisa dijelaskan dalam tabel 2,3 dan 4
berikut:
Tabel 2. Perbandingan RF interface
Tabel 3. Kapasitas EEPROM masing-masing kartu
Perbandingan Mifare Clasic 1K MF1S50
Mifare Clasic 1K MF1S70
DesFire MF3 IC D40
ATMELAT88RF020
Organisasi Memori
1 Kbyte, 16 Sector dengan 4 blok, 16 bytes tiap blok
4 Kbyte, 32 Sector dengan 4 blok dan 8 sektor dengan 16 blok, 16 bytes tiap blok
4 kbyte 2048 bit, 32 64-bit pages
Waktu Tulis Tidak ditentukan Tidak ditentukan
2 ms (1 ms hapus, 1ms program
3 ms
Data Retention
10 th 10 th 10 th
Ketahanan tulis
100.000 kali 100.000 kali 100.000 kali 100.000 kali
No Perbandingan Mifare Clasic 1K MF1S50
Mifare Clasic 1K MF1S70
DesFire MF3 IC D40
ATMELAT88RF020
1. Jangkauan Operasi
100 mm 100 mm 100 mm Tidak ditentukan
2. Frekuensi Operasi
13.56 MHZ 13.56 MHZ 13.56 MHZ 13.56 MHZ
3. Kecepatan Transfer Data
106 kbits/s 106 kbits/s 106, 212, 424 kbits/s
106 kbps
4. Tinggi Integritas Data
16 Bit CRC, parity, bit coding, bit counting
16 Bit CRC, parity, bit coding, bit counting
4 Byte MAC, 16 Bit CRC, parity, bit coding, bit counting
2 byte CRC
5. Anticollision True Anticollision
True Anticollision
Deterministic Anticollision
Sesuai ISO 14443-3
Tabel 4. Perbandingan Security antar teknologi kartu
Hal Mifare Clasic 1K MF1S50
Mifare Clasic 4K MF1S70
DesFire MF3 IC D40
ATMELAT88RF020
Autentikasi Autentikasi three pass secara timbal balik
Autentikasi three pass secara timbal balik
Autentikasi three pass secara timbal balik
Cek Password
Enkripsi data
Enkripsi data pada RF-channel dengan proteksi terhadap serangan reply
Enkripsi data pada RF-channel dengan proteksi terhadap serangan reply
Enkripsi data Hardware DES/3DES pada RF-channel dengan proteksi terhadap serangan reply
data locking, ,
Penggunaan Key
Menggunakan 2 key per sector untuk menunjang aplikasi dengan key-hierarcy
Menggunakan 2 key per sector untuk menunjang aplikasi dengan key-hierarcy
Autentikasi pada level aplikasi
Pencacah satu arah
Serial Number
Nomor seri yang unik pada tiap piranti
Nomor seri yang unik pada tiap piranti
Nomor seri 7 byte yang unik tiap piranti
Nomor seri yang unik pada tiap piranti
Smartcard yang dipakai khususnya sebagai kartu mahasiswa Universitas Gadjah
Mada dan Tiket TransJogja serta TransJakarta adalah Mifare Classic. Berdasarkan fakta
tersebut, akan lebih mudah dalam aplikasi dan integrasi jika dalam penelitian ini
digunakan Mifare Classic.
3.2.3. Studi dan aplikasi piranti embedded untuk pengaksesan smartcard
Piranti embedded yang digunakan untuk pengembangan piranti berbasis
smartcard adalah sistem mikroprosesor dalam bentuk SBC (Single Board Computer).
SBC yang digunakan berbasis mikroprosesor ARM 9 dengan seri Mini2440 keluaran
Samsung. SBC ini sudah dilengkapi dengan sistem operasi Linux. Spesifikasi SBC ini
ditunjukkan oleh tabel 5 berikut.
Tabel 5. Spesifikasi Mini2440
Item SpesifikasiProsesor Samsung S3C2440 (ARM920T core) dengan clock efektif
533MHz
Memory 64MB SDRAM (up to 100MHz)
Flash memory 64MB NAND flash; 2MB NOR flash
Layar LCD layar sentuh; opsional untuk LCD 3.5 atau 7 inchi
Jaringan komputer
1 x 10/100 Ethernet RJ-45 interface (DM9000 chip)
USB 1 x USB Host; 1 x USB Slave (B-type interface)
Antarmuka I/O 1 x 34-pin 2.0mm GPIO interface
Dimensi 3.9 x 3.9 inches (100 x 100mm)
Sistem Operasi Linux 2.6.13
Tegangan Operasi
5 VDC 1.5 A
Pembuatan program aplikasi untuk SBC ini dilakukan di komputer (PC) dengan
sistem operasi linux. Untuk mengembangkan aplikasi smartcard berbasis SBC ini
dilakukan langkah-langkah berikut.
a. Mempersiapkan platform linux pada SBC
Linux yang diinstal pada SBC adalah Linux versi 2.6.13 dengan distribusi
angstromlinux. Distribusi Linux ini sudah diset khusus untuk dijalankan pada platform
Mini2440.
b. Membuat antarmuka antara SBC dengan smartcard reader(SCR)
Smartcard reader yang digunakan adalah ACR122. Piranti ini mempunyai
antarmuka USB. Driver untuk piranti ini sebenarnya hanya tersedia untuk PC dibawah
Windows atau Linux. Untuk menjalankan SCR digunakan standar PCSC (PC –
Smartcard) dan diperlukan suatu layanan PCSC daemon (PCSCD). Supaya SCR bisa
dijalankan di SBC, komponen penyusun layanan PCSCD di-compile ulang di komputer
dengan sistem operasi yang kompatibel dengan Linux 2.6.13 seperti pada SBC.
Komponen-komponen yang dibutuhkan untuk menginstal layanan PCSCD adalah:
- libusb
- pcsc-lite
- libccid
- pcsc-tools
Komponen tersebut di-cross-compile di PC kemudian dikopikan ke SBC sehingga SBC
dapat menjalankan layanan PCSC daemon dan bisa berkomunikasi dengan smartcard
reader.
c. Pengembangan aplikasi sederhana berbasis smartcard pada SBC
Setelah SBC bisa berkomunikasi dengan smartcard reader, tahap berikutnya
adalah mengembangkan suatu aplikasi sederhana untuk baca dan tulis smartcard Mifare
classic. Program yang dikembangkan sampai tahap ini berupa program sederhana.
Program ini akan menjadi dasar bagi pengembangan aplikasi selanjutnya yang lebih
kompleks.
3.2.4. Penerapan standar ITSO pada sistem smartcard
a. Konsep umum
Suatu smartcard bisa dipandang sebagai suatu media penyimpan. Untuk
pembuatan struktur smartcard yang mendukung interoperabilitas, penelitian ini
mengadopsi pola pikir struktur media penyimpanan yang sudah lazim digunakan seperti
disk. Media penyimpan pada komputer menggunakan file system untuk mengorganisasi
berkas-berkas yang tersimpan. File system ini menentukan metode penyimpanan, cara
pembacaan dan penulisan berkas dalam suatu media. Selain itu pada ranah media
penyimpan di komputer juga ada istilah direktori, yang mengarahkan komputer pada
suatu file/data yang akan diakses.
Pada penelitian ini, pada kartu juga dibuat suatu file system untuk mengorganisasi
data-data produk yang akan disimpan. File system ini dibuat dengan mengikuti standar
ITSO. Lapisan ITSO yang ditunjukkan pada gambar 3 dijabarkan lagi pada gambar 6
berikut dan dianalogikan dengan disk sesuai dengan tabel 6.
Gambar 6. Penjabaran lapisan pada ITSO
Media layer
Shell/ file system
directory
Product / data
Lapisan aplikasi
Lapisan produk
Tabel 6. Analogi disk dengan smartcard
Istilah media penyimpan komputer / disk
Istilah smartcard standar ITSO
Filesystem (ext3, FAT, NTFS)
Direktori
File / berkas / aplikasi
Shell (format tergantung pengembang)
Direktori
Produk
Dengan demikian, suatu smartcard bisa menampung dan memfungsikan
beberapa produk dengan mudah seperti disk yang bisa menampung banyak aplikasi.
Pada smartcard juga bisa ditambah dengan suatu produk baru seperti menginstal suatu
aplikasi pada komputer. Banyaknya macam produk yang bisa disimpan pada kartu
tergantung dari ukuran kartu. Tata cara instalasi produk pada kartu mentaati aturan yang
ditetapkan oleh pengembang shell kartu tersebut.
Pada standar ITSO juga telah ditetapkan tata-cara pengaksesan data pada suatu
kartu. Suatu data akan diakses baca maupun tulis dengan urutan tertentu. Flowchart
pengkasesan data produk suatu kartu pada skema ITSO ditunjukkan pada gambar 7.
Penambahan produk dijelaskan dalam flowchart pada gambar 8. Untuk
menambahkan suatu produk pada kartu, akan dilihat dahulu direktorinya. Dari direktori
tersebut akan diketahui ruang yang masih tersedia untuk produk baru. Jika masih ada
ruang, produk baru memungkinkan untuk ditambahkan. Setelah itu, data awal yang
berkaitan dengan produk baru tersebut akan dituliskan ke datagroup produk.
b. Penerapan Skema ITSO pada struktur penyimpanan di smartcard
Struktur penyimpanan pada smartcard terdiri dari sektor dan blok. Suatu media
penyimpan bisa dibagi dalam beberapa sektor dan masing-masing sektor terdiri dari
beberapa blok. Dalam setiap blok terdapat beberapa byte ruangan. Struktur ini digagas
oleh Mifare. Pada kartu mifare misalnya, masing-masing blok mempunyai 16 byte dan
pada tiap sektor terdapat empat blok. Stuktur penyimpan pada kartu mifare ditunjukkan
pada gambar 9.
Pada skema ITSO, ada tiga macam data yang disimpan di smartcard yaitu shell,
direktori, dan produk. Pada penelitian ini, cukup satu sektor saja untuk shell. Direktori
digunakan sebagai pointer terhadap suatu produk. Alamat tersimpannya suatu produk
ditentukan oleh nilai yang ada pada direktori. Direktori juga menempati dua sektor dalam
smartcard untuk kartu mifare 1 KB. Sektor yang masih tersisa dalam smartcard digunakan
untuk menampung data produk.
Gambar 7. Skema flowchart akses baca-tulis data pada ITSO
Walaupun satu sektor terdiri dari 4 blok, tetapi pada penggunaanya, blok terakhir tidak
digunakan untuk penyimpanan data. Blok 3 sudah digunakan untuk menyimpan key untuk
autentikasi, sehingga yang digunakan untuk penyimpanan data hanya 3 blok. Pada
penelitian ini, digunakan kartu Mifare dengan kapasitas 1 Kbyte. Sehingga ada 16 sektor
(sektor 0 – 15) yang terdapat pada kartu. Secara teknis, pembagian sektor untuk skema
ITSO adalah sebagai berikut:
– Shell menempati sektor 0, yaitu pada blok 1 dan blok 2.
– Direktori menempati sektor 14, selain itu dibuat copy direktori pada sektor 15.
– Produk berada di sektor 1 – 13.
tidak
ya
ya
Menentukan kartu bisa dilayani atau tidak
inisialisasi
Pembacaan dan verifikasi shell
Kartu bisadilayani?
Gagal, formatKartu salah
Pembacaan direktori,Mencari alamat produk
yang diinginkan
Akses baca/tulis dataproduk
Produk ditemukan?
Gagal, produkTidak ada
Akses sukses
tidak
Gambar 8. Skema flowchart penambahan produk pada ITSO
Gambar 9. Struktur satu sektor dalam smartcard teknologi Mifare
d0 d1 d2 d3 d12 d13 d14 d15. . . .
d0 d1 d2 d3 d12 d13 d14 d15. . . .
d0 d1 d2 d3 d12 d13 d14 d15. . . .
d0 d1 d2 d3 d12 d13 d14 d15. . . .
1 sektorBlok 0
Blok 1
Blok 2
Blok 3
inisialisasi
Pembacaan dan verifikasi shell
Kartu bisadilayani?
Gagal, formatKartu salah Pembacaan direktori,
Menentukan free space kartu,Penentuan alamat produk baru
Tambahkan produk keAlamat yang kosong
Free space cukup?
Gagal, tidak adaFree space
Akses sukses
tidak
ya
tidak
ya
c. Format shell
Masing-masing elemen skema ITSO disimpan dengan format tersendiri dalam
sektor smartcard. Sesuai dengan standar ITSO, format data untuk elemen shell
ditunjukkan pada gambar 10.
Gambar 10. Format data pada kartu untuk elemen shell
Elemen shell mempunyai 19 Field yang ukurannya ditunjukkan pada gambar 8. Pada
Penelitian ini, tidak semua field dipakai. Ada 4 buah field yang dianggap cukup penting,
yang menyangkut identitas kartu, yaitu:
– IIN (Issuer Identification Number), nomor ini terregistrasi pada ISO (international
standard organisation) secara internasional untuk mentaati standar ISO/IEC 7816 , unik
untuk tiap perusahaan issuer tetapi pada penelitian ini dipakai nomor yang bersifat
dummy saja.
– OID (Operator Identification Number) nomor yang mengidentifikasi perusahaan
yang mengeluarkan layanan. Terregistrasi pada perusahaan yang menjadi anggota ITSO.
Nomor ini nilainya berbeda untuk perusahaan yang berbeda.
– ISSN (ITSO Shell Serial Number) merupakan extension bagi OID. Nomor ini
digunakan bersama dengan OID untuk validasi kartu.
– CHD (Check Digit) sebagai checksum untuk ketiga field sebelumnya.
Pada aplikasinya di program, field IIN, OID, dan ISSN dibandingkan suatu nilai yang
sudah tertanam pada program untuk validasi shell kartu. Jika sama, kartu akan menuju
proses selanjutnya.
d. Format Direktori
Format penyimpanan Direktori pada smartcard Mifare ditunjukkan oleh gambar 11. Field
yang digunakan pada penelitian ini adalah Entry Product, SCT, dan SCT(2-13). Ukuran
Entry Product adalah 40 bit untuk masing-masing produk. Field ini masih dipecah-pecah
lagi menjadi beberapa bagian. Sub-field yang digunakan pada penelitian ini adalah:
Gambar 11. Format penyimpanan direktori dalam smartcard Mifare
– OID (Operator ID) berisi sama dengan OID pada shell. Sebagai validasi bahwa
produk ini merupakan milik dari perusahaan yang bersesuaian atau sudah mendapat
persetujuan dari perusahaan yang mengeluarkan kartu.
– Type : merupakan subfield yang menyatakan produk yang dilayani. Artinya
subfield ini berisi ID produk.
– VGP : Subfield ini menentukan bahwa sektor yang ditunjuk oleh direktori ini
memiliki value record atau tidak. Contoh penggunaan VGP ini misalnya, produk
transportasi memiliki value record yang berisi nominal tiket, sedangkan produk yang
hanya berupa ID tidak mempunyai value record.
– EXP : Berisi tanggal expired bagi produk yang bersangkutan. Jika nilai ini
menyatakan expired, sektor yang berisi data produk tidak akan diakses.
Alamat sektor produk yang akan diakses tergantung dari urutan direktori penunjuk
produknya. Jika direktori penunjuk produk ada di urutan ke-1, data produknya akan
diletakkan di sektor 1, demikian seterusnya.
Setelah itu, field SCT dan SCT(2-13) merupakan pointer bagi sektor lain yang
menampung data produk yang sama. Nilai ini digunakan jika data produk ditampung pada
lebih dari satu sektor. Jika sektor yang digunakan oleh produk tersebut hanya satu, nilai
field ini adalah 0xFF.
Untuk membaca direktori produk, sistem akan membaca semua sektor direktori
terlebih dahulu. Kemudian sektor tersebut di-parsing menjadi field yang bersesuaian.
Field tersebut akan dianalisis sesuai dengan bagiannya menggunakan algoritma berikut:
i. Baca OID, sesuaikan dengan OID sistem. Jika OID ini valid, proses dilanjutkan. Jika
tidak, proses dihentikan.
ii. Baca Type untuk memeriksa produk dengan identifikasi tersebut dilayani atau tidak.
Jika dilayani, proses akan dilanjutkan.
iii. Baca nilai EXP. Jika nilai EXP masih aktif, proses dilanjutkan.
iv. Tentukan nilai-nilai sektor yang akan diakses. Selain sektor yang diakses secara
otomatis, ada sektor-sektor lain yang berisi data produk tersebut yang harus diakses.
v. Baca sektor-sektor yang ditunjuk pada step iv.
vi. Analisis dan pengolahan data produk. Hal-hal yang dikerjakan pada step ini tergantung
pengembang.
Pada algoritma tersebut, yang diatur pada standar ITSO adalah dari step i sampai v. Step
vi diserahkan pada perusahaan pengembang.
e. Masalah keamanan kartu
Interoperabilitas antar layanan berarti memberikan kesempatan bagi layanan lain
untuk mengakses layanan yang berbeda pada kartu tersebut ketika layanan lain tersebut
membutuhkan datanya. Misalnya, jika pada kartu terdapat layanan A, akan
memungkinkan jika pada kartu tersebut ditambah dengan layanan B dan lainnya yang
mengakses data dari layanan A. Untuk mendukung skema interoperabilitas tersebut,
suatu data bisa dibaca secara bebas, sehingga tidak diterapkan suatu sistem
pengamanan untuk akses baca. Key untuk autentikasi baca di-share secara bebas.
Berbeda dengan akses baca, akses tulis terhadap kartu tidak bisa dilakukan
secara bebas. Pihak yang bisa melakukan akses tulis adalah pihak yang sudah
mendapatkan ijin dari pengembang kartu. Key untuk autentikasi tulis ini berbeda dengan
key untuk autentikasi baca. Seperti ditunjukkan pada gambar 12, key untuk autentikasi
baca disimpan sebagai suatu konstanta pada source code program. Untuk autentikasi
tulis, key dihasilkan dari proses enkripsi antara nomor seri kartu dengan suatu nilai yang
didapat dari modul autentikasi yaitu SAM (security authentication module).
Berdasarkan gambar 12, komputer melakukan polling untuk mendeteksi
keberadaan smartcard (proses 1). Jika ada smartcard yang terdeteksi, komputer akan
mendapatkan nomor seri kartu (proses 2). Untuk membaca data dari kartu, komputer
harus melakukan autentikasi terlebih dahulu (proses 3), kemudian memberikan command
read (proses 4), baru kemudian komputer mendapatkan datanya (proses 5). Kunci yang
digunakan untuk autentikasi tersimpan pada komputer (program).
Gambar 12. Prosedur akses baca-tulis smartcard
Untuk penulisan data, komputer bersama-sama dengan modul SAM harus
mendapatkan kuncinya terlebih dahulu (proses 6). Komputer mengirimkan nomor seri
kartu ke SAM, kemudian di dalam SAM, nomor seri dienkripsi menggunakan mother key
yang tersimpan di SAM sehingga mendapatkan diff key. Diff key digunakan komputer
untuk melakukan autentikasi tulis ke smartcard (proses 9) setelah komputer melakukan
request key kepada SAM (proses 7). Mother key dan nomor seri kartu dienkripsi
menggunakan algoritma DES.
Sistem pengamanan untuk penulisan juga ditambahkan pada standar ITSO, yaitu
dengan menggunakan byte SEAL. Prosesnya ditunjukkan pada gambar 13. Byte SEAL
terdapat pada setiap grup data dalam standar ITSO. Nilai SEAL ini dihasilkan dari operasi
enkripsi dan checksum dari seluruh byte yang ada di grup data tersebut. Pada proses
pembacaan kartu, nilai SEAL ini digunakan untuk menentukan validitas data yang ada
pada grup yang dibaca. Dengan melakukan enkripsi terhadap data, dihasilkan suatu nilai.
Nilai tersebut dibandingkan dengan nilai yang tersimpan pada SEAL. Proses validasi ini
ditunjukkan pada gambar 14.
Gambar 13. Proses penulisan SEAL
Gambar 14. Proses pembacaan datagroup dan validasi SEAL
3.2.5. Pengembangan Piranti
Pengembangan piranti penelitian ini bisa diklasifikasikan menjadi pengembangan
perangkat lunak dan perangkat keras. Perangkat lunak adalah software berbasis PC.
Perangkat keras yang dimaksud dalam penelitian ini sebenarnya merupakan program
yang akan dijalankan di piranti embedded. Piranti embedded yang digunakan adalah SBC
(Single Board Computer). Karena itu, piranti output dari penelitian ini lebih tepat jika
diklasifikasikan menjadi software berbasis PC dan software berbasis SBC.
a. Software berbasis PC
Pengembangan awal untuk semua software, baik di PC maupun di SBC, dilakukan
berbasis PC menggunakan bahasa C, dengan compiler GCC. Untuk menyesuaikan
dengan arsitektur SBC, source code hanya perlu dikompilasi silang untuk arsitektur ARM.
Pengembangan software berbasis PC ini meliputi hal-hal berikut.
a.1. Instalasi driver / software untuk antarmuka komputer dan smartcard reader
Driver dan software antarmuka antara PC dan reader sudah tersedia dalam bentuk yang
siap pakai pada sistem operasi Linux. Software tersebut adalah PCSCD (PC-smartcard
daemon). PCSCD berfungsi untuk mengalokasi dan de-alokasi reader secara dinamis
pada saat runtime sekaligus mengatur koneksi PC ke reader.
ITSO Datagroup* SEAL
*semua datagroup, termasuk shell, direktori dan IPE
enkripsiTulis ke SEAL
ITSO datagroup SEAL
enkripsi ---bandingkan
=0, SEAL OK.!=0, SEAL salah
a.2. Menyusun suatu API ( Application Programming Interface ) yang bisa digunakan
secara umum untuk pemrograman suatu aplikasi berbasis smartcard .
Kegunaan API tersebut adalah, supaya pengembangan aplikasi berbasis
smartcard menjadi lebih mudah dan tidak lagi dilakukan secara low level. Pada low level
pengaksesan smartcard harus dilakukan dengan mengirimkan command APDU ke
reader. Pada API tersebut terdapat fungsi-fungsi yang bisa langsung mengakses reader
tanpa harus mengetahui APDU-nya. API ini diberi nama Rusnas-API.
API berupa deklarasi tipe-tipe (struktur) yang berkaitan dengan smartcard dan
deklarasi fungsi untuk akses smartcard. Berikut ini adalah struktur yang didefinisikan
dalam Rusnas-API:
i. Struktur card_data berisi fitur-fitur dasar pada reader dan smartcard. Hal itu meliputi
jumlah kartu yang terdeteksi, tipe kartu (dilihat dari teknologinya), dan nomor serial kartu.
Berikut adalah deklarasi struktur card_data.
struct card_data{ BYTE targetNumber; BYTE tagType; BYTE tagSens_Res[2]; BYTE tagSel_Res; BYTE uidLength; BYTE tagUid[8];
};
ii. Struktur pcsc_send_status berisi variabel-variabel penampung status koneksi /
transaksi dengan reader. Struktur tersebut dideklarasikan sebagai berikut.
struct pcsc_send_status{ BYTE pbreaderStatus[2]; BYTE dwcommandStatus; BYTE pbswStatus[2];
};
Sedangkan fungsi-fungsi yang dibuat pada API tersebut meliputi:
i. Fungsi pcscInit bertugas untuk menginisialisasi koneksi komputer dengan smartcard
reader.
ii. Fungsi pcscUnInit untuk menutup koneksi komputer dengan reader.
iii. Fungsi getcard sebagai perintah untuk mendeteksi adanya kartu di dekat reader.
Digunakan untuk melakukan polling adanya kartu.
iv. Fungsi mifAuth digunakan untuk autentikasi terhadap kartu mifare.
v. Fungsi mifRdBl digunakan untuk membaca suatu blok pada kartu mifare.
vi. Fungsi mifWrBl sebagai fungsi untuk menulis suatu blok pada kartu mifare.
a.3. Pembuatan aplikasi personalisasi kartu
Produk yang dijadikan sebagai studi kasus pada penelitian ini adalah produk akademis
dan transportasi. Aplikasi personalisasi kartu berfungsi sebagai berikut.
i. Memformat kartu ke dalam file system skema ITSO, yaitu memberikan data inisial ke
dalam shell sehingga kartu dikenali sebagai kartu yang legal.
ii. Menuliskan data pengenal produk ke dalam direktori. Produk yang akan diisikan adalah
produk di bidang akademis dan transportasi.
iii. Mengisikan data-data inisial produk. Misalnya, produk akademis diisi dengan NIM
(nomor induk mahasiswa) dan transportasi diisi dengan nominal tiket.
b. Software berbasis SBC.
Pada penelitian ini juga akan dikembangkan piranti embedded. Piranti ini akan
diterapkan dalam bidang akademis(dalam bentuk door access) dan dalam bidang
transportasi( dalam bentuk mesin tiket). Keduanya memang memiliki fungsi yang
berbeda, tetapi perbedaannya hanyalah pada level aplikasi saja. Pada level yang lebih
bawah, kedua aplikasi ini mempunyai arsitektur yang sama. Keduanya mengakses
hardware yang sama yaitu smartcard reader. Di sisi sistem operasi, keduanya juga
berjalan pada sistem operasi Linux.
Arsitektur standar untuk pengembangan piranti embedded berbasis smartcard
ditunjukkan pada gambar 15. Penggunaan sistem operasi Linux memudahkan
pengembang dalam membuat program. Program bisa dikembangkan pada arsitektur PC
terlebih dahulu sebelum nantinya di-cross compile untuk di-install pada SBC. Penelitian
ini lebih berfokus pada pengembangan framework hardware-nya. Mengacu pada gambar
15, yang dikembangkan dalam penelitian ini adalah penerapan CCID (driver untuk
reader) dan PCSC(software untuk antarmuka ke smartcard) pada perangkat SBC. API
(Application Programming Interface) untuk akses smartcard berbasis SBC juga
dikembangkan dalam penelitian ini. Proses pengembangan program ditunjukkan pada
gambar 16.
Berdasarkan gambar 15, komponen penyusun software untuk piranti embedded
smartcard adalah sebagai berikut.
- Sistem Operasi (Linux) yang diinstall di SBC
- CCID berfungsi sebagai driver smartcard
- PCSCLite merupakan API(Application Programming Interface) untuk komunikasi dengan
reader smartcard menggunakan protokol PCSC. Meminimalkan kebutuhan informasi
mengenai hardware reader
- RUSNAS API : API yang menerjemahkan fungsi-fungsi yang akan digunakan pada
aplikasi menjadi rutin yang dimengerti oleh PCSClite
- Aplikasi : program yang berada pada level paling atas yang melakukan kinerja sesuai
perancangan. Level inilah yang akan menjadi perbedaan antara ke-3 aplikasi tersebut
Komponen-komponen software tersebut dikembangkan dengan berbasis PC-Linux.
Setelah itu baru di-crosscompile ke arsitektur ARM. Beberapa fungsi harus dibuat
berdasarkan arsitektur ARM, karena tidak bisa digeneralisasi di PC seperti pengaksesan
port I/O.
Gambar 15. Arsitektur standar piranti embedded pengakses smartcard
Gambar 16. Flowchart alur pengembangan program untuk SBC
IV. Hasil dan Pembahasan
4.1. Uji instalasi smartcard reader pada PC dan SBC
Pada penelitian ini, PC dan SBC dijalankan menggunakan sistem operasi Linux. PC
maupun SBC menggunakan perangkat lunak yang sama untuk menjalankan aplikasi
pengakses smartcard. Perbedaannya hanya pada arsitektur mesin keduanya, sehingga
masing-masing perangkat lunak dikompilasi pada lingkungan yang berbeda. Pada PC
dikompilasi untuk lingkungan i386 sedangkan pada SBC dikompilasi untuk lingkungan
ARM. Pengujian dilakukan menurut dua tahap sebagai berikut:
4.1.1. Pengujian instalasi reader dan drivernya pada masing-masing mesin
Pengujian driver smartcard dilakukan dengan menghubungkan reader dengan SBC atau
PC pada port USB, kemudian dilanjutkan dengan memberi command sebagai berikut:
– pengecekan device yang terpasang di port USB, menggunakan command:
$ lsusb
jika dikenali, sistem akan merespon sebagai berikut:
Pengembangan softwareDi PC
Kompilasi program di PC
Uji coba di PC
Cross compile ke ARM
Deploy ke SBC
OK?
error?
Bus 001 Device 004: ID 08e6:3437 Gemplus GemPC Twin
SmartCard Reader
Bus 001 Device 001: ID 1d6b:0001
– Setelah reader berhasil dikenali, sistem diberi perintah untuk menjalakan
PCSC daemon dengan perintah:
$ pcscd
Jika instalasi tool dan library PCSC sukses, tidak akan muncul error pada
command line.
– Berikutnya adalah melakukan scan terhadap kartu. Kartu didekatkan pada
reader dan jalankan program pcsc_scan:
$ pcsc_scan
Hasilnya, pada layar command akan ditampilkan ATR (answer to reset) dari
smartcard sebagai berikut:
Reader 0: GemPC430 00 00
Card state: Card inserted, ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A
Hasil pengujian ATR kartu tersebut dilakukan terhadap kartu mifare dengan
reader GemPC430.
4.1.2. Pengujian menggunakan perintah-perintah dasar untuk akses kartu
Untuk menguji kinerja sistem dengan smartcard reader, dilakukan pemberian command
dasar dari PC / SBC terhadap reader yang sudah didekatkan dengan smartcard. Dari
hasil uji perintah dasar dapat dilihat fungsionalitas sistem dengan SC reader. Validitas
data dapat dilihat dari respon yang diberikan reader kepada host. Pengujian ini dilakukan
terhadap kartu Mifare. Berikut ini adalah perintah-perintah dasar beserta struktur
command nya dalam format APDU:
– Get Card:
Command ini digunakan untuk mendeteksi adanya kartu pada range pembaca
kartu. Berikut adalah command dan respon sistem jika sukses.
Sending: FF 00 00 00 06 D4 60 01 01 10 20 Received: 61 10 Sending: FF C0 00 00 10 Received: D5 61 01 10 09 01 00 04 08 04 3A 38 0E 31 90 00 GetCard: OK
Reader Status :61 10 Command Status : 01 APDU Status :90 00 Kartu Ditemukan: 01UID kartu: 3A 38 0E 31
Pada cuplikan command-response tersebut, Label sending adalah data/perintah
yang dikirimkan oleh host. Label received adalah data/respon yang diterima host
dari SC reader.
– Autentikasi
Proses autentikasi harus dilakukan setiap akan mengakses suatu sektor baik
untuk membaca maupun menulis. Dalam proses ini pihak host mengirimkan suatu
kunci (key) kepada kartu untuk login menuju suatu sektor. Berikut ini adalah
cuplikan perintah-respon hasil uji coba autentikasi:
Auth...
Sending: FF 00 00 00 0F D4 40 01 60 06 1C 2B 3A 49 58 67 3A 38 0E 31 Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 00 90 00 Auth : OK
Auth Status: 00 > autentikasi berhasilReader Status :61 05 Command Status : 00 APDU Status :90 00
– Pembacaan Kartu
Pada kartu Mifare, pembacaan dilakukan pada tiap blok. Sebelum proses ini,
sudah dilakukan proses login terhadap sektor yang membawahi blok yang akan
diakses. Setiap sektor membawahi 4 blok. Berikut adalah perintah untuk uji coba
pembacaan kartu
Read... Sending: FF 00 00 00 05 D4 40 01 30 06 Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 11 90 00 Data Length: 10 Block 6 Data:01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 11 Reader Status :61 15 Command Status : 00
APDU Status :90 00
Pada cuplikan perintah-respon tersebut, label received adalah respon dari reader
yang belum di-parsing. Di dalam respon tersebut terdapat data yang terkandung di
dalam blok smartcard. Data yang terkandung tersebut ditunjukkan oleh label block
6 data. Label ini menandakan bahwa yang dibaca dalam proses ini adalah blok 6.
– Penulisan kartu
Tahap ujicoba yang terakhir adalah penulisan kartu. Sama seperti pembacaan
kartu, untuk menulis pada blok suatu sektor pihak host harus login dahulu pada
sektor yang bersangkutan. Berikut adalah ujicoba perintah penulisan kartu.
Write... Sending: FF 00 00 00 15 D4 40 01 A0 06 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 11 Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 00 90 00 SCardDisconnect: OK
Reader Status :61 05 Command Status : 00 APDU Status :90 00
Baik pada PC maupun SBC, didapatkan hasil yang sama, sehingga bisa disimpulkan
bahwa reader dan PCSCD didukung oleh SBC. Proses pengembangan sistem smartcard
bisa dilakukan pada platform PC maupun SBC.
4.2. Pengujian Rusnas-API
API dibuat untuk memudahkan pengembang dalam membuat program untuk
mengakses smartcard. Pengembang tidak perlu mengetahui susunan paket data APDU
untuk melakukan baca dan tulis pada smartcard. Untuk menguji API ini, lalu lintas data
komputer – reader diamati. Paket yang tertampil di komputer dibandingkan dengan format
APDU untuk command yang bersesuaian.
- Command untuk mendeteksi kartu (get card)
Pemanggilan fungsi pada API untuk operasi get card adalah sebagai berikut:
rv = getcard( &countOfCard, CARD_DATA, &PCSC_SEND_STATUS); PCSC_ERROR(rv, "GetCard") printf("Reader Status :"); for(i=0;i<2;i++)printf("%02X",PCSC_SEND_STATUS.pbreaderStatus[i]); printf("\n");
printf("Command Status:%02X \n", PCSC_SEND_STATUS.dwcommandStatus);
printf("APDU Status :"); for(i=0;i<2;i++)printf("%02X ", PCSC_SEND_STATUS.pbswStatus[i]); printf("\n\n"); printf("Kartu Ditemukan: %02X\n", countOfCard);
Fungsi getcard pada cuplikan program tersebut adalah fungsi API untuk operasi get card.
Cuplikan program tersebut akan menghasilkan tampilan paket data sebagai berikut:
Sending: FF 00 00 00 06 D4 60 01 01 10 20 > APDU get cardReceived: 61 10 Sending: FF C0 00 00 10 > APDU pembacaan nomor seri kartuReceived: D5 61 01 10 09 01 00 04 08 04 8C 7E 04 4C 90 00 GetCard: OK
Reader Status :61 10 Command Status : 01 APDU Status :90 00
Kartu Ditemukan: 01 --> berarti ada 1 kartu yang ditemukan
Berikutnya adalah pengujian fungsi API untuk pembacaan data kartu. Sebelum dilakukan
pembacaan suatu blok dalam sektor, komputer host harus melakukan autentikasi pada
sektor itu.
rv = mifAuth( &CARD_DATA[i], blockAuthBuff, keyAuthBuff, authType, &PCSC_SEND_STATUS);printf("Auth Status: %02X\n", PCSC_SEND_STATUS.dwcommandStatus);
mifRdBl(targetNumber, blockAuthBuff, pbData, &PCSC_SEND_STATUS); printf("Data Length: %02X\n", mifClscBlkLength); printf("Block %d Data:", blockAuthBuff); for (i=0; i<mifClscBlkLength;i++) {
printf("%02X ", pbData[i]); } printf("\n"); printf("Reader Status :");
Pembacaan dilakukan pada blok 6. Paket data yang terbentuk dari cuplikan program
tersebut adalah sebagai berikut:
Auth... Sending: FF 00 00 00 0F D4 40 01 60 06 1C 2B 3A 49 58 67 8C 7E 04 4C Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 14 90 00 Auth : OK > autentikasi berhasil
Auth Status: 14 Reader Status :61 05 Command Status : 14
APDU Status :90 00 ################################## Read... Sending: FF 00 00 00 05 D4 40 01 30 06 > APDU untuk baca Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 01 90 00 Data Length: 10 Block 6 Data:90 00 B8 00 50 08 B8 23 00 00 00 C0 34 06 B8 F4 > paket yang memuat data terbaca Reader Status :61 05 Command Status : 01 > pembacaan suksesAPDU Status :90 00
Berdasarkan paket data yang terbentuk dari pemanggilan fungsi API untuk
autentikasi dan pembacaan, dapat disimpulkan bahwa fungsi bisa berjalan dengan baik.
Pengujian selanjutnya adalah untuk fungsi penulisan. Pemanggilan fungsi API
untuk penulisan data ke kartu adalah sebagai berikut:
//perintah untuk membaca suatu blok mifWrBl( targetNumber, blockAuthBuff, pbData, &
PCSC_SEND_STATUS); /* card disconnect */ rv = deactivateReader(); PCSC_ERROR(rv, "SCardDisconnect") printf("Reader Status :"); for(i=0;i<2;i++)printf("%02X",
PCSC_SEND_STATUS.pbreaderStatus[i]); printf("\n"); printf("Command Status :%02X\n",
PCSC_SEND_STATUS.dwcommandStatus);
Pemanggilan fungsi penulisan kartu akan menghasilkan tampilan paket data sebagai
berikut:
Write... Sending: FF 00 00 00 15 D4 40 01 A0 06 90 00 B8 00 50 08 B8 23 00 00 00 C0 34 06 B8 F4 > paket perintah untuk menulis data ke kartuReceived: 61 05 Sending: FF C0 00 00 05 Received: D5 41 01 90 00 SCardDisconnect: OK
Reader Status :61 05 Command Status : 01 > status tulis OKAPDU Status :90 00
Semua fungsi akses dasar smartcard yang terdefinisi pada API berjalan dengan baik,
sehingga API siap digunakan untuk pemrograman lebih lanjut.
4.3. Pengujian shell standar ITSO pada smartcard
Pengujian terhadap standar ITSO yang diterapkan pada sistem, dilakukan dengan
pengisian kartu terlebih dahulu dengan suatu data yang berformat ITSO. Data yang
diisikan adalah data identitas akademis dan data transportasi. Suatu program dibuat
untuk membaca data-data yang ada pada kartu. Untuk menyesuaikan dengan standar
ITSO, tata cara pembacaan kartu disesuaikan dengan flowchart pada gambar 5 dan
skema pembacaan datagroup pada gambar 12. Berikut adalah paket-paket data root
(shell) smartcard yang ditampilkan pada console. Pada pengujian ini kartu sudah
diprogram dengan field IIN = 123456, OID = 1234, ISSN = 1234567, CHD = 8, dan
digunakan untuk menguji rutin pembacaan shell. Berikut ini adalah tampilan command-
response pembacaan shell yang tertampil pada layar console.
Proses autentikasi untuk pembacaan shell :
Read Shell... ======== Auth... Sending: FF 00 00 00 0F D4 40 01 60 00 FF FF FF FF FF FF 3A 38 0E 31 Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 00 90 00 <autentikasi sukses
Proses pembacaan blok yang di dalamnya terdapat shell (root). Ada 2 blok yang
digunakan untuk menampung shell, yaitu blok 1 dan 2, keduanya ada pada sektor 0.
Read... Sending: FF 00 00 00 05 D4 40 01 30 01 Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 18 11 12 34 56 12 34 12 34 56 78 01 01 01 03 E8 90 00 Read... Sending: FF 00 00 00 05 D4 40 01 30 02 Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 30 10 05 07 00 00 21 BD 00 00 00 00 00 00 00 00 90 00 #didapatkan data sebagai berikut, masih dalam satuan byte (per 8 bit)
Shell Data : 18 11 12 34 56 12 34 12 34 56 78 01 01 01 03 E8 30 10 05 07 00 00 21 BD 00 00 00 00 00 00 00 00 Shell : OK
Berikut ini adalah data yang telah di-parsing berdasarkan gambar 8. Data yang tertampil
sudah disertai dengan nama field-nya:
Root Data : Root Length : 06 Root Bmp : 01
Root FR : 01
Field yang digunakan untuk validasi shell:
Root IIN : 01 02 03 04 05 06 Root OID : 01 02 03 04 Root ISSN : 01 02 03 04 05 06 07 Root CHD : 08
Field IIN, OID, ISSN dan CHD pada hasil pengamatan sama dengan nilai yang sudah
diprogramkan pada kartu. Berdasarkan hasil pengamatan paket tersebut, bisa
disimpulkan bahwa rutin program untuk pembacaan shell sudah sesuai dengan
spesifikasi yang diberikan pada skema ITSO.
4.4 Pengujian direktori ITSO sekaligus kemampuan multi-produk
Kemampuan multi-produk suatu smartcard bisa ditentukan dengan membaca layer IPE
(produk). Layer produk diawali dengan grup data direktori. Pembacaan direktori dilakukan
dengan membaca keseluruhan sektor 14(blok 56 - blok 59) smartcard. Pada kartu ini
sudah terdapat produk akademis dengan ID 0x162E dan produk transportasi dengan ID
0x04D2. Berikut ini adalah tampilan command-response pada layar console untuk
pembacaan grup data direktori.
Perintah untuk melakukan autentikasi pada sektor direktori (sektor 1).
Read Dir... ======== Auth... Sending: FF 00 00 00 0F D4 40 01 60 38 FF FF FF FF FF FF 3A 38 0E 31 Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 00 90 00
Proses pembacaan keseluruhan sektor 1(blok 4, 5 , dan 6):
– Blok 56
Read... Sending: FF 00 00 00 05 D4 40 01 30 38 Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 00 01 13 4B A0 83 E8 58 BA 00 12 89 00 00 00 00 90 00
– Blok 57
Read... Sending: FF 00 00 00 05 D4 40 01 30 39 Received: 61 15 Sending: FF C0 00 00 15
Received: D5 41 00 00 00 00 00 00 00 00 00 00 00 00 67 34 5B F8 9A 90 00
– Blok 58
Read... Sending: FF 00 00 00 05 D4 40 01 30 3A Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 FC D0 5F 00 01 02 03 04 E5 C5 1C 22 EB EE 72 62 90 00
- Pembacaan salinan direktori (prosedur sama dengan pembacaan direktori)
Auth... Sending: FF 00 00 00 0F D4 40 01 60 3C FF FF FF FF FF FF 3A 38 0E 31 Received: 61 05 Sending: FF C0 00 00 05 Received: D5 41 00 90 00 Read... Sending: FF 00 00 00 05 D4 40 01 30 3C Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 00 01 13 4B A0 83 E8 58 BA 00 12 89 00 00 00 00 90 00 Read... Sending: FF 00 00 00 05 D4 40 01 30 3D Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 00 00 00 00 00 00 00 00 00 00 00 67 34 5B F8 9A 90 00 Read... Sending: FF 00 00 00 05 D4 40 01 30 3E Received: 61 15 Sending: FF C0 00 00 15 Received: D5 41 00 FC D0 5E 00 01 02 03 04 87 61 77 C3 89 D2 B2 35 90 00
- Data yang tersimpan di grup data direktori dan copy direktori
Dir Data : 00 01 13 4B A0 83 E8 58 BA 00 12 89 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 67 34 5B F8 9A FC D0 5F 00 01 02 03 04 E5 C5 1C 22 EB EE 72 62 Dir Copy Data : 00 01 13 4B A0 83 E8 58 BA 00 12 89 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 67 34 5B F8 9A FC D0 5E 00 01 02 03 04 87 61 77 C3 89 D2 B2 35 Dir : OK
- Hasil parsing data yang dibaca dari grup data direktori
Sektor Aktif : 14 Dir Data : Dir Length : 00 Dir Bmp : 00 Dir FR : 01
- Directory Entry 1 menyimpan informasi tentang produk transportasi. Karena letaknya
ada di entry ke-1, sektor pertama yang menyimpan data produk ini adalah sektor 1.
Sektor berikutnya yang menyimpan data produk ini ditunjukkan pada bagian pointer
sektor, masih di grup data direktori.
Dir Entry 1 : EF : 00 OID : 04D2 > ID produk transportasiType : 1D PType : 00 VGP : 01 IINL : 00 Exp : 03E8 > tanggal expired
- Directory Entry 2 menyimpan informasi tentang produk akademis. Karena letaknya ada
di entry ke-2, sektor pertama yang menyimpan data produk ini adalah sektor 2.
Dir Entry 2 : EF : 00 OID : 162E > ID produk akademisType : 10 PType : 00 VGP : 00 IINL : 00 Exp : 1289
- Bagian pointer sektor. Menunjukkan sektor-sektor yang digunakan untuk penyimpanan
produk.
Dir SCT1 : 06 > setelah sektor 1, sektor 6 digunakan untuk menyimpan data produk yang ada pada direktori entry 1(produk transportasi)
Dir SCT2 : 07 > setelah sektor 2, sektor 7 digunakan untuk menyimpan data produk yang ada pada direktori entry 2(produk akademis)
Dir SCT3 : 03 Dir SCT4 : 04 Dir SCT5 : 05 Dir SCT6 : 0B Dir SCT7 : 0F Dir SCT8 : 08 Dir SCT9 : 09 Dir SCT10 : 0A Dir SCT11 : 0F Dir SCT12 : 0C Dir SCT13 : 0D Dir DIRS# : 5F Dir KID# : 00 Dir INS# : 00 Dir ISAMID : 01 02 03 04 Dir SEAL : E5 C5 1C 22 EB EE 72 62
Berdasarkan data hasil pengamatan, terlihat bahwa data yang dibaca dari
smartcard bisa langsung dibaca tanpa melalui proses dekripsi. Hal yang perlu diketahui
adalah format datanya saja. Atas dasar itu, interoperabilitas bisa diterapkan.
Konsep multi produk juga bisa ditangani pada sistem ITSO, yang dilakukan
dengan manajemen peletakan data-data produk pada smartcard. Hal itu dilakukan
dengan konsep direktori produk dan pointer produk.
4.5. Pengujian waktu eksekusi algoritma ITSO pada piranti embedded
Masalah yang menjadi fokus pada pengembangan suatu aplikasi pada piranti
embedded adalah waktu eksekusi. Piranti embedded biasanya menggunakan clock yang
lebih kecil frekuensinya daripada clock PC standar. Hal itu membuat proses dikerjakan
dengan lebih lama. SBC memakai clock efektif sebesar 400 Mhz pada penelitian ini.
Pada bagian ini akan dibahas waktu eksekusi untuk pengaksesan kartu dengan standar
ITSO berbasis SBC. Algoritma pengaksesan data pada ITSO mempunyai tahapan yang
cukup banyak. Oleh karena itu, suatu perangkat embedded harus memiliki frekuensi
clock yang cepat supaya proses transaksi bisa berjalan dengan baik. Kepantasan suatu
piranti embedded dalam menerapkan algoritma ITSO dinilai dari pengukuran waktu
eksekusinya. Untuk mengetahui waktu eksekusi, digunakan fungsi dari library time.h,
yaitu clock( ). Waktu eksekusi diukur untuk pembacaan dan penulisan produk dalam
standar ITSO, terutama adalah produk transportasi. Lamanya waktu eksekusi untuk
beberapa skenario pembacaan kartu ditunjukkan pada tabel 7.
Tabel 7. Pengukuran waktu eksekusi baca/tulis produk pada SBC
Skenario Waktu eksekusi Keterangan
Baca produk
penambahan produk
ubah data produk
0.08 detik
0.15 detik
0.23 detik
Alur eksekusi : inisialisasi – autentikasi – baca shell – baca direktori – baca produk (2 sektor)
Alur eksekusi : inisialisasi – autentikasi – baca shell – baca direktori – tulis direktori – tulis produk (2 sektor)
Alur eksekusi : inisialisasi – autentikasi – baca shell – baca direktori – baca produk (2 sektor) – tulis produk
Pada produk berbasis smartcard seperti mesin tiket, transaksi yang paling sering
dijalankan adalah pengubahan data produk. Pengguna mendekatkan kartu ke reader
(tapping) untuk melakukan transaksi. Transaksi baca-tulis kartu ini harus berjalan secepat
mungkin, sehingga kemungkinan kecil terjadi kesalahan tulis karena pengguna
melakukan tapping dalam waktu yang sangat cepat.
Dari tabel 7 didapatkan waktu pengubahan data produk selama 0.23 detik.
Dengan waktu tersebut, perangkat berbasis SBC cukup sesuai jika diaplikasikan sebagai
mesin tiket. Angka tersebut dipandang masih bisa mengimbangi kecepatan tap tangan
pengguna. Sebagai pembanding, waktu transaksi perangkat berbasis SBC (0.23 detik)
hanya berselisih sedikit dari waktu transaksi tercepat yang ditetapkan pada produk Ask-
rfid (2008) pada produknya. Produk Ask-rfid mempunyai waktu transaksi tercepat sebesar
0.15 detik.
Kemampuan piranti untuk melakukan transaksi juga diuji secara fisik dengan
benar-benar melakukan transaksi tapping. Pengamatan ini bersifat kualitatif karena tidak
ada metode yang kuantitatif untuk mengukur kecepatan tangan dalam melakukan tap.
Tapping dilakukan dengan kecepatan yang bervariasi (rendah, sedang, cepat). Dalam
100 kali percobaan, tidak ada kesalahan pada data yang tersimpan di kartu, sehingga
sistem dianggap mampu melayani transaksi tapping dengan berbagai kecepatan.
V. Kesimpulan dan Saran
5.1. Kesimpulan
a. Dengan adanya sistem lapisan shell – direktori – produk, format data dalam standar
ITSO mendukung skema multi produk dalam satu kartu.
b. Karena data kartu bisa dibaca dengan bebas (hanya dengan mengetahui formatnya),
serta kunci autentikasi baca yang di-publish, standar ITSO mendukung konsep
interoperabilitas. Data dari suatu produk bisa diakses baca dengan mudah oleh produk
/aplikasi lain yang membutuhkan datanya.
c. Algoritma pengaksesan data pada standar ITSO memiliki tahapan command-response
yang cukup banyak. Jumlah pasangan command-response pada tiap tahapan
pengaksesan kartu ditunjukkan pada tabel 8.
Tabel 8. Jumlah pasangan command-response pada tiap tahapan pengaksesan kartu
Nama tahapan Jumlah pasangan command-response
Get Card / inisialisasi
Pembacaan shell
Pembacaan direktori / copy directory
Pembacaan produk
1
6 : 2 autentikasi, 4 pembacaan data
8 untuk masing-masing dir dan copy dir :2 autentikasi, 6 pembacaan data
minimal 8 (tergantung besarnya data produk): 2 autentikasi, 6 pembacaan data
d. SBC mini2440 bisa digunakan untuk menjalankan aplikasi berbasis smartcard dengan
reader USB. Kompilasi source code dilakukan dengan cross-compile program berbasis
PC. Supaya bisa dijalankan pada SBC, baik aplikasi maupun shared library yang
menunjang aplikasi, harus di-install di SBC.
e. Waktu akses maksimal pada SBC mini2440 dalam menjalankan algoritma ITSO untuk
operasi baca dan tulis adalah 0.23 detik. Dengan waktu sekian, transaksi dengan cara
tapping masih bisa dilakukan tanpa mengganggu operasi baca tulis kartu.
5.2. Saran
a. Pengembangan lebih lanjut aplikasi embedded untuk akses smartcard diharapkan tetap
berbasis ARM-Linux (prosesor ARM dan OS Linux) dan kompiler GCC, karena
pengembangan aplikasi embedded dengan lingkungan baru akan membutuhkan usaha
yang cukup berat.
b. Untuk mempercepat waktu eksekusi akses smartcard untuk piranti embedded, perlu
dicari development-kit untuk prosesor ARM yang mempunyai waktu eksekusi yang lebih
cepat.
c. Dukungan terhadap kartu dengan teknologi yang lain perlu dikembangkan. Sementara
pada penelitian ini, teknologi kartu yang didukung baru Mifare.
VI. Daftar Pustaka
Rankl, W., and Effing, W., 2003, Smartcard Handbook, John Willey and Sons Ltd,Singapore.
Zoreda, J.L., 1994, Smartcard, Artech House.Inc, London.
ISO – International Standard Organisation, 1994, ISO/IEC 7816 Part 4: Interindustry command for interchange, http://www.ttfn.net/techno/smartcards/iso7816_4.html.
Gemplus, MPCOS-EMV R4 Reference Manual, 2001, http://www.gemplus.com.
Ask-rfid, Smart Ticketing – Product Specification Versi 7, 2008, http://www.ask-rfid.com.
ITSO (Integrated Transport Smartcard Organisation), Interoperable public transport
ticketing using contactless smart customer media ITSO TS 1000 : 0 – 10, Versi 2.1.3,
2008, Controller of HMSO, Norwich, UK.