17 January 2013

The SHA-3 Hash Introduction [Indonesian]

 


Created by :
Agit Amrullah - 10.11.3879 | Bayu Krismuryanto - 10.11.3904 | Hendaru Heri H - 10.11.3945 | Rojali Soni Afandi -10.11.3966 | Arif Ardianto - 10.11.3967


Abstrak
SHA-3 ini dikenal sebagai Keccak yang dirancang oleh Guido Bertoni, Joan Daemen, Peeters Michael, dan Gilles Van Assche. SHA-3 atau Keccak ini merupakan pemenang dari kompetisi fungsi  hash NIST. SHA-3 ini menggunakan sponge construction dimana blok pesan XOR ke dalam bit awal state yang kemudian di lakukan permutasi, dimana input ke state hash pada tingkatan tertentu akan menghasilkan output yang mempunyai tingkatan yang sama. SHA-3 terdiri dari 5 x 5 array 64-bit kata, 1600 bit total. Belum ada standar untuk fungsi SHA-3 ini termasuk sistem enkripsi otentik dan pohon hash.   

Kata kunci: makalah, kriptografi, tugas, SHA-3
1. Pendahuluan
Kriptografi (atau kriptologi; dari Yunani κρυπτός, kryptos, “tersembunyi, rahasia”; dan γράφω, gráphō, “Saya menulis”, atau-λογία,-logia, masing-masing) adalah studi praktek dan menyembunyikan informasi. Kriptografi modern mengambil disiplin ilmu matematika, ilmu komputer, dan rekayasa. Aplikasi kriptografi termasuk kartu ATM, password komputer, dan perdagangan elektronik.
Kriptografi fungsi hash adalah jenis ketiga algoritma kriptografi. Mereka mengambil pesan dari setiap panjang sebagai masukan, dan output yang pendek, panjang tetap hash yang dapat digunakan di (untuk contoh) tanda tangan digital.
The US National Security Agency mengembangkan Secure Hash Algorithm MD5-seri seperti fungsi hash SHA-0 adalah algoritma yang cacat, SHA-1 secara luas digunakan dan lebih aman daripada MD5, namun telah mengidentifikasi cryptanalysts serangan terhadap hal itu; SHA-2 meningkatkan keluarga pada SHA-1, tetapi belum digunakan secara luas, dan otoritas standar AS menganggap “bijaksana” dari perspektif keamanan untuk mengembangkan sebuah standar baru untuk “secara signifikan meningkatkan kekokohan keseluruhan NIST hash algoritma toolkit. “Dengan demikian, sebuah kompetisi desain fungsi hash sedang berlangsung dan dimaksudkan untuk memilih standar nasional Amerika Serikat yang baru, disebut SHA-3, pada tahun 2012.
SHA-3, awalnya dikenal sebagai Keccak adalah fungsi hash kriptografi dirancang oleh Guido Bertoni, Joan Daemen, Peeters Michaël, dan Gilles Van Assche. Pada tanggal 2 Oktober 2012, Keccak terpilih sebagai pemenang kompetisi fungsi hash NIST. SHA-3 tidak dimaksudkan untuk menggantikan SHA-2, karena tidak ada serangan yang signifikan pada SHA-2 telah dibuktikan. Karena serangan yang sukses pada MD5, SHA-0 dan serangan teoritis pada SHA-1, NIST dirasakan kebutuhan untuk hash, kriptografi alternatif yang berbeda, yang menjadi SHA-3. Para penulis mengklaim 12,5 siklus per byte pada CPU Intel Core 2. Namun, dalam implementasi hardware itu terutama lebih cepat daripada semua finalis lainnya.
SHA-3 menggunakan sponge construction di mana blok pesan XOR ke dalam bit awal state, yang kemudian invertibly permutasi. Dalam versi yang digunakan dalam SHA-3, state terdiri dari 5 × 5 array 64-bit kata-kata, 1600 bit total.
Penulis Keccak ini telah mengusulkan tambahan, belum ada standar untuk fungsi, termasuk sistem enkripsi otentik dan pohon hash untuk hashing lebih cepat pada arsitektur tertentu. Keccak juga didefinisikan untuk ukuran w ke 1 bit (25 bit state total).



