Skip to main content

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 aplikasi atau hardware wallet yang digunakan untuk melakukan transaksi.

Sekarang kita sudah memiliki bagian No.1 Bagian acak, ini kita sebut sebagai (r). Tinggal Bagian No.2.
Bagian Signature. Ini terdiri dari Private Key + Data transaksi yang sedang kita buat tanda tangan digitalnya.

1. r dikalikan private key wallet yang akan mengirim transaksi. Seperti representasi dibawah ini. r adalah bagian acak yang pertama, gambar kunci berwarna merah adalah private key.


2. Message (pesan). Message adalah hash dari seluruh data transaksi yang berisi output yang ingin kita buka kuncinya.

 

(r x private key) + message 

Langkah terakhir adalah membagi (r x private key) + message dengan angka acak yang kita gunakan di langkah pertama ketika mencari Bagian Acak diatas. Ini bukan Bagian Acak atau r atau generator point, apalagi private key ya, harus dibedakan. Ini adalah angka acak yang dikalikan generator point untuk memperoleh Bagian acak yang disebut (r) di bagian pertama diatas.

Kalau dirumuskan seperti ini:

        (r x private key) + message 

______________________________        =

                    angka acak


Dengan ini kita akan memperoleh hasil akhir yang disebut Digital Signature atau Signature saja untuk dipersingkat. Ini bisa disingkat sebagai s.

 

 

Jika seseorang meminta anda untuk membuktikan bahwa anda mengetahui private key untuk sebuah public key (wallet address), anda dapat memberikan Digital Signature (r & s) sebagai bukti. Dengan ini anda bisa membuktikan kepemilikan koin tanpa membeberkan private key anda. Karena jika itu dibeberkan maka koin ada bisa dicuri orang yang mengetahuinya.


Bagaimana cara orang membuktikan kalau Signature itu benar? 

 

Untuk memverifikasi kita membutuhkan dua titik di elliptic curve. Titik pertama adalah:

(Message / Signature) x Generator Point

Message dan Signature bisa didapat dari semua data pembuatan Digital Signature diatas. Sedangkan Generator Point atau Titik Generator selalu sama untuk ECDSA.

Titik kedua adalah:

( r / Signature ) x public key

Kita bisa memperoleh r dan Signature dari data Digital Signature diatas, tetapi disitu tidak ada informasi public key. Lalu public key si pengirim transaksi didapat dari mana?

Itu diperoleh dari output transaksi sebelumnya dimana si pengirim saat ini memperoleh bitcoin yang dia miliki - yang akan dikirim ke wallet lain di transaksi yang kita bikin saat ini.

Karena sebelum anda bisa mengirim bitcoin tentu saja anda harus sudah menerima bitcoin itu dari orang lain sebelumnya kan. Kalau anda miner berarti itu didapat dari coinbase transaction di block yang berhasil anda mining. Karena semua bitcoin yang ada bisa di lacak mundur ke semua wallet sebelumnya dimana koin itu berasal sampai titik akhir dimana bitcoin itu diciptakan pertama kali pada coinbase transaction. Setiap kurang lebih 10 menit ada miner yang berhasil menambang block yang baru dan mereka akan memperoleh bitcoin sebagai penghargaan. Bitcoin dalam block inilah yang disebut coinbase transaction karena itu muncul tanpa berasal dari wallet address sebelumnya tetapi diciptakan dari ketiadaan di block baru tersebut. Jumlah bitcoin yang diberikan didalam setiap block baru ini sudah ditentukan di kode software bitcoin dan ini tidak bisa diubah tanpa konsensus semua miner dan node yang menjalankan bitcoin. Jumlah penghargaan bitcoin ini berkurang setengahnya setiap 4 tahun. Saat ini pada 8 Juni 2023, penambang yang berhasil memvalidasi blok baru di blockchain Bitcoin akan mendapatkan 6,25 BTC. Namun, hadiah ini akan dikurangi pada halvening berikutnya, yang diperkirakan akan terjadi pada tahun 2024. Setelah itu miner akan memperoleh 3,12 Bitcoin untuk setiap block yang berhasil divalidasi. Proses Mining/menambang bitcoin lebih jelasnya bisa baca disini.

Ok, sampai disini saya harap anda memahami darimana public key itu diperoleh.

 



LANGKAH TERAKHIR: Tarik garis lurus yang melewati titik 1 dan 2, itu akan menghasilkan titik ketiga (berwarna hijau di gambar dibawah ini).

 

 

Jika titik koordinat x ketiga ini (titik hijau diatas) sama dengan koordinat x pada (r) Bagian acak yang kita bahas pertama kali di bagian teratas artikel ini, maka ini diterima sebagai bukti bahwa titik ketiga dan r diciptakan dengan private key yang sama. Dengan ini transaksi tersebut akan diterima dalam network bitcoin. Dengan ini kerahasiaan private key tetap terjaga.


Singkatnya,

Tanda Tangan Digital (Penandatanganan & Verifikasi) diatas adalah proses Membuktikan bahwa Signature dan Public Key dibuat oleh Private Key yang sama. Tanpa membeberkan Private Key tersebut.

Ini penting karena kerahasiaan private key adalah hal utama dalam keamanan bitcoin. Terutama dalam cold/hardware wallet. Ketika anda mengirim transaksi dengan hardware wallet, wallet tersebut hanya mengirim Digital Signature tanpa membeberkan private key anda. Sehingga private key anda lebih aman dibandingkan jika anda mengirim transaksi langsung dari aplikasi di hp atau komputer, dimana private key anda tersimpan di hp dan komputer tersebut, jadi walaupun kecil kemungkinannya, private key anda bisa saja diretas oleh peretas yang berhasil mengakses hp atau komputer anda. Disinilah pentingnya penggunaan hardware wallet yang tidak terkoneksi ke internet. Agar kemungkinan private key anda diretas semakin kecil.


Gambar2 dan sebagian besar tulisan ini dicopy dari https://learnmeabitcoin.com/beginners/digital_signatures_signing_verifying

 

Video youtube yang mendalami kode-kode dalam proses ini bisa dilihat disini: https://www.youtube.com/watch?v=U2bw_N6kQL8

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

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