Friday, February 13, 2015

8. Application and File Structure - 102 221 v8

Berikut akan diterjemahkan/diedit sebagian bab 8 dari ETSI TS 102 221 v8. Beberapa istilah yang perlu diketahui antara lain:

  • MF = Master File
  • ADF = Application Dedicated File 
  • EF = Elementary File
  • DF = Dedicated File
  • FCP = File Control Parameters
  • SE = Security Environment
  • PIN = Personal Identification Number

Pada bab ini akan dijelaskan tentang struktur aplikasi dan struktur logical dari UICC.
8.1 UICC Application Structure
Dokument berikut tidak menetapkan batasan apapun terhadap lokasi dari suatu aplikasi. Semua aplikasi sifatnya unik dan diidentifikasi dengan application identifiers yang diperoleh dari EFdir. Aplication ID ini digunakan untuk memilih suatu aplikasi.
EFdir, EFpl dan EFiccid adalah aplikasi yang sifatnya mandatory dan tersimpan secara langsung pada Master File (MF). Lihat bab 13 untuk informasi lebih lanjut.
DFtelecom sifatnya optional. Jika ada, dia akan berada di bawah MF dan menggunakan cadangan FID '7F 10'. DFtelecom berisi informasi aplikasi yang independent.
8.2 Type-Type File
Subbab berikut mendefinisikan beberapa jenis tipe files yang digunakan oleh aplikasi.
8.2.1 Dedicated Files
Dedicated File(DF) memungkinkan pembuatan group dari suatu file. DF dapat bertindak sebagai parent dari beberapa DF dan/atau dari beberapa EF. DF dapat diakses menggunakan file identifiers.
Application DF (ADF) adalah suatu DF spesifik yang berisi semua aplikasi dari DF dan EF.
8.2.2 Elementary Files
8.2.2.1 Transparent EF
Suatu EF dengan struktur transparent terdiri dari beberapa rangkain bytes. Ketika proses pembacaan atau update, rangkaian bytes tersebut dapat bertindak sebagai relative address yang menunjukkan posisi awal dari bytes, dan jumlah byte yang akan dibaca atau diupdate. Byte pertama dari transparent EF ini mempunyai relative address '00 00'. Panjang datanya ditunjukkan pada respon SELECT dari EF.
8.2.2.2 Linear Fixed EF
EF dengan struktur linear fixed terdiri dari rangkain records yang semuanya mempunyai panjang yang sama (fixed length). Record pertama adalah record nomor 1. Panjang record dan nilainya dikali dengan jumlah records ditunjukkan pada respon SELECT dari EF ini.
Ada beberapa metode untuk mengakses record dalam linear fixed EF ini yaitu :
  • Menggunakan nomor record
  • Ketika pointer record tidak diset, maka memungkinkan untuk mengakses record pertama atau record terakhir dengan mode NEXT atau PREVIOUS;
  • Ketika pointer record diset, maka memungkinkan untuk memberikan aksi pada record ini, record berikutnya (kecuali jika pointer recordnya diset ke record terakhir) atau record sebelumnya (kecuali jika pointer recordnya diset ke record pertama);
  • Dengan mengidentifikasi suatu record menggunakan pattern search;
Jika aksi memilih suatu record dibatalkan (e.g karena command gagal dieksekusi), maka pointer record tetap berada pada record sebelumnya ketika command select record tersebut belum dieksekusi.
Sekarang ini dapat dibuat sampai 254 records dalam file type ini. Dan tiap record tidak lebih besar dari 255 bytes.
8.2.2.3 Cyclic EF
Cyclic file digunakan untuk menyimpan records yang berurutan (chronological order). Ketika semua record telah digunakan untuk penyimpanan data, maka data berikutnya dapat simpan pada record yang lama sehingga record yang lama ini akan dioverwrite oleh data yang baru.
Suatu EF dengan cyclic structure terdiri dari sejumlah record dengan ukuran yang sama (fixed length). Pada file strukturnya terdapat link antara record terakhir dengan record pertama seperti terlihat pada gambar di bawah :
Ketika pointer record diset ke record n yang terakhir, maka record berikutnya adalah record nomor 1. Dengan cara yang sama, ketika pointer record diset ke nomor 1, maka record sebelumnya pasti adalah record n. Update terakhir record yang berisi data terbaru adalah record 1, dan data tertua dipegang pada record n.
Untuk operasi update, hanya record sebelumnya yang akan digunakan. Untuk operasi read, metode addressing yaitu Next, Previous, Current dan Record Number.
Jika aksi memilih suatu record dibatalkan (e.g karena commandnya gagal diekseskusi), maka pointer recordnya tetap berada pada record sebelumnya sebelum command aksi tersebut dieksekusi.
Sekarang ini dapat 254 records dalam file type ini, dan tiap record tidak lebih besar dari 254 bytes.
8.2.2.4 BER-TLV Structure EF
Struktur BER-TLV dari EF dilihat pada interface sebagai kumpulan data object yang dapat diakses oleh suatu command untuk menghandle data. Type dari object data pada EF adalan BER-TLC. Tag hanya dapat muncul sekali dalam EF ini.

