keccak

Algoritma Keccak merupakan fungsi hash yang mengompresi data arbitrer menjadi "sidik jari" berdimensi tetap dan menjadi inti dari standar SHA-3 yang diadopsi NIST. Algoritma ini banyak digunakan di Ethereum untuk pembuatan alamat, pemilih fungsi kontrak, dan log peristiwa. Keccak menggunakan konstruksi "sponge" yang mencampur data secara menyeluruh melalui proses absorb dan squeeze, dikombinasikan dengan 24 putaran permutasi. Desain ini mendukung berbagai panjang output untuk menyeimbangkan keamanan dan performa.
Abstrak
1.
Keccak adalah fungsi hash kriptografi yang dipilih sebagai dasar untuk standar SHA-3.
2.
Blockchain Ethereum menggunakan algoritma Keccak-256 untuk menghasilkan alamat dan hash transaksi.
3.
Keccak menggunakan desain konstruksi sponge, menawarkan keamanan tinggi dan panjang output yang fleksibel.
4.
Dibandingkan dengan algoritma SHA-2 tradisional, Keccak memberikan ketahanan terhadap tabrakan yang lebih kuat dan keunggulan performa.
keccak

Apa Itu Algoritma Keccak?

Algoritma Keccak merupakan keluarga fungsi hash kriptografi yang dirancang untuk mengubah data masukan apa pun menjadi sidik jari digital berdimensi tetap. Algoritma ini menjadi dasar standar SHA-3 dan telah banyak digunakan dalam aplikasi blockchain.

Sebuah fungsi hash dapat diibaratkan sebagai “mesin pembuat sidik jari”: setiap masukan yang sama akan selalu menghasilkan keluaran yang sama, namun hampir tidak mungkin mengembalikan data asli hanya dari hasil hash-nya. Keccak mendukung panjang keluaran yang bervariasi, dengan 256-bit (Keccak-256) sebagai yang paling umum. Keluaran berdimensi tetap ini memungkinkan proses verifikasi, pengindeksan, dan pengecekan konsistensi secara efisien.

Mengapa Keccak Penting dalam Web3?

Keccak sangat penting karena berperan sebagai “mesin pembuat sidik jari” utama di sistem seperti Ethereum, menopang proses-proses inti seperti pembuatan alamat, pemilih fungsi smart contract, dan pengindeksan log event.

Contohnya, di bursa seperti Gate, saat Anda melakukan deposit ETH, alamat yang diawali “0x” dihasilkan dengan melakukan hash pada public key menggunakan Keccak-256 dan mengambil 20 byte terakhir. Untuk pemanggilan kontrak, selector fungsi dibuat dengan menerapkan Keccak-256 pada signature fungsi dan mengambil 4 byte pertama. Log event menggunakan Keccak untuk menghasilkan topik sehingga pencarian menjadi sangat cepat.

Bagaimana Cara Kerja Algoritma Keccak?

Keccak menggunakan konsep “sponge construction”. Bayangkan seperti spons: pertama-tama “menyerap” data masukan untuk mencampur kondisi internal, lalu “memeras” hasil hash sesuai kebutuhan.

Langkah 1, Absorpsi: Pesan masukan dibagi menjadi blok-blok, lalu di-XOR ke “area tulis” pada state—seperti spons yang menyerap air dan mengintegrasikan data ke dalam state.

Langkah 2, Permutasi: Fungsi permutasi (Keccak-f) dijalankan dalam beberapa putaran untuk mengacak bit pada state. Permutasi ini merupakan proses “pengacakan” yang dapat dibalik; Keccak-f[1600] biasanya berjalan selama 24 putaran.

Langkah 3, Pemerasan: Keluaran dibaca dari “area baca” pada state. Untuk keluaran yang lebih panjang, permutasi lanjutan diterapkan sebelum data diekstrak lebih lanjut—mirip seperti memeras air lebih banyak dari spons sesuai kebutuhan.

Pada parameter standar Keccak-256, kondisi internal terdiri dari 1.600 bit, dengan bitrate (area baca/tulis) sebesar 1.088 bit dan kapasitas (buffer keamanan) sebesar 512 bit. Semakin besar kapasitas, semakin tinggi tingkat keamanannya.

Bagaimana Keccak Digunakan di Ethereum?

