MSTR Cat

Blockchain/Tahap II · Mekanisme/2.1 Kriptografi/Pelajaran 4

Tandatangan digital: ECDSA dan Schnorr

Jabat tangan matematik yang membenarkan perbelanjaan tanpa mendedahkan kunci

BahanPenjelajah blok yang memaparkan data witnessSatu perbelanjaan SegWit natif dan satu perbelanjaan laluan kunci (key-path) Taproot untuk dibandingkan

Ingin tahu

  1. Bagaimanakah tandatangan membuktikan kawalan terhadap nombor rahsia tanpa mendedahkannya?
  2. Mengapa PlayStation 3 milik Sony dan beberapa dompet Bitcoin berasaskan Android kehilangan kunci mereka akibat penggunaan semula atau nilai nonce yang boleh diramal?
  3. Apa yang menjadikan tandatangan Schnorr lebih kecil, lebih cepat, dan mampu digabungkan berbanding ECDSA?

Teroka

  1. Tandatangan digital membuktikan pemilikan kunci peribadi tanpa mendedahkannya. Dalam Bitcoin, membelanjakan output transaksi memerlukan hash transaksi ditandatangani dengan kunci peribadi yang sepadan dengan kunci awam dalam skrip penguncian output tersebut. Sesiapa sahaja boleh mengesahkan tandatangan itu menggunakan kunci awam dan hash mesej. Mekanisme ini memastikan hanya pemegang kunci yang boleh membenarkan pemindahan sambil mengekalkan privasi.
  2. ECDSA, yang distandardkan dalam ANSI X9.62 (1999), telah menjadi skema tandatangan utama Bitcoin sejak tahun 2009. Ia menghasilkan sepasang nilai (r, s) daripada hash mesej dan nonce rahsia k. Nilai r ialah koordinat x bagi titik k·G; nilai s ialah k⁻¹(hash + x·r) mod n, dengan x ialah kunci peribadi. Oleh sebab setiap tandatangan memerlukan k rawak yang baharu, penggunaan semula atau kebocoran k membolehkan penyerang mengira kunci peribadi secara langsung.
  3. Kunci penandatanganan PlayStation 3 milik Sony telah terjejas pada tahun 2010 apabila fail0verflow menunjukkan bahawa Sony menggunakan semula nonce yang sama bagi semua tandatangan. Bitcoin mengalami kecurian yang serupa pada Ogos 2013 akibat kelemahan SecureRandom dalam Android, yang menghasilkan nonce yang boleh diramal. RFC 6979 (2013) menyelesaikan masalah ini dengan menerbitkan k secara deterministik daripada kunci peribadi dan hash mesej, sekali gus menghapuskan kebergantungan pada sumber kerawakan luaran.
  4. Tandatangan ECDSA bersifat malleable: bagi sesuatu nilai r, wujud dua nilai s yang sah (s dan n−s). Pihak ketiga boleh menukar masuk tandatangan yang setara itu, lalu mengubah ID transaksi tanpa menjadikannya tidak sah. Polisi Bitcoin mewajibkan normalisasi 'low-S', iaitu mengehadkan s kepada separuh bawah peringkat lengkung. Kekangan ini memastikan setiap mesej hanya mempunyai satu tandatangan kanonik bagi setiap nonce.
  5. Tandatangan Schnorr, yang dipatenkan oleh Claus-Peter Schnorr (paten AS diberikan pada tahun 1991, tamat tempoh pada tahun 2008) dan distandardkan untuk Bitcoin dalam BIP340, menghasilkan tandatangan bersaiz tetap 64 bait tanpa overhed pengekodan DER. Tandatangan ini bersifat linear: dengan protokol yang teliti, beberapa kunci awam boleh digabungkan menjadi satu kunci agregat dan tandatangan-tandatangannya menjadi satu tandatangan. Ini membolehkan skema multisig MuSig2 yang kelihatan seperti output penandatangan tunggal on-chain, sekali gus mengurangkan saiz transaksi dan meningkatkan privasi.
  6. Taproot diaktifkan pada November 2021 (blok 709,632), memperkenalkan sokongan tandatangan Schnorr natif untuk output P2TR. Perbelanjaan laluan kunci (key-path) hanya memerlukan tandatangan 64 bait dalam witness, berbanding tandatangan ECDSA 71-72 bait ditambah kunci awam 33 bait bagi perbelanjaan P2WPKH. Saiz tetap ini memudahkan penghuraian (parsing), dan Schnorr membenarkan pengesahan kelompok (batch verification), iaitu memeriksa banyak tandatangan daripada kunci berbeza secara serentak dengan lebih pantas berbanding satu demi satu, keupayaan yang belum digunakan oleh Bitcoin Core.

Fakta utama

  • ECDSA (ANSI X9.62, 1999) menghasilkan tandatangan yang dikodkan dalam format DER dengan saiz kira-kira 71–72 bait; Schnorr (BIP340) pula menghasilkan tandatangan bersaiz tetap sebanyak 64 bait.
  • Penggunaan semula atau kebocoran nonce ECDSA k mendedahkan kunci peribadi: Sony PS3 (2010) dan kecurian dompet Android (Ogos 2013).
  • RFC 6979 menerbitkan k secara deterministik daripada kunci peribadi dan hash mesej, sekali gus menghapuskan kebergantungan pada penjana nombor rawak.
  • Tandatangan ECDSA bersifat malleable; polisi Bitcoin menguatkuasakan 'low-S' untuk memastikan pengekodan kanonik.
  • Tandatangan Schnorr bersifat linear: kunci dan tandatangan boleh diagregatkan (MuSig2) dan disahkan secara kelompok untuk kecekapan.
  • Taproot diaktifkan pada November 2021 (blok 709,632), memperkenalkan sokongan tandatangan Schnorr natif untuk output P2TR.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 skema tandatangan digital atau jenis kunci. Catatkan badan penstandardannya, tahun, saiz output, dan sama ada ia menyokong agregasi.
6KelompokkanKumpulkan 9 skema tersebut kepada 6 kumpulan mengikut kerumitan pengesahan: saiz tetap linear, saiz berubah malleable, saiz berubah kanonik, boleh disahkan secara kelompok, satu pihak sahaja, atau hibrid.
3SaringKurangkan 6 kumpulan tersebut kepada 3 kompromi (trade-off) utama antara saiz tandatangan, privasi dan kecekapan pengiraan.
1KristalkanTulis 1 ayat tentang apa yang dijamin oleh tandatangan digital mengenai kawalan kunci dan apa yang tidak didedahkannya.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR