Skip to main content

Memahami BITCOIN (Part 1)





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 Private key dan Public Key:

Tingkat keamanan Sha256:



Comments

Popular posts from this blog

Apakah Kita Bisa Berenang di Kolam Penyimpanan Sisa Bahan Bakar Nuklir? Spent Nuclear Fuel Pool - The Forbidden Pool

Ini adalah foto kolam penyimpanan sisa bahan bakar reaktor nuklir. Katanya kalau renang di sana anda tidak akan kena radiasi mematikan kecuali mendekati batang-batang nuklir (rods) yang di simpan di peti di dasar kolam. Suhu air dalam kolam juga tidak begitu panas sekitar 35 derajat Celcius karena kolam selalu di isi ulang dengan air dingin murni secara berkala. Sementara di dalam reaktor yang aktif beroprasi batang2 nuklir (rods) bisa membuat air mendidih sampai 300 derajat Celcius sehingga menghasilkan uap yang di alirkan untuk memutar turbin dan menghasilkan listrik. Jika air pendingin tidak di ganti secara berkala itu bisa mengakibatkan bencana nuclear meltdown seperti yang terjadi di Chernobyl dimana reaktor meledak karena kelebihan uap dan batang2 nuklir tersebut melelehkan bangunan reaktor nuklir yang di desain untuk mengcontain mereka. Tapi seandainya anda nekat untuk renang di sana kemungkinan besar anda akan mati di tembak security sebelum nyebur ke kolam. "U

Digital Signature: Bagaimana Private Key diverifikasi Bitcoin Network tanpa membeberkan Private Key tersebut.

Untuk Membahas topik ini sebaiknya anda memahami dulu apa itu Private Key dan Public Key dalam ECDSA. Itu sudah saya bahas cukup jelas disini. Digital Signature (tanda tangan digital) memiliki dua bagian: 1. Bagian acak. 2. Bagian Signature. Ini terdiri dari Private Key + Data transaksi yang sedang kita buat tanda tangan digitalnya.   Bagian acak Mulailah dengan menghasilkan sebuah angka acak . Kemudian kalikan angka ini dengan titik generator pada kurva eliptik (titik generator yang sama digunakan saat membuat kunci publik di ECDSA). Titik generator selalu sama pada setiap operasi ECDSA bitcoin. Bagian acak dari tanda tangan digital adalah titik pada kurva yang didapatkan diatas. Tapi kita ambil koordinat x-nya saja, ini kita sebut sebagai (r) :   Ini pada dasarnya sama dengan membuat kunci privat dan kunci publik. Tapi di sini kami melakukannya untuk menambahkan elemen acak ke tanda tangan digital kami. Angka acak itu bisa didapat dari sumber entropi yang bermacam-macam dari aplik

ENTROPY: Bagaimana cara hardware wallet mendapat angka acak untuk dijadikan seed phrase (private key)?

Setiap kali anda membeli hp baru pasti diminta untuk memasukkan password atau pattern rahasia yang hanya anda yang mengetahuinya, karena jika diketahui orang lain, mereka bisa membuka hp anda dan melihat semua isinya, jika password aplikasi2 bank anda di hp tersebut ketahuan mereka bisa mencuri uang anda juga. Itulah sebabnya nomor rahasia atau password sangat penting untuk dirahasiakan dan tidak mudah ditebak. Jika password anda hanya berupa tanggal lahir anda atau anak anda, maka tentu saja itu akan sangat mudah ditebak karena data pribadi penduduk Indonesia sangat sering dibocorkan, nama, alamat, tempat tanggal lahir sudah pasti dapat diketahui, banyak juga yang mempamerkan itu semua di media sosial mereka. Jadi password pribadi harus kombinasi huruf, angka, dan simbol yang tidak mudah ditebak oleh orang lain. Apa itu? Entahlah, mungkin nama tempat yang hanya anda yang ketahui ditambah angka dan simbol acak, atau apa saja, semakin sulit ditebak dan semakin panjang kombinasi huruf an