
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.
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.
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.
Keccak memiliki empat aplikasi utama di Ethereum: pembuatan alamat, selector fungsi, topik event, dan pengindeksan struktur data.
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).
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.
Tiga risiko utama: perbedaan padding, kesalahan encoding, dan penyalahgunaan dalam aplikasi.
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.
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.
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.
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.
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.
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.
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.


