A. Pendahuluan
Hash atau hasing adalah proses keamanan suatu data dengan merubah menjadi
data lain dengan panjang tertentu. SHA (Secure Hash Algorithm) adalah algoritma yang
dispesifikasikan dalam Secure Hash Standard (SHS) oleh FIPS 180 (Federal Information
Processing Standard). SHA dikembangkan pertama kali oleh NIST (National Institute of
Standards and Technology). Fungsi hash SHA (Secure Hash Algorithm), antara lain
SHA-1, SHA-224, SHA-256, SHA-384 dan SHA-512 adalah lima fungsi hash
kriptografi yang dibuat oleh National Security Agency (NSA) dan dinyatakan sebagai
standar keamananan pemerintah USA.
Tabel 1 Beberapa fungsi hash
Algoritma
Kolisi
MD2
128
128
Ya
MD4
128
512
Hampir
MD5
128
512
Ya
RIPEMD
128
512
Ya
RIPEMD-128/256
128/256
512
Tidak
RIPEMD-160/320
160/320
512
Tidak
SHA-0
160
512
Ya
SHA-1
160
512
Ada cacat
SHA-256/224
256/224
512
Tidak
SHA-512/384
512/384
1024
Tidak
WHIRLPOOL
512
512
Tidak
memperbaiki kekurangann yang ada di MD4 itu sendiri. SHA-1 merupakan algoritma
hash yang banyak diaplikasikan dalam keamanan protokol menggunakan SSL (Secure
Sockets Layer), PGP (Pretty Good Privacy), XML Signature, dan beberapa aplikasi
lainnya.
B. Contoh Fungsi SHA-1
Temukan nilai SHA-1 dari plain text: tes1
1.
2.
3.
4.
5.
6.
Pesan: tes1
Konversi setiap 4 byte kedalam word:
tes1 ---> 74657331
Mengolah final bits, menambahkan padding bit 1 kemudian sisanya bit 0
Panjang pesan = 4
Panjang Pesan % 4 = 0, Karena panjang teks adalah kelipatan 4 (4 byte padding) --> 80000000
Konstanta awal:
H0 = 0x67452301
H1 = 0xEFCDAB89
H2 = 0x98BADCFE
H3 = 0x10325476H4 = 0xC3D2E1F0
Menambahkan padding bit ke 448 bit ((mod 512 bit) = 14 word (mod 16 word) dalam decimal
1952805681,2147483648
1952805681,2147483648,0
1952805681,2147483648,0,0
1952805681,2147483648,0,0,0
1952805681,2147483648,0,0,0,0
1952805681,2147483648,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0,0,0,0,0,0
1952805681,2147483648,0,0,0,0,0,0,0,0,0,0,0,0,0,32
Masukkan setiap nilainya kedalam array,konversi kembali jadi hexa:
psn[0]=74657331
psn[1]=80000000
psn[2]=00000000
psn[3]=00000000
psn[4]=00000000
psn[5]=00000000
psn[6]=00000000
psn[7]=00000000
psn[8]=00000000
psn[9]=00000000
psn[10]=00000000
psn[11]=00000000
psn[12]=00000000
psn[13]=00000000
psn[14]=00000000
psn[15]=00000020
Process setiap blok 16-word
Permulaan blok pada word 0
Membuat entry dalam array W:
Untuk i = 16 sampai 79, W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1), fungsi rotate_left = ( n<<s ) | (n>>>(32-s))
W[0]=74657331
W[1]=80000000
W[2]=00000000
|
W[79]=a9e956e8
7.
8.
C. Pustaka:
Kaufman, C., Perlman, R., and Speciner, M., 2002, Network Security: Private
Communication in a Public World (2nd Edition), Prentice Hall: USA
Munir, R. 2006. Kriptografi. Informatika, Bandung
Maryanto, Budi. 2008. Penggunaan Fungsi Hash Satu Arah Untuk Enkripsi Data. Jurnal
Informatika, STMIK LIKMI, Bandung