Beli Kripto
Pasar
Spot
Futures OILBTC
Tabungan
Pusat Acara
Hub Hadiah
Lainnya
Fest. 0-Biaya
ECDSA (Elliptic Curve Digital Signature Algorithm): 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 digiECDSA (Elliptic Curve Digital Signature Algorithm): 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 digi

ECDSA (Elliptic Curve Digital Signature Algorithm)

2026/10/13 15:29
#Intermediate
Humanity
H$0.05616-0.88%
PX
PX$0.013+1.56%
NODE
NODE$0.005234-0.36%
Data Network
DATA$0.2068-4.03%
STANDARD
STANDARD$0.2953+7.42%

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

y² = x³ + ax + b
, dengan semua perhitungan koordinat dilakukan menggunakan aritmetika modular.

Parameter domain kurva menentukan medan, koefisien kurva, titik generator, orde generator, dan kofaktor.

Titik generator biasanya dilambangkan sebagai

G
.

Orde generator biasanya dilambangkan sebagai

n
.

Implementasi yang aman menggunakan parameter standar yang dianalisis dengan cermat, bukan membuat kurva baru untuk satu aplikasi.

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

d
.

Nilainya harus dipilih dari rentang valid antara 1 dan

n - 1
.

Kunci publik dihitung melalui perkalian skalar kurva eliptik.

Hubungan ini umumnya ditulis sebagai

Q = d × G
.

Menghitung

Q
dari
d
dan
G
merupakan proses yang efisien.

Dengan kurva yang aman dan kunci yang dibuat dengan benar, pemulihan

d
dari
Q
diyakini tidak praktis secara komputasi.

Hubungan satu arah ini didasarkan pada sulitnya menyelesaikan masalah logaritma diskret kurva eliptik.

Siapa pun yang memperoleh kunci privat dapat membuat tanda tangan valid dan biasanya mengendalikan aset kripto yang terkait.

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

y² = x³ + 7
di atas medan prima besar.

Ukuran medan dan orde grup kurva ini mendekati 256 bit.

Tingkat keamanan klasik yang diperkirakan umumnya disebut sekitar 128 bit terhadap serangan logaritma diskret generik.

secp256k1 berbeda dari NIST P-256 meskipun keduanya biasa disebut kurva eliptik 256-bit.

Kunci dan tanda tangan yang dibuat untuk satu kurva tidak dapat begitu saja diverifikasi pada kurva lainnya.

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

z
.

Penanda tangan memilih nilai rahasia untuk setiap tanda tangan, yang umum disebut nonce dan dilambangkan dengan

k
.

Nonce harus berupa bilangan bulat bukan nol yang valid dan lebih kecil daripada orde kurva.

Penanda tangan menghitung titik kurva

R = k × G
.

Nilai tanda tangan pertama,

r
, diturunkan dari koordinat x
R
dan direduksi modulo
n
.

Jika

r
bernilai nol, penanda tangan harus memilih nonce lain.

Nilai tanda tangan kedua dihitung sebagai

s = k⁻¹ × (z + r × d) mod n
.

Jika

s
bernilai nol, penanda tangan juga harus memilih nonce lain.

Tanda tangan ECDSA yang dihasilkan adalah pasangan

(r, s)
, meskipun mata uang kripto dapat menambahkan informasi encoding atau pemulihan.

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

r
atau
s
berada di luar rentang valid.

Verifier menghitung

w = s⁻¹ mod n
.

Kemudian, verifier menghitung

u1 = z × w mod n
dan
u2 = r × w mod n
.

Verifier menghitung titik kurva

X = u1 × G + u2 × Q
.

Tanda tangan gagal jika

X
adalah titik tak berhingga.

Tanda tangan valid jika koordinat x

X
, setelah direduksi modulo
n
, sama dengan
r
.

Hubungan ini berhasil karena persamaan penandatanganan menghubungkan digest pesan, nonce, kunci privat, dan kunci publik.

Verifikasi tidak mengungkapkan kunci privat atau nonce penandatanganan.

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

k
adalah salah satu bagian ECDSA yang paling sensitif terhadap keamanan.

Nonce tidak boleh digunakan kembali untuk pesan berbeda dengan kunci privat yang sama.

Jika dua tanda tangan menggunakan nonce yang sama, persamaannya memuat cukup banyak informasi terkait untuk menghitung nonce dan memulihkan kunci privat.

Dalam kondisi itu, penyerang tidak perlu menyelesaikan masalah logaritma diskret kurva eliptik.

Nonce yang dapat diprediksi sebagian, bias, atau bocor juga dapat mengekspos kunci setelah cukup banyak tanda tangan diamati.

Kegagalan nonce telah menyebabkan kompromi kunci kriptografi yang nyata meskipun kurva eliptik yang dipilih tetap aman secara matematis.

Istilah nonce berarti nilai yang digunakan sekali, tetapi dalam ECDSA nonce juga harus tetap rahasia dan unik.

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,

r
dan
s
.

Perangkat lunak harus meng-encode bilangan bulat tersebut menjadi byte sebelum mengirimkan atau menyimpan tanda tangan.

Salah satu metode yang umum adalah Distinguished Encoding Rules, yang biasa disebut DER.

DER merepresentasikan nilai sebagai bilangan bulat ter-encode di dalam urutan terstruktur.

Panjang tanda tangan yang dihasilkan dapat bervariasi karena bilangan bulat positif terkadang memerlukan byte nol di awal.

Sistem mata uang kripto lain menggunakan encoding ringkas dengan lebar tetap, masing-masing berisi 32 byte untuk