Keccak memiliki empat aplikasi utama di Ethereum: pembuatan alamat, selector fungsi, topik event, dan pengindeksan struktur data.

  • Pembuatan Alamat: Alamat Ethereum umumnya dihasilkan dengan menerapkan Keccak-256 pada public key dan mengambil 20 byte terakhir untuk alamat berawalan “0x”. Alamat deposit di Gate dibuat dengan cara ini. Beberapa format checksum alamat juga memakai Keccak untuk verifikasi kapitalisasi.
  • Selector Fungsi: Signature fungsi secara tekstual (misal, "transfer(address,uint256)") di-hash dengan Keccak-256, lalu 4 byte pertama digunakan sebagai selector. Selector populer "0xa9059cbb" dihasilkan dari aturan ini.
  • Topik Event: Nama event dan tipe parameternya digabung lalu di-hash dengan Keccak-256 untuk menghasilkan topik. Hal ini memungkinkan pencarian event on-chain yang efisien dan cepat.
  • Pengindeksan Struktur Data: Pada state tree atau key mapping, key di-hash dengan Keccak-256 untuk meminimalkan tabrakan dan mempercepat query.

Apa Perbedaan Keccak dan SHA3?

Perbedaan utama antara Keccak dan SHA3 ada pada parameter padding (“domain separation”). SHA3-256 menggunakan padding suffix 0x06, sedangkan Keccak-256 yang umum di Ethereum menggunakan 0x01.

Artinya, masukan yang sama akan menghasilkan keluaran berbeda pada Keccak-256 dan SHA3-256. Dalam pengembangan atau audit, pastikan Anda benar-benar menggunakan “Keccak-256” atau “SHA3-256”—karena keduanya tidak dapat dipertukarkan. Saat NIST menstandarkan SHA-3 pada 2015, domain separation inilah yang diubah (sumber: NIST, 2015).

Bagaimana Cara Menggunakan Keccak dengan Benar dalam Pengembangan

Langkah pertama: Pastikan masukan Anda berupa bytes atau teks. Jika berupa string, selalu lakukan encoding ke UTF-8; untuk string heksadesimal, ubah ke bytes mentah dan jangan sertakan awalan “0x” dalam data.

Langkah kedua: Pilih fungsi yang sesuai. Di EVM, keccak256 (Keccak-256) adalah standar. Beberapa library menyebut SHA3-256 sebagai sha3—pastikan dokumentasi dan versi library Anda sudah benar agar tidak terjadi kekeliruan.

Langkah ketiga: Validasi hasil secara silang. Gunakan dua library atau alat berbeda untuk menghitung hash dan pastikan hasilnya cocok; Anda bisa menggunakan selector yang sudah diketahui seperti "transfer(address,uint256)" yang menghasilkan "0xa9059cbb" sebagai contoh uji.

Perlakukan hash sebagai sidik jari satu arah dalam workflow Anda—hash bukan enkripsi maupun angka acak. Untuk mencegah serangan rainbow table, selalu tambahkan salt acak sebelum hashing, dan hash salt bersama data secara bersamaan.

Apa Risiko dan Kesalahan Umum dalam Penggunaan Keccak?

Tiga risiko utama: perbedaan padding, kesalahan encoding, dan penyalahgunaan dalam aplikasi.

  • Perbedaan Padding: Menggunakan Keccak-256 sebagai pengganti SHA3-256 akan menghasilkan output berbeda, yang bisa menyebabkan alamat atau selector tidak cocok—berisiko kehilangan dana atau kegagalan pemanggilan kontrak.
  • Kesalahan Encoding: Menganggap teks sebagai hex atau sebaliknya akan sepenuhnya mengubah hasil hash. Standarisasi strategi encoding saat pengembangan dan uji kasus tepi secara menyeluruh.
  • Penyalahgunaan dalam Aplikasi: Hashing bukan enkripsi. Menyimpan data sensitif hanya dengan satu kali hash tetap rentan terhadap serangan kamus. Selalu tambahkan salt acak dan atur kebijakan akses. Untuk proses keamanan finansial (seperti pengenalan deposit on-chain Gate), lakukan pengujian dan audit menyeluruh sebelum peluncuran.

Seberapa Aman dan Efisien Keccak?

Keamanan Keccak didasarkan pada konstruksi sponge dan parameter kapasitasnya. Untuk Keccak-256, resistensi tabrakan sekitar 2^128 operasi, sedangkan resistensi pre-image sekitar 2^256 operasi.

Sampai Januari 2025, belum ditemukan serangan tabrakan atau pre-image yang praktis pada parameter standar; penelitian umumnya fokus pada varian putaran yang dikurangi atau batas teoretis. Dari sisi kinerja, library terkemuka telah mengoptimalkan implementasi pada CPU/GPU untuk throughput tinggi; akselerasi hardware (seperti ASIC) juga terus berkembang untuk kebutuhan komputasi tinggi.

Bagaimana Prospek Masa Depan Keccak?

