Detail SHA-3: Algoritma Hash Berbasis Keccak

SHA-3 adalah fungsi hash kriptografi yang dikembangkan dari algoritma Keccak, pemenang kompetisi NIST SHA-3 pada 2015. Berbeda dengan SHA-256 yang menggunakan struktur Merkle-Damgård, SHA-3 menggunakan konstruksi sponge yang memungkinkan fleksibilitas output dan keamanan tinggi. SHA-3 tersedia dalam varian seperti SHA3-224, SHA3-256, SHA3-384, dan SHA3-512, serta mode XOF (eXtendable Output Function) seperti SHAKE128 dan SHAKE256. Saya akan fokus pada SHA3-256 untuk detail ini.


Struktur Umum

  • Input: Data apa pun.

  • Output: Hash dengan panjang tertentu (misalnya, 256 bit untuk SHA3-256).

  • State: Matriks 3D 5x5x64 bit (total 1600 bit).

  • Kapasitas (c): Bagian state untuk keamanan (512 bit untuk SHA3-256).

  • Rate (r): Bagian state untuk input per iterasi (1600 - 512 = 1088 bit).

  • Putaran: 24 putaran Keccak-f per blok.

SHA-3 bekerja dengan "menyerap" (absorb) input dan "memeras" (squeeze) output, seperti spons.

Langkah-Langkah SHA-3

1. Preprocessing

  • Konversi ke Biner: Input diubah ke bit. Misalnya, "abc" → 01100001 01100010 01100011 (24 bit).
  • Padding:

  • Aturan padding Keccak untuk SHA-3: Tambah "01" (domain separation) dan "1" di akhir, isi nol di antara.

  • Untuk SHA3-256 (r=1088 bit):

  • "abc" (24 bit) → 01100001 01100010 01100011 01 000...1.

  • Total panjang jadi kelipatan 1088 bit (1 blok untuk "abc").

  • Contoh blok 1088-bit:
  • 01100001 01100010 01100011 01 000...1

  • Pecah ke Blok: Input pendek seperti "abc" jadi 1 blok 1088-bit.
2. Inisialisasi State
  • State adalah matriks 5x5x64 bit (1600 bit), semua diisi nol:
  • [0, 0, 0, 0, 0] // x=0
  • [0, 0, 0, 0, 0] // x=1
  • [0, 0, 0, 0, 0] // x=2
  • [0, 0, 0, 0, 0] // x=3
  • [0, 0, 0, 0, 0] // x=4
  • Setiap elemen (lane) adalah 64-bit.
  • Koordinat: A[x,y,z], x dan y = 0-4, z = 0-63 (bit dalam lane).
3. Fase Absorb (Menyerap Input)
  • XOR dengan Blok Input:
  • Blok 1088-bit pertama (misalnya, "abc" + padding) di-XOR-kan dengan 1088 bit pertama state.
  • 512 bit terakhir (kapasitas) tetap nol.
  • State awal jadi: [input di r, nol di c].
Fungsi Keccak-f[1600]:
  • State 1600-bit diproses melalui 24 putaran.
  • Tiap putaran punya 5 langkah: θ (Theta), ρ (Rho), π (Pi), χ (Chi), ι (Iota).
a. θ (Theta): Difusi
  • Hitung paritas tiap kolom (XOR semua bit di z tertentu untuk setiap x).
  • Update setiap lane:
  • A[x,y,z] = A[x,y,z] XOR (paritas[x-1,z] XOR paritas[x+1,z-1])
  • Contoh: Jika lane A[0,0] = "abc" (24 bit + padding), paritas dihitung dan disebarkan.
b. ρ (Rho): Rotasi
  • Rotasi bit setiap lane dengan jumlah berbeda (tabel rotasi Keccak).
  • Misalnya:
  • A[0,0] rotasi 0 bit (tidak berubah).
  • A[1,0] rotasi 1 bit.
  • A[2,1] rotasi 45 bit, dll.
  • Contoh: 1100 rotasi 1 → 0110.
c. π (Pi): PermutasiPosisi lane diacak:
  • A'[x,y] = A[(x + 3y) mod 5, x]
  • Contoh: A[1,0] pindah ke A[0,1].
d. χ (Chi): Non-linearitas
  • Update setiap bit:
  • A[x,y,z] = A[x,y,z] XOR ((NOT A[x+1,y,z]) AND A[x+2,y,z])
  • Contoh: Jika A[0,0,0] = 1, A[1,0,0] = 0, A[2,0,0] = 1 → 1 XOR ((NOT 0) AND 1) = 1 XOR 1 = 0.
e. ι (Iota): Konstanta
  • XOR lane A[0,0] dengan konstanta putaran (RC[i]), misalnya RC[0] = 0000000000000001.
  • Total 24 RC unik.
  • Iterasi: Ulangi untuk setiap blok input (hanya 1 untuk "abc").
4. Fase Squeeze (Mengeluarkan Hash)
  • Ambil 256 bit pertama state setelah Keccak-f.
  • Untuk SHA3-256, cukup 1 "squeeze" karena r > 256.
  • Hash "abc": 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532.
