Kamis, 03 Mei 2012

Algoritma SHA



Secure Hash Algorithm, SHA-1 ini dikembangkan oleh NIST (National Institute of Standard and Technology). SHA-1 dapat diterapkan dalam penggunaan Digital Signature Algorithm (DSA) yang dispesifikasikan dalam Digital Signature Standard (DSS) dan  SHA  tersebut dapat diterapkan untuk aplikasi federal.
Untuk suatu pesan yang panjangnya < 2 ^ 64, SHA-1 akan menghasilkan keluaran sebanyak 160 bit dari pesan tersebut dan pesan keluaran itu disebut message digest. Panjang jarak message digest dapat berkisar antara 160 sampai 512 bit tergantung algoritmanya. Berdasarkan cirinya SHA-1 dapat digunakan dengan algoritma kriptografi lainnya seperti Digital Signature Algorithms atau dalam generasi angka yang acak (bits).
Bentuk penggunaan SHA-1 dengan DSA dapat dilihat pada gambar di bawah ini:

Gambar Bentuk Penggunaan SHA-1 dengan DSA

SHA-1 dikatakan aman karena proses SHA-1 dihitung secara infisibel untuk mencari pesan yang sesuai untuk menghasilkan message digest atau dapat juga digunakan untuk mencari dua pesan yang berbeda yang akan menghasilkan message digest yang sama. Menurut jenisnya SHA dapat dispesifikasikan menjadi 4 bagian yaitu: SHA-1, SHA-256, SHA-384, dan SHA-512. Berikut ini merupakan daftar-daftar properti dari keempat SHA.

Gambar Daftar-daftar properti dari keempat SHA

Untuk SHA-1 ukuran blok pesan -m bit- dapat ditentukan tergantung dari algoritmanya. Pada SHA-1 masing-masing blok pesan mempunyai 512 bit dimana dapat dilakukan dengan 16 urutan sebesar 32 bit. 
SHA-1 digunakan untuk menghitung message digest pada pesan atau file data yang diberikan sebagai input. Tujuan pengisian pesan adalah untuk menghasilkan total dari pesan yang diisi menjadi perkalian dari 512 bits.

Algoritma SHA-1 dapat diringkas sebagai berikut:
a. Penghitungan menggunakan dua buffer dimana masing-masing buffer terdiri dari lima sebesar 32 bit kata dan urutan 80 juga sebesar 32 bit kata. Lima kata pertama pada buffer kata diberi nama A, B, C, D, E sedangkan lima kata kedua diberi nama H0, H1, H2, H3, dan H4. Kemudian pada 80 kata yang berurutan diberi nama W0, W1, …, W79 dan pada penghitungan ini juga memakai TEMP.

b. Lakukan pengisian pesan, M dan kemudian parsingkan pesan tersebut ke dalam N 512 bit blok pesan, M(1), M(2), …, M(n). Caranya: 32 bit pertama dari blok pesan ditunjukkan ke M0(i), lalu 32 bit berikutnya adalah M1(i) dan selanjutnya berlaku hingga M15(i).

c. Inisialisasi Nilai Hash (dalam bentuk hex) :
H0  = 67452301 H3 = 10325476
H1 = EFCDAB89 H4 = C3D2E1F0
H2 = 98BADCFE
 
d. Lakukan proses M1, M2, …, Mn dengan cara membagi Mi ke dalam 16 kata W0, W1, …, W15 dimana W0 merupakan left most.

e. Hitung : For t = 16 to 79
Wt = S1(Wt-3 + Wt-8  + Wt-14  + Wt-16)

f. Inisialisasi 5 variabel A, B, C, D, dan  E dengan nilai Hash :
A = H0 ; B = H1; C = H2; D = H3; E = H4.

g. Hitung : For t = 0 to 79
TEMP = S5(A) + ft(B,C,D) + E + Wt  + Kt
E = D; D = C; C = S30(B); B = A; A = TEMP.

h. Hitung Nilai Hash :
H0 = H0 + A ; H1 = H1 + B ;
H2 = H2  + C ; H3  = H3  + D ;
H4 = H4 + E.

Hasil dari message digest sebesar 160 bit dari pesan, M adalah : H0  H1 H2  H3  H4.


Tidak ada komentar:

Poskan Komentar