Keccak akan tetap menjadi inti keamanan sistem sebagai basis SHA-3; di ekosistem EVM, Keccak adalah fondasi untuk alamat, selector, dan pengindeksan log. Seiring akselerasi hardware dan peningkatan implementasi library, kinerja dan alat pengembangan akan semakin maju. Beberapa use case baru (seperti zero-knowledge proofs) mungkin menggunakan hash alternatif seperti Poseidon, tetapi hal ini tidak memengaruhi stabilitas Keccak untuk fingerprinting dan pengindeksan umum. Untuk developer, selama Anda membedakan antara Keccak-256 dan SHA3-256 dan disiplin dalam workflow encoding serta pengujian, Keccak tetap menjadi alat low-level yang andal.

FAQ

Saya Ingin Membuat Alamat Wallet Menggunakan Keccak—Mulai dari Mana?

Di Ethereum, Keccak-256 digunakan untuk menghasilkan alamat akun—dengan melakukan hash pada public key menggunakan Keccak-256 dan mengambil 20 byte terakhir sebagai alamat Anda. Jika Anda menggunakan Gate atau aplikasi wallet lain, proses ini berjalan otomatis; jika Anda mengembangkan smart contract, gunakan fungsi keccak256() di Solidity. Coba library seperti Web3.js untuk melihat bagaimana hash mengubah data berdimensi apa pun menjadi keluaran 256-bit tetap.

Mengapa Hasil Hash Keccak Berbeda di Tiap Alat?

Biasanya disebabkan perbedaan encoding data masukan. Keccak-256 mengharapkan data byte—jika Anda memasukkan string teks, alat bisa menangani encoding karakter secara berbeda (UTF-8 vs ASCII). Solusinya, standarisasi encoding dan tentukan format input secara eksplisit selama pengembangan; platform seperti Gate biasanya menyediakan instruksi input yang jelas. Juga pastikan Anda menggunakan Keccak-256 atau SHA3-256—karena hasilnya berbeda meski masukan sama.

Selain Pembuatan Alamat, Untuk Apa Lagi Keccak Digunakan di Smart Contract?

Keccak-256 digunakan secara luas di smart contract: untuk verifikasi integritas data (hash data transaksi untuk perbandingan), pembuatan ID unik (hash parameter gabungan), atau kontrol akses (menyimpan data sensitif sebagai hash, bukan plaintext). Beberapa kontrak meng-hash data pengguna sebelum disimpan untuk menghindari eksposur data mentah. Fleksibilitas ini menjadikan Keccak sebagai alat Web3 yang fundamental—namun hashing bersifat satu arah: data asli tidak dapat dipulihkan dari hasil hash-nya.

Apakah Saya Perlu Pengetahuan Kriptografi Lanjutan untuk Belajar Keccak?

Tidak. Sebagai pengguna Web3 atau developer pemula, cukup pahami bahwa “Keccak adalah fungsi hash satu arah—input identik selalu menghasilkan output identik.” Studi kriptografi lanjutan bersifat opsional (untuk audit keamanan atau riset); mayoritas developer hanya perlu memanggil fungsi library seperti keccak256 di Solidity. Mulailah dengan bereksperimen pada aplikasi nyata seperti tanda tangan atau pembuatan alamat di Gate atau testnet.

Apa yang Harus Diperhatikan Saat Menggunakan Keccak di Aplikasi Off-Chain?

Saat memanggil Keccak dari kode off-chain (front end atau back end), pastikan versi library yang digunakan sama dengan yang digunakan on-chain—biasanya Keccak-256. Menggunakan library standar seperti Web3.js atau ethers.js akan menghindari sebagian besar kesalahan karena implementasi Keccak sudah tepat secara default. Perhatikan serialisasi data—jika Anda membuat hash secara off-chain untuk verifikasi on-chain, metode serialisasi (seperti ABI encoding) harus benar-benar sama. Selalu lakukan validasi secara menyeluruh di lingkungan pengujian, terutama untuk tanda tangan atau verifikasi kontrak.

Sebuah “suka” sederhana bisa sangat berarti

Bagikan