2. Metode Penelitian
Tugas akhir ini dikerjakan dengan metode penelitian studi literatur, yaitu dengan mengumpulkan referensi yang berkaitan dengan kriptografi SHA-3 (Secure Hash Algorithm).
3. Pembahasan
Keccak merupakan algoritma fungsi hash satu arah yang berbasis pada sponge construction dengan menggunakan fungsi permutasi. Algoritma keccak memiliki prinsip yang sama dengan algoritma chiper blok, dimana proses dilakukan terhadap blok-blok, setiap hasil proses bergantung dari masukan dan hasil proses sebelumnya.
Menurut Arianto[1] algoritma keccak menerima tiga parameter masukan, yaitu bitrate (r), capacity (c), dan difersity (d). secara umum proses dari keccak ini adalah :
1.      Proses pesan masukan (P), yaitu menerapkan padding pada pesan masukan.
2.      Pemecahan pesan masukan menjadi P0, P1,p2, …. Pi, dimana I = jumlah kelipatan panjang bitrate untuk panjang pesan masukan.
3.      Absorbing pada semua pecahan pesan masukan.
4.      Squeezing sebanyak j, dimana j = kelipatan panjang keluaran r/w untuk memenuhi panjang output yang diinginkan.
5.      Keluaran merupakan konkatenasi dari keluaran Squeezing pada rentang bitrate tertentu.
State pada keccak merupakan serangkaian bit yang dipandang sebagai suatu array tiga dimensi dari bit-bit tersebut.
Fungsi Spon pada keccak berbasis pada konstruksi spon. Konstruksi spon merupakan konstruksi iterasi sederhana untuk membangun sebuah fungsi spon dengan variabel. Panjang input dan panjang output yang berubah-ubah bergantung pada panjang transformasi atau permutasi tetap yang beroperasi dalam sejumlah bit.
Secara umum, dalam konstruksi spon terdapat dua fase, yaitu fase absorbing dan fase squeezing.
1.      Fase absorbing, merupakan fase dimana proses dilakukan terhadap semua pecahan dari input masukan dan di XOR-kan dengan bagian bitrate dari state kemudian dilewatkan kedalam fungsi f.
2.      Fase squeezing, merupakan fase untuk mendapatkan hasil keluaran. Dalam fase ini dilakukan konkatenasi terhadap sejumlah bit tertentu dari hasil fungsi sehingga jumlah bit konkatenasi tersebut sama dengan jumlah bit konkatenasi yang diinginkan.

4. Pembahasan
Perhitungan logika hash SHA-3 menggunakan state : c = 25W-r state bit yang tidak tersentuh oleh input atau output atau tanpa stack pada logika prosesnya. Hal ini dapat disesuaikan berdasarkan persyaratan keamanan, tetapi SHA-3 usulan menetapkan c = 2n konservatif, di mana n adalah ukuran dari hash output. Dengan demikian r, jumlah bit pesan yang diproses per blok permutasi, tergantung pada ukuran hash output. R rate 1152, 1088, 832, atau 576 (144, 136, 104 dan 72 byte) untuk 224,, 256 384 dan ukuran hash 512-bit, masing-masing, ketika w adalah 64.
Untuk memastikan pesan dapat merata dibagi menjadi r-bit blok, itu diisi dengan pola bit 10 * 1: 1 bit, nol atau lebih bit 0 (maksimum r-1), dan sedikit 1 akhir. Bit 1 akhir diperlukan karena bukti konstruksi spons keamanan mensyaratkan bahwa blok pesan akhir ini tidak semua-nol.
Untuk menghitung hash, menginisialisasi negara untuk 0, pad input, dan memecahnya menjadi r-bit potongan. Menyerap masukan ke negara, yaitu, untuk masing-masing bagian, XOR ke bagian dan kemudian menerapkan blok permutasi.
Setelah blok akhir permutasi, n bit bagian terdepan adalah hash yang diinginkan. Karena r selalu lebih besar dari n, sebenarnya ada pernah ada kebutuhan untuk permutasi blok tambahan dalam fase squeezing[5]*. Namun, panjang output dapat berbeda-beda mungkin berguna dalam aplikasi seperti bantalan enkripsi asimetris yang optimal. Dalam kasus ini, n adalah parameter keamanan daripada ukuran output.
Meskipun bukan bagian dari persyaratan pemetaan memory SHA-3, varian yang lebih kecil dari blok permutasi dapat digunakan, untuk ukuran output hash sampai setengah ukuran masing-masing bagian, jika r terdapat pada tingkatan terbatas. Sebagai contoh, hash 256-bit dapat dihitung dengan menggunakan 25 32-bit kata-kata jika r = 800-2 × 256 = 288 (36 byte per iterasi).
Berikut adalah langkah-langkah contoh pembuatan message menggunakan hash SHA-3 digest secara garis besar adalah sebagai berikut:
  1. Penambahan bit-bit pengganjal (padding bits).
  2. Penambahan nilai panjang pesan semula.
  3. Inisialisasi penyangga (buffer) MD.
  4. Pengolahan pesan dalam blok berukuran 512 bit.
