Apa Itu ECDSA?
ECDSA adalah singkatan dari Elliptic Curve Digital Signature Algorithm.ECDSA merupakan algoritma kriptografi kunci publik yang digunakan untuk membuat dan memverifikasi tanda tangan digital dengan matematika kurva eliptik.Wallet mata uang kripto menggunakan ECDSA untuk membuktikan bahwa transaksi diotorisasi oleh pemegang kunci privat tertentu.Kunci privat membuat tanda tangan, sedangkan kunci publik yang terkait dengannya memungkinkan node blockchain memverifikasinya.Kunci privat tidak perlu diungkapkan selama proses verifikasi.Tanda tangan ECDSA yang valid juga menunjukkan bahwa data transaksi yang ditandatangani belum diubah sejak tanda tangan dibuat.Digital Signature Standard NIST saat ini mencakup ECDSA sebagai teknik tanda tangan digital yang disetujui untuk aplikasi kriptografi federal tertentu yang didukung.
ECDSA adalah algoritma, bukan blockchain, wallet, mata uang kripto, metode enkripsi, atau kurva eliptik.Implementasi lengkap juga memerlukan kurva yang dipilih, parameter domain, fungsi hash, metode pembuatan kunci privat, encoding tanda tangan, dan aturan format pesan.Mengapa Mata Uang Kripto Menggunakan ECDSA
Jaringan mata uang kripto terdesentralisasi harus memverifikasi otorisasi pengeluaran tanpa bergantung pada satu database akun terpusat.ECDSA memungkinkan setiap pengguna mengendalikan akun atau output yang dapat dibelanjakan melalui kunci privat rahasia.Saat pengguna ingin mentransfer aset kripto, wallet menyusun transaksi dan menandatangani data transaksi yang diwajibkan.Peserta jaringan lainnya memverifikasi tanda tangan menggunakan kunci publik dan aturan validasi protokol.Dengan asumsi komputasi klasik saat ini, tanda tangan yang dibuat dengan benar sangat sulit dipalsukan tanpa kunci privat.Hal ini memungkinkan node blockchain menolak transfer yang tidak diotorisasi sekaligus mengizinkan transaksi valid bergerak melalui jaringan publik.Dibandingkan beberapa sistem kunci publik yang lebih lama dengan tingkat keamanan klasik serupa, ECDSA juga menghasilkan kunci dan tanda tangan yang relatif ringkas.Tanda tangan ringkas penting karena setiap byte tambahan dapat meningkatkan bandwidth jaringan, penyimpanan blockchain, dan biaya transaksi.ECDSA Adalah Algoritma Tanda Tangan, Bukan Enkripsi
ECDSA membuktikan otorisasi dan integritas pesan, tetapi tidak menyembunyikan data yang ditandatangani.Sebagian besar transaksi mata uang kripto publik tetap terlihat oleh peserta blockchain meskipun berisi tanda tangan ECDSA.Tanda tangan tidak mengenkripsi alamat tujuan, jumlah transfer, biaya transaksi, atau instruksi smart contract.Enkripsi mengubah informasi yang dapat dibaca menjadi ciphertext yang memerlukan kunci dekripsi.Sebaliknya, ECDSA menghasilkan bukti matematis bahwa kunci privat mengotorisasi pesan tertentu.Privasi harus disediakan melalui teknik kriptografi, desain protokol, atau kontrol aplikasi terpisah.Dasar Kurva Eliptik
ECDSA beroperasi dalam grup matematis yang dibentuk oleh titik-titik pada kurva eliptik di atas medan berhingga.Bentuk kurva yang umum digunakan ditulis sebagai
Titik generator biasanya dilambangkan sebagai
Orde generator biasanya dilambangkan sebagai
Rekomendasi parameter domain kurva eliptik NIST mendokumentasikan kurva yang disetujui untuk aplikasi yang tercakup dalam standar tersebut.
Kunci Privat dan Kunci Publik
Kunci privat ECDSA adalah bilangan bulat rahasia yang umumnya dilambangkan dengan
Nilainya harus dipilih dari rentang valid antara 1 dan
Hubungan ini umumnya ditulis sebagai
Menghitung
Dengan kurva yang aman dan kunci yang dibuat dengan benar, pemulihan
Apa Itu secp256k1?
secp256k1 adalah kurva eliptik yang paling erat dikaitkan dengan ECDSA dalam dunia mata uang kripto.Kurva ini digunakan untuk tanda tangan transaksi Bitcoin tradisional dan tanda tangan akun milik eksternal Ethereum.Persamaan kurvanya adalah
Proyek libsecp256k1 yang dipelihara menyediakan fungsi penandatanganan, verifikasi, pembuatan kunci, parsing, dan pemulihan kunci publik ECDSA yang dioptimalkan untuk secp256k1.
Cara Membuat Tanda Tangan ECDSA
Proses penandatanganan dimulai dengan kunci privat, pesan, fungsi hash kriptografis, dan parameter kurva yang dipilih.Pesan diproses sesuai aturan serialisasi yang tepat dalam protokol mata uang kripto.Pesan yang diserialisasikan di-hash untuk menghasilkan digest yang biasanya dilambangkan dengan
Penanda tangan memilih nilai rahasia untuk setiap tanda tangan, yang umum disebut nonce dan dilambangkan dengan
Penanda tangan menghitung titik kurva
Nilai tanda tangan pertama,
Jika
Nilai tanda tangan kedua dihitung sebagai
Jika
Tanda tangan ECDSA yang dihasilkan adalah pasangan
Cara Memverifikasi Tanda Tangan ECDSA
Verifier memulai dengan pesan, tanda tangan, kunci publik, parameter kurva, dan aturan hashing yang diwajibkan.Verifier menolak tanda tangan jika
Verifier menghitung
Kemudian, verifier menghitung
Verifier menghitung titik kurva
Tanda tangan gagal jika
Tanda tangan valid jika koordinat x
Hal yang Dibuktikan oleh Tanda Tangan ECDSA
Tanda tangan ECDSA yang valid membuktikan bahwa seseorang yang mengendalikan kunci privat terkait telah menandatangani data yang ditentukan.Tanda tangan juga memungkinkan verifier mendeteksi perubahan pada pesan yang ditandatangani.Tanda tangan tidak dengan sendirinya membuktikan identitas hukum penanda tangan.Kunci publik baru dapat dikaitkan dengan seseorang atau organisasi melalui bukti, pendaftaran, komunikasi, atau riwayat transaksi tambahan.Kunci privat yang dicuri menghasilkan tanda tangan yang secara matematis tidak dapat dibedakan dari tanda tangan yang dibuat pemilik aslinya.Node blockchain memvalidasi kriptografi, bukan menentukan apakah penanda tangan bertindak secara sukarela.Pengguna yang menandatangani transaksi berbahaya tetap telah membuat tanda tangan yang valid.Peran Penting Nonce ECDSA
Nonce penandatanganan
ECDSA Deterministik
ECDSA deterministik menghasilkan nonce penandatanganan dari kunci privat dan digest pesan, alih-alih meminta nilai acak baru untuk setiap tanda tangan.Prosedur penandatanganan deterministik RFC 6979 menetapkan metode yang banyak digunakan berdasarkan konstruksi hash berkunci.
Kunci privat dan pesan yang sama biasanya menghasilkan nonce serta tanda tangan yang sama dengan prosedur deterministik yang sama.Hal ini mengurangi ketergantungan pada kualitas generator angka acak terpisah untuk setiap operasi penandatanganan.Penandatanganan deterministik tidak membuat pembuatan kunci privat yang lemah menjadi aman.Kunci privat awal tetap memerlukan entropi yang kuat.Implementasi deterministik juga harus tahan terhadap serangan timing, serangan fault, kebocoran memori, dan pemrosesan pesan yang keliru.Beberapa implementasi menambahkan keacakan tambahan pada pembuatan nonce deterministik sebagai perlindungan terhadap kondisi fault atau side-channel tertentu.Pentingnya Hashing
ECDSA biasanya menandatangani digest kriptografis, bukan memproses pesan berukuran sembarang secara langsung.Protokol blockchain menentukan secara tepat kolom transaksi mana yang disertakan dan cara serialisasinya sebelum di-hash.Perubahan pada kolom yang ditandatangani seharusnya menghasilkan digest berbeda dan membatalkan tanda tangan lama.Mata uang kripto yang berbeda dapat menggunakan fungsi hash dan aturan komitmen transaksi yang berbeda meskipun menggunakan kurva ECDSA yang sama.Karena itu, pesan dengan teks yang sama dapat menghasilkan tanda tangan berbeda di aplikasi yang berbeda.Developer tidak boleh membuat aturan serialisasi informal karena encoding yang ambigu dapat membuat dua sistem menafsirkan byte yang sama secara berbeda.Protokol yang aman juga menggunakan pemisahan domain agar tanda tangan yang dibuat untuk satu tujuan tidak dapat mengotorisasi tujuan lain.Encoding Tanda Tangan ECDSA
Tanda tangan ECDSA secara matematis terdiri dari dua bilangan bulat,
Sistem mata uang kripto lain menggunakan encoding ringkas dengan lebar tetap, masing-masing berisi 32 byte untuk
Bitcoin dan ECDSA
Bitcoin secara tradisional menggunakan ECDSA pada secp256k1 untuk mengotorisasi pembelanjaan banyak output transaksi.Wallet menandatangani digest khusus transaksi yang ditentukan oleh skrip dan aturan hash tanda tangan yang berlaku.Node Bitcoin memverifikasi kunci publik, tanda tangan, kondisi skrip, dan seluruh persyaratan konsensus lainnya.Tanda tangan saja tidak membuktikan bahwa input memiliki nilai yang cukup atau bahwa transaksi mematuhi setiap aturan protokol.Spesifikasi BIP 66 Bitcoin menetapkan encoding DER ketat sebagai persyaratan konsensus untuk tanda tangan ECDSA yang dievaluasi oleh operasi skrip yang tercakup.
Perubahan ini mengurangi perbedaan antarparser dan mencegah perilaku konsensus bergantung pada aturan parsing pihak ketiga yang berubah-ubah.Pengeluaran Taproot Bitcoin menggunakan tanda tangan Schnorr yang ditentukan oleh BIP 340, bukan ECDSA, untuk jalur tanda tangan barunya.Jenis output tradisional berbasis ECDSA tetap ada dan masih dapat dibelanjakan.Mengapa Parsing Tanda Tangan Ketat Penting
Perangkat lunak konsensus harus menyepakati bukan hanya persamaan tanda tangan, tetapi juga urutan byte mana yang dianggap sebagai tanda tangan valid.Jika satu node menerima encoding yang tidak lazim sementara node lain menolaknya, keduanya dapat berbeda pendapat mengenai validitas transaksi atau blok.Perbedaan ini dapat memecah pandangan jaringan terhadap blockchain.Parsing ketat menghapus encoding alternatif yang merepresentasikan nilai matematis yang sama.Implementasi mata uang kripto sebaiknya menetapkan tanda bilangan bulat, nol di awal, panjang, rentang, dan data tambahan secara tepat.Kriptografi yang kritis bagi konsensus memerlukan kesepakatan tingkat byte di berbagai versi perangkat lunak dan bahasa pemrograman.Ethereum dan ECDSA
Akun milik eksternal Ethereum menggunakan ECDSA pada secp256k1 untuk mengotorisasi transaksi.Pengirim menandatangani digest transaksi yang mengikat kolom seperti nonce, tujuan, nilai, data, parameter biaya, dan jenis transaksi.Tanda tangan Ethereum berisi nilai
Penjelasan lama sering menyebut nilai pemulihan
Perubahan protokol EIP-2 menolak tanda tangan transaksi biasa dengan nilai
Perlindungan Replay Ethereum
Tanda tangan valid dapat menjadi berbahaya jika transaksi bertanda tangan yang sama diterima di lebih dari satu lingkungan blockchain.Desain perlindungan replay EIP-155 Ethereum menyertakan pengenal chain dalam proses penandatanganan transaksi.
Hal ini mengikat otorisasi pada konteks chain tertentu.Transaksi Ethereum bertipe modern juga mengikat tanda tangan pada jenis transaksi dan kolom khusus chain.Aplikasi yang meminta tanda tangan off-chain tetap memerlukan pemisahan domain, nonce, aturan kedaluwarsa, dan pengenal kontraknya sendiri.Tanda tangan ECDSA yang valid tidak boleh dianggap aman tanpa memahami pesan dan domain tepat yang dicakupnya.Pemulihan Kunci Publik
Verifikasi ECDSA standar mengasumsikan verifier sudah mengetahui kunci publik.ECDSA yang dapat dipulihkan menambahkan sedikit informasi untuk membantu mengidentifikasi kunci publik yang terkait dengan tanda tangan dan pesan.Beberapa titik kurva kandidat dapat memenuhi sebagian persamaan tanda tangan, sehingga pengenal pemulihan menunjukkan kandidat yang dimaksud.Fitur ini dapat mengurangi kebutuhan untuk mengirimkan kunci publik lengkap dalam beberapa format transaksi.Pemulihan kunci publik tidak mengungkapkan kunci privat.Modul pemulihan opsional dalam libsecp256k1 mendukung tanda tangan secp256k1 yang dapat dipulihkan untuk aplikasi yang sesuai.
Aplikasi tetap harus memvalidasi kunci yang dipulihkan, rentang tanda tangan, format pesan, dan domain.Malleabilitas Tanda Tangan ECDSA
ECDSA memiliki bentuk malleabilitas tanda tangan matematis bawaan.Jika
Protokol mengurangi masalah ini dengan hanya menerima satu bentuk kanonis, umumnya tanda tangan dengan nilai
Tanda Tangan Low-S
Aturan low-
Jika penanda tangan menghitung nilai yang lebih besar, nilai tersebut dapat diganti dengan
Perangkat lunak Bitcoin umumnya menghasilkan tanda tangan ECDSA low-
ECDSA vs. Tanda Tangan Schnorr
ECDSA dan Schnorr adalah algoritma tanda tangan berbeda yang dapat menggunakan kurva eliptik secp256k1 yang sama.Tanda tangan Schnorr memiliki struktur linear yang lebih sederhana sehingga mendukung konstruksi multisignature dan agregasi yang efisien.ECDSA dasar tidak memiliki sifat agregasi linear yang sama dan sederhana.Spesifikasi BIP 340 Bitcoin menetapkan tanda tangan Schnorr 64-byte pada secp256k1.
BIP 340 juga menjelaskan malleabilitas bawaan ECDSA dan asumsi keamanan formal ECDSA yang lebih kompleks.Pengenalan Schnorr tidak berarti tanda tangan ECDSA yang sudah ada menjadi tidak valid atau praktis dipalsukan.Schnorr menyediakan desain tanda tangan lain dengan sifat yang berguna bagi fitur protokol yang lebih baru.ECDSA vs. EdDSA
EdDSA adalah keluarga tanda tangan terpisah yang didasarkan pada matematika kurva Edwards.Ed25519 merupakan salah satu varian EdDSA yang umum.EdDSA dirancang dengan penandatanganan deterministik dan perilaku implementasi yang lebih sederhana sebagai sasaran penting.Kunci Ed25519 tidak dapat digunakan sebagai kunci ECDSA secp256k1 tanpa desain konversi terpisah, dan konversi sembarangan tidak aman.Ukuran tanda tangan, format kunci publik, aritmetika kurva, prosedur hashing, dan aturan validasinya berbeda.Sistem yang mendukung kedua algoritma harus mengidentifikasi dengan jelas skema yang berlaku untuk setiap kunci dan tanda tangan.ECDSA vs. Tanda Tangan BLS
Tanda tangan BLS menggunakan kurva eliptik yang mendukung pairing dan memiliki sifat matematis berbeda dari ECDSA.Tanda tangan ini dapat mendukung agregasi ringkas atas banyak tanda tangan berdasarkan aturan keamanan tertentu.Validator Ethereum menggunakan tanda tangan BLS untuk tugas konsensus Proof of Stake, sedangkan akun milik eksternal Ethereum biasa menggunakan ECDSA secp256k1.Karena itu, kunci validator tidak dapat dipertukarkan dengan kunci akun eksekusi.Agregasi BLS dapat mengurangi data ketika banyak peserta menandatangani pesan terkait, tetapi memerlukan operasi pairing dan persyaratan validasi yang berbeda.ECDSA dan Wallet Multisignature
Skrip blockchain dapat mewajibkan beberapa tanda tangan ECDSA independen sebelum aset dapat dibelanjakan.Ini merupakan desain multisignature tradisional karena setiap penanda tangan yang diwajibkan membuat tanda tangan terpisah.Threshold ECDSA menggunakan protokol interaktif yang lebih kompleks. Beberapa peserta bekerja sama untuk membuat satu tanda tangan ECDSA biasa.Dalam operasi yang benar, tidak ada peserta yang perlu merekonstruksi seluruh kunci privat.Threshold ECDSA sulit dirancang karena peserta harus mengoordinasikan pembuatan nonce dan menahan perilaku jahat.Protokol threshold yang cacat dapat mengekspos kunci privat bersama meskipun algoritma ECDSA dasarnya aman.Sistem produksi sebaiknya menggunakan protokol multipihak yang telah ditinjau dengan baik, bukan membuat persamaan penandatanganan khusus sendiri.Hardware Wallet dan ECDSA
Hardware wallet dapat membuat dan menyimpan kunci privat ECDSA di dalam perangkat khusus.Perangkat menerima data transaksi, menampilkan detail yang tersedia, dan membuat tanda tangan secara internal setelah pengguna menyetujuinya.Kunci privat dimaksudkan untuk tetap berada di dalam lingkungan yang terlindungi.Isolasi ini mengurangi paparan langsung terhadap malware di ponsel atau komputer yang terhubung.Hardware wallet tidak dapat membuat transaksi berbahaya menjadi aman ketika pengguna menyetujui detail yang menyesatkan.Tampilan transaksi yang aman, integritas firmware, perlindungan frasa pemulihan, dan keamanan rantai pasok tetap penting.Ketahanan terhadap side-channel dan fault juga penting karena pengukuran fisik atau kesalahan yang sengaja ditimbulkan dapat mengekspos nilai penandatanganan rahasia.Serangan Side-Channel
Serangan side-channel mengambil informasi dari perilaku fisik implementasi ECDSA.Sinyal yang mungkin digunakan mencakup waktu eksekusi, konsumsi daya, emisi elektromagnetik, akses cache, dan pola memori.Percabangan atau pencarian tabel yang bergantung pada rahasia dapat mengungkap informasi tentang kunci privat atau nonce.Implementasi constant-time berupaya membuat pola operasi yang dapat diamati tidak bergantung pada nilai rahasia.Proyek libsecp256k1 saat ini mendokumentasikan perilaku akses waktu konstan dan akses memori konstan untuk penandatanganan serta pembuatan kunci publik.Kode constant-time mengurangi risiko penting, tetapi tidak mengatasi setiap serangan fisik, compiler, perangkat keras, atau sistem operasi.Serangan Fault
Serangan fault sengaja menyebabkan kesalahan saat perangkat membuat tanda tangan ECDSA.Penyerang dapat memanipulasi tegangan, waktu clock, suhu, memori, atau alur komputasi.Dalam implementasi tertentu, tanda tangan yang cacat dapat mengungkap cukup banyak informasi matematis untuk memulihkan kunci privat.Perangkat penandatanganan berkeamanan tinggi dapat memverifikasi tanda tangan yang dihasilkan secara internal sebelum mengeluarkannya.Perangkat juga dapat menggunakan perhitungan redundan, sensor fault, chip yang diperkuat, dan pesan kesalahan terbatas.Kepemilikan fisik atas perangkat penandatanganan harus selalu diperlakukan sebagai peristiwa keamanan yang penting.Kunci Publik dan Titik Kurva Tidak Valid
Verifier ECDSA tidak boleh menerima sembarang string byte sebagai kunci publik tanpa pemeriksaan.Implementasi mungkin perlu memastikan encoding valid dan titik tersebut berada pada kurva yang diharapkan.Implementasi harus menolak titik tak berhingga dan melakukan pemeriksaan subgrup yang diwajibkan.Penggunaan titik tidak valid yang dikendalikan penyerang dalam operasi kunci rahasia dapat menimbulkan serangan kurva tidak valid atau subgrup kecil.Persyaratan validasi yang tepat bergantung pada kurva, protokol, dan operasi.Library kriptografi yang telah ditinjau menangani detail tersebut dengan lebih aman daripada implementasi khusus yang informal.Pembuatan Kunci Privat
Kunci privat ECDSA harus dibuat dari sumber entropi yang aman secara kriptografis.Frasa pilihan manusia, tanggal lahir, kutipan, angka berulang, dan fungsi angka acak biasa tidak aman.Kunci juga harus berada dalam rentang skalar valid untuk kurva yang dipilih.Nilai yang tampak seperti 256-bit tidak otomatis merupakan kunci privat yang dibuat dengan aman.Wallet umumnya menurunkan banyak kunci ECDSA dari seed utama melalui proses derivasi deterministik hierarkis.Siapa pun yang memperoleh seed utama tersebut mungkin dapat membuat ulang setiap akun turunan.Keamanan ECDSA tidak dapat menggantikan frasa pemulihan yang terekspos atau mudah diprediksi.ECDSA dan Alamat Wallet
Kunci publik tidak selalu sama dengan alamat mata uang kripto.Alamat Bitcoin umumnya mengodekan hash atau kondisi skrip yang terkait dengan informasi kunci publik.Alamat Ethereum diturunkan dari sebagian hash kunci publik secp256k1 yang tidak terkompresi.Format alamat dapat menambahkan pengenal jaringan dan informasi pendeteksi kesalahan.Wallet dapat menampilkan beberapa alamat yang diturunkan dari satu seed utama melalui jalur derivasi berbeda.Pengguna tidak seharusnya menganggap bahwa mengetahui alamat selalu mengungkap kunci publik lengkap dalam setiap kondisi protokol.Mengetahui kunci publik tetap tidak membuat pemulihan kunci privat secara klasik menjadi praktis jika kunci dan kurvanya aman.Penandatanganan Transaksi vs. Penandatanganan Pesan
Tanda tangan transaksi mengotorisasi operasi blockchain berdasarkan aturan yang ditetapkan protokol.Tanda tangan pesan dapat membuktikan kendali atas kunci tanpa langsung mengirim transaksi blockchain.Permintaan login wallet, persetujuan token, order, voting tata kelola, dan pesan permit dapat menggunakan tanda tangan ECDSA.Tanda tangan off-chain tetap dapat mengotorisasi tindakan bernilai tinggi jika smart contract atau layanan kemudian mengirimkannya.Permintaan yang disebut sebagai login dapat berbahaya jika data yang sebenarnya ditandatangani memberikan izin transfer aset.Jika memungkinkan, wallet sebaiknya menampilkan domain penandatanganan, kontrak, chain, nonce, masa berlaku, dan tindakan dalam bahasa yang mudah dipahami.Pengguna sebaiknya menolak tanda tangan yang berisi data yang tidak dijelaskan atau izin yang tidak diharapkan.Serangan Replay
Serangan replay menggunakan kembali tanda tangan valid dalam konteks lain yang tidak dimaksudkan oleh penanda tangan.Penyerang tidak memalsukan tanda tangan.Penyerang memanfaatkan pengikatan pesan yang tidak lengkap.Pesan bertanda tangan yang aman mencakup nilai seperti pengenal chain, nonce akun, alamat kontrak, domain aplikasi, jenis operasi, dan waktu kedaluwarsa.Nonce sekali pakai mencegah otorisasi yang sama digunakan berulang kali di aplikasi yang sama.Developer sebaiknya memastikan nonce hanya digunakan setelah tindakan yang diotorisasi berhasil dilakukan.Kesalahan Implementasi
Kegagalan ECDSA biasanya disebabkan kesalahan implementasi atau pengelolaan kunci, bukan keberhasilan memecahkan masalah logaritma diskret kurva eliptik secara langsung.Kegagalan umum mencakup nonce yang digunakan ulang, angka acak yang bias, penerimaan kunci tidak valid, hashing yang keliru, serialisasi ambigu, tidak adanya pemeriksaan rentang, dan parsing tanda tangan yang tidak aman.Kegagalan lainnya mencakup side-channel, serangan fault, log debug yang terekspos, dependensi yang disusupi, dan kebocoran memori.Developer sebaiknya menggunakan library terpelihara yang memiliki pengujian luas dan model keamanan yang jelas.Kode kriptografi sebaiknya ditinjau terpisah dari kode aplikasi biasa karena kesalahan kecil dapat mengekspos semua aset yang dilindungi suatu kunci.Mengapa Kode ECDSA Buatan Sendiri Berbahaya
Rumus ECDSA mungkin tampak cukup sederhana untuk diimplementasikan dalam program singkat.Keamanan produksi memerlukan jauh lebih banyak daripada sekadar menyalin persamaan penandatanganan dan verifikasi.Implementasi harus melakukan operasi skalar constant-time, inversi aman, reduksi modular yang benar, parsing ketat, validasi titik, dan penanganan memori yang aman.Implementasi juga harus menangani kasus langka, seperti nilai nol dan titik tidak valid, dengan benar.Program yang lolos beberapa pengujian tanda tangan normal tetap dapat membocorkan kunci privat melalui timing atau bias nonce.Developer sebaiknya menggunakan library mapan dan test vector resmi, bukan mengadaptasi kode tutorial untuk kustodian mata uang kripto.Tingkat Keamanan ECDSA
Keamanan ECDSA bergantung pada kekuatan kurva, fungsi hash, entropi kunci privat, pembuatan nonce, dan implementasi.Kurva eliptik 256-bit yang aman umumnya dikaitkan dengan sekitar 128 bit keamanan klasik.Ini bukan berarti penyerang memiliki peluang satu dari 128 untuk menebak kunci.Angka tersebut menggambarkan perkiraan tingkat upaya komputasi berdasarkan model serangan yang relevan.Fungsi hash juga harus memberikan ketahanan collision dan preimage yang sesuai dengan sasaran keamanan protokol.Kontrol operasional yang lemah dapat menurunkan keamanan praktis jauh di bawah tingkat matematisnya.ECDSA dan Komputasi Kuantum
ECDSA tidak dianggap aman terhadap komputer kuantum toleran fault yang cukup kuat.Algoritma Shor dapat menyelesaikan masalah logaritma diskret kurva eliptik dan memulihkan kunci privat dari kunci publiknya.Saat ini tidak ada komputer kuantum yang diketahui publik mampu membobol ECDSA secp256k1 ukuran penuh pada skala mata uang kripto secara praktis.Sistem blockchain berumur panjang tetap memerlukan rencana migrasi karena peningkatan protokol, perubahan wallet, dan pemindahan dana tidak aktif dapat memerlukan waktu bertahun-tahun.Kunci publik yang sudah terekspos on-chain dapat menjadi sasaran prioritas lebih tinggi jika perangkat keras kuantum yang relevan secara kriptografis dikembangkan.Klaim tanpa dukungan yang menyatakan ECDSA masa kini telah dibobol sebaiknya ditanggapi dengan hati-hati.Alternatif Tanda Tangan Pascakuantum
Tanda tangan digital pascakuantum mengandalkan masalah matematis yang diyakini tahan terhadap komputer klasik maupun komputer kuantum besar.NIST menetapkan FIPS 204 untuk ML-DSA dan FIPS 205 untuk SLH-DSA pada Agustus 2024.
Sistem tanda tangan ini memiliki ukuran kunci, ukuran tanda tangan, biaya komputasi, dan persyaratan implementasi yang berbeda dari ECDSA.Mengganti ECDSA di blockchain tidak sesederhana mengganti satu library wallet.Proses migrasi dapat memengaruhi format alamat, ukuran transaksi, hardware wallet, smart contract, validasi jaringan, pemulihan akun, dan dana tidak aktif.Selama masa transisi, beberapa protokol dapat menggunakan otorisasi hibrida yang mengharuskan tanda tangan ECDSA yang sudah ada dan tanda tangan pascakuantum.Cara Developer Menggunakan ECDSA dengan Aman
Developer sebaiknya menggunakan kurva, fungsi hash, format pesan, dan encoding tanda tangan yang persis diwajibkan protokol sasaran.Kunci privat harus berasal dari proses pembuatan atau derivasi yang aman secara kriptografis.Nonce penandatanganan sebaiknya menggunakan metode deterministik yang telah ditinjau atau desain keacakan aman dengan perlindungan setara.Library sebaiknya melakukan parsing tanda tangan secara ketat, pemeriksaan rentang skalar, validasi kunci publik, dan kanonisasi yang diwajibkan protokol.Operasi kunci rahasia sebaiknya menggunakan implementasi constant-time.Aplikasi harus mencakup pemisahan domain, perlindungan replay, tampilan transaksi yang jelas, dan pengelolaan nonce yang sesuai.Suite pengujian sebaiknya mencakup tanda tangan tidak valid, bentuk high-
Cara Pengguna Kripto Melindungi Kunci ECDSA
Pengguna sebaiknya membuat wallet dengan perangkat lunak tepercaya atau perangkat penandatanganan khusus.Frasa pemulihan dan kunci privat harus tetap offline dan tidak boleh dibagikan kepada agen dukungan atau situs web.Detail transaksi harus diperiksa di layar tepercaya sebelum ditandatangani.Pengguna sebaiknya memverifikasi alamat tujuan, jaringan, jumlah, biaya, kontrak, dan cakupan izin.Aset bernilai tinggi dapat dilindungi melalui kebijakan multisignature, backup terdistribusi, isolasi perangkat keras, dan wallet pengeluaran terpisah.Satu frasa pemulihan sebaiknya tidak diimpor ke aplikasi yang tidak diperlukan.Tanda tangan valid merupakan bukti otorisasi yang tidak dapat dibatalkan di banyak sistem blockchain, sehingga pencegahan lebih dapat diandalkan daripada pemulihan.Kesalahan Umum ECDSA
Kesalahan umum adalah menganggap ECDSA mengenkripsi transaksi mata uang kripto.Kesalahan lainnya adalah menganggap kunci publik selalu identik dengan alamat wallet.Kesalahan ketiga adalah menggunakan nonce penandatanganan yang sama untuk dua pesan.Kesalahan keempat adalah membuat kunci privat atau nonce dengan fungsi angka acak biasa.Kesalahan kelima adalah menerima tanda tangan nonkanonis atau cacat tanpa parsing ketat.Kesalahan keenam adalah lupa bahwa
FAQ
Apa kepanjangan ECDSA?
ECDSA adalah singkatan dari Elliptic Curve Digital Signature Algorithm.Untuk apa ECDSA digunakan dalam mata uang kripto?
ECDSA digunakan untuk membuat dan memverifikasi tanda tangan yang mengotorisasi transaksi blockchain dan tindakan wallet lainnya.Apakah ECDSA mengenkripsi transaksi?
Tidak. ECDSA membuktikan otorisasi dan integritas, tetapi tidak menyembunyikan data blockchain publik biasa.Apa itu kunci privat ECDSA?
Kunci privat ECDSA adalah bilangan bulat rahasia yang digunakan untuk membuat tanda tangan dan menurunkan kunci publik terkait.Apa itu kunci publik ECDSA?
Kunci publik ECDSA adalah titik kurva eliptik yang diturunkan dari kunci privat dan digunakan untuk memverifikasi tanda tangan.Kurva apa yang digunakan Bitcoin untuk ECDSA?
Bitcoin menggunakan kurva eliptik secp256k1 untuk tanda tangan transaksi ECDSA tradisionalnya.Kurva apa yang digunakan Ethereum untuk tanda tangan akun?
Akun milik eksternal Ethereum menggunakan ECDSA pada secp256k1.Apa itu r dan s dalam ECDSA?
Keduanya adalah komponen bilangan bulat dari tanda tangan ECDSA.Apa itu nonce ECDSA?
Nonce ECDSA adalah skalar rahasia untuk setiap tanda tangan yang digunakan saat tanda tangan dibuat.Mengapa nonce ECDSA tidak boleh digunakan ulang?
Penggunaan ulang nonce pada pesan berbeda dapat memungkinkan pengamat menghitung kunci privat.Apa itu ECDSA deterministik?
ECDSA deterministik adalah metode penandatanganan yang menurunkan nonce dari kunci privat dan digest pesan melalui proses yang ditentukan, seperti RFC 6979.Apakah ECDSA deterministik menghilangkan kebutuhan akan keacakan?
Tidak. Kunci privat awal tetap memerlukan entropi kuat, dan implementasi harus tetap terlindungi dari fault serta side-channel.Apa itu malleabilitas tanda tangan ECDSA?
Malleabilitas tanda tangan ECDSA adalah sifat ketika
Apa itu tanda tangan low-s?
Tanda tangan low-s adalah tanda tangan ECDSA kanonis yang nilai
Apa itu encoding DER?
DER adalah encoding biner terstruktur yang umum digunakan untuk merepresentasikan bilangan bulat
Bisakah tanda tangan ECDSA mengungkap kunci privat?
Tanda tangan yang dibuat dengan benar seharusnya tidak mengungkap kunci privat, tetapi penggunaan ulang nonce, nonce yang bias, side-channel, dan kesalahan implementasi dapat mengeksposnya.Bisakah ECDSA memulihkan kunci privat yang hilang?
Tidak. Tanda tangan dan kunci publik tidak menyediakan metode praktis untuk memulihkan kunci privat yang hilang dan dibuat dengan aman.Bisakah seseorang memalsukan tanda tangan ECDSA?
Pemalsuan dianggap tidak praktis secara komputasi jika parameter, kunci, nonce, hash, dan implementasi yang aman digunakan.Apakah ECDSA sama dengan ECC?
Tidak. ECC adalah keluarga kriptografi kurva eliptik yang lebih luas, sedangkan ECDSA merupakan salah satu algoritma tanda tangan digital dalam keluarga tersebut.Apakah ECDSA sama dengan Schnorr?
Tidak. Keduanya merupakan algoritma tanda tangan berbeda meskipun sama-sama menggunakan secp256k1.Apakah Taproot menggunakan ECDSA?
Jalur tanda tangan baru Taproot menggunakan tanda tangan Schnorr BIP 340, bukan ECDSA.Bisakah smart contract memverifikasi tanda tangan ECDSA?
Bisa. Banyak lingkungan blockchain menyediakan operasi bawaan atau library untuk memverifikasi tanda tangan ECDSA secp256k1.Apakah tanda tangan ECDSA yang valid membuktikan identitas hukum?
Tidak. Tanda tangan hanya membuktikan kendali atas kunci privat, kecuali terdapat bukti terpisah yang menghubungkan kunci tersebut dengan identitas hukum.Apakah tanda tangan valid menjamin transaksi aman?
Tidak. Pengguna dapat secara sah menandatangani transfer berbahaya, persetujuan tanpa batas, order menyesatkan, atau tindakan smart contract yang tidak aman.Bisakah komputer kuantum membobol ECDSA?
Komputer kuantum toleran fault yang cukup kuat dapat membobol ECDSA, tetapi saat ini tidak ada sistem yang diketahui publik mampu melakukannya pada skala mata uang kripto.Apakah ECDSA masih aman saat ini?
ECDSA yang diimplementasikan dengan benar dan menggunakan kunci serta nonce aman tetap tahan terhadap serangan klasik praktis yang diketahui.Kesimpulan
ECDSA adalah algoritma tanda tangan digital dasar yang digunakan untuk mengotorisasi transaksi mata uang kripto tanpa mengekspos kunci privat.Algoritma ini menggabungkan skalar privat, kunci publik kurva eliptik, digest pesan, dan nonce penandatanganan rahasia untuk membuat nilai tanda tangan
Encoding ketat, aturan low-
Anda Mungkin Juga Menyukai
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
POPULER
Mata uang kripto yang sedang tren saat ini dan menarik perhatian pasar yang signifikan
Volume TERATAS
Mata uang kripto dengan volume trading tertinggi
Baru Ditambahkan
Mata uang kripto yang baru saja masuk listing dan tersedia untuk trading