8.3 File Referencing
File IDentifier (FID) digunakan untuk menemukan atau mengidentifikasi file tertentu. FID terdiri dari 2 bytes dan dikodekan dalam notasi hexadecimal.
FID harus memenuhi/tunduk pada aturan berikut :
  • FID harus dibuat ketika suatu file pertama kali dibuatl;
  • Tidak boleh ada 2 file dalam parent yang sama yang mempunyai FID yang sama;
  • Cabang dari DF, parent DF atau cabang dari parent DF tidak boleh mempunyai FID yang sama.
Suatu path adalah penggabungan dari beberapa FID. Path berawal dari MF atau current DF, dan berakhir pada identifier dari filenya. Urutan FID selalu berarah dari father ke child.
Short File Identifier (SFI) disimbolkan dalam 5 bit dengan rentang nilai dari 1 sampai 30. Tidak boleh ada 2 file dalam parent yang sama yang mempunyai SFI yang sama. 
Nama dari DF dikodekan dari 1 sampai 16 bytes. Nama dari DF adalah AID dan harus unik dalam setiap card.
Cadangan FID '7FFF' dapat digunakan sebagai FID untuk ADF pada aplikasi yang aktif sekarang pada logical channel yang digunakan.

8.4 Methods for Selecting a File
Setelah proses aktivasi UICC dan proses Answer To Reset (ATR), Master File (MF) secara tidak langsung akan dipilih dan menjadi directory aktif saat ini. Setiap file dapat dipilih dengan menggunakan SELECT command, menggunakan 1 dari 3 metode file referencing yang didefinisikan dalam bab ini.
8.4.1 SELECT by File IDentifier Referencing
Memilih suatu DF, suatu ADF atau MF akan mengeset direktory yang aktif saat ini. Setelah suatu pemilihan EF akan hilang. Memilih suatu EF mengeset EF dan direktory sekarang tetap pada DF, ADF, atau MF yang merupakan parent dari EF ini. EF sekarang selalu menjadi child dari direktory saat ini. Hanya ADF dari aplikasi saat ini yang dapat dipilih menggunakan FID.
Suatu command aplikasi yang spesifik hanya dapat beroperasi pada suatu direktory yang spesifik pula. File-file dibawah dapat dipilih, oleh File IDentifier (FID), dari file yang terakhir dipilih :
  • File yang merupakan child langsung dari direktory saat ini;
  • DF yang merupakan child langsung dari parent DF saat ini;
  • Parent dari direktory aktif saat ini;
  • DF saat ini;
  • ADF dari aplikasi yang aktif saat ini;
  • MF
