Bagaimana keyBCA bekerja
Posted on 07. Nov, 2010 by ziaulhaq in BizTalk, Techno
Pagi tadi saya nyambangi Customer Service tiga bank sekaligus: bank Muamalat, bank BCA, dan bank Mandiri. Alhamdulillah ketiga bank tersebut terletak masih satu jalan, meski beda gedung. Tiga rekening ini saya piara sejak jaman awal kuliah sampe sekarang karena paling urgen, meskipun hanya dengan saldo minimum. BCA banyak dipake buat bakulan. Mandiri enak buat transfer ke bank-bank lain, karena jaringan transfer BCA leibih eksklusif. Muamalat? Buat jembatan antara BCA dan Mandiri.
Ke bank Muamalat, saya mengambil kartu baru dari ganti kartu yang hilang. Trus ke BCA menukarkan keyBCA lama saya yang rusak. keyBCA lama saya angka-angka yang digenerate udah gak sinkron. Setelah itu karena sempat diutak-atik teman, akhirnya malah ke-lock. Alternatifnya? Ke cabang BCA, ganti baru. Trus mampir ke bank Mandiri beli token Mandiri. Token Mandiri ini sejenis keyBCA. Saya ga tau nanti perlu apa nggak, karena saya jarang transaksi pake Mandiri. Kebanyakan pake BCA. Tapi yang penting punya dulu. Toh gak mahal-mahal amat dan ga ada biaya perawatan. Ongkos gantinya 20ribu rupiah.
Dulu saya sempat penasaran cara kerja keyBCA atau token Mandiri ini. Bagaimana cara alat ini berkomunikasi dengan server bank sana. Memberikan kode angka yang dapat diterima oleh komputer server, padahal secara fisik keduanya terpisah sama sekali. Tanpa komunikasi apapun.
Semakin penasaran setelah mengalami kasus bahwa ternyata keyBCA ini bisa gak sinkron lagi sama servernya.
Tadi saya baca artikel lengkapnya. Teknis banget. Saya jelaskan garis besarnya:
Ketika sistem di internet banking meminta respon user, misalkan meminta user memasukkan APPLI 1, maka saat itu server bank membangkitkan kode password berupa sederet angka. User harus memasukkan kode password yang sama supaya transaksi dapat diterima.
Kok bisa token mengeluarkan password yang sama persis, padahal antara token dan server sama sekali tidak terhubung secara fisik? Tak ada sinyal, tak ada kabel, apalagi telepati atau magic.
Ternyata mereka berkomunikasi menggunakan media ‘waktu’. Waktu pada keyBCA harus sinkron dengan waktu pada komputer server. Misalnya ketika komputer server mengirim perintah memasukkan APPLI 1 pada pukul 10:10:10 (jam sepuluh lebih sepuluh menit sepuluh detik) maka komputer server membangkitkan sebuah kode sesuai jam tersebut. Kode yang sama akan dibangkitkan oleh token pada waktu yang sama (10:10:10) sehingga jika dimasukkan maka password akan cocok dan transaksi diterima.
Itu idealnya.
Tapi, kondisinya tidak seideal itu.
Misalkan server mengirim perintah APPLI 1 pada pukul 10:10:10 dan membangkitkan password. Karena ada delay internet perintah itu baru nyampe di komputer user pada 10:10:33. User ngeklik token untuk APPLI 1 pada pukul 10:10:41 sehingga kode yang dibangkitkan token bukan kode pada pukul 10:10:10 tetapi kode pada pukul 10:10:41.
Kemudian kode yang dibangkitkan token pada 10:10:41 tadi mengalami keterlambatan masuk ke komputer server karena user harus mengetiknya, mengirimnya, dan ada kelambatan internet. Sehingga kode tersebut baru sampai ke komputer server pada 10:11:53. Ada selisih keterlambatan 103 detik antara even ketika server membangkitkan password pada 10:10:10 dan password responnya diterima oleh server pada 10:11:53.
Server harus mengantisipasi hal ini. Karenanya, setelah menerima respon password dari user, server memeriksa seluruh kemungkinan password selama beberapa detik kedepan (misalkan 180 detik atau 3 menit) dari semenjak server membangkitkan password pada 10:10:10. Jika ada salah satu password yang cocok, maka password diterima.
Kode password ini hanya berlaku sekali pakai dalam masa tertentu, misalnya 180 detik. Jika dalam 180 detik server belum menerima respon password, maka password yang dibangkitkan tadi kadaluarsa dan user perlu merefresh untuk membangkitkan password baru dari server.
Kemudian, bagaimana jika jam pada token lebih lambat dari jam pada server bank? Misalnya jam token lebih lambat satu menit dari jam pada server bank. Server bank membangkitkan passwod pada 10:10:10. User menerima perintah APPLI 1 pada 10:10:25 kemudian menekan token pada 10:10:30. Karena jam token lebih lambat satu menit, maka password yang dibangkitkan token adalah bukan password untuk 10:10:30, tapi password pukul 10:09:30 mengacu pada jam token. Sekarang tugas server bertambah. Setelah server menerima password dari user, server tidak hanya memeriksa kemungkinan password 180 detik ke depan, tetapi juga 180 detik ke belakang. Kalau ada yang cocok, maka transaksi diterima.
Gitu deh kira-kira.
Sekarang saya mulai meraba kenapa keyBCA saya gak sinkron lagi, padahal setaun lebih gak saya pake karena saya pikir ilang. Mungkin karena gak pernah dihidupin ato apa, jamnya error jadi udah keluar dari toleransi 180 detik ke depan dan 180 detik ke belakang.
Untuk keamanannya, mekanisme kode password ini pake enkripsi hash MD-5. Biar lebih kuat ditambahkan ‘salt’. Kalo mau tahu cari sendiri ajah. Pusing jelasinnya.


andi
26. Jan, 2011
masa sih cuma kaya gitu? kalo gitu, berarti kita bisa pakai token punya orang lain dong. yang penting kita tahu password token orang tersebut, trs kita pakai buat meng-generate password pada akun kita?
menurutku sih ada hubungannya lagi, yaitu tiap token itu bakal menghasilkan password yg berbeda, itulah sebabnya kita harus mengaktivasi nomor seri yang ada di belakang token/keybca kita pada akun internet banking kita.
ziaulhaq
27. Jan, 2011
Tentu saja tiap keyBCA itu berbeda. Seperti kartu ATM kita yang fisiknya sepintas sama, namun tetap personal. Server bank ketika men-generate password pun berdasar informasi pribadi kita, tentu juga berbeda untuk setiap orang.
batu rekso
08. Mar, 2012
mantabb..baru ngerti sekarang,
saya baru mau coba transfer ke bank lain dari kantor, tapi token dipegang istri dirumah..
kira2 bisa gak ya? nnti istri yang aktifin password tokennya, kita komunikasi via telpon….:D
ziaulhaq
11. Mar, 2012
bisa aja. minta istri sms kodenya pas diminta.
haq
26. Apr, 2012
saya turut berduka cita karena token anda dipegang istri..
semoga rekening anda bahagia di alam sana