
Artikel ini adalah kutipan dari buku tersebut Panduan Orang Awam untuk Bitcoin oleh Logan Brutsche dan diterbitkan ulang di sini dengan izin dari penulisnya.
Kriptografi adalah ilmu yang menerapkan fungsi matematika pada potongan data untuk menjamin keamanannya.
Banyak fiksi populer yang menyiratkan bahwa sistem apa pun dapat diretas, selama Anda memiliki peretas yang cukup baik. “Peretasan Hollywood” ini bukanlah cara kerja dunia nyata — peretas harus menemukan kerentanan dalam sistem untuk dieksploitasi, seperti ruang server yang tidak terkunci, sandi yang mudah ditebak, port jaringan yang tidak dilindungi, atau “pintu belakang” dipasang sebagai pekerjaan dalam untuk mendapatkan akses tidak sah nanti.
Memang benar, kami tidak pernah dapat menjamin bahwa sistem tertentu tidak memiliki kerentanan — lagipula, sistem dibuat oleh manusia yang tidak sempurna — sentimen bahwa “apa pun dapat diretas” adalah salah. Sejak awal 90-an, kami memiliki akses ke teknik kriptografi yang cukup kebal terhadap peretasan. Penerapan teknik semacam itulah yang terkadang menyisakan ruang untuk eksploitasi.
Kriptografi itu sendiri tidak dapat diretas untuk menghasilkan tanda tangan kriptografi palsu (didefinisikan segera), sama seperti matematika tidak dapat diretas untuk membuat 2 + 2 = 5 — meskipun kriptografi dan matematika dapat digunakan secara tidak benar. Jika sistem yang menggunakan kriptografi gagal, itu karena desainer salah menerapkan kriptografi. Ini bukan karena kriptografi tidak berfungsi, atau karena seseorang “meretas” kriptografi — sama seperti itu bukan kesalahan matematika jika bank Anda salah menangani akun Anda, atau kesalahan email saat ibu Anda mengunduh lampiran yang tidak dikenal dan terkena virus komputer . Ini adalah perbedaan penting, karena Bitcoin secara langsung merupakan aplikasi kriptografi yang sudah mapan.
Kriptografi bukanlah teknologi baru yang belum teruji. Semua teknik kriptografi yang digunakan oleh Bitcoin telah digunakan sejak dimulainya Internet, dan penting untuk banyak protokol Internet yang umum digunakan setiap hari.. Ilmu kriptografi dianggap dapat diandalkan dan penting oleh ilmuwan komputer dengan cara yang sama seperti ilmu roket dianggap dapat diandalkan dan penting oleh NASA..
Keypairs: Landasan Kriptografi
Keypairs adalah landasan kriptografi yang digunakan dalam blockchain. Sebuah keypair memiliki dua bagian: kunci pribadi dan kunci publik. Kunci-kunci ini sebenarnya tidak lebih dari angka yang sangat besar dengan hubungan matematis tertentu, digunakan sebagai pengganti kata sandi dan nama pengguna.
Anda akan menangani kunci publik seperti nama depan atau nama pengguna Anda: dalam banyak kasus, Anda membagikannya dengan siapa pun yang meminta, dan mereka yang memilikinya dapat menggunakannya untuk merujuk atau menghubungi Anda. Ini terkait dengan reputasi Anda (atau dalam kasus Bitcoin, riwayat transaksi Anda), jadi Anda mungkin memiliki beberapa kunci publik (dan karenanya beberapa pasangan kunci) yang Anda gunakan untuk tujuan yang berbeda. Kunci publik dapat digunakan untuk mereferensikan atau melihat akun, tetapi tidak dapat dengan sendirinya mengizinkan tindakan apa pun pada akun tersebut.
Kunci pribadi harus diperlakukan seperti sandi: tidak boleh dibagikan dengan siapa pun, dan digunakan untuk mengautentikasi tindakan tertentu, seperti mengirim BTC.
Tetapi ada perbedaan penting antara kunci pribadi dan kata sandi. Untuk menggunakan kata sandi, Anda harus mengirimkannya ke seseorang atau server sehingga dapat diperiksa dengan catatan mereka. Anda harus percaya bahwa kata sandi akan ditangani secara bertanggung jawab setelah mengirimkannya. Sebaliknya, kunci pribadi dapat digunakan untuk mengautentikasi diri Anda sendiri tanpa mengirimnya ke mana pun. Satu-satunya tempat yang pernah disimpan atau digunakan langsung adalah di perangkat lokal Anda.
Ini penting, karena jika Anda dapat mengautentikasi diri sendiri tanpa mengirim rahasia ke mana pun, Anda tetap dapat mengontrol keamanannya sepenuhnya — Anda tidak rentan terhadap penyimpangan keamanan dari sistem lain. Ini adalah bagian penting dari apa yang membuat Bitcoin tidak dapat diretas. Tidak ada kata sandi atau kunci pribadi yang disimpan di Bitcoin itu sendiri untuk disusupi oleh penyerang, namun pengguna masih dapat mengautentikasi transaksi.
Tetapi bagaimana Anda bisa menggunakan kunci pribadi untuk mengautentikasi transaksi, jika Anda tidak pernah mengirim kunci pribadi ke mana pun? Jawabannya berkaitan dengan hubungan matematika antara kunci privat dan publik: tanda tangan kriptografi.
Tanda Tangan Kriptografi
Ada beberapa teknik berbeda untuk menghasilkan dan memvalidasi tanda tangan kriptografi, dan teorema matematika yang memungkinkannya bekerja jauh di luar cakupan artikel ini. Bagi mereka yang tidak terbiasa dengan kriptografi, proses yang dijelaskan di sini mungkin awalnya terdengar mustahil. Saya ingat dengan jelas kesan ini ketika saya memulai penelitian saya ke Bitcoin empat tahun lalu.
Untuk saat ini saya hanya akan mencatat lagi bahwa teknologi ini digunakan di banyak protokol Internet yang umum, dan merupakan bagian mapan dari ilmu informasi.
Bayangkan dua orang, Alice dan Bob, yang telah memperdagangkan kunci publik secara langsung. Alice ingin mengirim pesan kepada Bob, tetapi Bob adalah orang yang sangat mencurigakan, dan tidak akan percaya bahwa pesan itu benar-benar berasal dari Alice kecuali dia dapat membuktikannya secara matematis, tanpa keraguan. Untuk memfasilitasi pembuktian ini, mereka setuju untuk menggunakan tanda tangan kriptografi.
Untuk membuat tanda tangan, Alice menggunakan algoritme pembuatan tanda tangan komputernya, yang mengambil kunci pribadinya dan pesan lengkapnya, serta menghasilkan tanda tangan kriptografik sebagai masukan. Dia kemudian mengirimi Bob pesan ini / kombo tanda tangan — tapi, yang terpenting, tidak mengirim kunci pribadinya.
Saat Bob menerima pesan dan tanda tangan, ia memiliki algoritme validasi tanda tangan pelengkap untuk digunakan. Algoritma ini mengambil sebagai masukan pesan dan tanda tangan, dan menentukan publik kunci keypair yang digunakan Alice untuk membuat tanda tangan. Ketika Bob melihat algoritmanya mengeluarkan kunci publik Alice, dia telah membuktikan secara matematis bahwa tanda tangan itu pasti dibuat dengan pasangan kunci Alice, meskipun dia tidak tahu dan tidak dapat menghitung separuh privat dari pasangan kunci Alice.
Jelaskan lebih ringkas, proses tanda tangan kriptografi ini memungkinkan Bob untuk memverifikasi bahwa pesan tidak dibuat atau diubah oleh beberapa pihak ketiga dan harus dibuat dengan kunci pribadi Alice, tanpa harus (atau dapat) mengetahui kunci pribadinya. Yang dia butuhkan hanyalah kombinasi pesan / tanda tangan dan kunci publiknya.
Secara intuitif, ini sepertinya tidak mungkin, dan Anda mungkin merasa seolah-olah Anda telah salah memahami sesuatu. Jika kunci privat dan publik Alice sangat terkait erat, dan Alice menggunakan kunci privatnya untuk membuat tanda tangan yang diterima Bob, bagaimana dia bisa mendapatkan kunci publiknya tetapi tidak dapat menemukan kunci privatnya? Jawaban atas pertanyaan ini membutuhkan pemahaman matematika yang jauh lebih dalam daripada yang dimiliki kebanyakan orang, dan jauh di luar cakupan buku ini.
Namun, teknik ini diandalkan dan digunakan setiap hari, dan dianggap sangat kokoh dalam komunitas kriptografi. Saat Anda mengunjungi situs web dan alamatnya dimulai dengan https, “s” menunjukkan bahwa situs tersebut telah memvalidasi dirinya sendiri dengan tanda tangan kriptografik. Komputer Anda menggunakan algoritme validasi tanda tangan, seperti yang dilakukan Bob pada contoh di atas, untuk memverifikasi situs web benar-benar berasal dari pasangan tombol yang benar. Tanda tangan kriptografi ini diandalkan untuk memastikan interaksi lebih lanjut antara Anda dan situs web dienkripsi dan otentik. Jika pengujian ini gagal, browser modern akan memperingatkan Anda dan menandai situs web tersebut sebagai berbahaya.
Angka Yang Cukup Besar
Sebelumnya, saya secara singkat menyebutkan bahwa kunci pribadi dan publik berfungsi seperti nama pengguna dan kata sandi, tetapi pada kenyataannya tidak lebih dari angka yang sangat besar dengan hubungan matematika khusus. Karena itu, saya sering ditanyai pertanyaan-pertanyaan berikut:
“Tidak bisakah seseorang memiliki komputer menebak, atau menghitung, sekumpulan angka dan mencobanya sebagai kunci pribadi? Bukankah mereka pada akhirnya akan menemukan kunci pribadi dari beberapa pasangan kunci yang ditargetkan, dan dengan demikian mendapatkan kendali atas identitas itu? ” Memang, dalam kasus Bitcoin, ini akan memungkinkan penyerang mencuri uang yang dipegang oleh beberapa keypair.
Itu pertanyaan yang bagus, namun itu tidak terjadi. Seperti yang dinyatakan sebelumnya, ada beberapa alamat Bitcoin dengan BTC senilai jutaan dolar yang tidak berpindah selama bertahun-tahun — meskipun semua yang diperlukan untuk mencurinya adalah kunci pribadi yang tepat — jumlah yang sangat besar! Jika Anda bisa menebak kunci pribadi ke alamat tersebut, uang itu milik Anda untuk dikirim ke mana saja. Tidak seperti kata sandi, Anda dapat memeriksa kunci pribadi secara lokal di mesin Anda sendiri, dan tidak ada server yang membatasi berapa kali atau seberapa cepat Anda mencobanya.
Jadi, mengapa belum ada yang mencuri dana ini? Jawabannya terletak pada ukuran angka yang hampir tidak masuk akal yang digunakan sebagai kunci privat. Mereka cukup besar.
Mari kita mulai dengan eksperimen pikiran sederhana. Bayangkan kunci pribadi Anda cukup besar sehingga jika semua komputer di dunia bekerja sama, mereka akan membutuhkan waktu 24 jam penuh untuk memaksa menebaknya. Jika Anda menambahkan satu digit lagi ke kunci pribadi Anda, akan ada sepuluh kali lebih banyak permutasi untuk dilalui komputer, jadi akan memakan waktu 10 hari daripada satu. Enam digit lagi akan membuatnya menjadi 27.000 tahun.
Dalam setiap kasus, membuat kunci privat — yang hanya membutuhkan kemampuan untuk membuat angka acak — tetap remeh. Menggunakan kunci pribadi untuk menghasilkan tanda tangan, serta memeriksa tanda tangan ini terhadap kunci publik, juga tetap sederhana secara komputasi. Tetapi pekerjaan yang diperlukan untuk menebak kunci privat tumbuh secara eksponensial dengan setiap digit tambahan. Untuk membuat kunci pribadi “kebal” terhadap tebakan paksa, kita hanya perlu menambahkan angka yang cukup — kita hanya perlu membuatnya cukup besar.
Jadi seberapa besar itu cukup besar? Kunci pribadi yang digunakan dalam Bitcoin adalah bilangan bulat 256-bit, yang berjumlah tujuh puluh enam digit. Kekuatan ukuran angka ini luar biasa. Ilustrasi berikut diambil dari buku Bruce Schneier Kriptografi Terapan, dan merupakan demonstrasi menarik dari jumlah yang cukup besar.
Pertama, ketahuilah bahwa konsekuensi spesifik dari hukum kedua termodinamika adalah adanya energi minimum yang diperlukan untuk mengubah satu bit informasi biner (mengubah 1 menjadi 0 atau sebaliknya). Ini berarti setiap proses komputasi membutuhkan energi minimum untuk bekerja, terlepas dari perangkat keras yang digunakan.
Sekarang misalkan Anda dapat memanfaatkan seluruh output energi matahari hanya untuk menyalakan komputer yang dirancang khusus, yang tugasnya menghitung atau menebak kunci pribadi, dengan harapan menemukan kunci pribadi dari keypair (yang mungkin mengontrol BTC).
Dengan menggunakan sedikit matematika dan termodinamika, Anda akan menemukan bahwa komputer yang sangat efisien dapat menghitung hingga 2.178 nilai berdasarkan seluruh keluaran energi tahunan matahari. Jika kita membagi nilai ini menjadi jumlah kemungkinan kunci privat, 2256, kami menemukan bahwa komputer hipotetis ini hanya akan dapat menebak atau menghitung melalui 0,000000000000000000000003% dari jumlah total kunci privat yang mungkin — mengingat seluruh keluaran energi tahunan matahari.
Selain itu, ini hanya penghitungan, dan tidak termasuk tugas yang jauh lebih rumit untuk benar-benar memeriksa setiap kunci pribadi untuk melihat apakah itu sesuai dengan kunci publik yang benar. Jadi dalam kemungkinan 0,000000000000000000000003% komputer ini benar-benar terjadi di kunci pribadi yang benar pada akhir tahun, bahkan tidak akan menyadarinya.
Angka-angka ini tidak ada hubungannya dengan teknologi perangkat; mereka adalah hasil maksimal yang dimungkinkan menurut hukum termodinamika yang telah ditetapkan sejak tahun 1930-an. Dan mereka sangat menyiratkan bahwa serangan brute force terhadap kunci 256-bit (yang digunakan Bitcoin) tidak akan mungkin sampai komputer dibuat dari sesuatu selain materi dan menempati sesuatu selain ruang..
Ini adalah kekuatan dari jumlah yang cukup besar. Tidak peduli seberapa bagus seorang hacker. Kecuali dia dapat memanfaatkan kekuatan tiga ratus sextillion matahari selama satu tahun, atau satu matahari selama tiga ratus sextillion tahun, komputernya bahkan tidak dapat menghitung melalui semua kunci privat — apalagi menguji atau menggunakannya.
Untuk pembahasan yang lebih mendalam tentang Bitcoin dan kriptografi, ambil buku Logan Brutsche, Panduan Orang Awam untuk Bitcoin.