Gambar dibawah memberikan contoh dari struktur suatu aplikasi yang sesuai/tunduk dalam standar ini :
Tabel 8.1 dibawah memperlihatkan semua valid selection yang sesuai dalam standard ini untuk struktur logical pada gambar 8.4, jika FID digunakan. Reselection dari file terakhir yang dipilih juga diperboleh cuman tidak ditunjukkan. Pada contoh ini, aplikasi saat ini (ADF1) dianggap telah dipilih sebelumnya oleh DF name. Maka ADF1 dapa dipilih dengan menggunakan FID '7FFF'.
8.4.2 SELECT by Path Referencing
Suatu file, DF atau EF, dapat direferensi dengan path, seperti disebutkan pada 8.3. Table 8.2 dibawah berisi contoh-contoh dari selection by path dari gambar 8.4.
Pada contoh ini, applikasi saat ini (ADFI) dianggap telah dipilih sebelumnya oleh DF. Secara implisit FID dari ADF1 '7FFF' digunakan pada table 8.2 (lihat 8.3).
Dalam kasus 'select by path dari MF', terminal dapat menggunakan file-id '7FFF' (lihat 8.3) pada permulaan dari path. Ini menunjukkan bahwa path berawal dari ADF pada aplikasi yang aktif saat ini pada logical channel.
Terdapat beberapa batasan sebagai berikut :
  • Dalam kasus 'select by path from MF', terminal tidak boleh menggunakan identitas file dari MF (contohnya '3F00') pada permulaan path.
  • Dalam kasus 'select by path from current DF', terminal tidak boleh menggunakan file-ID '7FFF' pada permulaan path.
  • Dalam kasus 'select by path from MF' atau 'select by path from current DF', terminal tidak boleh menggunakan identitas file dari DF yang sekarang.
  • Dalam kasus 'select by path from MF' atau 'select by path from current DF', terminal tidak boleh menggunakan data yang kosong.
8.4.3 Short File Identifier (SFI)
EF apa saja yang terdapat dalam DF dapat secara implisit dipilih tanpa memberikan SELECT command dengan melakukan satu dari beberapa command di bawah pada DF atau ADF dan memberikan Short File Identifier (SFI) sebagai bagian dari command :
  • READ BINARY;
  • UPDATE BINARY;
  • READ RECORD;
  • UPDATE RECORD;
  • INCREASE;
  • SEARCH RECORD;
  • RETRIEVE DATA; atau 
  • SET DATA.
Support terhadap SFI untuk suatu file dapat terlihat jika FCP dari file berisi TLV Do dengan tag '88'. Jika panjangnya 0, berarti file tidak mendukung referensi dengan menggunakan SFI. Jika TLV DO tidak ada pada FCP, berarti 5 bit terakhir dari FID digunakan sebagai SFI.
Ketika READ RECORD command berisi SFI yang valid, command ini akan mengeset file sebagai EF sekarang dan mereset pointer record. Record berikutnya dibaca dengan READ RECORD command tanpa menggunakan SFI.
Ketika UPDATE RECORD command berisi SFI yang valid, command ini akan mengeset file menjadi EF sekarang dan mereset pointer record. Record berikutnya dapat diupate dengan UPDATE RECORD command tanpa menggunakan SFI.
Ketika INCREASE command berisi SFI yang valid, command ini akan mengeset file menjadi EF dan mereset pointer record. Record berikutnya dapat ditambah/dinaikkan dengan INCREASE command tanpa menggunakan SFI.
Ketika SEARCH RECOD command berisi SFI yang valid, command ini akan mengeset file menjadi sebagai EF dan mereset record pointer. Record berikutnya dapat dicari dengan SEARCH RECORD command tanpa menggunakan SFI.
Ketika RETRIEVE DATA command berisi SFI yang valid, command ini mengeset file menjadi EF dan mereset tag pointer yang sekarang digunakan. Jika segmentasi pada beberapa APDU digunakan untuk mengambil struktur yang panjang, RETRIEVE DATA command berikutnya dapat digunakan tanpa menggunakan SFI.
Ketika SET DATA command berisi SFI yang valid, command ini mengeset file sebagai EF dan mereset tag pointer yang sekarang. Jika segmentasi pada beberapa APDU digunakan untuk mengeset struktur yang panjang, SET DATA command berikutnya dapat digunakan tanpa menggunakan SFI.

