Fungsi hash SHA-1 Analisis Perbandingan Digital Signature Algorithm dan Gost Digital Signature Algorithm Pada Tanda Tangan Digital File .Txt

Banyak skema kriptografi yang meletakkan dasar keamanannya pada kesulitan alami di dalam komputasi logaritma diskrit, diantaranya adalah skema kriptografi kunci publik ElGamal, Digital Signature Algorithm DSA dan skema kriptografi Cramer- Shoup Stallings. 2003.

2.6 Fungsi Hash

Fungsi hash merupakan fungsi yang menerima masukan string yang panjangnya sembarang kemudian mentransformasikannya menjadi string keluaran yang panjangnya tetap fixed. Umumnya berukuran jauh lebih kecil daripada ukuran string semula. Fungsi hash dilambangkan dengan hk bertugas untuk mengubah k key menjadi suatu nilai dalam interval [0....X], dimana X adalah jumlah maksimum dari record-record yang dapat ditampung dalam tabel. Jumlah maksimum ini bergantung pada ruang memori yang tersedia. Fungsi hash yang ideal adalah mudah dihitung dan bersifat acak, agar dapat menyebarkan semua key. Dengan key yang tersebar, berarti data dapat terdistribusi secara seragam tabrakan dapat dicegah. Sehingga kompleksitas waktu model hash d apat mencapai Θ1, dimana kompleksitas tersebut tidak ditemukan pada struktur model lain. Ada dua macam fungsi hash. Pertama adalah fungsi hash tanpa kunci, fungsi hash semacam ini dapat dihitung oleh siapa saja. Kedua adalah fungsi hash dengan kunci, hanya orang yang memiliki kunci saja yang dapat menghitung message digest yang dihasilkan Menezes et al. 1996.

2.6.1 Fungsi hash SHA-1