Operasi Bitwise (Detail)
  • XOR: 1 XOR 1 = 0, 1 XOR 0 = 1.
  • AND: 1 AND 1 = 1, 1 AND 0 = 0.
  • NOT: NOT 1 = 0, NOT 0 = 1.
  • Rotasi: Geser bit dengan wrap-around (misalnya, 1100 rotasi 1 = 0110).
Simulasi untuk "abc"
1. Padding: 01100001 01100010 01100011 01 000...1 (1088 bit).

2. State Awal: XOR "abc" + padding ke 1088 bit pertama.

3 .Putaran 0:
  • θ: Hitung paritas, sebarkan.
  • ρ: Rotasi lane (misalnya, A[1,0] rotasi 1 bit).
  • π: Acak posisi.
  • χ: Non-linear XOR/AND.
  • ι: XOR A[0,0] dengan RC[0].
4. Hasil: Setelah 24 putaran, ambil 256 bit → 3a985da7....

Berikut blog dengan detail SHA-3 ditambahka

White Paper Bitcoin: Awal dari Revolusi Digital

Pada 31 Oktober 2008, Satoshi Nakamoto menerbitkan "Bitcoin: A Peer-to-Peer Electronic Cash System". Tujuannya? Uang digital tanpa perantara.

Apa yang Diusulkan Satoshi?
  • Peer-to-Peer: Transaksi langsung.
  • Blockchain: Buku besar publik.
  • Keamanan: Kriptografi.
  • Proof-of-Work: Mencegah double-spending.
  • Pasokan: 21 juta Bitcoin.
Proof-of-Work: Jantung Keamanan Bitcoin

Proof-of-Work (PoW) memastikan keamanan Bitcoin.

Cara Kerja PoW
  1. Transaksi: Masuk mempool.
  2. Penambang: Hash data dengan SHA-256.
  3. Target: Hash dengan nol awal.
  4. Imbalan: Blok ditambahkan.
Hashing: Sidik Jari Digital
Hashing menghasilkan kode unik dari data.

Sifat Hash
  • Unik: Data berbeda = hash berbeda.
  • Satu Arah: Tidak bisa dibalik.
  • Konsisten: Data sama = hash sama.
SHA-256: Mesin Hash Bitcoin (Detail)

SHA-256 adalah inti PoW Bitcoin.

Cara Kerja SHA-256

1. Preprocessing: "abc" → 61626380 ... 00000018 (512 bit).

2. Inisialisasi: H0 = 6a09e667, dll.

3. Kompresi:
  • W0 = 61626380, ekspansi ke 64 kata.
  • 64 putaran: T1 = h + Σ1(e) + Ch + K[i] + W[i].
4. Output: "abc" → ba7816bf8f01cfea....

SHA-3: Keamanan Generasi Baru (Detail)
SHA-3 (Keccak) menggunakan struktur sponge.

Cara Kerja SHA-3

1. Preprocessing:
  • "abc" → 01100001 01100010 01100011 01 000...1 (1088 bit).
2. State: Matriks 5x5x64 bit (1600 bit), awal nol.

3. Absorb:
XOR input ke 1088 bit pertama.
24 Putaran Keccak-f:
  • θ: Difusi paritas.
  • ρ: Rotasi lane (misalnya, A[1,0] rotasi 1).
  • π: Permutasi posisi.
  • χ: A[x,y,z] XOR ((NOT A[x+1,y,z]) AND A[x+2,y,z]).
  • ι: XOR A[0,0] dengan RC (misalnya, 00000001).
4. Squeeze: Ambil 256 bit → 3a985da74fe225b2....

Operasi Bitwise
  • XOR: 1 XOR 1 = 0.
  • AND: 1 AND 0 = 0.
  • Rotasi: 1100 rotasi 1 = 0110.
SHA-3 fleksibel dan tahan serangan khusus.

BLAKE2: Kecepatan dan Efisiensi
BLAKE2 cepat dan praktis.

Cara Kerja BLAKE2b
  1. Preprocessing: Blok 128-byte.
  2. Kompresi: 10 putaran G-function.
  3. Output: "abc" → 508c5e8c327c14e2....
Perbandingan BLAKE2 vs SHA-3
  • BLAKE2: Cepat, sederhana.
  • SHA-3: Aman, fleksibel.
Kesimpulan
Bitcoin, PoW, dan hashing adalah fondasi teknologi modern. SHA-256 kuat untuk Bitcoin, SHA-3 aman dan fleksibel, BLAKE2 efisien. Pilih sesuai kebutuhanmu!

Apa pendapatmu tentang teknologi ini? Tulis di kolom komentar! Untuk pertanyaan lebih lanjut, saya, Dicki Lesmana, siap membantu.

Komentar

Postingan populer dari blog ini

Sejarah Google dari Waktu ke Waktu: Dari Garasi ke Raksasa Digital

Sejarah Terciptanya HP dan Produk Xiaomi: Dari Nol Hingga Jadi Raksasa Teknologi

Lei Jun: Visioner di Balik Kesuksesan Xiaomi