8.5 Application Characteristics
Suatu aplikasi dapat direferensi secara explisit atau implisit. Suatu aplikasi dapat diaktivasi secara explisit dengan memilih AIDnya. Hal ini mengeset ADF aplikasi tersebut sebagai ADF sekarang. Current ADF dapat direferensi dengan FID dengan nilai implisist referensi '7FFF'.
8.5.1 Explicit Application Selection
8.5.1.1 SELECT by DF Name
Aplikasi yang dapat dipilih akan direpresentasikan sebagai UID dalam UICC dan akan diakses dengan nama DF yang dikodekan dalam 1 byte sampai 16 byte. Setiap nama harus unik dalam UICC. Nama DF dapat digunakan pada SELECT command untuk memilih aplikasi tersebut.
8.5.1.2 SELECT by Partial DF Name
Suatu aplikasi dapat pula dipilih dengan menggunakan sebagian dari nama DF (partial DF name) ketika P1 = '04' menggunakan parameter P2 first and only occurence, next, previous, atau last seperti didefinisikan pada ISO/IEC 7816-4. Pada kasus ini, DF name telah terpotong/sebagian saja. Jika terdapat beberapa aplikasi yang berawal dengan isi byte yang sama pada AID di card, maka aplikasi yang terpilih bergantung pada nilai pada P2. Jika "last" ditunjukkan pada P2, maka aplikasi yang terpilih adalah aplikasi terakhir yang aktif yang sama dengan partial DF name, meskipun hal tersebut berasal dari sesi card sebelumnya.
Pemilihan aplikasi menggunakan partial DF name ini sifatnya optional pada mono application card, tetapi seharusnya multi application dapat mensupport fitur ini. Kartu harus memperlihatkan bahwa fitur ini disupport pada "card service data" dan pada "card capabilities" di object compact-TLV pada historical di ATR seperti yang terdapat pada ISO/IEC 7816-4.
Penerjemahan dari next, previous, dan first akan dispesifikasikan oleh applikasi itu sendiri. Aplikasi yang dipilih menggunakan parameter ini akan saam dengan partial DF name yang disediakan pada SELECT command. Jika UICC tidak mendukung select aplikasi dengan partial DF name, maka UICC harus merespond dengan respon yang sesuai misalnya dengan parameter command not supported '6A86'.
8.5.2 Application Session Activation
Sesi suatu aplikasi diawali ketika terminal mengirimkan SELECT command, dengan AID aplikasi, yang menunjukkan bahwa aplikasi ini akan diaktivasi.
Suatu aplikasi mungkin butuh diinisalisasi dengan prosedur tertentu ketika aktivasinya selesai. Prosedur ini diluar ruang lingkup pada standard ini tetapi akan dijelaskan pada spesifikasi dari suatu aplikasi. Prosedur digunakan untuk membuat terminal dan aplikasi pada UICC ke state yang telah diketahui/disepakati bersama.
Setelah aplikasi tersebut dipilih, maka UICC akan mengevaluasi variabel-variabel security dari aplikasi tersebut. SE diset sesuai dengan persyaratan yang dibutuhkan untuk aplikasi ini, lihat table 9.1.
PIN verifikasi status dari aplikasi diupdate sesuai dengan prosedur sesi aktivasi aplikasi ini.
Terminal dapat mengirim STATUS command spesifik ke UICC yang menunjukkan prosedur inisialisasi dari aplikasi telah berhasil dilakukan.
Hanya boleh terdapat 1 aplikasi yang aktif untuk setiap logical channel. Oleh sebab itu, untuk mengaktifkan sesi aplikasi yang baru yang paralel dengan aplikasi yang lainnya, maka logical channel yang baru harus dibuat dulu.
Sesi aplikasi dapat terjadi beberapa kali pada beberapa sesi channel.
8.5.3 Application Session Termination
Suatu aplikasi dapat mempunyai prosedur tertentu sebelum aplikasi tersebut dihentikan. Prosedur tersebut akan disebutkan pada spesifikasi aplikasi tersebut. Sebelum prosedur itu dilakukan, terminal dapat mengirim spesifik STATUS command ke UICC yang menandakan bahwa prosedur untuk menghetikan aplikasi ini akan dimulai. Setelah prosedur penghetian tersebut selesai terminal dan aplikasinya berada pada state yang telah diketahui bersama.
Sesi aplikasi akan dihentikan jika beberapa event dibawah terjadi pada setiap logical channel dimana sesi aplikasi aktif :
  • Secara implisit; jika SELECT command oleh DF name dengan AID berbeda dengan AID pada aplikasi yang saat ini aktif di UICC, yang ditunjukkan pada parameter command bahwa aplikasi baru ini akan diaktifkan.
  • Secara Explisit; jika aplikasi dipilih kembali menggunakan SELECT dengan DF name command dengan AID yang sama dengan AID aplikasi yang aktif sekarang, dan ditunjukkan pada parameter command bahwa aplikasi ini akan ditutup; Direktory saat ini, current EF, dan aplikasi saat ini tetap sama setelah ATR pada logical channel menjadi nol.
  • Jika logical channel ditutup.
