Apa Itu SHA-3?
SHA-3 (Secure Hash Algorithm 3) adalah anggota terbaru dari keluarga Secure Hash Algorithm, diterbitkan oleh NIST pada tahun 2015. Tidak seperti SHA-2 yang didasarkan pada konstruksi Merkle-Damgård, SHA-3 menggunakan desain yang fundamental berbeda yang disebut konstruksi spons. Perbedaan ini membuat SHA-3 tahan terhadap kelas serangan tertentu yang mengancam SHA-2.
Algoritma yang awalnya bernama Keccak (diucapkan "ketchak") memenangkan kompetisi fungsi hash NIST pada tahun 2012 setelah proses evaluasi publik selama lima tahun. NIST menstandarisasi empat panjang hash: SHA3-224, SHA3-256, SHA3-384, dan SHA3-512, plus dua fungsi output yang dapat diperpanjang (XOF): SHAKE128 dan SHAKE256.
Cara Kerja SHA-3
SHA-3 menggunakan konstruksi spons, yang terdiri dari dua fase: menyerap (absorbing) dan memeras (squeezing). Dalam fase menyerap, data input dimasukkan ke dalam status internal dalam blok. Dalam fase memeras, output hash diekstraksi.
Status internal SHA-3 adalah array 3D dari jalur 5×5, masing-masing berisi 64 bit, dengan total ukuran status 1600 bit. Fungsi permutasi, yang disebut Keccak-f, diterapkan secara berulang selama kedua fase untuk mencampur status.
Desain ini memberikan SHA-3 beberapa keunggulan:
- Tidak rentan terhadap serangan perpanjangan panjang yang mempengaruhi SHA-2
- Konstruksi spons menyediakan bukti keamanan
- Kinerja baik dalam implementasi perangkat keras
- Varian XOF menghasilkan output dengan panjang sembarang
SHA-3 vs SHA-2
| Fitur | SHA-2 | SHA-3 |
|---|---|---|
| Konstruksi | Merkle-Damgård | Spons (Keccak) |
| Diterbitkan | 2001 | 2015 |
| Ukuran output | 224, 256, 384, 512 | 224, 256, 384, 512 + XOF |
| Perpanjangan panjang | Rentan | Tahan |
| Kecepatan perangkat lunak | Lebih cepat | Lebih lambat |
| Kecepatan perangkat keras | Sedang | Sangat baik |
| Ketahanan side-channel | Baik | Lebih baik |
Kapan Menggunakan SHA-3
SHA-3 tidak dimaksudkan untuk menggantikan SHA-2 segera. SHA-2 tetap aman, dan tidak ada serangan praktis yang mengurangi keamanannya di bawah tingkat yang dapat diterima. SHA-3 ada sebagai cadangan jika SHA-2 akhirnya dipatahkan.
Gunakan SHA-3 ketika:
- Anda memerlukan ketahanan terhadap serangan perpanjangan panjang
- Aplikasi Anda berjalan pada perangkat keras dengan akselerasi SHA-3
- Anda ingin mendiversifikasi dependensi kriptografis dari SHA-2
- Anda memerlukan fungsi hash dengan desain yang fundamental berbeda (pertahanan berlapis)
- Anda memerlukan output dengan panjang variabel dari SHAKE128 atau SHAKE256
Contoh Kode
// PHP
echo hash('sha3-256', 'hello');
echo hash('sha3-512', 'hello');
import hashlib
print(hashlib.sha3_256(b'hello').hexdigest())
print(hashlib.sha3_512(b'hello').hexdigest())
# SHAKE (extendable output)
print(hashlib.shake_128(b'hello').hexdigest(16)) # 16 bytes output
print(hashlib.shake_256(b'hello').hexdigest(32)) # 32 bytes output
// Node.js
const crypto = require('crypto');
console.log(crypto.createHash('sha3-256').update('hello').digest('hex'));
console.log(crypto.createHash('sha3-512').update('hello').digest('hex'));
SHAKE128 dan SHAKE256
SHAKE (Secure Hash Algorithm KEccak) adalah fungsi output yang dapat diperpanjang (XOF). Tidak seperti fungsi hash dengan panjang tetap, XOF menghasilkan output dengan panjang berapa pun yang diinginkan. SHAKE128 menyediakan keamanan 128-bit dengan panjang output sembarang, sementara SHAKE256 menyediakan keamanan 256-bit.
XOF berguna untuk:
- Menghasilkan kunci kriptografis dengan panjang sembarang dari seed
- Membuat nilai masking dalam skema enkripsi
- Membangun stream cipher dan generator angka acak
Alat Online
Alat SHA-3 Hash Generator di Help2Code menghitung hash SHA3-224, SHA3-256, SHA3-384, dan SHA3-512 secara instan. Bandingkan output dengan hash SHA-2 menggunakan Multiple Hash Generator.
Kesimpulan
SHA-3 adalah fungsi hash modern yang dirancang dengan baik dengan margin keamanan yang konservatif. Meskipun SHA-2 tetap menjadi standar untuk sebagian besar aplikasi, SHA-3 adalah pilihan yang sangat baik ketika Anda memerlukan fungsi hash cadangan untuk pertahanan berlapis, atau ketika Anda memerlukan kemampuan unik dari fungsi output yang dapat diperpanjang SHAKE.