Serangan Periode Penggantian dalam Jaringan Lightning
Jaringan Lightning Bitcoin adalah solusi penskalaan lapisan kedua untuk Bitcoin, yang bertujuan untuk mengatasi tantangan skalabilitas blockchain Bitcoin. Jaringan ini memungkinkan transaksi Bitcoin yang instan dan berbiaya rendah, menjadikannya lebih efisien dan mudah diakses oleh pengguna. Dibandingkan dengan transaksi on-chain di Bitcoin, transaksi di Jaringan Lightning bersifat privat, terjadi di luar rantai, dan hanya hasil keseluruhannya yang dicatat.
Salah satu keunggulan utama Jaringan Lightning adalah kecepatan dan keterjangkauannya. Jaringan ini memungkinkan pengguna untuk mengirim dan menerima pembayaran kecil melalui jaringan Bitcoin dengan cara yang sederhana dan hemat biaya. Dengan menciptakan jaringan saluran pembayaran antar pengguna, Jaringan Lightning memungkinkan transaksi tanpa menyiarkan setiap transaksi ke blockchain. Hal ini mengurangi kepadatan pada blockchain Bitcoin dan meningkatkan skalabilitas transaksi.
Namun, perlu dicatat bahwa Jaringan Lightning masih dalam tahap pengembangan dan menghadapi beberapa risiko keamanan dan risiko sentralisasi. Pada Oktober tahun ini, sebuah kerentanan yang disebut "serangan siklus penggantian" baru ditemukan dalam Jaringan Lightning, yang melibatkan Mekanisme Penggantian Transaksi dan dapat menyebabkan hilangnya dana saluran dalam Jaringan Lightning. Munculnya metode serangan ini telah menimbulkan kekhawatiran tentang keamanan Jaringan Lightning dan mendorong penelitian dan perbaikan lebih lanjut terhadap protokol dan implementasinya.
Mekanisme Jaringan Lightning
Jaringan Lightning Bitcoin memanfaatkan mekanisme Multisig untuk memastikan keamanan saluran pembayaran. Peserta perlu mengunci dana dan membuat saluran pembayaran. Peserta dapat melakukan pembayaran cepat dan berbiaya rendah dalam saluran tersebut, tanpa harus mengirimkan transaksi ke blockchain Bitcoin setiap kali. Saluran pembayaran hanyalah hubungan antara peserta di luar blockchain Bitcoin, yang dicapai dengan menandatangani serangkaian transaksi dalam saluran yang hanya disebarkan antara kedua ujung saluran tanpa melibatkan konsensus seluruh jaringan Bitcoin.
Dalam hal proses spesifik, ketika membuka saluran pembayaran, peserta perlu membuat skrip multi-tanda tangan yang mengharuskan setiap pihak di saluran untuk menyediakan kunci publik mereka, sambil menentukan jumlah tanda tangan yang diperlukan, misalnya, mendefinisikan skrip yang berisi beberapa kunci publik dan logika verifikasi tanda tangan. Saat menghasilkan alamat multi-tanda tangan, skrip ini akan dikonversi menjadi alamat Bitcoin, membentuk infrastruktur saluran pembayaran.
Sebagai contoh, seperti yang ditunjukkan pada Gambar 1, Bob dan Alice pertama-tama membuat alamat Bitcoin multi-tanda tangan 2-dari-2 di rantai sebagai dana bersama. Dalam saluran tersebut, mereka dapat melakukan transaksi komitmen off-chain tanpa batas untuk mencatat status alokasi dana saat ini. Kedua pihak dapat bernegosiasi dan menandatangani transaksi komitmen baru untuk memperbarui status saluran, tanpa menyiarkan pembaruan ini ke seluruh jaringan Bitcoin. Ketika mereka memutuskan untuk menutup saluran, transaksi penyelesaian akhir di rantai akan mendistribusikan dana sesuai dengan alokasi terakhir yang dinegosiasikan. Transaksi penyelesaian ini memerlukan tanda tangan bersama dari Bob dan Alice, memastikan dana dialokasikan sesuai dengan cara yang akhirnya disepakati. Dengan cara ini, Jaringan Lightning meningkatkan efisiensi transaksi Bitcoin, mengurangi biaya, sambil mempertahankan karakteristik terdesentralisasinya.
Gambar 1: Diagram Saluran Status
:quality(80)/2024-01-08/99F50221A5FA1949F646D3CD00281FF3.png)
Sumber: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png
Mekanisme HTLC
Jaringan Lightning Bitcoin juga mengadopsi saluran pembayaran berdasarkan Kontrak Timelock Ter-hash (HTLCs) untuk mengimplementasikan sistem saluran pembayaran multi-hop yang dapat dirutekan. Dalam implementasinya, HTLCs memerlukan skrip transaksi kompleks yang didefinisikan dalam bahasa skrip untuk memenuhi kondisi hash dan kondisi kunci waktu. Skrip ini akan digunakan untuk inisialisasi saat membuka saluran pembayaran dan dipicu selama pembayaran. Dengan cara ini, Jaringan Lightning Bitcoin mencapai efisiensi dan keamanan untuk pembayaran lintas rantai.
HTLC (Hashed Timelock Contract) adalah Kontrak Kunci Waktu Terenkripsi, yang merupakan salah satu komponen penting untuk mengimplementasikan transaksi lintas rantai pada blockchain. HTLC memiliki dua aplikasi umum: pertukaran atom lintas rantai dan saluran pembayaran dalam Jaringan Lightning. HTLC dapat mengunci transfer dan menetapkan kondisi pembukaan kunci, seperti menyediakan informasi spesifik dalam waktu tertentu. Ini memastikan bahwa dana hanya dapat ditarik oleh penerima ketika kondisi terpenuhi.
Secara teknis, HTLC adalah output tambahan dalam Transaksi Komitmen dengan skrip output yang unik. Ini adalah skrip Script yang berisi operasi seperti OP_HASH160, OP_EQUALVERIFY, dll., yang digunakan untuk mengunci dana sehingga hanya dengan menyediakan nilai preimage R dapat membukanya. Skrip ini memiliki dua jalur yang mungkin. Jalur pertama (didefinisikan dalam OP IF) mengirim dana ke Bob jika Bob dapat menyediakan R. Jalur kedua adalah untuk menerapkan kunci waktu menggunakan nLockTime dalam transaksi pembayaran, memungkinkan pengembalian dana ke Alice setelah kunci kedaluwarsa.
OP_IF
OP_HASH160 <Hash160 (R)> OP_EQUALVERIFY
2 <Alice2> <Bob2> OP_CHECKMULTISIG
OP_ELSE
2 <Alice1> <Bob1> OP_CHECKMULTISIG
OP_ENDIF
Contoh Perutean
Dalam Jaringan Lightning, Alice ingin membayar 1 bitcoin kepada Eric, tetapi tidak ada saluran pembayaran langsung antara Alice dan Eric. Jadi Alice merutekan pembayaran melalui node perantara dalam jaringan saluran pembayaran (Bob, Carol, Diana) untuk membangun jalur pembayaran yang aman, memungkinkannya untuk secara tidak langsung membayar 1 bitcoin kepada Eric. Perutean pembayaran menggunakan HTLC - hanya dengan menyediakan "rahasia" yang benar dalam jendela waktu tertentu, dana dapat dibuka, memastikan keamanan pembayaran.
Dalam contoh ini, pada Langkah 1, Eric menghasilkan Rahasia R (solusi) dan menghitung nilai hash H (teka-teki), kemudian memberikan nilai hash H kepada Alice.
Langkah 2-5: Alice, Bob, Carol, Diana, dan Eric masing-masing membangun HTLC secara berpasangan, yang mengharuskan penyediaan R (solusi) dalam jangka waktu tertentu untuk mengambil dana yang terkunci dari pihak hulu.
Langkah 6-9: Eric memberikan R (solusi) kepada Diana untuk mengambil 1 BTC. Diana kemudian mengambil BTC dari Carol dengan R, dan R diteruskan ke belakang seperti ini sampai 1,003 BTC Alice (0,003 BTC di antaranya adalah biaya layanan untuk node perantara) diambil.
Dalam contoh ini, jika pada Langkah 6 Eric tidak menyediakan R (solusi) dalam waktu yang ditentukan, setelah waktu berakhir, dana yang terkunci pada Langkah 2-5 akan langsung terbuka dan kembali.
Gambar 2: Contoh Perutean
:quality(80)/2024-01-08/FD442E7EB50CCD0EFBAA12AF5EE52174.png)
Sumber: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png
Serangan siklus penggantian
Mekanisme penggantian transaksi Bitcoin mengacu pada situasi ketika sebuah transaksi ditandai sebagai dapat diganti, maka transaksi tersebut dapat digantikan oleh transaksi lain dalam jaringan dengan biaya yang lebih tinggi sebelum dikonfirmasi dalam blok. Jika sebuah transaksi dibayar dengan biaya absolut yang lebih tinggi dan tingkat biaya yang lebih tinggi, transaksi tersebut dapat menggantikan transaksi yang belum dikonfirmasi yang secara langsung bertentangan dengannya. Setelah menerima transaksi pengganti, node akan menghapus transaksi asli dengan tingkat biaya yang lebih rendah dari mempool dan hanya menyimpan transaksi pengganti. Mekanisme penggantian transaksi memungkinkan penyesuaian biaya transaksi atau parameter lainnya sebelum transaksi dikonfirmasi. Namun, mekanisme ini juga dapat digunakan untuk melaksanakan serangan penolakan layanan transaksi, seperti berulang kali mengganti transaksi penting, menyebabkan gagal konfirmasi. Oleh karena itu, mekanisme penggantian transaksi memberikan kemudahan untuk menyesuaikan transaksi, tetapi juga memperkenalkan risiko penyalahgunaan.
Menurut email dari pengembang Bitcoin Core Antoine Riard, serangan siklus penggantian terutama melibatkan saluran pembayaran dalam Jaringan Lightning Bitcoin. Penyerang menyiarkan transaksi HTLC-preimage dengan biaya absolut dan tingkat biaya yang lebih tinggi untuk menggantikan transaksi HTLC-timeout dari node yang jujur. Selama penggantian, penyerang dapat menambahkan input atau output tambahan untuk memastikan transaksi pengganti berhasil diterima oleh jaringan. Metode serangan ini dapat mengakibatkan pengeluaran ganda dana dalam saluran pembayaran, yaitu setelah node yang jujur menyiarkan transaksi HTLC-timeout, penyerang berhasil mengambil kembali dana melalui penggantian. Kita dapat memberikan contoh sederhana untuk mengilustrasikan, mirip dengan contoh sebelumnya, dengan asumsi jalur disederhanakan hanya menjadi Alice, Bob dan Eric, dan Alice dan Eric berkolusi untuk mencuri BTC Bob.
Langkah 1: Alice bermaksud membayar 1 BTC kepada Eric melalui Bob. Alice\Bob dan Bob\Eric masing-masing membangun HTLC. Eric perlu memberikan R (solusi) kepada Bob sebelum blok 1020 (anggap ketinggian saat ini adalah 1000), jika tidak Bob dapat mengambil kembali 1 BTC yang terkunci; demikian pula, Bob perlu merespons Alice sebelum blok 1080, jika tidak Alice dapat mengambil kembali 1 BTC miliknya.
Langkah 2: Eric tidak memberikan R (solusi) kepada Bob sebelum blok 1020. Bob akan menyiarkan transaksi yang berisi HTLC-timeout. Dana dalam transaksi ini akan dikembalikan kepada Bob.
Langkah 3: Eric memantau transaksi HTLC-timeout Bob dan menggantinya dengan transaksi HTLC-preimage dengan tingkat biaya yang lebih tinggi. Kemudian Eric memulai transaksi lain untuk mengeluarkan HTLC-preimage sebelumnya dari mempool.
Langkah 4: Node Bob akan menyiarkan ulang transaksi HTLC-timeout hingga blok 1080. Eric dapat melakukan penggantian setiap kali. Sampai blok 1080, transaksi pihak saluran lainnya yaitu Alice dikonfirmasi, dan Alice mengambil kembali BTC yang terkunci.
Langkah 5: Eric mendapatkan konfirmasi HTLC-preimage-nya, sehingga 1 BTC yang dikunci oleh Bob ditransfer ke Eric.
Dengan demikian, 1 BTC Bob ditransfer ke Eric, sementara dia juga tidak menerima BTC yang seharusnya dari Alice.
Ringkasan
Hingga November 2023, Lightning Network memiliki lebih dari 16.000 node Lightning dan 5.000 BTC. Meskipun kasus serangan siklus penggantian yang sebenarnya belum dikonfirmasi, hal ini menyoroti perlunya penelitian dan peningkatan keamanan yang berkelanjutan untuk Lightning Network. Antoine Riard juga menyarankan beberapa langkah untuk menghindari atau mengurangi serangan siklus penggantian, seperti memantau mempool lokal dan transaksi yang diteruskan, membangun jaringan overlay antara penambang dan node Lightning, dan secara aktif memutar ulang transaksi batas waktu HTLC untuk meningkatkan biaya penyerang. Namun pada saat yang sama, ia mengumumkan penghentian partisipasi dalam Lightning Network dan pekerjaan implementasinya, termasuk mengkoordinasikan solusi untuk kerentanan keamanan tingkat protokol.
Seiring dengan peningkatan skala Lightning Network, potensi ancaman serangan siklus penggantian mungkin menjadi hambatan dalam jalur pengembangannya, memaksa komunitas untuk lebih fokus pada penelitian dan peningkatan keamanan. Namun, justru dengan menangani dan meningkatkan masalah keamanan secara serius, kita mungkin akan menyaksikan Lightning Network secara bertahap menyelesaikan potensi risiko di masa depan, mencapai ekosistem yang lebih sehat dan lebih andal.
Tentang CoinEx
Didirikan pada tahun 2017, CoinEx adalah pertukaran kripto global yang berkomitmen untuk memudahkan perdagangan. Platform ini menyediakan berbagai layanan, termasuk perdagangan spot dan margin, futures, swap, akun AMM, dan layanan manajemen keuangan untuk lebih dari 5 juta pengguna di 200+ negara dan wilayah. Sejak pendiriannya, CoinEx telah secara teguh berpegang pada prinsip layanan "pengguna adalah yang utama". Dengan niat tulus untuk memelihara lingkungan perdagangan kripto yang adil, hormat, dan aman, CoinEx memungkinkan pengguna untuk dengan mudah mengakses dunia cryptocurrency dengan menawarkan produk dan layanan yang mudah digunakan.
Referensi
https://cypherpunks-core.github.io/bitcoinbook/
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html
https://lightning.network/lightning-network-paper.pdf
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf