Secure Hash Algorithm (SHA)


  • SHA adalah fungsi hash satu-arah yang dibuat oleh NIST dan digunakan bersama DSS (Digital Signature Standard). Oleh NSA, SHA dinyatakan sebagai standard fungsi hash satu-arah. SHA didasarkan pada MD4 yang dibuat oleh Ronald L. Rivest dari MIT.
  • SHA disebut aman (secure) karena ia dirancang sedemikian sehingga secara komputasi tidak mungkin menemukan pesan yang berkoresponden dengan message digest yang diberikan.
  • Algoritma SHA menerima masukan berupa pesan dengan ukuran maksimum 264 bit (2.147.483.648 gigabyte) dan menghasilkan message digest yang panjangnya 160 bit, lebih panjang dari message digest yang dihasilkan oleh MD5

·         Langkah-langkah pembuatan message 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

  • Pada Gambar 2, 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

atau dapat dinyatakan dalam kode program 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

yang dalam hal ini, <<< menyatakan operasi pergeseran circular left shift.

·         Fungsi ft adalah fungsi logika yang melakukan operasi logika bitwise. Operasi logika yang dilakukan dapat dilihat pada Tabel 1.

Tabel 1. Fungsi logika ft pada setiap putaran

Putaran

ft(b, c, d)

0 .. 19

(b Ù c) Ú (~b Ù d)

20 .. 39

b Å c Å d

40 .. 59

(b Ù c) Ú (b Ù d) Ú (c Ù d)

60 .. 79

b Å c Å d

Catatan: operator logika AND, OR, NOT, XOR masing-masing dilambangkan dengan Ù, Ú, ~, Å

  • Nilai W1 sampai W16 berasal dari 16 word pada blok yang sedang diproses, sedangkan nilai Wt berikutnya didapatkan dari persamaan

Wt = Wt – 16 Å Wt – 14 Å Wt – 8 Å Wt – 3

  • Setelah putaran ke-79, a, b, c, d, dan e ditambahkan ke A, B, C, D, dan E dan selanjutnya algoritma memproses untuk blok data berikutnya (Yq+1). Keluaran akhir dari algoritma SHA adalah hasil penyambungan bit-bit di A, B, C, D, dan E.
About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: