83 / 736HC

Hashcash

Ongkos kirim berupa komputasi yang ikut menginspirasi Bitcoin

Hashcash ingin membuat spam lebih mahal: sebelum mengirim pesan, komputer harus melakukan sedikit pekerjaan. Mencari hasil yang sesuai lebih sulit daripada memeriksanya. Perbedaan ini kemudian menjadi salah satu unsur dasar Bitcoin.

Hashcash adalah sistem perangko komputasi berbasis Proof of Work, yaitu bukti pekerjaan yang dilakukan. Perangko menunjukkan bahwa hasil yang memenuhi syarat tertentu telah ditemukan. Perangko itu sendiri bukan bitcoin atau saldo rekening yang dapat dipindahkan.

Anna ingin mengirim surel kepada Pavel. Mengirim satu salinan lagi hampir tidak membutuhkan biaya, tetapi pengirim jutaan iklan juga menikmati keuntungan yang sama. Hashcash menambahkan hambatan kecil: komputer pengirim harus membuat perangko komputasi terlebih dahulu. Biayanya berupa waktu dan energi, bukan pembayaran kepada kantor pos. Adam Back mengumumkan implementasinya pada 28 Maret 1997 dan menerbitkan penjelasan teknis pada 2002. Cynthia Dwork dan Moni Naor sudah meneliti gagasan serupa pada 1992. Hashcash merupakan bagian dari sejarah upaya membatasi penyalahgunaan jaringan. [1] [12]

Hash adalah sidik jari dengan panjang tetap yang dihitung dari data. Program Anna mengubah nilai percobaan di dalam perangko dan menghitung ulang sidik jarinya sampai hasilnya diawali cukup banyak bit nol. Bit adalah satu digit biner, nol atau satu. Jika syaratnya b nol, peluang keberhasilan setiap percobaan kira-kira 2^-b, dengan rata-rata 2^b percobaan. Untuk b = 20, rata-ratanya 1048576 perhitungan, bukan jumlah pasti yang wajib dilakukan. Kadang program cepat beruntung, kadang lebih lama. Pavel memeriksa perangko jadi dengan satu perhitungan hash, tetapi tetap harus memeriksa data serta aturan penerimaannya. [10] [11]

Jika Anna bisa memasang satu perangko pada sejuta pesan, hambatan itu kehilangan tujuannya. Karena itu, perangko menyebut penerima atau layanan tertentu dan tanggal. Penerima memeriksa keabsahan serta mencatat perangko yang diterima untuk menolak pemakaian ulang, yang disebut replay. Tanggal saja, bahkan pengikatan pada isi pesan, tidak mencegah pesan yang sama dikirim kembali. Hashcash tidak memiliki catatan pengeluaran global bersama; pemeriksaan tersebut dilakukan layanan penerima. Hash yang benar belum berarti perangko boleh diterima lagi. [11] [12]

Layanan penerima menentukan tingkat kesulitan. Setiap tambahan bit nol kira-kira menggandakan pekerjaan rata-rata. Syarat yang terlalu ringan nyaris tidak memperlambat pengirim spam; yang terlalu berat juga membebani pengguna biasa. Jadi, angka 20 adalah contoh, bukan standar keamanan abadi. Jumlah percobaan yang sama pun memerlukan waktu berbeda pada ponsel lama dan komputer cepat. Layanan harus mempertimbangkan kemampuan perangkat, masa berlaku, dan kapasitasnya sendiri. Hashcash tidak memaksa semua orang menghabiskan jumlah detik yang sama. [10] [11]

Pekerjaan komputasi tidak membedakan pengguna baik-baik dari penyerang. Pengirim spam dengan banyak komputer atau botnet, jaringan perangkat yang telah dikuasai penyerang, dapat membagi pekerjaan dan membebankan sebagian biayanya kepada orang lain. Sementara itu, baterai pengguna biasa ikut terkuras. Hashcash berusaha mengubah biaya serangan, bukan menjamin hilangnya spam. Perangko juga tidak mengenkripsi pesan, membuktikan identitas resmi pengirim, atau menjamin pengiriman. Ia merupakan satu syarat penerimaan yang bisa digabungkan dengan perlindungan lain. [10]

Versi 1 memakai format 1:bits:date:resource:ext:rand:counter. Kolomnya menunjukkan versi, tingkat kesulitan yang diklaim, tanggal, penerima atau layanan, ekstensi, nilai acak, dan penghitung yang berubah. Kolom bits menyatakan jumlah bit nol di awal hash menurut pengirim, bukan jumlah percobaan yang benar-benar dilakukan komputer. Nama kolom merupakan bagian format teknis dan tidak diterjemahkan. Implementasi klasik menghitung SHA-1 untuk seluruh rangkaian karakter. Sidik jari sebenarnya harus memenuhi syarat; menuliskan angka dalam bits saja tidak cukup. Ini penjelasan format historis, bukan anjuran menggunakan SHA-1 dalam rancangan keamanan baru. Bitcoin memakai format data dan fungsi hash yang berbeda. [11] [13]

