Dalam penelitian ini, setelah mengetahui kinerja fungsi hash MD5 dan algoritma RSA dalam membuat sidik dijital dan cara menguji keabsahan data menggunakan sidik dijital, dapat diketahui terdapat dua buah aplikasi yang harus dibuat. Pertama pembuatan sidik dijital oleh pengirim dan kedua verifikasi sidik dijital (untuk menguji keabsahan data) oleh penerima. Pada penelitian ini software tool yang digunakan dalam pembuatan aplikasi adalah Delphi 7.
Kunci Enkripsi Ya
Tidak Pada aplikasi pembuatan sidik dijital, dibuat dengan empat tampilan utama, yaitu petunjuk penggunaan aplikasi, proses pembuatan message digest, proses menghasilkan kunci enkripsi dan dekripsi, dan proses enkripsi (pembuatan sidik dijital). Alur proses yang berlangsung pada aplikasi pembuatan sidik dijital ditunjukkan pada Gambar 4.5.
Gambar 4.5. Alur sistem pembuatan sidik dijital
Berikut diberikan pseudocode (algortima) beserta penjelasan pada masing-masing proses yang berlangsung.
1. Proses pembuatan message digest
//Mendefinisikan variabel var r,k : int64; Mulai Membuat Message Digest Message Digest Enkripsi Bilangan Prima Sidik Dijital
Memasukkan Data Memasukkan dua buah kunci bilangan prima
Kunci Enkripsi dan Dekripsi
var h0,h1,h2,h3 : int; var a,b,c,d: int;
r[ 0..15]:=(7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22); r[16..31]:=(5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20); r[32..47]:=(4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23); r[48..63]:=(6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21); //Menggunakan bagian fraksional biner dari integral sinus sebagai konstanta: for i:=0 to 63 do k[i] := round(abs(sin(i + 1)) × 2^32); //Inisialisasi variabel: h0 := 0x67452301; h1 := 0xEFCDAB89; h2 := 0x98BADCFE; h3 := 0x10325476; //Pemrosesan awal:
append "1" bit to message;
append "0" bits until message length in bits ≡ 448 (mod 512);
append bit length of message as 64-bit little-endian integer to message;
//Pengolahan pesan paada blok 512-bit: for each 512-bit chunk of message
break chunk into sixteen 32-bit little-endian words; w(i), 0 ≤ i ≤ 15
//Inisialisasi nilai hash pada blok ini: a := h0; b := h1; c := h2; d := h3; //Kalang utama: for i:=0 to 63 do if 0 ≤ i ≤ 15 then begin
f := (b and c) or ((not b) and d); g := I;
end
begin
f := (d and b) or ((not d) and c); g := (5×i + 1) mod 16; end else if 32 ≤ i ≤ 47 then begin f := b xor c xor d; g := (3×i + 5) mod 16; end else if 48 ≤ i ≤ 63 begin f := c xor (b or (not d)); g := (7×i) mod 16; end; temp := d; d := c; c := b;
b := ((a + f + k(i) + w(g)) leftrotate r(i)) + b; a := temp;
//Tambahkan hash dari pengolahan blok 512 bit sebagai hasil
h0 := h0 + a; h1 := h1 + b; h2 := h2 + c; h3 := h3 + d;
mesaggedigest := h0 append h1 append h2 append h3
2. Proses menghasilkan kunci enkripsi (d) dan kunci dekripsi (e)
//Mendefinisikan variabel var p,q,e,d,phi:int64;
//Menguji bahwa input p dan q adalah bilangan prima if prime(p)=true and prime(q)=true then
phi:=(p-1)*(q-1);
//Menguji nilai e yang diinput if GCD(e,phi)<>1 then e:=FALSE else
begin m:=1;
while ((1+m*phi) mod e)<>0 do m:=m+1;
end;
//Menentukan nilai kunci enkripsi (d) d:=(1+m*phi) div e;
3. Proses enkripsi (pembuatan sidik dijital)
// Mendefinisikan variabel var n,d: int64;
messagedigest,ascii,semua,sidikdijital:string; // Mencari deret nilai ascii message digest ascii_md:='';
for i:=1 to length(messagedigest) do begin
hargaascii[i]:=ord(messagedigest [i]);
ascii_md:=concat(ascii_md,inttostr(hargaascii[i])); end;
//Menentukan panjang blok dan lebarblok lebarblok:= length(n)-1;
If length(ascii_md) mod lebarblok<>0 then banyakblok:=(length(ascii_md)div lebarblok)+1 else banyakblok:=length(ascii_md)div lebarblok; //Tahap enkripsi
mulai:=1;
sidikdijital:='';
for i:=1 to banyakblok do begin
x[i]:=copy(ascii_md,mulai,lebarblok); s[i]:=enkripsi(strtoint(x1[i]),d,n); chipertext[i]:=chr(strtoint(s[i])); mulai:=mulai+lebarblok;
//Nilai sidik dijital
sidikdijital:=concat(sidikdijital,chipertext[i]); end;
4.4.2. Pengujian Aplikasi Untuk Pengirim
Dalam subbab ini dilakukan pengujian terhadap aplikasi untuk pengirim yang meliputi : proses pembuatan message digest, proses menghasilkan kunci enkripsi dan dekripsi, dan proses enkripsi (pembuatan sidik dijital). Ketika aplikasi dijalankan, terlebih dahulu muncul user guide (petunjuk pemakaian aplikasi) seperti ditunjukkan pada Gambar 4.6.
Gambar 4.6. Form petunjuk pemakaian aplikasi
Berikut ini diberikan contoh pengujian terhadap masing-masing proses yang dijalankan.
1. Proses pembuatan message digest
Apabila tombol ”PROSES” dibawah tulisan message digest ditekan maka muncul tampilan seperti ditunjukkan Gambar 4.8.
Misal dimasukkan file regristrasi.txt, kemudian tombol ”BUAT MESSAGE DIGEST” ditekan maka dihasilkan message digest dari data yang dimasukkan tersebut.
Gambar 4.8. Form pembuatan message digest
2. Proses menghasilkan kunci enkripsi dan dekripsi
Pada proses ini kunci yang dimasukkan kunci dua bilangan prima yang berbeda. Pada aplikasi ini disediakan juga sejumlah bilangan prima yang dapat dibangkitkan secara random berdasarkan ukuran kuncinya. Jika kunci yang dimasukkan bukan bilangan prima maka muncul peringatan agar mengganti bilangan yang tidak prima menjadi bilangan prima. Apabila dua buah kunci yang dimasukkan merupakan bilangan prima, maka proses dilanjutkan.
Setelah itu user diminta memasukkan sembarang bilangan yang prima relatif dengan φ(r). Bilangan ini adalah kunci dekripsi (e). Pada aplikasi ini juga disediakan pembangkit kunci dekripsi dengan menekan tombol ”BANGKITKAN E” sehingga user tidak perlu mencoba-coba memasukkan bilangan e yang akan memakan waktu. Setelah e dimasukkan atau dibangkitkan, didapat nilai d (kunci enkripsi) seperti ditunjukkan Gambar 4.10.
Gambar 4.10. Form pembuatan kunci
Setelah mendapatkan kunci enkripsi dan dekripsi, kunci publik disimpan sebelum dikirimkan kepada penerima.
Gambar 4.11. Kunci publik yang dikirimkan kepada penerima
Dalam proses ini message digest yang diperoleh dari proses pertama dienkripsi menggunakan kunci pribadi (d) yang diperoleh pada proses kedua. User dapat juga memasukkan message digest yang diperoleh dari software lain dengan menekan tombol ”MD LAIN”.
Gambar 4.12. Form enkripsi message digest
Apabila tombol ”LIHAT PROSES” ditekan, seluruh proses yang dijalankan seperti kode ascii message digest, blok enkripsi, banyak blok, lebar blok, dan huruf chipertext ditampilkan. Selanjutnya sidik dijital disimpan sebelum dikirimkan kepada penerima.
Gambar 4.13. Sidik dijital hasil dari enkripsi message digest
Dari proses yang berlangsung dapat diketahui nilai dari message digest, kunci dekripsi dan enkripsi, dan sidik dijital yang diperoleh dari aplikasi sama dengan sidik dijital yang diperoleh secara teori.
Kunci Dekripsi
Ya Tidak
4.4.3. Pembuatan Aplikasi Untuk Penerima
Pada aplikasi verifikasi sidik dijital, terdapat tiga proses yang berlangsung, yaitu proses pembuatan message digest, proses dekripsi sidik dijital, dan proses verifikasi. Alur proses yang berlangsung pada aplikasi verifikasi sidik dijital ditunjukkan pada Gambar 4.14.
Gambar 4.14. Alur sistem verifikasi sidik dijital Mulai Membuat Message Digest Message Digest Dekripsi Data Sah
Memasukkan Data Memasukkan Sidik Dijital Plaintext Selesai Plaintext = Message Digest
Berikut diberikan pseudocode (algoritma) beserta penjelasan pada masing-masing proses yang berlangsung.
1. Proses pembuatan message digest
Pseudocode pembuatan message digest pada aplikasi verifikasi sidik dijital sama dengan pseudocode pembuatan message digest pada aplikasi pembuatan sidik dijital.
2. Proses dekripsi sidik dijital
//Mendefinisikan variabel var
ascii_md,sidikdijital,messagedigest,hasildekrip:string; n,e:int64;
//Mencari deret nilai ascii message digest ascii_md:='';
for i:=1 to length(messagedigest) do begin hargaascii[i]:=ord(messagedigest[i]); ascii_md:=concat(ascii_md,inttostr(hargaascii[i])); end; //Tahap Dekripsi hasildekripsi:=’’;
for i:=1 to length(sidikdijital) do begin
plaintext[i]:=dekripsi(strtoint(sidikdijital[i]),e,n); hasildekrip:=concat(hasildekrip,inttostr(plaintext[i])); end;
3. Proses verifikasi sidik dijital
//Mendefinisikan variabel
var ascii_md,hasildekrip,verifikasi:string; //Tahap verifikasi
if ascii_md = hasildekrip then verifikasi:=TRUE else verifikasi:=FALSE;
4.4.4. Pengujian Aplikasi Untuk Penerima
Dalam subbab ini dilakukan pengujian terhadap aplikasi untuk penerima yang meliputi : proses pembuatan message digest, proses dekripsi sidik dijital, dan proses verifikasi sidik dijital. Ketika aplikasi dijalankan, terlebih dahulu muncul user guide seperti ditunjukkan pada Gambar 4.15.
Gambar 4.15. Form petunjuk pemakaian aplikasi
Berikut ini diberikan contoh pengujian terhadap masing-masing proses. 1. Proses pembuatan message digest
Misal dimasukkan file regristrasi.txt, kemudian tombol ”DIGEST” ditekan dihasilkan message digest dari data yang dimasukkan tersebut. 2. Proses dekripsi sidik dijital
Pada proses ini kunci dekripsi dan sidik dijital yang telah diterima dimasukkan, kemudian tombol ”VERIFIKASI” ditekan untuk mendapatkan plaintext dari sidik dijital.
3. Proses verifikasi sidik dijital
Pada proses ini message digest yang didapat pada proses 1 disamakan dengan hasil dekripsi sidik dijital pada proses 2. Ternyata message digest dari file regristrasi.txt sama dengan hasil dekripsi dari sidik
dijitalnya, muncul tampilan form seperti ditunjukkan pada Gambar 4.16. Tetapi ketika isi dari file regristrasi.txt diubah, muncul tampilan form seperti ditunjukkan pada Gambar 4.17.
Gambar 4.16. Tampilan form verifikasi sidik dijital ketika data sah
Dari proses yang berlangsung dapat diketahui nilai dari message digest, dan hasil dekripsi sidik dijital yang diperoleh dari aplikasi sama dengan yang diperoleh secara teori.
4.5. Analisis Kelebihan dan Kelemahan Pembuatan Sidik Dijital Dengan