secp256k1 vs ed25519: Kurva Eliptik dalam Kripto
Daftar Isi
Setiap transaksi kripto memerlukan tanda tangan digital --- bukti matematis bahwa orang yang mengirim dana benar-benar mengendalikan akun tersebut. Tanda tangan itu dihasilkan oleh algoritma yang bergantung pada properti kurva eliptik. Dua kurva yang mendominasi dunia blockchain adalah secp256k1 dan ed25519. Keduanya melayani tujuan fundamental yang sama, tetapi desain, karakteristik performa, dan sejarah adopsi sangat berbeda.
Panduan ini menjelaskan apa yang dilakukan kurva eliptik dalam kriptografi, bagaimana secp256k1 dan ed25519 berbeda, dan apa arti perbedaan tersebut untuk pembuatan kunci, keamanan dompet, dan blockchain yang Anda gunakan.
Apa Itu Kurva Eliptik?¶
Kurva eliptik, dalam konteks kriptografi, adalah struktur matematis yang didefinisikan oleh persamaan berbentuk y^2 = x^3 + ax + b (untuk kurva seperti secp256k1) atau bentuk terkait (untuk kurva seperti ed25519). Keamanan kriptografi kurva eliptik (ECC) bertumpu pada Masalah Logaritma Diskret Kurva Eliptik (ECDLP): diberikan titik P pada kurva dan titik Q = k * P (di mana k adalah skalar dan * adalah perkalian titik), secara komputasi tidak layak untuk menentukan k dari P dan Q saja.
Dalam istilah kripto:
- k adalah private key Anda --- sebuah angka rahasia.
- P adalah titik generator --- titik tetap yang diketahui publik pada kurva.
- Q adalah public key Anda --- diturunkan dari private key melalui perkalian titik.
Siapa pun dapat memverifikasi bahwa Q cocok dengan k * P jika mereka mengetahui Q dan tanda tangan yang dihasilkan dengan k, tetapi tidak ada yang bisa mengekstrak k dari Q. Inilah yang membuat aman untuk membagikan public key (dan alamat yang diturunkan darinya) sambil menjaga private key tetap rahasia.
ECC memberikan keamanan yang sama dengan RSA dengan ukuran kunci jauh lebih kecil. Kunci kurva eliptik 256 bit menawarkan keamanan yang kira-kira sama dengan kunci RSA 3.072 bit. Kekompakan ini penting untuk blockchain, di mana setiap byte transaksi membutuhkan penyimpanan dan bandwidth.
secp256k1: Kurva Bitcoin dan Ethereum¶
secp256k1 adalah kurva eliptik yang digunakan oleh Bitcoin, Ethereum, dan sebagian besar blockchain dalam ekosistem mereka. Nama tersebut dipecah sebagai berikut:
- sec --- Standards for Efficient Cryptography
- p --- Kurva didefinisikan pada field prima
- 256 --- Prima sepanjang 256 bit
- k --- Ini adalah kurva Koblitz (kelas spesifik dengan keuntungan efisiensi komputasi)
- 1 --- Ini adalah kurva pertama (dan satu-satunya) dari jenis ini dalam standar
Persamaan kurva adalah: y^2 = x^3 + 7 (pada field hingga yang didefinisikan oleh prima p = 2^256 - 2^32 - 977).
Satoshi Nakamoto memilih secp256k1 untuk Bitcoin pada tahun 2009. Saat itu, ini merupakan pilihan tidak biasa. Sebagian besar sistem menggunakan kurva NIST P-256 (juga disebut secp256r1). Huruf "r" dalam secp256r1 menunjukkan penggunaan seed acak yang dapat diverifikasi untuk parameternya, sedangkan parameter secp256k1 dipilih untuk efisiensi komputasi, bukan keacakan. Beberapa kriptografer lama mengkhawatirkan bahwa kurva NIST mungkin memiliki parameter yang dipengaruhi NSA --- kekhawatiran yang diperkuat oleh skandal Dual_EC_DRBG tahun 2013. Secp256k1 menghindari kecurigaan ini sepenuhnya karena parameternya sederhana dan transparan: a = 0, b = 7.
Tanda Tangan: ECDSA¶
Algoritma tanda tangan yang dipasangkan dengan secp256k1 di Bitcoin dan Ethereum adalah ECDSA --- Elliptic Curve Digital Signature Algorithm. Saat Anda mengirim transaksi Bitcoin atau Ethereum, dompet menggunakan ECDSA untuk menghasilkan tanda tangan dari private key dan hash transaksi. Validator di jaringan memverifikasi tanda tangan ini menggunakan public key Anda.
Tanda tangan ECDSA pada secp256k1 berukuran 64 byte (dua nilai 32 byte, biasa disebut r dan s) ditambah byte pemulihan yang disertakan beberapa implementasi. Tanda tangan bersifat deterministik saat menggunakan RFC 6979 (yang digunakan Bitcoin dan Ethereum), artinya pesan dan private key yang sama selalu menghasilkan tanda tangan yang sama --- tidak perlu keacakan saat penandatanganan.
Satu keunikan ECDSA adalah malleabilitas tanda tangan: diberikan tanda tangan valid (r, s), pasangan (r, -s mod n) juga valid. Bitcoin mengatasi ini dengan BIP66 (encoding DER ketat) dan kemudian dengan SegWit. Ethereum menyelesaikannya dengan memberlakukan bentuk kanonik untuk s.
Performa¶
Verifikasi secp256k1 pada implementasi yang dioptimalkan (seperti libsecp256k1, digunakan Bitcoin Core) cepat: beberapa ribu verifikasi per detik pada perangkat keras modern. Namun, penandatanganan dan verifikasi ECDSA secara inheren lebih kompleks daripada EdDSA (algoritma yang dipasangkan dengan ed25519), yang dirancang dari awal untuk kecepatan.
ed25519: Pilihan Modern Solana¶
ed25519 adalah kurva eliptik yang dirancang oleh Daniel J. Bernstein dan kolaboratornya. Kurva ini dipublikasikan tahun 2011, dua tahun setelah Bitcoin diluncurkan, dan mewakili generasi desain kurva baru yang memprioritaskan keamanan dan performa.
Nama tersebut merujuk pada bentuk kurva Edwards pada field prima 2^255 - 19 (karenanya "25519"). Kurva spesifik yang digunakan adalah kurva Edwards terpuntir bernama "edwards25519," yang secara birational ekuivalen dengan Curve25519 (digunakan secara luas dalam pertukaran kunci, misalnya di Signal dan TLS 1.3).
Solana memilih ed25519 sebagai kurva tanda tangannya, begitu juga beberapa blockchain modern lainnya. Pilihan ini mencerminkan keunggulan ed25519 dalam throughput --- perhatian kritis untuk arsitektur performa tinggi Solana.
Tanda Tangan: EdDSA¶
Algoritma tanda tangan yang dipasangkan dengan ed25519 adalah EdDSA --- Edwards-curve Digital Signature Algorithm. Secara spesifik, Solana menggunakan Ed25519 (EdDSA dengan edwards25519), yang menghasilkan tanda tangan 64 byte.
EdDSA dirancang untuk menghindari kelemahan ECDSA:
- Tidak memerlukan keacakan saat penandatanganan. Tanda tangan EdDSA secara inheren deterministik --- nonce diturunkan dari private key dan pesan melalui hashing. Dengan ECDSA, generator angka acak yang buruk saat penandatanganan dapat membocorkan seluruh private key (ini terjadi pada kunci penandatanganan PS3 Sony tahun 2010).
- Tidak ada malleabilitas tanda tangan. Tanda tangan EdDSA memiliki satu bentuk kanonik tunggal.
- Verifikasi batch lebih cepat. Beberapa tanda tangan Ed25519 dapat diverifikasi secara bersamaan lebih cepat daripada memverifikasi satu per satu --- keunggulan signifikan untuk blockchain throughput tinggi.
- Implementasi lebih sederhana. Algoritma memiliki lebih sedikit kasus tepi dan kondisi percabangan, yang mengurangi area permukaan untuk serangan side-channel.
Performa¶
Ed25519 secara konsisten lebih cepat dari ECDSA-secp256k1 dalam benchmark. Penandatanganan sekitar 2-3 kali lebih cepat, dan verifikasi tanda tangan tunggal kira-kira setara, tetapi verifikasi batch adalah di mana Ed25519 benar-benar unggul --- dapat memverifikasi ratusan tanda tangan secara signifikan lebih cepat daripada memverifikasi satu per satu. Di Solana, di mana blok dapat berisi ribuan transaksi, perbedaan performa ini sangat substansial.
ECDSA vs EdDSA: Perbandingan Langsung¶
| Properti | ECDSA (secp256k1) | EdDSA (ed25519) |
|---|---|---|
| Jenis kurva | Short Weierstrass | Twisted Edwards |
| Ukuran kunci | 256 bit | 256 bit |
| Ukuran tanda tangan | 64-65 byte | 64 byte |
| Tingkat keamanan | ~128 bit | ~128 bit |
| Kecepatan tanda tangan | Cepat | Lebih cepat (2-3x) |
| Kecepatan verifikasi | Cepat | Setara (tunggal), lebih cepat (batch) |
| Penandatanganan deterministik | Opsional (RFC 6979) | Bawaan (secara desain) |
| Malleabilitas tanda tangan | Mungkin (dimitigasi dalam praktik) | Tidak ada |
| Kerentanan nonce | Ya (RNG buruk membocorkan kunci) | Tidak (nonce diturunkan dari kunci + pesan) |
| Adopsi | Bitcoin, Ethereum, BNB Chain, Tron, Dogecoin, Litecoin | Solana, XRP (sebagian), Cardano, Polkadot |
Kedua algoritma menyediakan sekitar 128 bit keamanan, artinya penyerang perlu melakukan sekitar 2^128 operasi untuk membobol kunci. Ini jauh melampaui kemampuan komputer klasik saat ini atau yang dapat diperkirakan. Perbedaan terletak pada keamanan implementasi dan performa, bukan kekuatan keamanan mentah.
Untuk pemahaman lebih dalam tentang cara keamanan kunci bekerja dalam praktik, lihat Praktik Terbaik Keamanan Private Key.
Chain Mana Menggunakan Yang Mana?¶
Pilihan kurva adalah salah satu keputusan arsitektur paling fundamental yang dibuat blockchain. Berikut rincian jaringan utama:
Chain secp256k1¶
- Bitcoin --- Yang asli. Menggunakan ECDSA dengan secp256k1 untuk transaksi standar, dan tanda tangan Schnorr (juga pada secp256k1) untuk Taproot.
- Ethereum --- ECDSA dengan secp256k1. Semua chain kompatibel EVM mewarisi pilihan ini.
- BNB Chain --- Kompatibel EVM, menggunakan secp256k1.
- Polygon --- Kompatibel EVM, menggunakan secp256k1.
- Arbitrum dan Optimism --- Ethereum L2, mewarisi secp256k1.
- Tron --- Menggunakan secp256k1 dengan ECDSA.
- Dogecoin --- Fork Bitcoin, menggunakan secp256k1.
- Litecoin --- Fork Bitcoin, menggunakan secp256k1.
- Avalanche (C-Chain) --- Kompatibel EVM, menggunakan secp256k1.
Chain ed25519¶
- Solana --- Menggunakan Ed25519 secara eksklusif. Ini alasan inti Solana dapat memproses ribuan transaksi per detik.
- XRP --- Mendukung secp256k1 dan ed25519. Pengguna dapat memilih kurva mana saat membuat kunci.
- Cardano --- Menggunakan Ed25519 (khususnya Ed25519-BIP32, varian yang diperluas).
- Polkadot --- Terutama menggunakan Sr25519 (Schnorr di atas Ristretto25519), yang terkait erat dengan ed25519.
Pembagian ini sebagian besar bersifat generasional. Blockchain yang dirancang sebelum 2015 cenderung menggunakan secp256k1 (mengikuti Bitcoin). Blockchain yang dirancang setelah 2017 semakin memilih ed25519 atau kurva terkait.
Dampak pada Pembuatan Kunci¶
Pilihan kurva eliptik secara langsung memengaruhi bagaimana kunci dan alamat dibuat. Jika Anda menggunakan alat SafeSeed, perbedaannya ditangani secara otomatis, tetapi memahaminya membantu Anda tahu apa yang terjadi di balik layar.
Pembuatan Kunci secp256k1¶
- Buat angka acak 256 bit (private key). Harus antara 1 dan
n - 1, di mana n adalah orde secp256k1 (~2^256). - Hitung public key: kalikan private key dengan titik generator G pada secp256k1. Hasilnya adalah titik (x, y) pada kurva.
- Public key tidak terkompresi adalah 65 byte (prefix 04 + 32 byte x + 32 byte y). Bentuk terkompresi adalah 33 byte (prefix 02 atau 03 + 32 byte x).
- Hash public key untuk menghasilkan alamat (SHA-256 + RIPEMD-160 untuk Bitcoin; Keccak-256 untuk Ethereum).
Anda dapat membuat kunci secp256k1 menggunakan Bitcoin Private Key Generator atau Ethereum Private Key Generator.
Pembuatan Kunci ed25519¶
- Buat seed acak 32 byte (bukan BIP39 seed --- ini adalah materi kunci mentah).
- Hash seed dengan SHA-512 untuk menghasilkan 64 byte. 32 byte pertama (dengan bit tertentu yang di-clamp) menjadi skalar yang digunakan untuk penandatanganan. 32 byte terakhir digunakan untuk pembuatan nonce saat penandatanganan.
- Hitung public key: kalikan skalar dengan titik basis B pada edwards25519. Hasilnya adalah titik terkompresi 32 byte.
- Format alamat spesifik chain. Di Solana, public key itu sendiri (dikodekan Base58) adalah alamat.
Anda dapat membuat kunci ed25519 menggunakan Solana Private Key Generator.
Implikasi Cross-Curve¶
Karena secp256k1 dan ed25519 tidak kompatibel secara matematis, private key yang valid pada satu kurva tidak memiliki hubungan bermakna dengan kunci pada kurva lainnya. Saat Anda memulihkan seed phrase di dompet yang mendukung Bitcoin dan Solana, dompet menjalankan dua proses derivasi yang sepenuhnya terpisah dari master seed yang sama --- satu menggunakan secp256k1 untuk akun Bitcoin/Ethereum, dan satu menggunakan ed25519 untuk akun Solana. Seed yang sama adalah satu-satunya koneksi di antara keduanya.
Inilah mengapa derivation path menyertakan jenis koin: path Bitcoin (m/44'/0'/0'/0/0) dan path Solana (m/44'/501'/0'/0') bercabang di level coin-type, dan setiap cabang menggunakan kurvanya masing-masing. Untuk penjelasan menyeluruh tentang cara derivation path bekerja lintas chain, baca HD Wallet dan Derivation Path Dijelaskan.
Bagaimana dengan Komputer Kuantum?¶
Baik secp256k1 maupun ed25519 sama-sama rentan terhadap komputer kuantum yang cukup kuat yang menjalankan algoritma Shor, yang dapat memecahkan masalah logaritma diskret dalam waktu polinomial. Tidak ada kurva yang "lebih tahan kuantum" dari yang lain. Komunitas kriptografi sedang mengembangkan skema tanda tangan pasca-kuantum, tetapi belum ada blockchain besar yang bermigrasi ke salah satunya. Untuk penilaian terkini, lihat Komputer Kuantum dan Ancaman Kripto.
Memilih Alat yang Tepat¶
Sebagai pengguna, Anda tidak langsung memilih antara secp256k1 dan ed25519. Blockchain yang Anda gunakan yang membuat pilihan itu untuk Anda. Bitcoin dan Ethereum mewajibkan secp256k1. Solana mewajibkan ed25519. Yang dapat Anda pilih adalah menggunakan alat yang mengimplementasikan kurva yang benar sesuai kebutuhan chain Anda.
Generator SafeSeed menangani ini secara otomatis. Bitcoin Seed Phrase Generator menurunkan kunci secp256k1. Ethereum Seed Phrase Generator juga demikian. Solana Seed Phrase Generator menurunkan kunci ed25519. Semuanya berjalan sepenuhnya di sisi klien, menggunakan Web Crypto API browser Anda untuk pembuatan angka acak yang aman. Tidak ada materi private key yang meninggalkan perangkat Anda.
Memahami kurva di balik blockchain Anda tidak mengubah cara Anda menggunakan dompet sehari-hari. Tetapi ini membantu Anda memahami mengapa alamat Solana terlihat berbeda dari alamat Ethereum, mengapa Anda tidak bisa menggunakan private key Solana mentah di Ethereum, dan mengapa asumsi keamanan di balik dana Anda sekuat itu. Kurva-kurva ini adalah fondasi matematis kepemilikan kripto --- tidak terlihat dalam penggunaan normal, tetapi benar-benar merupakan pondasi.