Sesi suatu aplikasi juga akan dihentikan ketika terminal melakukan fungsi reset pada UICC.
PIN status verifikasi dari aplikasi diupdate sesuai dengan prosedure penutupan dari sesi aplikasinya sebagaimana ditetapkan dalam aplikasi.
8.5.4 Application Session Reset
Suatu aplikasi akan tereset jika aplikasi tersebut dipilih kembali menggunakan SELECT by DF name command dengan AID yang sama dengan AID aplikasi yang aktif saat ini. Reset tersebut memulai prosedur aktivasi dari sesi suatu aplikasi. Status security dari aplikasi ini diupdate sesuai dengan prosedure aktivasi dari sesi aplikasi yang bersangkutan.

8.6 Reservation of File IDs
FID dibawah adalah FID cadangan sesuai dengan standard ini.
  • ADF :
    • Penggunaan operational (implicit FID untuk current ADF) :
      • '7FFF'
  • Dedicated Files (DF):
    • Penggunaan administrative :
      • '7F4X', '5F1X', '5F2X'.
    • Penggunaan operational :
    • catatan :
    • Reserved under '7F10' :
  • Elementary Files (EF) :
    • Penggunaan administrative :
      • '6F XX' pada DFs '7F 4X'; '4F XX' pada DFs '5F 1X', '5F2X'.
      • '6F 1X' pada DFs '7F 10', '7F 20', '7F 21';
      • '4F 1X' pada semua level kedua dari DFs;
      • '2F EX' pada MF '3F 00'.
    • Penggunaan operational :
      • '6F 2X', '6F 3X', '6F 4X' pada '7F 10' dan '7F 2X';
      • '4F YX', dimana Y dapat bernilai dari '2' sampai 'F' pada semua level kedua DFs;
      • '2F 05', '2F 06' dan '2F 1X' pada MF '3F 00'.
    • Penggunaan operational di ISO/IEC 7816-4 :

Catatan : rentang nilai X yaitu dari '0' sampai 'F', kecuali disebutkan yang lain.