Di sini kita mencari masukan yang sidik jarinya memiliki awal tertentu. Masukan seperti ini disebut partial preimage: hash-nya memenuhi syarat pada bagian yang ditentukan, sedangkan bagian lainnya boleh bernilai apa saja. Sebaliknya, benturan atau collision terjadi ketika dua masukan berbeda menghasilkan sidik jari yang sama. Beberapa tulisan lama memakai ungkapan lebih longgar partial collision, tetapi perbedaannya penting untuk memahami pekerjaan. Serangan yang menemukan benturan SHA-1 tidak otomatis menyelesaikan pencarian awalan yang diminta. Namun, ini juga tidak menjadikan SHA-1 pilihan umum yang tepat untuk keamanan masa kini. [10] [11] [13]

Pada 2004, Hal Finney memperkenalkan RPOW, Reusable Proofs of Work. Pengguna dapat menyerahkan bukti pekerjaan dan menerima token baru. Pada pemindahan berikutnya, token lama dibatalkan lalu diganti dengan token baru. Pemakaian ulang bukan berarti bebas menyalin perangko yang sama. Sistem bergantung pada server dengan modul aman IBM 4758 dan pemeriksaan jarak jauh terhadap program yang berjalan. Ini mengurangi kepercayaan yang dibutuhkan kepada operator, tetapi tetap menyisakan asumsi tentang perangkat keras dan produsennya. RPOW adalah pendahulu eksperimental, bukan konsensus terdesentralisasi Bitcoin. [7] [15]

Bitcoin Whitepaper secara jelas merujuk pada Hashcash karya Back. Satoshi memakai perbedaan dasar yang sama: mencari hasil memerlukan percobaan berulang, sedangkan orang lain mudah memeriksanya. Penambang Bitcoin mencari header blok yang sah, yang merangkum satu blok transaksi dan merujuk pada blok sebelumnya. Mereka memakai double SHA-256, dua penerapan SHA-256 berturut-turut, lalu membandingkan hasilnya dengan batas angka bernama target. Ini bukan perangko surel SHA-1 yang dimasukkan ke dompet. Yang sama adalah prinsipnya, bukan seluruh sistemnya. [8] [14]

Ongkos kirim menentukan biaya satu permintaan. Uang juga membutuhkan jawaban tentang mana yang sah di antara dua transfer yang bertentangan. Bitcoin menghubungkan blok, dan node memilih rantai dengan pekerjaan kumulatif terbesar di antara cabang yang sah. Node adalah komputer yang memeriksa aturan; mereka juga memeriksa transaksi serta penerbitan koin yang diizinkan. Pekerjaan sebesar apa pun tidak membuat transaksi tidak sah menjadi sah. Hashcash menyumbangkan unsur penting. Penggabungannya dengan aturan lain memungkinkan riwayat uang bersama tanpa pengelola pusat. [8] [9]

Untuk gambaran yang lebih utuh, baca entri ini bersama Proof of Work, Cypherpunks, Adam Back, Bitcoin Whitepaper, Bitcoin, Hash. Entri ini juga dirujuk dari Cypherpunks, b-money, Bit Gold, Reusable Proofs of Work.

DOC · 001Cynthia Dwork and Moni Naor — Pricing via Processing or Combatting Junk MailSumber primer DOC · 002Adam Back — Hashcash original implementation and announcementSumber primer DOC · 003Adam Back — Hashcash: A Denial of Service Counter-MeasureSumber primer DOC · 004Hashcash — Version 1 stamp format and command documentationDokumentasi DOC · 005Hashcash — FAQ and operational limitsDokumentasi DOC · 006Markus Jakobsson and Ari Juels — Proofs of Work and Bread Pudding ProtocolsSumber primer DOC · 007Hal Finney — RPOW: Reusable Proofs of WorkSumber primer DOC · 008Satoshi Nakamoto — Bitcoin: A Peer-to-Peer Electronic Cash SystemSumber primer DOC · 009Bitcoin Core — Proof-of-work target and difficulty validationDokumentasi DOC · 010Adam Back — Hashcash paper, archival copySumber primer DOC · 011Adam Back — Hashcash manual, Debian distributionSumber primer DOC · 012Adam Back — Hashcash implementation announcement, 28 March 1997Sumber primer DOC · 013NIST — Policy on Hash FunctionsSumber primer DOC · 014Bitcoin Core v29.0 — Block header hashingSumber primer DOC · 015Hal Finney — RPOW NewsSumber primer
Direvisi: Utamakan sumber · Bukan nasihat investasi