SHA-1 merupakan algoritma hash standar yang digunakan pada DSA. Algoritma ini dirancang oleh NIST pada tahun 1993. Algoritma SHA-1 mampu menerima input pesan maksimal 2 64 bit dan menghasilkan message digest dengan panjang 160 bit. SHA-1 aman karena didesain untuk tidak memungkinkan mendapatkan pesan yang berhubungan dengan message digest, atau untuk menemukan dua pesan yang berbeda yang menghasilkan message digest yang sama Menezes et. al 1996. Proses pembentukan message digest dengan menggunakan algoritma SHA-1 terdiri dari lima langkah Stallings 2003: 1. Message padding Universitas Sumatera Utara Input pesan pada algoritma SHA-1 dibagi menjadi blok-blok yang masing- masing panjangnya adalah 512 bit. Akibat pembagian ini maka jumlah bit pada blok terakhir akan lebih kecil atau sama dengan 512 bit. Selanjutnya blok terakhir ini akan mengalami message padding. Proses pembentukan message padding: 1 Input pesan yang masuk dalam bentuk American Standard Code for Information Interchange ASCII diubah kedalam rangkaian bit, dan kemudian dihitung panjang rangkaian bit K. 2 Selanjutnya rangkaian bit ini dibagi menjadi blok-blok dengan panjang masing-masing 512 bit. Blok terakhir panjangnya akan lebih kecil atau sama dengan 512 bit. 3 Pada blok terakhir pesan, dilakukan penambahan bit-bit isian padding. Bit yang digunakan sebagai bit isian adalah bit “1” diikuti sejumlah bit “0” sehingga: - Jika panjang blok terakhir pesan lebih kecil dari 448 bit, maka tambahkan bit “1” pada posisi bit paling akhir, diikuti dengan beberapa bit “0” sehingga total panjang bit setelah proses tersebut adalah 448 bit. - Jika panjang blok terakhir pesan lebih besar atau sama dengan 448 bit, maka tambahkan bit “1” pada posisi bit paling akhir diikuti dengan beberapa bit “0” sehingga total panjang bit setelah proses tersebut adalah 512 bit. Kemudian buat 448 bit baru yang isinya bit “0”. - Jika panjang blok terakhir pesan sama dengan 512 bit, maka buat blok baru untuk menampung proses message padding. Bit pertama dari blok baru diisi bit “1”, sedangkan bit-bit berikutnya diisi dengan bit “0” sampai dengan panjang bit 448. Sebagai contoh misalkan isi pesan adalah “abc”, maka ubah pesan tersebut ke dalam kode ASCII-nya, yaitu: a=97, b=98, c=99. Kemudian ubah representasi desimal dari kode ASCII tersebut ke dalam representasi binernya, yaitu: 01100001 | 01100010 | 01100011, panjang pesan asli ini K adalah 24 bit. Karena panjang bit pesan asli kurang dari 448 bit, maka dilakukan proses Universitas Sumatera Utara padding dengan menambahkan “1” pada posisi bit paling akhir, dan tambahkan “0” sehingga panjang total bit setelah proses padding ini adalah 448 bit. 2. Penambahan panjang bit Setelah proses message padding, jumlah bit blok terakhir adalah 448 bit. Representasikan K ke dalam bilangan biner untuk memperoleh 64 bit terakhir, agar total panjang blok terakhir 512 bit. Urutan bit paling kanan dijadikan low order. Jika K 2 64 maka hanya low order dari 64 bit saja yang akan digunakan. Misalkan panjang pesan asli K = 24 bit dan direpresentasikan ke dalam bilangan biner 16 bit adalah 00000000 | 00011000. Nilai ini dijadikan 64 bit sehingga: 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00011000 Nilai di atas ditambahkan pada langkah 1, sehingga total panjang bit adalah 512 bit. Berdasarkan contoh pada langkah 1 dan 2, didapatkan banyaknya blok pada pesan adalah satu. 3. Inisialisasi buffer Untuk menyimpan nilai inisialisasi awal digunakan buffer H , H 1 , H 2 , H 3 , H 4 , sedangkan untuk menyimpan nilai proses sementara digunakan buffer A, B, C, D, E. Nilai H , H 1 , H 2 , H 3 , H 4 sebagai inisialisasi awal adalah: H = 67 45 23 01 H 1 = EF CD AB 89 H 2 = 98 BA DC FE H 3 = 10 32 54 76 H 4 = C3 D2 E1 F0 Nilai inisialisasi awal untuk H , H 1 , H 2 , H 3 , H 4 ini merupakan standar untuk implementasi algoritma SHA-1. 4. Memproses tiap blok 512 bit dari pesan Langkah ini terdiri dari empat round, masing-masing round terdiri dari 20 operasi sehingga untuk setiap satu blok akan dilakukan operasi sebanyak 80 kali. Berdasarkan contoh sebelumnya pesan terdiri dari 1 blok, maka operasi dibawah ini akan dilakukan sebanyak 80 kali. Universitas Sumatera Utara - Blok pesan ditransformasi dari 16 subblok 32 bit M sampai M 15 menjadi 80 subblok 32 bit W sampai W 79 menggunakan langkah berikut: W t = M t untuk t = 0-15 W t = ROTL 1 W t-3 XOR W t-8 XOR W t-14 XOR W t-16 untuk t=16 sampai t=79, dengan ROTL n x adalah operasi geser kiri putar melingkar dari x sebanyak n posisi. - Variable kerja untuk menyimpan nilai hash ke i-l: A = H i-l , B = H 1 i-l , C = H 2 i-l , D = H 3 i-l , E = H 4 E = H 4 i-l - Untuk setiap round didefenisikan fungsi f t : f t B,C,D = B AND C XOR NOT B AND D, untuk operasi t=0-19 f t B,C,D = B XOR C XOR D, untuk operasi t=20-39 f t B,C,D = B AND C XOR B AND D XOR C AND D, untuk operasi t=40-59 f t B,C,D = B XOR C XOR D, untuk operasi t=60-79 - Diperlukan deret konstanta K0, K1,…K79 K t = 5A827999, untuk operasi t = 0-19 K t = 6ED9EBA1, untuk operasi t = 20-39 K t = 8F1BBCDC, untuk operasi t = 40-59 K t = CA62C1D6, untuk operasi t = 60-79 Nilai konstanta untuk K0, K1,…,K79 merupakan standar untuk implementasi algoritma SHA-1 - Untuk setiap satu langkah operasi pada SHA-1, t=0 sampai t=79 dilakukan: TEMP = ROTL 5 A + f t A, B, C + E + W t + K t E=D; D=C; C=ROTL 30 B; B=A; A=TEMP; - Hasil akhir adalah: H = A + H i-l , H 1 = B + H 1 i-l , H 2 = C + H 2 i-l , H 3 = C + H 3 i-l , H 4 = D + H 4 i-l 5. Output Setelah semua blok 512 bit dari pesan selesai diproses maka akan dihasilkan output. Blok terakhir menghasilkan message digest dari pesan yang dimasukkan Universitas Sumatera Utara yaitu buffer H , H 1 , H 2 , H 3 , H 4 . Panjang message digest yang dihasilkan adalah 160 bit dan masing-masing buffer terdiri dari delapan digit heksadesimal.

2.6.2 Fungsi hash SHA-2