. . .

Merebaknya wabah ransomware WannaCry dan Petya (atau NotPetya atau GoldenEye) membuat saya memikirkan judul di atas. Verifikasi pembayaran adalah salah satu hal paling krusial dalam transaksi berbasis Internet, tidak hanya transfer antarbank biasa melainkan juga pembayaran menggunakan cryptocurrency. Identitas pembayar dan pihak yang dibayar menjadi penting karena hal tersebut menjadi indikasi bahwa pembayaran telah dilakukan oleh pihak yang benar. Selain identitas pembayar, jumlah pembayaran juga harus ditentukan dengan tepat sebelum pembayaran tersebut diverifikasi.

Penentuan hal-hal berikut ini: identitas pembayar, pihak yang dibayar, dan jumlah pembayaran, menjadi mudah dilakukan manakala dilakukan dengan mekanisme transaksi melalui bank, sebab semua rekening bank terhubung dengan identitas pemilik akun. Hal yang demikian tidak terjadi dalam lingkungan cryptocurrency. Cryptocurrency mengedepankan anonimitas dan privasi penggunanya, sehingga identitas pemilik dana (yang diakomodasi dalam kunci publik atau alamat cryptocurrency) tidak pernah tercatat dalam sistem manapun.

Kelebihan cryptocurrency dalam hal anonimitas mesti dibayar mahal dalam hal verifikasi pembayaran. Tanpa adanya informasi tambahan, mustahil memastikan asal dana yang dibayarkan. Andaikan sebuah toko kopi yang cukup ramai dan hanya menerima pembayaran dalam bentuk bitcoin. Toko tersebut menjual berbagai produk, namun yang paling populer adalah latte regular seharga 0,001 BTC. Misalnya setiap pukul 7 pagi setidaknya ada 10 pesanan latte regular dalam waktu yang bersamaan, dan kesepuluh pesanan tersebut dibayar menggunakan bitcoin. Di sinilah letak kesulitannya. Andaikan terdapat 10 pembayaran senilai 0,001 BTC pada pukul 7 pagi, maka hampir tidak ada masalah. Namun bagaimana apabila hanya terdapat 9 pembayaran senilai 0,001 BTC, bagaimana si pemilik toko mengidentifikasi siapa konsumen yang belum membayar?

Tanda Tangan Digital
Salah satu cara termudah dalam melakukan verifikasi (dan memastikan kenirsangkalan) adalah menggunakan digital signature untuk setiap pembayaran yang dilakukan. Penandatanganan tersebut dilakukan atas sebuah pesan M yang unik untuk setiap pelanggan dengan menggunakan kunci privat yang berasosiasi dengan alamat sumber dana. Tanda tangan ini dapat diverifikasi oleh pemilik toko dengan menggunakan kunci publik milik pengirim. Namun proses penandatanganan dan verifikasi membutuhkan waktu yang tidak sebentar.

Alamat Unik
Cara lebih sederhana untuk membedakan pembayaran dari pengguna adalah dengan menggunakan alamat unik untuk setiap pelanggan dan untuk setiap sesi pembelian. Alamat-alamat unik ini dapat dibuat dengan menggunakan teknik deterministic address. Dengan menggunakan teknik ini, setiap pelanggan diidentifikasikan tidak melalui alamat pengirim tetapi melalui alamat penerima yang dikuasai oleh penerima pembayaran. Jadi, tidak peduli dari mana alamat asal pengirim dan berapa kali dana tersebut dibayarkan, selama jumlah pembayaran sudah tepat, maka verifikasi pembayaran selesai dilakukan. Cara ini juga yang umum digunakan oleh pasar exchanger cryptocurrency untuk menerima deposit dari para penggunanya.

Metode alamat unik ini bisa saja diciptakan oleh penerima dana sebagaimana telah dijelaskan di atas, namun juga bisa diciptakan oleh pengirim dana. Cara yang terakhir ini mengadopsi teknik serupa dark wallet. Dalam dark wallet, penerima harus mencari terlebih dahulu ke alamat mana pembayaran tersebut dilakukan. Si pengirim membuat alamat tujuan dengan menggunakan alamat publik milik penerima serta sebuah indeks unik. Dengan indeks yang sama, penerima dapat menghitung kunci privat yang dapat digunakan untuk mengambil dana yang dibayarkan.

Tanda Terima
Untuk meyakinkan konsumen bahwa pembayaran telah diterima, biasanya toko memberikan kuitansi atau receipt atas pembelian barang ataupun jasa. Nah, sebenarnya mekanisme ini dapat diadopsi dalam pembayaran menggunakan bitcoin, terlebih karena bitcoin memiliki fitur OP_RETURN yang memungkinkan penyisipan data sebesar 80 byte. Namun jika dirasa kurang, mekanisme lain bisa juga digunakan, meskipun membutuhkan dana yang lebih besar. Bila metode ini digunakan oleh pembuat ransomware untuk mengirim kunci dekripsi, niscaya tidak lagi diperlukan pengiriman manual baik menggunakan remote access seperti pada WannaCry maupun email seperti pada Petya. Pihak korban hanya perlu memantau transaksi yang diterima ke alamat pengirim dana tadi.

Verifikasi Identitas Pengirim
PR terbesar cryptocurrency barangkali adalah pada bagian verifikasi identitas. Konsep ini tentu saja bertentangan dengan mekanisme anonimitas yang menjadi fitur standar sebuah cryptocurrency. Beberapa usaha seperti protokol Know Your Customer (KYC) diterapkan oleh exchanger, namun tidak dapat secara eksplisit mengikat identitas pengguna dengan kunci publik yang digunakan. Barangkali diperlukan penggunaan digital certificate untuk mengidentifikasikan kunci publik milik setiap pengguna, meskipun untuk kepentingan ini diperlukan kebijakan satu pengguna satu alamat yang kurang feasible.
Cara lain mungkin dengan menggunakan sistem rating atau vote. Penentuan identitas seseorang dilakukan secara terdesentralisasi yakni dengan menyerahkan mekanisme ini kepada peer atau sesama pengguna. Para pengguna ini saling memverifikasi satu sama lain, dan vote akan menentukan apakah alamat seseorang ini trustworthy atau tidak. Cara ini memiliki setidaknya 2 kelemahan. Yang pertama adalah mempersulit orang berganti alamat. Yang kedua menghilangkan prinsip fungibilitas atau kesetaraan antara koin yang dimiliki oleh alamat terverifikasi dengan koin yang dimiliki oleh alamat yang tidak terverifikasi.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.