r
dan 32 byte untuk
s
.

Tanda tangan yang valid secara matematis tetap dapat ditolak jika encoding byte-nya melanggar format kanonis protokol.

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

r
dan
s
serta informasi pemulihan kunci publik.

Penjelasan lama sering menyebut nilai pemulihan

v
, sedangkan transaksi bertipe yang lebih baru umumnya merepresentasikannya sebagai nilai paritas y.

Informasi pemulihan memungkinkan perangkat lunak memperoleh kunci publik kandidat dari tanda tangan dan digest pesan.

Alamat akun kemudian dapat diturunkan dan dibandingkan dengan pengirim yang diklaim.

Perubahan protokol EIP-2 menolak tanda tangan transaksi biasa dengan nilai

s
yang lebih besar daripada setengah orde kurva secp256k1.

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

(r, s)
valid untuk pesan dan kunci publik,
(r, n - s)
juga valid menurut persamaan verifikasi dasar.

Pihak ketiga dapat membuat tanda tangan alternatif tersebut tanpa mengetahui kunci privat.

Hal ini tidak memungkinkan penyerang menandatangani pesan berbeda atau membelanjakan aset tambahan.

Namun, hal ini dapat mengubah ID transaksi ketika ID tersebut mencakup byte tanda tangan.

Protokol mengurangi masalah ini dengan hanya menerima satu bentuk kanonis, umumnya tanda tangan dengan nilai

s
lebih rendah.

Kanоnisasi juga memudahkan perbandingan dan penyimpanan tanda tangan secara konsisten.

Tanda Tangan Low-S

Aturan low-

s
mengharuskan
s
tidak lebih besar daripada setengah orde kurva.

Jika penanda tangan menghitung nilai yang lebih besar, nilai tersebut dapat diganti dengan

n - s
.

Nilai hasil transformasi tetap valid secara matematis dan berada dalam rentang rendah yang diterima.

Ethereum menerapkan aturan ini untuk tanda tangan transaksi biasa melalui EIP-2.

Perangkat lunak Bitcoin umumnya menghasilkan tanda tangan ECDSA low-

s
yang dinormalisasi, sedangkan perlakuan konsensus dan kebijakan secara tepat bergantung pada konteks pengeluaran.

Developer sebaiknya mengikuti aturan protokol sasaran secara tepat, bukan menganggap semua sistem ECDSA menerima bentuk yang sama.

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-

s
, encoding yang cacat, nilai nol, pesan yang diubah, jaringan yang salah, dan upaya penggunaan ulang otorisasi.

Sistem bernilai tinggi sebaiknya menjalani audit kriptografi dan implementasi independen.

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

s
dan
n - s
sama-sama dapat memenuhi persamaan ECDSA dasar.

Kesalahan ketujuh adalah menandatangani data tanpa memeriksa jaringan, domain, nonce, dan masa berlakunya.

Kesalahan kedelapan adalah menggunakan satu kunci privat di berbagai aplikasi dan blockchain yang tidak berkaitan.

Kesalahan kesembilan adalah menulis kode kurva eliptik khusus untuk wallet produksi tanpa tinjauan ahli.

Kesalahan kesepuluh adalah menganggap tanda tangan valid membuktikan bahwa transaksi aman, adil, atau dimaksudkan oleh pemilik asli kunci.

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

(r, s)
dan
(r, n - s)
sama-sama dapat valid untuk pesan dan kunci publik yang sama.

Apa itu tanda tangan low-s?

Tanda tangan low-s adalah tanda tangan ECDSA kanonis yang nilai

s
-nya tidak lebih besar daripada setengah orde kurva.

Apa itu encoding DER?

DER adalah encoding biner terstruktur yang umum digunakan untuk merepresentasikan bilangan bulat

r
dan
s
dalam tanda tangan ECDSA.

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

r
dan
s
.

Node blockchain memverifikasi nilai tersebut secara matematis sebelum menerima tindakan yang ditandatangani.

Bitcoin secara tradisional menggunakan ECDSA pada secp256k1, sedangkan akun milik eksternal Ethereum menggunakan kurva yang sama dengan informasi tanda tangan yang dapat dipulihkan.

Encoding ketat, aturan low-

s
, pengenal chain, domain pesan, dan perlindungan replay membantu meningkatkan keamanan ECDSA dalam protokol mata uang kripto.

Kelemahan praktis terbesar algoritma ini bukan masalah kurva eliptik dasarnya, melainkan implementasi dan pengelolaan kunci yang keliru.

Nonce yang digunakan ulang, keacakan lemah, frasa pemulihan yang terekspos, side-channel, penanganan titik tidak valid, dan permintaan penandatanganan yang tidak jelas dapat menggagalkan matematika yang sebenarnya kuat.

Developer sebaiknya mengandalkan library yang telah ditinjau, prosedur nonce deterministik, operasi constant-time, validasi ketat, dan spesifikasi protokol yang tepat.

Pengguna sebaiknya melindungi materi pemulihan dan memverifikasi setiap transaksi atau pesan pada layar penandatanganan tepercaya.

ECDSA tetap aman terhadap serangan klasik praktis yang diketahui jika diimplementasikan dengan benar, meskipun sistem mata uang kripto jangka panjang perlu bersiap bermigrasi ke teknologi tanda tangan pascakuantum.
Menarik Kembali / Peluang?
Menarik Kembali / Peluang?Menarik Kembali / Peluang?
Simak arus masuk ETF BTC $2,4 miliar pada likuidasi