8.7 Logical Channels
Logical channel didefinisikan pada ISO/IEC 7816-4. Standar ini mendukung nilai interindustri pertama (i.e CLA dikodekan pada table 10.3) dan interindustri berikutnya (CLA dikodekan pada `0.4a) seperti yang disebutkan pada ISO/IEC 7816-4, yang mendukung sampai 19 logical channel selain basic channel 0. Channel 0 selalu ada dan selalu terbukan untuk semua sesi card.
UICC yang mendukung beberapa logical channel menunjukkan hal ini pada ATRnya, bersaam dengan metode dan maksimum jumlah logical channel yang dapat disupport. UICC yang mendukung beberapa logical channel akan mendukung :
  • Paling tidak satu channel selain basic channel; dan
  • Nomor logical channel yang ditetapkan oleh UICC.
Command interpendencies pada satu logical channel sifatnya independent dari command interindependencies pada logical channel yang lain.
Tidak ada interleaving command dan responnya antar logical channel; antara penerimaan command APDU tersebut dan pengiriman respon APDU ke command tersebut, hanya satu logical channel yang aktif.
Agar dapat diakses dari beberapa logical channel pada saat bersamaan, file (EF, DF, ADF) akan ditunjukkan sebagai "shareable" pada file descriptornya.
Aplikasi bertanggung jawab untuk menjaga konsistensi data (pada card dan terminal) ketika mengakses file yang sama dengan logical channel yang berbeda.
Note : Perlakuan khusus harus diberikan ke cyclic files, contohnya ketika file dibaca dengan satu channel dan diupdate dengan channel berbeda yang lain.
Logical channel dibuka dengan menggunakan MANAGE CHANNEL command, dimana card menentukan nomor channel dan mengembalikannya pada respon.
Logical channel tetap terbuka sampai dia secara explisit ditutup dengan MANAGE CHANNEL command, atau jika UICC dideaktivasi.
Ketika open funcation dieksekusi pada basic channel dan eksekusinya berhasil, MF secara implisit dipilih sebagai current DF. Ketika open function dieksekusi pada logical channel yang bukan merupakan basic channel, maka setelah eksekusinya berhasil, current DF dari logical channel dimana command dieksekusi akan dipilih sebagai current DF. Dalam kedua kasus, tidak ada current DF dipilih pada logical channel yang baru.
Ketika chanel baru terbuka, maka current DF dan current EF bersifat independent untuk tiap logical channel.
Jika MANAGE CHANNEL command dieksekusi pada suatu DF atau ADF yang tidak shareable, maka card akan merespon dengan error message yang sesuai. Respon tersebut harus menunjukkan bahwa command ini tidak diperbolehkan dan tidak ada chanel baru yang terbuka.

8.8 Shareable versus not-Shareable Files
Suatu file (dapat berupa EF, DF, atau ADF) dapat diakses (selected, read, updated, deleted, deactivated, activated, incrased, searched, etc) dengan beberapa aplikasi yang berbeda yaitu :

  • Melalui aplikasi pada terminal dengan logical chanel yang berbeda
  • Melalui aplikasi pada UICC seperti remote file management dan toolkit applications.
Keluaran dari akses tersebut ditentukan oleh shareable/not-shareable bit pada byte deskripsi file pada FCP yang filenya diakses adalah sebagai berikut :
  • Jika file ditunjukkan sebagai shareable, maka aplikasi dapat melakukan operasi autentikasi pada file tanpa memperhatikan apakah file tersebut merupakan file dari aplikasi lain atau tidak.
  • Jika file ditunjukkan sebagai not-shareable dan merupakan current file dari suatu aplikasi, maka aplikasi yang lain tidak dapat melakukan operasi-operasi pada file ini termasuk operasi autentikasi
Akibat dari aturan pertama adalah jika terjadi perubahan pada shareable file diperbolehkan kondisi security dari file, maka file dapat diubah oleh suatu aplikasi sekalipun file tersebut sedang dipilih dan menjadi current file dari aplikasi yang lain. Deskripsi dari masing-masing command termasuk dalam detail informasi interasiknya terdapat dalam shareable case.
Akibat dari aturan kedua adalah suatu aplikasi butuh akses exclusive pada not-shareable file jika ingin memilih file tersebut. Akses dari aplikasi lain, termasuk upaya untuk memberikan SELECT command pada file tersebut akan mendapatkan status word '6985' (Conditions of use not satisfied).
Untuk saat ini, akses pada suatu file dengan 2 instances dari satu aplikasi dianggap sebagai akses dari 2 aplikasi yang berbeda.
Untuk shareable files, akses file diatur secara independent untuk setiap akses dari suatu aplikasi. Pada prinsipnya, struktur record-based file dan BER-TLV akan mempunyai pointer yang berbeda untuk setiap akses dari suatu aplikasi.

8.9 Secure Channels

Secure channel dijelaskan lebih detail pada 102 484. Terdapat 2 type APDU yang berdasarkan pada secure channel yaitu : Application to Application APDU secure channels dan Platform to Platform APDU secure channels.
Support kepada secure channels ditunjukkan pada ATR dan FCP tempelate.
Secure channel adalah logical channel dengan versi yang telah secure. Secure channel dibuat ketika pembukaan suatu logical channel, dan kemudian menggunakan MANAGE SECURE CHANNEL command untuk membuat logical channel tersebut menjadi secure. Logical channel 0 tidak dapat dijadikan secure channel untuk Application to Application secure channel.
Platform to Platform APDU secure channel dapat digunakan pada logical channel 0. Penggunaan logical channel yang lain juga diperbolehkan untuk Platform to Platform secure channel. Semua command selain MANAGE SECURE CHANNEL, TRANSACT DATA, dan GET RESPONSE dapat dibuat secure menggunakan Platform to Platform secure channel, termasuk proactive commands.

No comments:

Post a Comment