Glosarium Terkait
Terdesentralisasi
Desentralisasi adalah desain sistem yang membagi pengambilan keputusan dan kontrol ke banyak peserta, sebagaimana lazim ditemui pada teknologi blockchain, aset digital, dan tata kelola komunitas. Desentralisasi mengandalkan konsensus berbagai node jaringan, memungkinkan sistem berjalan secara independen tanpa otoritas tunggal, sehingga keamanan, ketahanan terhadap sensor, dan keterbukaan semakin terjaga. Dalam ekosistem kripto, desentralisasi tercermin melalui kolaborasi node secara global pada Bitcoin dan Ethereum, exchange terdesentralisasi, wallet non-custodial, serta model tata kelola komunitas yang memungkinkan pemegang token menentukan aturan protokol melalui mekanisme voting.
epok
Dalam Web3, "cycle" merujuk pada proses berulang atau periode tertentu dalam protokol atau aplikasi blockchain yang terjadi pada interval waktu atau blok yang telah ditetapkan. Contohnya meliputi peristiwa halving Bitcoin, putaran konsensus Ethereum, jadwal vesting token, periode challenge penarikan Layer 2, penyelesaian funding rate dan yield, pembaruan oracle, serta periode voting governance. Durasi, kondisi pemicu, dan fleksibilitas setiap cycle berbeda di berbagai sistem. Memahami cycle ini dapat membantu Anda mengelola likuiditas, mengoptimalkan waktu pengambilan keputusan, dan mengidentifikasi batas risiko.
Apa Itu Nonce
Nonce dapat dipahami sebagai “angka yang digunakan satu kali,” yang bertujuan memastikan suatu operasi hanya dijalankan sekali atau secara berurutan. Dalam blockchain dan kriptografi, nonce biasanya digunakan dalam tiga situasi: transaction nonce memastikan transaksi akun diproses secara berurutan dan tidak bisa diulang; mining nonce digunakan untuk mencari hash yang memenuhi tingkat kesulitan tertentu; serta signature atau login nonce mencegah pesan digunakan ulang dalam serangan replay. Anda akan menjumpai konsep nonce saat melakukan transaksi on-chain, memantau proses mining, atau menggunakan wallet Anda untuk login ke situs web.
Tetap dan tidak dapat diubah
Immutabilitas merupakan karakter utama dalam teknologi blockchain yang berfungsi untuk mencegah perubahan atau penghapusan data setelah data tersebut dicatat dan mendapatkan konfirmasi yang memadai. Melalui penggunaan fungsi hash kriptografi yang saling terhubung dalam rantai serta mekanisme konsensus, prinsip immutabilitas menjamin integritas dan keterverifikasian riwayat transaksi. Immutabilitas sekaligus menghadirkan landasan tanpa kepercayaan bagi sistem yang terdesentralisasi.
sandi
Algoritma kriptografi adalah kumpulan metode matematis yang dirancang untuk "mengunci" informasi dan memverifikasi keasliannya. Jenis yang umum digunakan meliputi enkripsi simetris, enkripsi asimetris, dan pipeline algoritma hash. Dalam ekosistem blockchain, algoritma kriptografi menjadi fondasi utama untuk penandatanganan transaksi, pembuatan alamat, serta menjaga integritas data—semua aspek ini berperan penting dalam melindungi aset dan mengamankan komunikasi. Aktivitas pengguna di wallet maupun exchange, seperti permintaan API dan penarikan aset, juga sangat bergantung pada penerapan algoritma yang aman dan pengelolaan kunci yang efektif.

Artikel Terkait

Bagaimana Mempertaruhkan ETH?
Pemula

Bagaimana Mempertaruhkan ETH?

Saat Penggabungan selesai, Ethereum akhirnya beralih dari PoW ke PoS. Staker sekarang menjaga keamanan jaringan dengan mempertaruhkan ETH dan mendapatkan hadiah. Penting untuk memilih metode dan penyedia layanan yang tepat sebelum mempertaruhkan. Saat Penggabungan selesai, Ethereum akhirnya beralih dari PoW ke PoS. Staker sekarang menjaga keamanan jaringan dengan mempertaruhkan ETH dan mendapatkan hadiah. Penting untuk memilih metode dan penyedia layanan yang tepat sebelum mempertaruhkan.
2022-11-21 07:47:01
Apa itu Ethereum Terbungkus (WETH)?
Pemula

Apa itu Ethereum Terbungkus (WETH)?

Wrapped Ethereum (WETH) adalah versi ERC-20 dari mata uang asli blockchain Ethereum, Ether (ETH). Token WETH dipatok ke koin asli. Untuk setiap WETH yang beredar, ada cadangan ETH. Tujuan pembuatan WETH adalah untuk kompatibilitas di seluruh jaringan. ETH tidak mematuhi standar ERC-20 dan sebagian besar DApps yang dibangun di jaringan mengikuti standar ini. Jadi WETH digunakan untuk memfasilitasi integrasi ETH ke dalam aplikasi DeFi.
2022-11-24 08:49:09
Apa itu The Merge?
Pemula

Apa itu The Merge?

Dengan Ethereum menjalani penggabungan testnet terakhir dengan Mainnet, Ethereum akan resmi beralih dari PoW ke PoS. Lalu, apa dampak yang akan dibawa revolusi yang belum pernah terjadi ini ke dunia kripto?
2024-07-10 09:12:24