1. Penambahan Bit-bit Pengganjal
Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512. Ini berarti panjang pesan setelah ditambahi bit-bit pengganjal adalah 64 bit kurang dari kelipatan 512. Angka 512 ini muncul karena SHA memperoses pesan dalam blok-blok yang berukuran 512.
Pesan dengan panjang 448 bit pun tetap ditambah dengan bit-bit pengganjal. Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah antara 1 sampai 512. Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit 0.
2. Penambahan Nilai Panjang Pesan Semula
Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi 512 bit.
3. Inisialisai Penyangga MD
SHA membutuhkan 5 buah penyangga (buffer) yang masing-masing panjangnya 32 bit (MD5 hanya mempunyai 4 buah penyangga). Total panjang penyangga adalah 5 ´ 32 = 160 bit. Keempat penyangga ini menampung hasil antara dan hasil akhir.
Kelima penyangga ini diberi nama A, B, C, D, dan E. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
4. Pengolahan Pesan dalam Blok Berukuran 512 bit.
Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL – 1).
Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini disebut proses HSHA. Proses HSHA terdiri dari 80 buah putaran (MD5 hanya 4 putaran), dan masing-masing putaran menggunakan bilangan penambah Kt, yaitu:
Putaran 0 £ t £ 19       Kt = 5A827999
Putaran 20 £ t £ 39     Kt = 6ED9EBA1
Putaran 40 £ t £ 59     Kt = 8F1BBCDC
Putaran 60 £ t £ 79     Kt = CA62C1D6
Yq menyatakan blok 512-bit ke-q dari pesan yang telah ditambah bit-bit pengganjal dan tambahan 64 bit nilai panjang pesan semula. MDq adalah nilai message digest 160-bit dari proses HSHA ke-q. Pada awal proses, MDq berisi nilai inisialisasi penyangga MD.
Setiap putaran menggunakan operasi dasar yang sama (dinyatakan sebagai fungsi f).
Operasi dasar SHA yang diperlihatkan pada Gambar 3 dapat ditulis dengan persamaan sebagai berikut:
a, b, c, d, e ¬ (CLS5(a) + ft(b, c, d) + e + Wt + Kt),  a, CLS30(b), c, d
yang dalam hal ini,
a, b, c, d, e = lima buah peubah penyangga 32-bit
(berisi nilai penyangga A, B, C, D, E)
t  = putaran, 0 £ t £ 79
ft = fungsi logika
CLSs = circular left shift sebanyak s bit
Wt = word 32-bit yang diturunkan dari blok 512 bit yang sedang diproses
Kt = konstanta penambah
+  = operasi penjumlahan modulo 232
Secara garis besar dapat dinyatakan dalam kode program[6] berikut:
for t ¬ 0 to 79 do
TEMP ¬ (a <<< 5) + ft(b, c, d) + e + Wt + Kt)
e ¬ d
d ¬ c
c ¬ b <<< 30
b ¬ a
a ¬ TEMP
endfor

5. Penutup
Algoritma keccak merupakan algoritma yang berbasis struktur spon, yang terdiri dari 2 fase yaitu absorbing dan squeezing. Pada fase absorbing, dilakukan permutasi terhadap input masukan, sedangkan pada fase squeezing dilakukan permutasi dan penggabungan untuk mendapatkan hasil keluaran.
Kelebihan dari SHA – 3 diantaranya :
  1. memvalidasi password
  2. menghindari kesalahan pengiriman password dalam kondisi clear
  3. memastikan data tidak berubah selama ditransmisikan
  4. dilakukan dengan cara mengenkrip nilai hash sebuah dokumen dengan menggunakan private key, sehingga menghasilkan tanda tangan digital untuk suatu dokumen.
Kelemahan dari SHA – 3 diantaranya
  1. Fungsi hash yang memerlukan memory yang cukup besar.
  2. Pemetaan blok harus dalam jumlah space memory yang besar karena perputaran hingga 512 bit.
DAFTAR PUSTAKA
[1]     Ariyanto, Kriptografi, Maret 2010 (http://bangunariyanto.wordpress.com/2010/03/04/kriptografi), diunduh tanggal 4 Januari 2013 pukul 22:00
[2]     M. Yusuf, Studi dan Implementasi Algoritma Keccak, Institut Teknologi Bandung, 2010 diunduh tanggal 4 Januari 2013 pukul 22:45
[3]     Wikipedia. SHA-3 (http://en.wikipedia.org/wiki/SHA-3) diunduh tanggal 4 Januari 2013 pukul 16:00
[4]     Zainurrahman, Kriptografi, (http://rzain.blogspot.com/2012/09/kriptografi.html), diunduh tanggal 5 Januari 2013 pukul 20:00
[5]     http://en.wikipedia.org/wiki/Squeeze_job diunduh tanggal 9 Januari 2013 pukul 13:00
[6]     http://adidoang.wordpress.com/tag/algoritma-enkripsi/ diunduh tanggal 9 Januari 2013 pukul 13:00

0 komentar:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More