Yang membuat bitcoin itu secure cuma karena trapdoor function ECDSA y^2=x^3+7. Jika anda memasukkan nilai x maka nilai y bisa dihitung dari rumus itu, begitu juga sebaliknya jika y diketahui, nilai x juga bisa ditarik dari situ.
Kuncinya ada di Point Addition dan Point Doubling. Jika pada angka biasa (integer), hitungan perkalian dan pembagian bisa dibalik, misalnya 2xa=10, a bisa dihitung dengan a=10/2=5. Atau 10/b=5, b=10/5=2. Ini bisa dilakukan jika itu angka biasa atau integer, di dalam ECDSA angka yang dihitung bukan integer melainkan titik x dan y. Jadi rumusnya tidak bisa di reverse. Misalnya jika titik x=-1 dimasukkan pada rumus Point Doubling satu kali akan menghasilkan titik x=2.375, anda bisa cek rumus excelnya di sini supaya bisa hitung sendiri (https://docs.google.com/spreadsheets/d/15bMNpUNO_M0kQ6-bEGkg-AgDJq5PgkxB/edit?usp=sharing&ouid=110171531072886067126&rtpof=true&sd=true). Jika dilakukan hitungan point doubling dua kali hasilnya akan berbeda, dan seterusnya, artinya point doubling bisa dilakukan berkali kali dan setiap kali akan menghasilkan titik akhir yang berbeda, contoh:
Step 1: double -1 = 2.375
Step 2: double 2.375 = -1.4202
Step 3: double -1.4202 = 5.0537
Step 4: double 5.0537 = 0.6784
Artinya x=-1 jika di double sebanyak 4 kali akan menghasilkan x=0.6784
Pada contoh diatas hanya dilakukan empat kali point doubling, dalam bitcoin point doubling dilakukan sebanyak 112757557418114203588093402336452206775565751179231977388358956335153294300646 kali. Deretan angka acak inilah yang digunakan untuk unlock/mengirim bitcoin dari dompet/walletnya. Ini hanya satu contoh private key, ada 2^256 kemungkinan angka acak yang menjadi private key bitcoin. Sebagai gambaran, 2^256 adalah angka 1 diikuti 77 deretan angka lain, atau 10^77 deret angka, sebagai perbandingan, jumlah atom di alam semesta yang terobservasi adalah 10^80. Artinya, jumlah private key bitcoin hampir sama dengan jumlah atom di alam semesta. Jika anda punya supercomputer yang bisa menciptakan deretan angka acak (private key) sebanyak 1 juta private key per detik untuk membobol sebuah wallet yang berisi bitcoin, anda masih tidak akan bisa menebak private key yang benar walaupun komputer anda berjalan selama miliaran tahun. Kenapa? Supercomputer itu bisa menebak 1.000.000 deret private key per detik, jumlah kemungkinan private key adalah 10^77. 1 juta private key hanyalah 10^6 private key per detik,
10^6 x 60 = 60.000.000 private key per menit,
3.600.000.000 private key per jam,
86.400.000.000 private key per hari,
2.6x10^12 private key per bulan,
3.1x10^13 private key per tahun,
3.1x10^14 private key per dekade,
3.1x10^15 private key per abad,
3.1x10^16 private key per millenia,
3.1x10^22 private key per satu miliar tahun.
Masih ada 10^55 keyspace yang belum ditemukan setelah komputer itu berjalan selama 1 miliar tahun.
Yang bisa membobol sistem enkripsi bitcoin adalah quantum computer yang bisa melakukan hitungan triliunan kali lebih cepat daripada komputer yang ada sekarang ini, tetapi jika komputer itu ada, developer bitcoin hanya tinggal memperbanyak jumlah keyspace dari 10^77, katakanlah menjadi 10^180.
Selain quantum computer, kemungkinan adanya analytical attack yang di temukan di software atau hardware yang digunakan, sejauh ini para ahli kriptografi seluruh dunia masih mengakui bahwa ECDSA merupakan sistem enkripsi yang aman. Karena banyak website yang menyediakan aplikasi yang melakukan brute force attack terhadap ECDSA dan bitcoin, contohnya website ini menciptakan private key dan public key setiap kali anda merefresh pagenya (https://playxo.com/), jika anda beruntung menemukan public key yang berisi bitcoin, maka anda bisa mengambil bitcoin tersebut. Good luck, mungkin harus di refresh selama satu triliun tahun baru bisa ketemu.
Ini penjelasan yang dipersingkat, ada point addition, dan sha256 yang tidak dijelaskan karena akan terlalu panjang, tetapi inti dari sistem enkripsi adalah trapdoor function diatas, ada banyak trapdoor function yang lain yang bisa digunakan, bitcoin hanya kebetulan saja menggunakan ECDSA. Sha256 hanya mengacak dan mempersingkat deretan angka hasil point doubling tersebut. Sha256 juga merupakan trapdoor function yang menambah keamanan bitcoin. Singkatnya, anda mulai pada titik tertentu yang disebut generator point, dalam bitcoin, generator point ini hanya satu yaitu;
x: 55066263022277343669578718895168534326250603453777594175500187360389116729240,
y: 32670510020758816978083085130507043184471273380659243275938904335757337482424
Kemudian dilakukan point doubling (dan point addition) sebanyak x kali maka anda akan mendapatkan hasi berupa titik x dan y, titik ini kemudian di acak melalui sha256, sehingga menghasilkan public address, itulah bitcoin wallet address yang digunakan untuk menerima dan menyimpan bitcoin, kemudian x adalah deretan angka rahasia yang hanya pemilik wallet tersebut yang mengetahuinya, karena itu yang digunakan untuk mengirim bitcoin yang ada di wallet. Jika nilai x diketahui orang lain, orang itu bisa mengambil bitcoin anda.
Bitcoin adalah aplikasi komputer yang sama seperti aplikasi di hp anda, tetapi itu berjalan di ribuan komputer yang tersebar di seluruh dunia yang hanya terhubung lewat internet, mereka semua berkomunikasi setiap saat dan saling memeriksa daftar transaksi yang ada di memori mereka, semuanya selalu sync satu sama lain, setiap 10 menit satu tumpukan transaksi bitcoin akan di verifikasi semua komputer ini kemudian disimpan pada memori mereka semua, sehingga tidak ada pusat otoritas yang bisa mengubah data yang tersimpan di ribuan komputer ini, karena mereka tersebar di ratusan negara, semua berjalan secara otomatis, sehingga ada yang memberi istilah bitcoin adalah 'unstoppable code', anda pun bisa menjalankan aplikasi bitcoin ini, bisa download disini: https://bitcoin.org/en/bitcoin-core/. semua tumpukan data transaksi bitcoin inilah yang di sebut blockchain, karena memang ditumpuk seperti block atau batu, transaksi baru ditaruh diatas transaksi yang lama. Dan semua komputer yang menjalankan aplikasi bitcoin core disebut Node.
Miner adalah komputer khusus yang terhubung dengan Node, tugas miner hanya menjalankan operasi Sha256 sebanyak-banyaknya. Tumpukan transaksi (atau candidate block) bitcoin itu disimpan di mempool (memori setiap Node) kemudian node akan mengirim ringkasan tumpukan transaksi ini ke miner, ringkasan block disebut block header, miner akan mengacak block header ini melalui rumus Sha256 sehingga menjadi deretan hexadecimal yang memenuhi target, proses pengacakan oleh Sha256 ini disebut Hashing, contoh hasil hasing adalah seperti ini 5bd0d617b30a972407ad69a845cd74fb201d940cd45acc15fcd4761493bc3ae2, tapi untuk diterima semua Node hasil hashing harus memenuhi target berupa deretan angka yang lebih kecil, yang diawali 11 angka nol, seperti ini 000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506, ini adalah hash block nomor 100,000 di network bitcoin (https://www.blockchain.com/btc/block/000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506). Saat ini target block hash harus diawali 19 nol. Miner harus menjalankan proses sha256 triliunan kali untuk menemukan deretan angka tersebut, ini memang seperti game, sehingga miner yang memiliki komputer yang lebih cepat akan lebih cepat menemukan hash yang memenuhi target, sehingga mereka berlomba-lomba membuat dan membeli komputer khusus yang disebut ASIC, walaupun harganya mahal, Miner yang berhasi menemukan hash yang tepat akan memperoleh 6,25 bitcoin yang senilai $265,625 (pada kisaran harga per bitcoin 42,500) atau sekitar 3,8 miliar rupiah. Setiap 10 menit ada miner yang memperoleh 6.25 bitcoin atau 3,8 miliar rupiah. Bisa dilacak disini https://www.blockchain.com/btc/blocks. Karena difficulty/kesulitan mining semakin meningkat, para miner berkumpul menggabungkan semua komputer mereka ke dalam mining pool, hasil mining dibagi rata sesuai jumlah komputer yang digunakan masing2 member pool tersebut. Setiap 4 tahun jumlah block reward akah dipotong sistem secara otomatis setengahnya, sehingga pada tahun 2024 jumlah block reward adalah 3,125 bitcoin. Ini akan terus terjadi sampai bitcoin mencapai jumlah sirkulasi akhir yaitu 21.000.000 bitcoin yang diperkirakan akan dicapai pada tahun 2140. Ini adalah sistem deflasi yang kemungkinan akan membuat nilai bitcoin terhadap mata uang cetakan negara terus naik. Negara yang tidak suka bisa melarang bitcoin, tetapi mereka tidak bisa menghentikan jaringan yang masih berjalan di negara2 lain di luar jurisdiksi mereka. Memburu Node dan miner di setiap pelosok planet bumi juga susah, karena ada negara yang merasa diuntungkan dan dirugikan oleh bitcoin, akan selalu ada yang pro dan kontra. Yang akan menghentikan bitcoin mungkin perang dunia ke-3 ketika semua satelit ditembak jatuh dan semua pembangkit listrik di dunia mati. Selama masih ada node dan miner yang berjalan selama itu bitcoin tetap ada. Mungkin bitcoin akan menjadi interstellar currency di masa depan ketika manusia saat ini sudah punah dan keturunannya sudah merge dengan robot dan AI. Jangan kawatir, anda dan saya sudah akan lama jadi debu.
FYI, Miner dan Node tidak harus berupa komputer yang sama, miner di Indonesia bisa terkoneksi dengan node yang ada di Austria, beberapa bulan lalu ketika Cina melarang mining bitcoin dan cryptocurrency lainnya, miner-miner di Cina terpaksa harus tutup dan pindah ke negara lain. Ada sekitar 14755 node yang berjalan di 86 negara saat ini menurut https://bitnodes.io/. Sekitar 7500 nodes tidak bisa terdeteksi lokasinya karena melalui dark web (Tor Network).
xG=Q
x= private key, ini adalah berapa kali point doubling dilakukan terhadap point G (generator point), Q adalah public key atau hasil point doubling terhadap titik G sebanyak x kali. Nilai x inilah yang sulit ditebak karena jumlahnya terlalu banyak. Walaupun nilai G dan Q diketahui, nilai x tidak bisa diketahui dengan mudah, anda perlu melakukan trial triliun-triliunan kali selama jutaan tahun baru bisa menemukan nilai x yang benar, ini adalah esensi dari trapdoor function dan enkripsi bitcoin.
Jika x=???
G=55066263022277343669578718895168534326250603453777594175500187360389116729240
Q=33886286099813419182054595252042348742146950914608322024530631065951421850289
Walaupun rumusnya terlihat sangat sederhana xG=Q, seandainya G dan Q adalah angka biasa (integer) maka sangat gampang dihitung tinggal Q/G=x, maka nilai x akan ditemukan, tetapi karena Q dan G adalah titik pada kordinat dua dimensi x dan y, maka hitungannya tidak bisa dibalik seperti itu. Untuk menebak x harus dilakukan operasi point doubling berkali kali hingga menghasilkan nilai Q yang diharapkan, ini yang hampir mustahil, sehingga membuat enkripsi bitcoin itu aman.
Mohon di koreksi kalau ada yg salah.
Referensi:
Penjelasan dan kode ECDSA yang sangat detil dan bagus: https://learnmeabitcoin.com/technical/ecdsa
Cara Kerja Sha256: https://www.youtube.com/watch?v=f9EbD6iY9zI&t=48s
Cara Kerja Private key dan Public Key:
Tingkat keamanan Sha256:
Comments
Post a Comment