Seperti yang telah dibahas sebelumnya, ketiga macam kunci yang digunakan oleh Smartcard (Key Enc, Key Mac, dan Key Dek) dapat dibentuk dari satu buah kunci utama. Pada tulisan ini, akan dijelaskan proses penurunan kunci menurut standar EMV CPS 1.1.
Proses penurunan kunci ini melibatkan satu buah kunci utama (Master Key) dan sebuah data unik dari setiap kartu (Key Diversification Data — Key Data). Karena ada data unik yang dilibatkan, maka ketika kunci turunan juga akan unik untuk setiap kartu yang ada. Penurunan kunci dilakukan melalui sebuah proses enkripsi dengan algoritma TripleDES. Kunci yang digunakan adalah Master Key yang akan diturunkan sedangkan data yang akan dienkripsi merupakan turunan dari Key Data.
Mendapatkan Key Data
Key Diversification Data pada kartu dapat diperoleh dengan mengirimkan APDU 80 CA 00 CF 00
. Kartu akan mengembalikan data dengan format TLV (Tag-Length-Value). Tag yang menunjukkan data ini adalah CF dan panjang data adalah 10 Bytes.
>> 80 CA 00 CF 00
<< CF 0A 00 00 00 00 00 00 A4 AB 88 04 90 00
Pada contoh di atas, nilai dari Key Data adalah 00 00 00 00 00 00 A4 AB 88 04
Membuat Turunan Key Data
Key Data yang didapatkan dari kartu perlu diturunkan lagi menjadi tiga buah data. Ketiga buah data tersebut akan diproses lagi sehingga berfungsi sebagai Key Enc, Key Mac, dan Key Dek.
Berikut ini adalah tiga data turunan dari Key Data.
- Data untuk Key Enc
6-BYTE-TERAKHIR-KEY-DATA || F0 || 01 || 6-BYTE-TERAKHIR-KEY-DATA || 0F || 01
- Data untuk Key Mac
6-BYTE-TERAKHIR-KEY-DATA || F0 || 02 || 6-BYTE-TERAKHIR-KEY-DATA || 0F || 02
- Data untuk Key Dek
6-BYTE-TERAKHIR-KEY-DATA || F0 || 03 || 6-BYTE-TERAKHIR-KEY-DATA || 0F || 03
Dengan menggunakan contoh Key Data di atas, maka ketiga data turunan dari Key Data tersebut adalah sebagai berikut.
- Data untuk Key Enc
00 00 A4 AB 88 04 F0 01 00 00 A4 AB 88 04 0F 01
- Data untuk Key Mac
00 00 A4 AB 88 04 F0 02 00 00 A4 AB 88 04 0F 02
- Data untuk Key Dek
00 00 A4 AB 88 04 F0 03 00 00 A4 AB 88 04 0F 03
Panjang data turunan adalah sebesar 16 Bytes.
Membuat Kunci Turunan
Setelah membuat data turunan, proses enkripsi dengan Master Key sebagai kunci dapat diterapkan kepada data turunan tersebut untuk membuat kunci turunan yang akan digunakan pada kartu. Algoritma enkripsi yang digunakan adalah TripleDES.
Proses enkripsi dilakukan sebanyak dua kali untuk setiap kunci yang ada. Enkripsi pertama dilakukan pada 8 Bytes pertama pada data dan enkripsi kedua dilakukan pada 8 Bytes terakhir pada data. Hasil enkripsi (masing-masing sepanjang 8 Bytes) lalu digabungkan lagi menjadi kunci sepanjang 16 Bytes.
- Key Enc
Key Enc = TripleDES [Master Key] (8 Bytes pertama Data untuk Key Enc) ||
TripleDES [Master Key] (8 Bytes kedua Data untuk Key Enc) - Key Mac
Key Mac = TripleDES [Master Key] (8 Bytes pertama Data untuk Key Mac) ||
TripleDES [Master Key] (8 Bytes kedua Data untuk Key Mac) - Key Dek
Key Dek = TripleDES [Master Key] (8 Bytes pertama Data untuk Key Dek) ||
TripleDES [Master Key] (8 Bytes kedua Data untuk Key Dek)
Master Key yang ada memiliki panjang sebesar 16 Bytes. Agar dapat digunakan sebagai kunci pada TripleDES, maka kunci tersebut harus diperluas menjadi 24 Bytes dengan cara menyalin 8 Bytes pertama ke belakang.
KunciTripleDES = Kunci[0..7] || Kunci[8..15] || Kunci[0..7]
Dengan menggunakan key 40 .. 4F maka kunci turunan yang didapat adalah sebagai berikut.
- Key Enc
E7 F7 21 EF C4 BA 65 93 02 95 61 72 51 D1 50 03
- Key Mac
4D 30 8D 14 B7 1C FF A8 77 84 24 BC FC A3 9A 71
- Key Dek
95 3B 65 AF A4 C0 85 62 33 11 78 C5 6A D8 97 83
Panjang kunci yang dihasilkan adalah sebesar 16 Bytes.