Implementasi Kombinasi Algoritma RSA dan ElGamal Dalam Pengamanan Data Pada File Dokumen

(1)

53

Lampiran 1. Fungsi Utama

function varargout = UTAMA(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @UTAMA_OpeningFcn, ... 'gui_OutputFcn', @UTAMA_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function UTAMA_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = UTAMA_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function tombolEncoding_Callback(hObject, eventdata, handles)

respon = ENKRIPSI('Title','formEnkripsi');

function tombolDecoding_Callback(hObject, eventdata, handles)

respon = DEKRIPSI('Title','formDekripsi');


(2)

function tombolKeluar_Callback(hObject, eventdata, handles) close;


(3)

55

Lampiran 2. Fungsi Enkripsi

function varargout = ENKRIPSI(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @ENKRIPSI_OpeningFcn, ...

'gui_OutputFcn', @ENKRIPSI_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function ENKRIPSI_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = ENKRIPSI_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function pilihFile_Callback(hObject, eventdata, handles) [filename pathname] = uigetfile ({'*.txt'},'Pilih File'); fullpathname = strcat (pathname, filename);

if isequal (filename,0)


(4)

return; else

pesan = fileread (fullpathname);

set(handles.kolomPlainteks, 'String', pesan) handles.plainteks = pesan;

guidata(hObject, handles) end

function kolomPlainteks_CreateFcn(hObject, eventdata, handles)

function inputPRSA_Callback(hObject, eventdata, handles) function inputPRSA_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function inputQRSA_Callback(hObject, eventdata, handles) function inputQRSA_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function bangkitkanKunci_Callback(hObject, eventdata, handles)

p_RSA = get(handles.inputPRSA,'string'); p_RSA = str2num(p_RSA);

q_RSA = get(handles.inputQRSA,'string'); q_RSA = str2num(q_RSA);

p_RSA = round(p_RSA); prim = 1;

for i = 2 : floor(p_RSA/2) if rem(p_RSA,i) == 0


(5)

57

break; end

end

if prim == 0

respon = pTidakPrima('Title','formPTidakPrima'); return;

end

q_RSA = round(q_RSA); prim = 1;

for i = 2 : floor(q_RSA/2) if rem(q_RSA,i) == 0 prim = 0;

break; end

end

if prim == 0

respon = qTidakPrima('Title','formQTidakPrima'); return;

end

if p_RSA == q_RSA

respon = pqSAMA('Title','formPQSama'); return;

end

n_RSA = p_RSA * q_RSA;

phi_RSA = (p_RSA - 1) * (q_RSA - 1); val = 0;

cd = 0;

while(cd~=1||val==0)

n1 = randint(1,1,n_RSA); e_RSA = randint(1,1,[2 n1]);


(6)

val = isprime(e_RSA); cd = gcd(e_RSA,phi_RSA); end

set (handles.kunciPublikRSA,'string',e_RSA); set (handles.nilaiNRSA1,'string',n_RSA); val1 = 0;

d_RSA = 0; while(val1~=1);

d_RSA = d_RSA + 1;

val1 = mod((d_RSA*e_RSA),phi_RSA); end

set (handles.kunciPrivatRSA,'string',d_RSA); set (handles.nilaiNRSA2,'string',n_RSA); pesan = handles.plainteks;

ASCII_pesan = pesan - 0;

pjg_pesan = length (ASCII_pesan); o_RSA = 1;

while (o_RSA <= pjg_pesan); pesan = ASCII_pesan(o_RSA); biner_eRSA = dec2bin(e_RSA);

pjg_binerERSA = length(biner_eRSA); c_RSA = 1;

if(e_RSA == 0) c_RSA = 1; else

c1_RSA = pesan;

if(biner_eRSA(pjg_binerERSA) == '1') c_RSA = pesan;


(7)

59

c1_RSA = mod(c1_RSA*c1_RSA,n_RSA); if(biner_eRSA(i) == '1')

c_RSA = mod(c_RSA*c1_RSA,n_RSA); end

end end

cip_RSA(o_RSA) = c_RSA; o_RSA = o_RSA + 1; end

cipher_RSA = cip_RSA(1:pjg_pesan); cipherRSA_Besar = max (cipher_RSA);

acak = randint (100,1,[cipherRSA_Besar 10000]); for i = 1:100

bil = acak(i); cek = isprime(bil);

if cek == 1 break; end

end

p_El = bil;

set (handles.nilaiPEL1,'string',p_El); g_El = randint (1,1,[1 p_El-1]);

set(handles.nilaiGEL,'string',g_El) x_El = randint (1,1,[1 p_El-2]); set(handles.nilaiXEL,'string',x_El) biner_xEl = dec2bin(x_El);

pjg_binerXEl = length(biner_xEl); y_El = 1;


(8)

y_El = 1; else

y1_El = g_El;

if (biner_xEl(pjg_binerXEl) == '1') y_El = g_El;

end

for i=pjg_binerXEl-1:-1:1

y1_El = mod(y1_El*y1_El, p_El); if(biner_xEl(i) == '1')

y_El = mod(y_El*y1_El, p_El); end

end end

set(handles.nilaiYEL,'string',y_El); set(handles.nilaiPEL2,'string',p_El); o_El = 1;

while (o_El <= pjg_pesan)

k_El = randint (1,1,[1 p_El-2]); biner_kEl = dec2bin(k_El);

pjg_binerKel = length(biner_kEl); cA_El = 1;

if (k_El == 0) cA_El = 1; else

cA1_El = g_El;

if(biner_kEl(pjg_binerKel) == '1') cA_El = g_El;

end


(9)

61

if(biner_kEl(i) == '1')

cA_El = mod(cA_El*cA1_El, p_El); end

end end

cipA_El(o_El) = cA_El; cB_El = 1;

if (k_El == 0) cB_El = 1; else

cB1_El = y_El;

if(biner_kEl(pjg_binerKel) == '1') cB_El = y_El;

end

for i=pjg_binerKel-1:-1:1

cB1_El = mod(cB1_El*cB1_El, p_El); if(biner_kEl(i) == '1')

cB_El = mod(cB_El*cB1_El, p_El); end

end end

cipB1_El = mod(cipher_RSA(o_El),p_El);

cipB_El(o_El) = mod(cB_El*cipB1_El, p_El); o_El = o_El + 1;

end

fprintf('\n');

cipA_El = cipA_El(1:pjg_pesan); cipB_El = cipB_El(1:pjg_pesan); cip_El = [cipA_El; cipB_El];


(10)

cipher_El = reshape(cip_El,1,pjg_cipEl); handles.cipherteks = cipher_El;

guidata(hObject, handles)

function prosesEnkripsi_Callback(hObject, eventdata, handles)

cipher_El = handles.cipherteks;

set(handles.kolomCipherteks,'string',cipher_El);

function nilaiNRSA1_CreateFcn(hObject, eventdata, handles) function kunciPublikRSA_CreateFcn(hObject, eventdata,

handles)

function nilaiNRSA2_CreateFcn(hObject, eventdata, handles) function kunciPrivatRSA_CreateFcn(hObject, eventdata,

handles)

function nilaiPEL1_CreateFcn(hObject, eventdata, handles) function nilaiGEL_CreateFcn(hObject, eventdata, handles) function nilaiXEL_CreateFcn(hObject, eventdata, handles) function nilaiYEL_CreateFcn(hObject, eventdata, handles) function nilaiPEL2_CreateFcn(hObject, eventdata, handles) function kolomCipherteks_Callback(hObject, eventdata, handles)

function simpanFile_Callback(hObject, eventdata, handles) cipher_El = handles.cipherteks;

[filename, pathname] = uiputfile ({'*.txt'},'Simpan File'); if pathname == 0

return; end

name = fullfile(pathname, filename);

dlmwrite(name, cipher_El,'delimiter','\n','newline','pc'); guidata(hObject, handles);


(11)

63

Lampiran 3. Fungsi Dekripsi

function varargout = DEKRIPSI(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @DEKRIPSI_OpeningFcn, ...

'gui_OutputFcn', @DEKRIPSI_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function DEKRIPSI_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = DEKRIPSI_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function pilihFile_Callback(hObject, eventdata, handles) [filename pathname] = uigetfile ({'*.txt'},'Pilih File'); fullpathname = strcat (pathname, filename);

if isequal (filename,0)


(12)

return; else

cipher = fileread (fullpathname);

set(handles.kolomCipherteks, 'String', cipher) handles.cipherteks = cipher;

guidata(hObject, handles) end

function kolomCipherteks_CreateFcn(hObject, eventdata, handles)

function prosesDekripsi_Callback(hObject, eventdata, handles)

x_El = get(handles.inputXEL,'string'); x_El = str2num(x_El);

p_El = get(handles.inputPEL,'string'); p_El = str2num(p_El);

d_RSA = get(handles.inputDRSA,'string'); d_RSA = str2num(d_RSA);

n_RSA = get(handles.inputNRSA,'string'); n_RSA = str2num(n_RSA);

cipher = handles.cipherteks; cipher = str2num(cipher); pjg_cipher = length(cipher); A_El = cipher(1:2:pjg_cipher); B_El = cipher(2:2:pjg_cipher); overDes = pjg_cipher/2;

o_El = 1;

pangkat = p_El - 1 - x_El; while (o_El <= overDes) cipA_El = A_El(o_El); cipB_El = B_El(o_El);


(13)

65

pjg_binerPangkat = length(biner_pangkat); psn_El = 1;

if (x_El == 0) psn_El = 1; else

psn1_El = cipA_El;

if(biner_pangkat(pjg_binerPangkat) == '1') psn_El = cipA_El;

end

for i=pjg_binerPangkat-1:-1:1

psn1_El = mod(psn1_El*psn1_El,p_El); if(biner_pangkat(i) == '1')

psn_El = mod(psn_El*psn1_El, p_El); end

end end

psnA_El = mod(cipB_El, p_El);

cipher_El(o_El) = mod(psn_El*psnA_El,p_El); o_El=o_El+1;

end

RSA = cipher_El(1:overDes); o_RSA = 1;

while (o_RSA <= overDes) c = RSA(o_RSA);

biner_dRSA = dec2bin (d_RSA); lbin1 = length (biner_dRSA); psn_RSA = 1;

if (d_RSA == 0) psn_RSA = 1; else


(14)

psn1_RSA = c;

if(biner_dRSA(lbin1) == '1') psn_RSA = c;

end

for i = lbin1-1:-1:1

psn1_RSA = mod(psn1_RSA*psn1_RSA,n_RSA); if(biner_dRSA(i) == '1')

psn_RSA = mod(psn_RSA*psn1_RSA, n_RSA); end

end end

pesan(o_RSA) = psn_RSA; o_RSA = o_RSA + 1;

end

pesan = pesan(1:overDes); pesan = char(pesan); handles.pesan = pesan; guidata(hObject, handles)

set(handles.kolomPlainteks,'string',pesan)

function kolomPlainteks_CreateFcn(hObject, eventdata, handles)

function inputDRSA_Callback(hObject, eventdata, handles) function inputDRSA_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function inputNRSA_Callback(hObject, eventdata, handles) function inputNRSA_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),


(15)

67

set(hObject,'BackgroundColor','white'); end

function inputXEL_Callback(hObject, eventdata, handles) function inputXEL_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function inputPEL_Callback(hObject, eventdata, handles) function inputPEL_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function simpanFile_Callback(hObject, eventdata, handles) pesan = handles.pesan;

[filename, pathname] = uiputfile ({'*.txt'},'Simpan File'); if pathname == 0

return; end

name = fullfile(pathname, filename);

dlmwrite(name, pesan,'delimiter','\n','newline','pc'); guidata(hObject, handles);

function keluar_Callback(hObject, eventdata, handles) close;


(16)

DAFTAR PUSTAKA

Aribowo, Eko. 2008. Aplikasi Pengamanan Dokumen Office Dengan Algoritma Kriptografi Kunci Asimetris ElGamal. Universitas Ahmad Dahlan. Yogyakarta.

Buchmann, Johannes A. 2000. Introduction to Cryptography. Germany. Haq, Hasnan Aulia. 2013. Kombinasi Algoritma RSA dan ElGamal dalam

Implementasi Algoritma Kriptografi. Medan.

Ifanto, Mukhammad. 2009. Metode Enkripsi dan Dekripsi Dengan Menggunakan Algoritma ElGamal. Bandung.

Ihsan, Ahmad. 2015. Implementasi Kombinasi Rivest Shamir Adleman (RSA) dan ElGamal dalam Penyandian Citra Bitmap. Medan.

Iswari, Ni Made Satvika. 2011. Rancangan dan Implementasi Algoritma Pembangkitan Kunci kombinasi Antara RSA dan ElGamal. Bandung. Kromodimoeljo, Sentot. 2009. Teori dan Aplikasi Kriptografi. SPK IT

Consulting.

Kurniawan, Yusuf. 2004. Kriptografi Keamanan Internet & Jaringan Telekomunikasi. Informatika. Bandung.

Munir, Rinaldi. 2006. Kriptografi. Informatika. Bandung.

Panjaitan, Wahyu Oloan. 2015. Kombinasi Algoritma Kriptografi RSA dengan Steganografi CLSB untuk Pengamanan Data. Medan.

Permana, Aditya. Santoso, Edi. Ratnawati, Dian Eka. Kriptografi Pada File Dokumen Microsoft Office Menggunakan Metode RSA. Universitas Brawijaya. Malang.

Siang, J.J. 2004. Jaringan Saraf Tiruan dan Pemrogramannya Menggunakan MATLAB. Yogyakarta.


(17)

52

Sianipar, R.H. 2013. Pemrograman MATLAB dalam Contoh dan Penerapan. Informatika. Bandung.

Sitompul, Opim Salim. 2012. Pemrograman C di Lingkungan Linux Edisi Kedua. USU Press. Medan.

Supriyono. 2008. Pengujian Sistem Enkripsi-Dekripsi Dengan Metode RSA Untuk Pengamanan Dokumen. Yogyakarta.

Toni, Hasina. 2015. Implementasi Steganografi Least Significant Bit (LSB) Dengan Modifikasi Vigenere Cipher Pada Citra Digital. Medan.


(18)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Permasalahan

Pada algoritma kriptografi, dalam hal keamanan hampir seluruhnya berbasis pada permasalahan teori bilangan, seperti permasalahan faktorisasi bilangan atau logaritma diskrit. Meskipun permasalahan tersebut sulit dipecahkan pada saat ini, tidak menutup kemungkinan pada masa yang akan datang permasalahan tersebut akan menemukan pemecahannya dengan lebih mudah.

Dalam penelitian ini dilakukan proses kriptografi dengan menggunakan kombinasi algoritma RSA dan ElGamal dalam pengamanan data pada file dokumen untuk menjamin bahwa file yang akan dikirim aman dan terhindar dari pihak yang tidak memiliki hak untuk mengetahui isi dari file tersebut sebelum sampai ke tujuan.

Masalah utama pada penelitian ini adalah bagaimana meningkatkan keamanan pada file dokumen dengan menggunakan kombinasi algoritma RSA dan ElGamal sehingga tingkat keamanannya lebih baik.

3.2 Analisis Kebutuhan

Berdasarkan analisa permasalahan, maka hasil dari sistem yang didapat adalah cipherteks dari proses enkripsi dan plainteks dari proses dekripsi. Untuk memenuhi kebutuhan tersebut, maka sistem ini dibangun oleh sistem operasi Windows 7 Ultimate, dengan perangkat lunak pengembangan Neatbeans 7.1.2


(19)

18

3.3 Perancangan Sistem

Perancangan sistem merupakan suatu tahapan yang sangat penting untuk menentukan tahap awal dari kondisi akhir pada sistem yang akan dibangun untuk memperoleh hasil melalui implementasinya.

Sistem ini mengkombinasikan dua algoritma untuk mengamankan file yang diinput user langsung. File yang diinput kemudian dilakukan proses enkripsi dengan menggunakan kombinasi algoritma RSA dan ElGamal, dengan menginput nilai kunci publik RSA untuk dilakukan proses pembangkitan kunci, dan selanjutnya dilakukan proses enkripsi untuk menghasilkan cipherteks. Cipherteks hasil file yang diinput kemudian dilakukan proses dekripsi dengan menginput nilai kunci privat ElGamal dan RSA dan selanjutnya dilakukan proses dekripsi untuk menghasilkan file semula.

3.3.1 Perancangan Flowchart

Untuk mempermudah perancangan sistem pada implementasi kombinasi algoritma RSA dan ElGamal, diperlukan langkah-langkah yang dikelompokkan ke dalam flowchart.

Flowchart adalah bagan yang menunjukkan alur suatu sistem yang tiap

alur dihubungkan secara logika sesuai dengan ketentuan komponen alur yang telah disepakati.

3.3.2 Flowchart Algoritma RSA

Algoritma RSA memiliki 3 buah proses yaitu proses pembangkit kunci, proses enkripsi, dan proses dekripsi. Dimana proses-proses tersebut akan dijelaskan pada


(20)

Tidak

Ya

Tidak

Ya

Gambar 3.1 Flowchart Pembangkit Kunci RSA =(1+�� ) ;

∈ � �

gcd ,�( ) = 1,

Selesai �= 1,2,3,…,

Input

Kunci publik ( , ) Kunci privat ( , )

Mulai

Input , ; bilangan prima

= ∗

�( ) = −1 ∗( −1)

= 2,3,4,…, Input


(21)

20

(a) (b)

Gambar 3.2 (a) Flowchart Enkripsi RSA; (b) Flowchart Dekripsi RSA

3.3.3 Flowchart Algoritma ElGamal

Algoritma ElGamal juga memiliki 3 buah proses yaitu proses pembangkit kunci, proses enkripsi, dan proses dekripsi. Dimana proses-proses tersebut akan dijelaskan pada flowchart-flowchart berikut:

Mulai

Plainteks , Kunci publik ( , )

Pecah plainteks menjadi blok 1, 2,…, 1

� = �

Cipherteks

Selesai

Mulai

Cipherteks , Kunci privat ( , )

Pecah cipherteks menjadi blok 1, 2,…, 1

� = �

Plainteks


(22)

Tidak

Ya

Gambar 3.3 Flowchart Pembangkit Kunci ElGamal Mulai

Input ; bilangan prima

Kunci publik ( ,�, ) Kunci privat ( , )

=�

�, ; bilangan acak

Selesai �< ;


(23)

22

Tidak

Ya

Gambar 3.4 Flowchart Enkripsi ElGamal

Gambar 3.5 Flowchart Dekripsi ElGamal Mulai

Plainteks ; Kunci publik ,�, ;

Input �;

1≤ � ≤ −2

Pecah plainteks menjadi blok 1, 2,…, �

� =�� � = � �

Cipherteks

Selesai

A

A

Mulai

Cipherteks ; Kunci privat , ;

Pecah cipherteks menjadi blok 1, 2,…,

Plainteks

Selesai

A

A


(24)

3.3.4 Flowchart Kombinasi Algoritma RSA dan ElGamal

Pada kombinasi algoritma RSA dan ElGamal terdapat 2 proses yaitu proses enkripsi dan proses dekripsi, seperti ditunjukkan pada flowchart berikut:

(a) (b)

Gambar 3.6 (a) Flowchart Enkripsi Kombinasi RSA dan ElGamal; (b) Flowchart Dekripsi Kombinasi RSA dan ElGamal

Mulai

Input plainteks, kunci publik RSA, kunci publik ElGamal

Enkripsi RSA

Enkripsi ElGamal

Selesai Cipherteks RSA

Cipherteks ElGamal

Mulai

Input cipherteks, kunci privat RSA, kunci privat ElGamal

Dekripsi ElGamal

Dekripsi RSA

Selesai Cipherteks

ElGamal


(25)

BAB 4

IMPLEMENTASI

Pada bab ini akan diperlihatkan hasil dan pembahasan dari penelitian yang diperoleh berdasarkan penjelasan – penjelasan yang telah dipaparkan pada bab - bab sebelumnya. Hasil dan pembahasan dari penelitian ini adalah mengenai implementasi kombinasi algoritma RSA dan ElGamal dalam pengamanan data pada file dokumen.

4.1 Kebutuhan Perangkat Lunak dan Perangkat Keras

Penelitian ini menggunakan perangkat lunak berupa: 1. Sistem Operasi Windows 7

2. MATLAB R2009a

Spesifikasi perangkat keras yang digunakan berupa: 1. Processor Intel core i3 1.7 GHz

2. RAM 2 GB 3. Harddisk 500 GB 4. Monitor 14.0 inch

4.2 Implementasi

Pada implementasi sistem ini secara keseluruhan penulis membuat tiga buah halaman antarmuka, yang terdiri dari halaman utama yang berisikan tentang pilihan proses apa yang akan dilakukan. Bentuk antarmuka halaman utama dapat dilihat pada Gambar 4.1.


(26)

Gambar 4.1 Halaman utama

Dari Gambar 4.1 dapat dilihat bahwa di dalam halaman utama terdapat tiga buah tombol yaitu tombol enkripsi, dekripsi dan keluar. Tombol enkripsi digunakan untuk memulai proses enkripsi, tombol dekripsi digunakan untuk memulai proses dekripsi, dan tombol keluar digunakan untuk keluar dari program.

4.2.1 Proses Enkripsi

File pesan yang akan dienkripsi berisikan “Selamat Budiman, kamu lulus di jurusan matematika FMIPA USU, Password anda untuk login adalah

Budiman1912”.


(27)

26

Untuk memulai proses enkripsi, tekan tombol enkripsi pada halaman utama, maka akan muncul halaman enkripsi seperti pada Gambar 4.3.

Gambar 4.3 Halaman enkripsi 1

Selanjutnya yang dilakukan adalah masukan file pesan yang akan dienkripsi dengan mengklik Pilih File pada kolom yang telah disediakan seperti pada Gambar 4.4.


(28)

Setelah file dipilih akan ditampilkan pada halaman enkripsi.

Gambar 4.5 Halaman enkripsi 2

Selanjutnya pada kunci RSA input nilai dan pada kolom yang disediakan. Kemudian klik kolom bangkitkan kunci sehingga masing-masing kunci publik dan kunci privat pada kunci RSA dan kunci ElGamal akan terpilih secara otomatis. Selanjutnya klik proses enkripsi, maka file telah selesai dienkripsi.


(29)

28

Kemudian simpan file yang telah terenkripsi seperti yang terlihat pada Gambar 4.7.

Gambar 4.7 Pop-up window simpan file

File pada Gambar 4.8 merupakan file hasil proses enkripsi.


(30)

4.2.2. Proses Dekripsi

Untuk proses dekripsi dilakukan dengan menekan tombol dekripsi pada halaman utama, maka akan muncul halaman dekripsi seperti pada Gambar 4.9

Gambar 4.9 Halaman dekripsi 1

Selanjutnya yang dilakukan adalah pilih file hasil enkripsi dengan cara mengklik tombol Pilih File, maka akan muncul pop-up window untuk mengakses lokasi file disimpan.


(31)

30

Setelah file dipilih akan ditampilkan pada halaman dekripsi.

Gambar 4.11 Halaman dekripsi 2

Langkah selanjutnya adalah masukan kunci pada kolom yang disediakan

Gambar 4.12 Halaman dekripsi 3

Setelah kunci dimasukkan, klik tombol proses dekripsi untuk memulai proses dekripsi. Setelah diklik maka akan muncul pesan asli pada kolom yang disediakan.


(32)

Gambar 4.13 Halaman dekripsi 4

4.3 Analisis Dalam Aplikasi

Pada tahap ini dijelaskan bagaimana proses aplikasi tersebut berjalan dari saat pengamanan sampai saat pengungkapan.

4.3.1 Pengamanan Pesan

Pesan yang diamankan dari contoh kasus pada penelitian ini adalah “Selamat

Budiman, kamu lulus di jurusan matematika FMIPA USU, Password anda untuk

login adalah Budiman1912”. Pesan yang dipakai adalah “Budiman1912” untuk

menyederhanakan proses analisis aplikasi ini.

Proses 1:

Pada tahap ini plainteks diubah menjadi kode ASCII yaitu sebagai berikut:

Tabel 4.1 Kode ASCII Plainteks 1 � Plainteks Kode ASCII


(33)

32

3 d 100

4 i 105

5 m 109

6 a 97

7 n 110

8 1 49

9 9 57

10 1 49

11 2 50

Proses 2:

Untuk Tahap ini dilakukan proses pembangkitan kunci pada algoritma RSA: 6. Pilih dua buah bilangan prima sembarang dan . (Sebaiknya ≠ , sebab

jika = maka = 2, sehingga dapat diperoleh dengan menarik akar pangkat dua dari ).

Misalnya terpilih = 47 dan = 71.

7. Hitung = ∙ .

Sehingga diperoleh = 47 ∙ 71 = 3337

8. Hitung �( ) = −1 ∙( −1).

Sehingga diperoleh �( ) = (47 - 1) ∙ (71 - 1) = 46 ∙ 70

= 3220

9. Pilih kunci yang relatif prima terhadap �( ).

Misalnya terpilih = 293 yang relatif prima terhadap 3220. Bukti:

3220 = 10 (293) + 290 293 = 1 (290) + 3 290 = 96 (3) + 2 3 = 1 (2) + 1


(34)

10. Bangkitkan kunci privat dengan menggunakan persamaan ⋅ ≡ 1( �( )). Perhatikan bahwa ⋅ ≡1( �( )). Hitung hingga

⋅ ≡1( �( )) ekivalen ∙ = 1 +��( ), sehinnga secara sederhana dapat dihitung dengan = 1+��( ).

Dengan mencoba nilai �= 1, 2, 3, … sehingga diperoleh nilai bulat. Untuk:

� = 1, maka:

= 1+(1∙3220 )

293 = 10,993174 � = 2, maka:

= 1+(2∙3220 )

293 = 21,982935 .

. .

� = 98, maka:

= 1+(98∙3220 )

293 = 1077 Sehingga diperoleh nilai adalah 1077.

Dari proses pembangkitan kunci maka diperoleh: Kunci publik (293, 3337)

Kunci privat (1077, 3337)

Proses 3:

Plainteks yang sudah bernilai kode ASCII tersebut dienkripsi dengan menggunakan kunci publik pada algoritma RSA yaitu (293, 3337).

Dengan rumus:

Maka diperoleh:

1 = 66293 3337 = 1295 4 = 105293 3337 = 1443 2 = 117293 3337 = 1628 5 = 109293 3337 = 499 3= 100293 3337 = 166 6 = 97293 3337 = 1177


(35)

34

7 = 110293 3337 = 2891 10 = 49293 3337 = 1352 8 = 49293 3337 = 1352 11 = 50293 3337 = 1271

9 = 57293 3337 = 522 Jadi, cipherteks yang dihasilkan adalah:

= 1295 1628 166 1443 499 1177 2891 1352 522 1352 1271

Proses 4:

Pada tahap ini cipherteks yang dihasilkan pada proses 3 menjadi plainteks yang dienkripsi dengan menggunakan algoritma ElGamal:

Tabel 4.2 Plainteks ElGamal � Plainteks

1 1295

2 1628

3 166

4 1443

5 499

6 1177

7 2891

8 1352

9 522

10 1352 11 1271

Proses 5:

Untuk tahap ini dilakukan proses pembangkitan kunci pada algoritma ElGamal: 4. Pilih sembarang bilangan prima . (dengan syarat nilai harus lebih besar dari

nilai plainteks terbesar).

Karena nilai plainteks terbesar adalah 2891, maka nilai harus lebih besar dari 2891. Misalnya terpilih nilai adalah 3593.


(36)

5. Pilih dua buah bilangan acak � dan , dengan syarat �< dan 1≤ ≤ − 2.

Misalnya terpilih nilai � = 28 dan = 12.

6. Hitung = � . Sehingga diperoleh:

= 2812 3593 = 626.

Dari proses pembangkitan kunci maka diperoleh: Kunci publik (626, 28, 3593)

Kunci privat (12, 3593)

Proses 6:

Plainteks dienkripsi dengan menggunakan kunci publik pada algoritma ElGamal yaitu (626, 28, 3593).

Dengan rumus:

dan

dengan syarat: 1≤ � ≤ −2 dalam hal ini nilai � = �1,…,�11.

Misalnya terpilih nilai �1 = 20, �2 = 31, �3 = 11, �4 = 45, �5 = 52, �6 = 63, �7 = 35, �8 = 21, �9 = 16, �10 = 32, �11 = 41.

Maka diperoleh:

1 = 2820 3593 = 498 1 = 62620 1295 3593 = 2787

2 = 2831 3593 = 2408 2 = 626311628 3593 = 1853

3 = 2811 3593 = 279 3 = 62611166 3593 = 157

4 = 2845 3593 = 1905 4 = 626451443 3593 = 1056

5 = 2852 3593 = 567 5= 62652499 3593 = 1888 = 2863 3593 = 101 = 62663 1177 3593 = 3434


(37)

36

7 = 2835 3593 = 2007 7 = 626352891 3593 = 3448

8 = 2821 3593 = 3165 8 = 626211352 3593 = 1945

9 = 2816 3593 = 286 9 = 62616522 3593 = 865

10 = 2832 3593 = 2750 10 = 626321352 3593 = 3030

11 = 2841 3593 = 2436 11 = 626411271 3593 = 2213 Jadi cipherteks yang dihasilkan adalah:

= 498 2787 2408 1853 279 157 1905 1056 567 1888 101 3434 2007 3448 3165 1945 286 865 2750 3030 2436 2213

4.3.2 Pengungkapan Pesan

Pengungkapan pesan adalah proses mengembalikan cipherteks menjadi plainteks semula.

Proses 1:

Pada tahap ini dilakukan proses dekripsi untuk cipherteks ElGamal dengan menggunakan kunci privat (12, 3593).

Dengan rumus:

Maka diperoleh:

1 = 2787∙4983593−1−12 3593 = 1295 2 = 1853∙24083593−1−12 3593 = 1628 3 = 157∙2793593−1−12 3593 = 166 4 = 1056∙19053593−1−12 3593 = 1443 5 = 1888∙5673593−1−12 3593 = 499 6 = 3434∙1013593−1−12 3593 = 1177 7 = 3448∙20073593−1−12 3593 = 2891 8 = 1945∙31653593−1−12 3593 = 1352


(38)

9 = 865∙2863593−1−12 3593 = 522 10 = 3030∙27503593−1−12 3593 = 1352 11 = 2213∙24363593−1−12 3593 = 1271

Jadi plainteks yang dihasilkan adalah:

= 1295 1628 166 1443 499 1177 2891 1352 522 1352 1271

Proses 2:

Pada tahap ini plainteks yang dihasilkan pada proses 1 menjadi cipherteks yang didekripsi dengan menggunakan algoritma RSA:

Tabel 4.3 Cipherteks RSA � Cipherteks

1 1295

2 1628

3 166

4 1443

5 499

6 1177

7 2891

8 1352

9 522

10 1352

11 1271

Proses 3:

Pada tahap ini dilakukan proses dekripsi untuk cipherteks RSA dengan menggunakan kunci privat (1077, 3337).

Dengan rumus:

Maka diperoleh:


(39)

38

2 = 16281077 3337 = 117 3 = 1661077 3337 = 100 4 = 14431077 3337 = 105 5 = 4991077 3337 = 109 6 = 11771077 3337 = 97 7 = 28911077 3337 = 110 8 = 13521077 3337 = 49 9 = 5221077 3337 = 57 10 = 13521077 3337 = 49 11 = 12711077 3337 = 50

Tabel 4.4 Kode ASCII Plainteks 2 � Kode ASCII Plainteks

1 66 B

2 117 u

3 100 d

4 105 i

5 109 m

6 97 a

7 110 n

8 49 1

9 57 9

10 49 1

11 50 2


(40)

4.4 Pengujian Sistem

Pengujian sistem dilakukan dengan membandingkan hasil dan waktu proses dari kombinasi algoritma RSA dan ElGamal dengan hasil dari masing-masing algoritma RSA dan ElGamal.

4.4.1 Hasil Algoritma RSA

Dengan mnggunakan pesan yang sama yaitu “Budiman1912”.

4.4.1.1 Pengamanan Pesan

Proses 1:

Pada tahap ini plainteks diubah menjadi kode ASCII yaitu sebagai berikut:

Tabel 4.5 Kode ASCII Plainteks 3 � Plainteks Kode ASCII

1 B 66

2 u 117

3 d 100

4 i 105

5 m 109

6 a 97

7 n 110

8 1 49

9 9 57

10 1 49


(41)

40

Proses 2:

Untuk Tahap ini dilakukan proses pembangkitan kunci:

1. Pilih dua buah bilangan prima sembarang dan . (Sebaiknya ≠ , sebab jika = maka = 2, sehingga dapat diperoleh dengan menarik akar pangkat dua dari ).

Misalnya terpilih = 47 dan = 71.

2. Hitung = ∙ .

Sehingga diperoleh = 47 ∙ 71 = 3337

3. Hitung �( ) = −1 ∙( −1).

Sehingga diperoleh �( ) = (47 - 1) ∙ (71 - 1) = 46 ∙ 70

= 3220

4. Pilih kunci yang relatif prima terhadap �( ).

Misalnya terpilih = 293 yang relatif prima terhadap 3220. Bukti:

3220 = 10 (293) + 290 293 = 1 (290) + 3 290 = 96 (3) + 2 3 = 1 (2) + 1

5. Bangkitkan kunci privat dengan menggunakan persamaan ⋅ ≡ 1( �( )). Perhatikan bahwa ⋅ ≡1( �( )). Hitung hingga

⋅ ≡1( �( )) ekivalen ∙ = 1 +��( ), sehinnga secara sederhana dapat dihitung dengan = 1+��( ).

Dengan mencoba nilai �= 1, 2, 3, … sehingga diperoleh nilai bulat. Untuk:

� = 1, maka:

= 1+(1∙3220 )


(42)

� = 2, maka:

= 1+(2∙3220 )

293 = 21,982935 .

. .

� = 98, maka:

= 1+(98∙3220 )

293 = 1077 Sehingga diperoleh nilai adalah 1077.

Dari proses pembangkitan kunci maka diperoleh: Kunci publik (293, 3337)

Kunci privat (1077, 3337)

Proses 3:

Plainteks yang sudah bernilai kode ASCII tersebut dienkripsi dengan menggunakan kunci publik pada algoritma RSA yaitu (293, 3337).

Dengan rumus:

Maka diperoleh:

1 = 66293 3337 = 1295 7 = 110293 3337 = 2891 2 = 117293 3337 = 1628 8 = 49293 3337 = 1352 3= 100293 3337 = 166 9 = 57293 3337 = 522 4 = 105293 3337 = 1443 10 = 49293 3337 = 1352 5 = 109293 3337 = 499 11 = 50293 3337 = 1271 6= 97293 3337 = 1177

Jadi, cipherteks yang dihasilkan adalah:

= 1295 1628 166 1443 499 1177 2891 1352 522 1352 1271 � = �


(43)

42

4.4.1.2 Pengungkapan Pesan

Pada tahap ini dilakukan proses dekripsi dengan menggunakan kunci privat (1077, 3337).

Dengan rumus:

Maka diperoleh:

1 = 12951077 3337 = 66 2 = 16281077 3337 = 117 3 = 1661077 3337 = 100 4 = 14431077 3337 = 105 5 = 4991077 3337 = 109 6 = 11771077 3337 = 97 7 = 28911077 3337 = 110 8 = 13521077 3337 = 49 9 = 5221077 3337 = 57 10 = 13521077 3337 = 49 11 = 12711077 3337 = 50

Tabel 4.6 Kode ASCII Plainteks 4 � Kode ASCII Plainteks

1 66 B

2 117 u

3 100 d

4 105 i

5 109 m

6 97 a

7 110 n

8 49 1

9 57 9


(44)

10 49 1

11 50 2

Dari proses-proses tersebut didapat kan kembali pesan asli yaitu: “Budiman1912”.

4.4.2 Hasil Algoritma ElGamal

Dengan menggunakan pesan yang sama yaitu “Budiman1912”.

4.4.2.1 Pengamanan Pesan

Proses 1:

Pada tahap ini plainteks diubah menjadi kode ASCII yaitu sebagai berikut:

Tabel 4.7 Kode ASCII Plainteks 5 � Plainteks Kode ASCII

1 B 66

2 u 117

3 d 100

4 i 105

5 m 109

6 a 97

7 n 110

8 1 49

9 9 57

10 1 49


(45)

44

Proses 2:

Untuk tahap ini dilakukan proses pembangkitan kunci:

1. Pilih sembarang bilangan prima . (dengan syarat nilai harus lebih besar dari nilai plainteks terbesar).

Karena nilai plainteks terbesar adalah 117, maka nilai harus lebih besar dari 117. Misalnya terpilih nilai adalah 127.

2. Pilih dua buah bilangan acak � dan , dengan syarat �< dan 1≤ ≤ − 2.

Misalnya terpilih nilai � = 28 dan = 12.

3. Hitung = � . Sehingga diperoleh:

= 2812 127 = 19.

Dari proses pembangkitan kunci maka diperoleh: Kunci publik (19, 28, 127)

Kunci privat (12, 127)

Proses 3:

Plainteks dienkripsi dengan menggunakan kunci publik (19, 28, 127). Dengan rumus:

dan

dengan syarat: 1≤ � ≤ −2 dalam hal ini nilai � = �1,…,�11.

Misalnya terpilih nilai �1 = 20, �2 = 31, �3 = 11, �4 = 45, �5 = 52, �6 = 63, �7 = 35, �8 = 21, �9 = 16, �10 = 32, �11 = 41.

Maka diperoleh:

1 = 2820 127 = 22 1 = 1920 66 127 = 77

2 = 2831 127 = 24 2 = 1931117 127 = 64


(46)

3 = 2811 127 = 105 3 = 1911100 127 = 32

4 = 2845 127 = 126 4 = 1945105 127 = 105

5 = 2852 127 = 52 5 = 1952109 127 = 39

6 = 2863 127 = 126 6 = 1963 97 127 = 97

7 = 2835 127 = 59 7 = 1935110 127 = 86

8 = 2821 127 = 108 8 = 192149 127 = 49

9 = 2816 127 = 52 9 = 191657 127 = 67

10 = 2832 127 = 37 10 = 193249 127 = 36

11 = 2841 127 = 90 11 = 194150 127 = 16 Jadi cipherteks yang dihasilkan adalah:

= 22 77 24 64 105 32 126 105 52 39 126 97 59 86 108 49 52 67 37 36 90 16.

4.4.2.2 Pengungkapan Pesan

Pada tahap ini dilakukan proses dekripsi dengan menggunakan kunci privat (12, 127).

Dengan rumus:

Maka diperoleh:

1 = 77∙22127−1−12 127 = 66 2 = 64∙24127−1−12 127 = 117 3 = 32∙105127−1−12 127 = 100 4 = 105 ∙126127−1−12 127 = 105 5 = 39∙52127−1−12 127 = 109

= 97∙126127−1−12 127 = 97 � = � �−1−


(47)

46

7 = 86∙59127−1−12 127 = 110 8 = 49∙108127−1−12 127 = 49 9 = 67∙52127−1−12 127 = 57 10 = 36∙37127−1−12 127 = 49 11 = 16∙90127−1−12 127 = 50

Jadi plainteks yang dihasilkan adalah: = 66 117 100 105 109 97 110 49 57 49 50

Tabel 4.8 Kode ASCII Plainteks 6 � Kode ASCII Plainteks

1 66 B

2 117 u

3 100 d

4 105 i

5 109 m

6 97 a

7 110 n

8 49 1

9 57 9

10 49 1

11 50 2


(48)

4.4.3 Perbandingan Hasil Kombinasi Algoritma RSA dan ElGamal dengan Hasil Masing-Masing Algoritma

Dalam penelitian ini, penulis menggunakan kombinasi algoritma RSA dan ElGamal yang bertujuan untuk memberikan perlindungan ganda yang lebih baik dalam menjaga kerahasiaan dari isi file dokumen. Hasil enkripsi dari kombinasi algoritma RSA dan ElGamal adalah cipherteks dan hasil dari dekripsinya adalah plainteks.

Cipherteks hasil dari kombinasi algoritma RSA dan ElGamal memiliki panjang 2 kali dari plainteks dan juga menggunakan proses sebanyak 2 kali. Sedangkan jika hanya menggunakan algoritma RSA saja, cipherteks yang dihasilkan hanya sepanjang plainteks dan hanya menggunakan proses sebanyak 1 kali saja, begitu pula dengan menggunakan algoritma ElGamal, walaupun cipherteks yang dihasilkan 2 kali panjang plainteks namun proses yang dilakukan hanya sebanyak 1 kali.

Berikut ini merupakan cipherteks hasil kombinasi algoritma RSA dan ElGamal, hasil algoritma RSA, dan hasil algoritma ElGamal.

Plainteks: “Budiman1912”

Cipherteks Kombinasi Algoritma RSA dan ElGamal:

498 2787 2408 1853 279 157 1905 1056 567 1888 101 3434 2007 3448 3165 1945 286 865 2750 3030 2436 2213

Cipherteks Algoritma RSA:

1295 1628 166 1443 499 1177 2891 1352 522 1352 1271

Cipherteks Algoritma ElGamal:


(49)

48

Setelah dilakukan pengujian sistem, dapat dikethui lamanya waktu proses dari masing-masing algoritma. Hasil pengujian ditampilkan pada Tabel 4.9.

Tabel 4.9 Waktu Proses Algoritma Ukuran File

(bytes)

Waktu Proses (detik) Enkripsi Dekripsi

Kombinasi RSA dan ElGamal

50 0,015336 0,0087446

100 0,026256 0,016899

200 0,0359 0,031801

500 0,069096 0,063992

1000 0,11417 0,086719

RSA

50 0,0046705 0,0042781

100 0,01025 0,0083691

200 0,014965 0,01413

500 0,023604 0,032107

1000 0,03533 0,053949

ElGamal

50 0,0096671 0,0060127

100 0,018856 0,012341

200 0,032104 0,023931

500 0,05211 0,054426

1000 0,11024 0,081849

Dilihat dari waktu prosesnya, kombinasi algoritma RSA dan ElGamal membutuhkan waktu yang lebih lama dibandingkan algoritma RSA dan ElGamal. Sehingga waktu yang dibutuhkan untuk memecahkan kombinasi algoritma RSA dan ElGamal juga semakin lama.


(50)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pada implementasi yang telah penulis lakukan, maka dapat disimpulkan bahwa kombinasi algoritma RSA dan ElGamal mampu menutupi kekurangan yang dimiliki dari algoritma RSA yaitu dengan melakukan proses enkripsi pada cipherteks hasil RSA dengan menggunakan algoritma ElGamal sehingga apabila cipherteks hasil RSA dapat dipecahkan maka kunci publik dan kunci privat tidak akan dapat langsung diketahui dikarenakan harus mencari cipherteks hasil ElGamal. Oleh karena itu, proses kombinasi algoritma RSA dan ElGamal membutuhkan waktu yang lebih lama dibandingkan masing – masing algoritma, sehingga waktu yang dibutuhkan untuk memecahkan kombinasi algoritma RSA dan ElGamal juga semakin lama.

5.2 Saran

Adapun saran – saran yang dapat penulis berikan untuk pengembangan dan perbaikan penelitian ini adalah sebagai berikut:

1. Perlu dilakukan penelitian lebih lanjut dalam implementasi algoritma kriptografi yang sudah ada saat ini.

2. Perlu dilakukan penelitian lebih lanjut dalam bentuk plainteks yang berbeda. Contohnya berupa gambar, video dan sebagainya.

3. Pesan rahasia dapat berupa file dengan format .doc, .pdf, dan lain sebagainya. 4. Kombinasi dua algoritma atau lebih dapat dilakukan sebagai salah satu solusi


(51)

50

5. Mengimplementasikan algoritma kriptografi dengan menggunakan bahasa pemograman yang lain, seperti JAVA, C/C++, Visual Basic dan sebagainya. 6. Penelitian ini agar dapat dikembangkan lebih lanjut dengan menggunakan


(52)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

2.1.1 Pengertian Kriptografi

Kriptografi (cryptography) berasal dari Bahasa Yunani “criptos” yang artinya adalah rahasia, sedangkan “graphein” artinya tulisan. Jadi kriptografi berarti

tulisan rahasia. Secara umum, kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya (Munir, 2006).

Kriptografi didefenisikan sebagai sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan menggunakan huruf dan karakter di luar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini (Hasnan, 2010).

Dalam prosesnya, Kriptografi memiliki dua konsep utama, yaitu proses enkripsi (encryption) dan dekripsi (decryption). Enkripsi adalah proses penyandian plainteks menjadi cipherteks, sedangkan dekripsi adalah proses mengembalikan cipherteks menjadi plainteks semula. Enkripsi dan dekripsi membutuhkan kunci sebagai parameter yang digunakan untuk transformasi (Kurniawan, Yusuf. 2004).


(53)

6

Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi (Kromodimoeljo, 2009)

2.1.2 Sejarah Kriptografi

Kriptografi mempunyai sejarah yang panjang. Informasi yang lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The

Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah

kriptografi, mulai dari penggunaan kriptografi oleh Bangsa Mesir 4000 tahun yang lalu hingga penggunaan kriptografi abad ke – 20.

Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau menggunakan alat bantu mekanik sederhana. Kriptografi klasik secara umum dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Algoritma transposisi adalah algoritma yang mengubah susunan – susunan huruf di dalam pesan, sedangkan algoritma substitusi yaitu mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf yang lain.

Penggunaan algoritma transposisi yaitu oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan alat yang namanya scytale.

Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada

sebuah silinder dengan diameter tertentu (diameter silinder merupakan kunci dari penyandian). Pesan ditulis baris per baris dan secara horizontal. Apabila kertas dilepas, maka setiap huruf akan tersusun secara acak membentuk pesan rahasia. Agar pesan tersebut dapat dibaca, maka kertas harus kembali dililitkan ke silinder yang diameternya sama dengan diameter silinder pengirim.


(54)

(a) (b)

Gambar 2.1 (a) Sebuah scytale; (b) Pesan ditulis secara horizontal, baris per baris.

Sedangkan algoritma substitusi paling awal dan paling sederhana adalah

Caesar Cipher, yaitu digunakan oleh raja Yunani kuno, Julius Caesar. Caranya

adalah dengan mengganti setiap karakter di dalam alfabet dengan karakter yang terletak pada tiga posisi berikutnya di dalam susunan alfabet. Pada perang dunia ke – 2, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan dengan

Enigma. Mesin ini melakukan proses enkripsi yang sangat rumit. Namun Enigma

berhasil dipecahkan oleh pihak sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia ke – 2.

Gambar 2.2 Mesin enigma

Perkembangan peralatan komputer digital memicu terbentuknya kriptografi modern. Dengan komputer digital, akan sangat mungkin untuk menghasilkan cipher yang lebih kompleks dan rumit. Tidak seperti kriptografi klasik yang mengenkripsi karakter per karakter, kriptografi modern beroperasi pada string biner. Cipher yang lebih kompleks seperti DES dan RSA adalah algoritma modern yang sangat dikenal di dunia kriptografi. Kriptografi modern


(55)

8

melahirkan konsep seperti tanda-tangan digital dan sertifikat digital. Dengan kata lain, kriptografi modern tidak hanya memberikan aspek keamanan (confidentiality), tetapi juga aspek keamanan lain seperti otentikasi dan integritas data.

2.1.3 Terminologi Kriptografi

Di dalam kriptografi akan sering ditemukan beberapa istilah atau terminologi. Berikut merupakan istilah penting untuk diketahui dalam memahami kriptografi (Munir, 2006).

a. Plainteks dan Cipherteks

Pesan merupakan data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks. Pesan tersebut dapat dikirim (melalui kurir, saluran telekomunikasi, dan lain – lain) dan dapat juga disimpan dalam media penyimpanan. Pesan dapat berupa teks, gambar, suara, atau video.

Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang telah tersandikan tersebut dinamakan dengan cipherteks. Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca. Perbandingan antara plainteks dan cipherteks dapat dilihat pada Gambar 2.3.

(a) (b) Gambar 2.3 (a) Plainteks; (b) Cipherteks


(56)

b. Pengirim dan Penerima

Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima adalah entitas yang menerima pesan. Entitas disini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya.

c. Enkripsi dan Dekripsi

Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption). Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan deskripsi (decryption). Proses enkripsi dan deskripsi membutuhkan kunci sebagai parameter yang digunakan untuk transformasi.

(a) (b)

Gambar 2.4 (a) Skema enkripsi; (b) Skema dekripsi

d. Kriptanalisis

Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. Jika seorang kriptografer (cryptographer) mentransformasikan plainteks menjadi cipherteks dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha untuk memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci.


(57)

10

2.1.4 Tujuan Kriptografi

Munir (2006) merangkum tujuan dari kriptografi adalah sebagai berikut:

1. Kerahasiaan (Confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. Istilah lainnya adalah secrecy dan privacy. Banyak pendekatan untuk menghadirkan kerahasiaan, mulai dari perlindungan secara fisik sampai perlindungan melalui algoritma matematika yang menerjemahkan data sehingga sulit dipahami. 2. Integritas Data (Data Integrity), adalah layanan yang menjamin bahwa pesan

masih asli/utuh atau belum pernah dimanipulasi selama pengiriman. Manipulasi data dapat berupa menyisipkan, menghapus dan menukar data tersebut.

3. Otentikasi (Authentication), adalah layanan yang berhubungan dengan identifikasi baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (entity authentication) maupun mengidentifikasi asal usul pesan (data origin authentication). Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan asal usul pesan. Otentikasi asal usul pesan secara implisit juga memberikan kepastian integritas data, sebab jika pesan telah dimodifikasi berarti asal usul pesan sudah tidak benar.

4. Penyangkalan (Non-Repudiation), adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan yaitu pengirim pesan telah menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.

2.1.5 Jenis – Jenis Kriptografi

Berdasarkan kunci enkripsi dan deskripsinya algoritma kriptografi terbagi menjadi dua bagian (Munir, 2006) yaitu:


(58)

1. Kriptografi simetri

Konsep dasar dari kriptografi kunci simetri adalah di mana kunci untuk enkripsi sama dengan kunci untuk deskripsi. Istilah lain dari kriptografi simetri ini adalah kriptografi kunci privat (privat-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional

cryptography). Dalam kriptografi kunci simetri dapat diasumsikan bahwa si

penerima dan pengirim pesan telah terlebih dahulu berbagi kunci sebelum pesan dikirimkan. Keamanan dari sistem ini terletak pada kerahasiaan kuncinya. Skema kriptografi simetri dapat dilihat pada Gambar 2.5.

(a) (b)

Gambar 2.5 (a) Skema enkripsi kriptografi simetri; (b) Skema dekripsi kriptografi simetri

2. Kriptografi asimetri

Berbeda dengan kriptografi kunci simetri, kriptografi asimetri memiliki dua buah kunci yang berbeda pada proses enkripsi dan deskripsinya. Nama lain dari kunci asimetri ini adalah kriptografi kunci publik (public – key cryptography). Kunci

untuk enkripsi pada kriptografi asimetri ini tidak rahasia (diketahui oleh publik), sedangkan kunci untuk deskripsi bersifat rahasia (kunci privat). Pengirim akan mengenkripsi dengan menggunakan kunci publik, sedangkan penerima mendeskripsi menggunakan kunci privat. Skema kriptografi asimetri dapat dilihat pada Gambar 2.6.


(59)

12

(a) (b)

Gambar 2.6 (a) Skema enkripsi kriptografi asimetri; (b) Skema dekripsi kriptografi asimetri

2.2 Algoritma Kriptografi

2.2.1 Algoritma RSA

Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. RSA adalah algoritma kriptografi modern yang menggunakan sistem kriptografi asimetri (kunci publik). Algoritma RSA yang dibuat oleh para ilmuwan pada tahun 1976 ini, melakukan pemfaktoran bilangan yang sangat besar untuk mendapatkan kunci privat (Munir, 2006).

Keunggulan dari algoritma RSA adalah tingkat kesulitannya dalam memfaktorkan bilangan besar menjadi faktor primanya dan kekurangan algoritma ini adalah jika bilangan tidak cukup besar maka dengan mudah dapat difaktorkan.

(Permana, Aditya dkk.) dalam jurnalnya yang berjudul “Kriptografi Pada File Dokumen Microsoft Office Menggunakan Metode RSA” menjelaskan bahwa

algoritma RSA dapat diterapkan dalam proses enkripsi dan dekripsi file dokumen

Microsoft Office yang dapat digunakan untuk melakukan proses kriptografi

terhadap file .doc, .xls, .ppt.

(Supriyono. 2008) dalam jurnalnya yang berjudul “Pengujian Sistem


(60)

menjelaskan bahwa algoritma RSA dapat diaplikasikan untuk teks-teks dengan ukaran kecil maupun besar.

2.2.1.1 Proses Pembangkitan Kunci

Algoritma membangkitkan pasangan kunci:

1. Pilih duah buah bilangan prima sembarang dan . (Sebaiknya ≠ , sebab jika = maka = 2, sehingga dapat diperoleh dengan menarik akar pangkat dua dari ).

2. Hitung = ∙ .

3. Hitung �( ) = −1 ∙( −1).

4. Pilih kunci yang relatif prima terhadap �( ).

5. Bangkitkan kunci privat dengan menggunakan persamaan ⋅ ≡

1( �( )). Perhatikan bahwa ⋅ ≡1( �( )). Hitung hingga

⋅ ≡1( �( )) ekivalen ∙ = 1 +��( ), sehinnga secara sederhana dapat dihitung dengan = 1+��( ).

Hasil dari algoritma diatas:

- Kunci publik adalah pasangan ( , ) - Kunci privat adalah pasangan ( , )

Algoritma RSA memiliki besaran-besaran sebagai berikut: 1. dan bilangan prima (rahasia)

2. = ∗ (tidak rahasia)

3. �( ) = −1 ∗( −1) (rahasia) 4. (kunci enkripsi/kunci publik) (tidak rahasia) 5. (kunci dekripsi/kunci privat) (rahasia)

6. (plainteks) (rahasia)


(61)

14

2.2.1.2 Proses Enkripsi

Proses enkripsi pesan sebagai berikut: 1. Ambil kunci publik ( , ).

2. Nyatakan plainteks menjadi blok-blok 1, 2,…, dimana � menyatakan jumlah karakter plainteks.

3. Setiap blok dienkripsi menjadi blok dengan rumus = , sehingga didapat cipherteks 1, 2,…, �.

2.2.1.3 Proses Dekripsi

Setiap blok cipherteks didekripsi kembali menjadi blok dengan rumus =

� .

2.2.2 Algoritma ElGamal

Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Algoritma ElGamal juga adalah algoritma kriptografi kunci-publik. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit pada bilangan modulo prima yang besar (Munir, 2006).

(Ifanto, Mukhammad. 2009) dalam jurnalnya yang berjudul “Metode

Enkripsi dan Dekripsi dengan Menggunakan Algoritma ElGamal” menjelaskan

bahwa tingkat keamanan algoritma ini didasarkan pada kesulitan pemecahan masalah logaritma diskrit pada penggandaan bilangan bulat modulo prima yang besar.

(Aribowo, Eko. 2008) dalam jurnalnya yang berjudul “Aplikasi


(62)

ElGamal” menjelaskan bahwa aplikasi yang dihasilkan dapat digunakan untuk

dokumen Microsoft Office dengan ekstensi .doc, .txt, .ppt dan .mdb.

2.2.2.1 Proses Pembangkitan Kunci

Algoritma membangkitkan pasangan kunci:

1. Pilih sembarang bilangan prima . (dengan syarat nilai harus lebih besar dari nilai plainteks terbesar).

2. Pilih dua buah bilangan acak � dan , dengan syarat �< dan 1≤ ≤ − 2.

3. Hitung = �

Hasil dari algoritma diatas :

-kunci publik adalah ( ,�, ) -kunci privat adalah ( , )

Algoritma ElGamal memiliki besaran-besaran sebagai berikut:

1. bilangan prima (tidak rahasia)

2. Bilangan acak, � (�< ) (tidak rahasia) 3. Bilangan acak, ( < ) (kunci privat) (rahasia)

4. = � (kunci publik) (tidak rahasia)

5. (plainteks) (rahasia)


(63)

16

2.2.2.2 Proses Enkripsi

Proses enkripsi pesan sebagai berikut:

1. Susun plainteks menjadi blok-blok 1, 2,…, � dimana � menyatakan jumlah karakter plainteks.

2. Pilih bilangan acak � yang dalam hal ini 1≤ � ≤ −2. 3. Setiap blok dienkripsi dengan rumus:

=���

= ��

Pasangan dan adalah cipherteks untuk blok pesan . Jadi, ukuran cipherteks dua kali ukuran plainteks.

2.2.2.3 Proses Dekripsi

Gunakan kunci privat untuk mendekripsi dan menjadi plainteks dengan


(64)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Kemajuan dan perkembangan teknologi dewasa ini telah mempengaruhi segala aspek kehidupan, tak terkecuali aspek penyimpanan data, seperti dalam penyimpanan data pada file dokumen. Keamanan dan kerahasiaan merupakan aspek penting dalam proses penyimpanan data pada file dokumen.

Untuk menjaga keamanan dan kerahasiaan terutama bagi perusahaan, instansi, atau organisasi yang mempunyai dokumen-dokumen rahasia dan penting. Mereka mengamankan dokumen-dokumen tersebut agar terhindar dari gangguan orang lain. Saat ini, sebagian besar dokumen-dokumen menggunakan aplikasi

Microsoft office yang sangat memudahkan siapa saja ketika menggunakan aplikasi

ini. Microsoft Office telah mempunyai sistem pengamanan tersendiri, namun sistem keamanan tersebut masih sangat mudah untuk diketahui oleh pihak lain. Dengan semakin meningkatnya pengguna aplikasi Microsoft office ini maka dibutuhkan pula cara untuk meningkatkan keamanan pada data terhadap dokumen tersebut. Hal ini dikarenakan setiap perusahaan atau instansi memiliki suatu data yang tidak semua orang boleh mengetahuinya. Banyak cara yang dilakukan untuk mengamankan data dari ancaman pihak luar yang tidak memiliki hak untuk mengolah data dokumen tersebut.

Salah satu cara untuk mempertahankan kerahasiaan dari data tersebut adalah dengan menggunakan teknik penyandian. Dengan menggunakan cara ini, maka setiap data asli (plainteks) akan disandikan terlebih dahulu sedemikian


(65)

2

sehingga bila ada pihak luar yang ingin mengetahui ataupun merubahnya akan kesulitan dalam menterjemahkan isi data yang sebenarnya. Teknik tersebut dikenal dengan kriptografi (Munir, 2006).

Dalam penelitian ini algoritma yang digunakan dalam proses enkripsi dan dekripsi adalah algoritma RSA dan ElGamal, dimana kedua algoritma ini termasuk algoritma asimetris atau penggunaan dua kunci dalam proses enkripsi dan dekripsinya. Keunggulan dari algoritma RSA adalah tingkat kesulitannya dalam memfaktorkan bilangan besar menjadi faktor primanya dan kekurangan algoritma ini adalah jika bilangan tidak cukup besar maka dengan mudah dapat difaktorkan. Sedangkan pada algoritma ElGamal sulitnya menghitung logaritma diskrit pada bilangan modulo prima yang besar. Dari kekurangan algoritma RSA tersebut penulis melakukan kombinasi algoritma RSA dan ElGamal yang diharapkan agar lebih sulit untuk dipecahkan.

Berdasarkan penjelasan di atas, maka penulis melakukan penelitian dengan judul “Implementasi Kombinasi Algoritma RSA dan ElGamal dalam Pengamanan Data pada File Dokumen”.

1.2Perumusan Masalah

Permasalahan yang dibahas adalah bagaimana meningkatkan keamanan pada file dokumen dengan menggunakan kombinasi algoritma RSA dan ElGamal sehingga tingkat keamanannya lebih baik.

1.3Batasan Masalah

Untuk menghindari meluasnya materi pembahasan dalam penelitian ini, maka penulis membatasi permasalahan hanya mencakup pada hal-hal berikut:

a. Algoritma yang digunakan adalah algoritma RSA dan ElGamal. b. Jenis masukan file yang digunakan dengan format .txt.


(66)

c. Tidak dilakukan teknik-teknik untuk melakukan pemecahan mekanisme (kriptanalis).

d. Software yang digunakan adalah MATLAB.

1.4Tujuan Penelitian

Tujuan penelitian ini adalah mengkombinasikan algoritma RSA dan ElGamal untuk memberikan perlindungan ganda yang lebih baik dalam menjaga kerahasiaan dari isi file dokumen.

1.5Manfaat Penelitian

Manfaat dari penelitian ini adalah sebagai berikut:

1. Dapat mengamankan data tanpa diketahui oleh pihak luar.

2. Dapat digunakan sebagai tambahan informasi dan referensi bacaan untuk mahasiswa Matematika, terlebih bagi mahasiswa yang akan melakukan penelitian serupa.

1.6Kerangka Pemikiran

Berikut ini adalah flowchart proses kombinasi algoritma RSA dan ElGamal dalam pengamanan data pada file dokumen:


(67)

4

Gambar 1.1 Flowchart pengamanan data pada file dokumen

1.7Metodologi Penelitian

Penelitian ini disusun dengan langkah – langkah sebagai berikut:

1. Melakukan studi literatur mengenai algoritma RSA dan ElGamal yang bersumber dari buku, jurnal, dan penelitian terdahulu.

2. Analisis terhadap studi literatur untuk mengetahui dan mendapatkan pemahaman mengenai algoritma RSA dan ElGamal.

3. Melakukan perancangan dan menerapkan kombinasi algoritma RSA dan ElGamal pada file dokumen dengan menggunakan MATLAB.

4. Hasil dan pembahasan dari kombinasi algoritma RSA dan ElGamal dilakukan dengan membandingkan hasil dari masing-masing algoritma.

5. Menarik kesimpulan dari hasil dan pembahasan yang telah diperoleh dan memberikan saran untuk penelitian-penelitian selanjutnya.

Mulai

Input file, kunci publik RSA, kunci publik ElGamal

Enkripsi RSA

Enkripsi ElGamal

Selesai Cipherteks RSA

Cipherteks ElGamal A


(68)

IMPLEMENTASI KOMBINASI ALGORITMA RSA DAN

ELGAMAL DALAM PENGAMANAN DATA

PADA FILE DOKUMEN

ABSTRAK

Kriptografi merupakan teknik pengamanan dengan menyandikan pesan menjadi sederetan karakter yang tidak bermakna. Algoritma Kriptografi terus mengalami perkembangan, pegembangan dilakukan untuk mengatasi celah keamanan yang semakin terbuka. Algoritma RSA dan ElGamal adalah algoritma yang cukup populer digunakan saat ini. Dimana kedua algoritma ini memiliki 2 buah kunci yaitu kunci publik dan kunci privat dalam proses enkripsi dan dekripsi. Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan ganda yang lebih baik dalam menjaga kerahasiaan dari isi file dokumen tersebut. Hasil akhir dari penelitian ini adalah sebuah program yang dapat diaplikasikan untuk mengamankan data pada file dokumen.


(69)

IMPLEMENTATION COMBINATION OF RSA AND

ELGAMAL ALGORITHM OF SECURING DATA

ON THE DOCUMENT FILE

ABSTRACT

Cryptography is a security technique to encode the message into a series of characters that don’t have meaning. Cryptographic algorithm continues to go through development, development was done to resolve the security gaps that increasingly open. RSA and ElGamal algorithm are algorithms that are quite popular to be used nowadays, where these two algorithms have two keys, namely a public key and a private key in encryption and description process. In this research, the RSA and ElGamal algorithms are combined to be able to secure data on a file document that aims to provide a better double protection in maintaining the confidentiality of the contents of the document file. The end result of this research is a program that can be applied to secure the data on document file. Keyword: Cryptography, RSA Algorithm, ElGamal Algorithm.


(70)

SKRIPSI

M BUDIMAN KHANAFI M

120803008

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA


(71)

IMPLEMENTASI KOMBINASI ALGORITMA RSA DAN

ELGAMAL DALAM PENGAMANAN DATA

PADA FILE DOKUMEN

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat untuk mencapai gelar Sarjana Sains

M BUDIMAN KHANAFI M

120803008

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2016


(72)

PERSETUJUAN

Judul : Implementasi Kombinasi Algoritma RSA dan ElGamal Dalam Pengamanan Data Pada File Dokumen

Kategori : Skripsi

Nama : M Budiman Khanafi M

Nomor Induk Mahasiswa : 120803008

Program Studi : Sarjana (S1) Matematika

Departemen : Matematika

Fakultas : Matematika Dan Ilmu Pengetahuan Alam (FMIPA) Universitas Sumatera Utara

Disetujui di Medan, Juli 2016

Komisi Pembimbing:

Pembimbing 2, Pembimbing 1,

Dr. Mardiningsih, M.Si Dr. Syahriol Sitorus, M.IT NIP. 19630405 198811 2 001 NIP. 19710310 199703 1 004

Disetujui oleh

Departemen Matematika FMIPA USU Ketua,


(73)

PERNYATAAN

IMPLEMENTASI KOMBINASI ALGORITMA RSA DAN

ELGAMAL DALAM PENGAMANAN DATA

PADA FILE DOKUMEN

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2016

M Budiman Khanafi M 120803008


(74)

PENGHARGAAN

Assalamu’alaikum Wr. Wb.

Puji syukur penulis ucapkan kehadirat Allah SWT atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul Implementasi Kombinasi Algoritma RSA dan ElGamal Dalam Pengamanan Data Pada File Dokumen ini dalam waktu yang telah ditetapkan. Terimakasih penulis sampaikan kepada:

1. Bapak Dr. Syahriol Sitorus, M.IT dan Ibu Dr. Mardiningsih, M.Si selaku dosen pembimbing yang berkenan dan rela mengorbankan waktu, tenaga dan pikiran guna memberikan petunjuk dan bimbingannya dalam penulisan skripsi ini.

2. Bapak Drs. Marihat Situmorang, M.Kom dan Bapak Dr. Sawaluddin, M.IT selaku dosen pembanding atas kritik dan saran yang membangun dalam penyempurnaan skripsi ini.

3. Bapak Prof. Dr. Tulus, M.Si dan Ibu Dr. Mardiningsih, M.Si selaku Ketua dan Sekretaris Departemen Matematika FMIPA USU beserta staf pegawai.

4. Bapak Dr. Kerista Sebayang, MS selaku Dekan FMIPA USU beserta staf pegawai.

5. Terkhusus untuk Ayahanda Kardimad Manurung, Ibunda Suriati Sirait, serta keluarga besar penulis yang telah memberikan banyak bantuan baik materi, moral maupun spiritual.

6. Hasina Toni yang selalu memberikan semangat dan dukungannya.

7. Teman-teman penulis Rahmat, Fahmi, Viki, Wanda dan teman-teman Matematika 2012 lainnya yang tidak dapat disebutkan satu per satu atas segala bentuk dukungannya.

Semoga segala bentuk bantuan yang telah diberikan kepada penulis mendapatkan balasan yang lebih baik dari Allah SWT. Akhir kata penulis mengharapkan kritik dan saran yang membangun demi penyempurnaan skripsi ini


(75)

IMPLEMENTASI KOMBINASI ALGORITMA RSA DAN

ELGAMAL DALAM PENGAMANAN DATA

PADA FILE DOKUMEN

ABSTRAK

Kriptografi merupakan teknik pengamanan dengan menyandikan pesan menjadi sederetan karakter yang tidak bermakna. Algoritma Kriptografi terus mengalami perkembangan, pegembangan dilakukan untuk mengatasi celah keamanan yang semakin terbuka. Algoritma RSA dan ElGamal adalah algoritma yang cukup populer digunakan saat ini. Dimana kedua algoritma ini memiliki 2 buah kunci yaitu kunci publik dan kunci privat dalam proses enkripsi dan dekripsi. Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan ganda yang lebih baik dalam menjaga kerahasiaan dari isi file dokumen tersebut. Hasil akhir dari penelitian ini adalah sebuah program yang dapat diaplikasikan untuk mengamankan data pada file dokumen.


(76)

IMPLEMENTATION COMBINATION OF RSA AND

ELGAMAL ALGORITHM OF SECURING DATA

ON THE DOCUMENT FILE

ABSTRACT

Cryptography is a security technique to encode the message into a series of

characters that don’t have meaning. Cryptographic algorithm continues to go

through development, development was done to resolve the security gaps that increasingly open. RSA and ElGamal algorithm are algorithms that are quite popular to be used nowadays, where these two algorithms have two keys, namely a public key and a private key in encryption and description process. In this research, the RSA and ElGamal algorithms are combined to be able to secure data on a file document that aims to provide a better double protection in maintaining the confidentiality of the contents of the document file. The end result of this research is a program that can be applied to secure the data on document file. Keyword: Cryptography, RSA Algorithm, ElGamal Algorithm.


(77)

DAFTAR ISI

Halaman

PERSETUJUAN i

PERNYATAAN ii

PENGHARGAAN iii

ABSTRAK iv

ABSTRACT v

DAFTAR ISI vi

DAFTAR TABEL viii

DAFTAR GAMBAR ix

DAFTAR LAMPIRAN xi

BAB 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Perumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Kerangka Pemikiran 3

1.7 Metodologi Penelitian 4

BAB 2 LANDASAN TEORI

2.1 Kriptografi 5

2.1.1 Pengertian Kriptografi 5

2.1.2 Sejarah Kriptografi 6

2.1.3 Terminologi Kriptografi 8

2.1.4 Tujuan Kriptografi 10

2.1.5 Jenis-Jenis Kriptografi 10

2.2 Algoritma Kriptografi 12

2.2.1 Algoritma RSA 12

2.2.1.1 Proses Pembangkitan Kunci 13

2.2.1.2 Proses Enkripsi 14

2.2.1.3Proses Dekripsi 14

2.2.2 Algoritma ElGamal 14

2.2.2.1 Proses Pembangkitan Kunci 15

2.2.2.2 Proses Enkripsi 16

2.2.2.3 Proses Dekripsi 16

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Permasalahan 17

3.2 Analisis Kebutuhan 17

3.3 Perancangan Sistem 18

3.3.1 Perancangan Flowchart 18


(78)

3.3.3 Flowchart Algoritma ElGamal 20 3.3.4 Flowchart Kombinasi Algoritma RSA dan ElGamal 23

BAB 4 IMPLEMENTASI

4.1 Kebutuhan Perangkat Lunak dan Perangkat Keras 24

4.2 Implementasi 24

4.2.1 Proses Enkripsi 25

4.2.2 Proses Dekripsi 29

4.3 Analisis dalam Aplikasi 31

4.3.1 Pengamanan Pesan 31

4.3.2 Pengungkapan Pesan 36

4.4 Pengujian Sistem 39

4.4.1 Hasil Algoritma RSA 39

4.4.1.1 Pengamanan Pesan 39

4.4.1.2 Pengungkapan Pesan 42

4.4.2 Hasil Algoritma ElGamal 43

4.4.2.1 Pengamanan Pesan 43

4.4.2.2 Pengungkapan Pesan 45

4.4.3 Perbandingan Hasil kombinasi Algoritma RSA dan ElGamal dengan Hasil Masing-Masing Algoritma 47

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 49

5.2 Saran 49

DAFTAR PUSTAKA 51


(79)

DAFTAR TABEL

Nomor Judul Halaman Tabel

4.1 Kode ASCII Plainteks 1 31

4.2 Plainteks ElGamal 34

4.3 Cipherteks RSA 37

4.4 Kode ASCII Plainteks 2 38

4.5 Kode ASCII Plainteks 3 39

4.6 Kode ASCII Plainteks 4 42

4.7 Kode ASCII Plainteks 5 43

4.8 Kode ASCII Plainteks 6 46


(80)

DAFTAR GAMBAR

Nomor Judul Halaman Gambar

1.1 Flowchart pengamanan data pada file dokumen 4

2.1 (a) Sebuah scytale, (b) Pesan ditulis secara horizontal, baris

per baris 7

2.2 Mesin enigma 7

2.3 (a) Plainteks, (b) Cipherteks 8

2.4 (a) Skema enkripsi, (b) Skema dekripsi 9

2.5 (a) Skema enkripsi kriptografi simetri, (b) Skema dekripsi

kriptografi simetri 11

2.6 (a) Skema enkripsi kriptografi asimetri, (b) Skema dekripsi

kriptografi asimetri 12

3.1 Flowchart pembangkit kunci RSA 19

3.2 (a) Flowchart enkripsi RSA, (b) Flowchart dekripsi RSA 20

3.3 Flowchart pembangkit kunci ElGamal 21

3.4 Flowchart enkripsi ElGamal 22

3.5 Flowchart dekripsi ElGamal 22

3.6 (a) Flowchart enkripsi kombinasi RSA dan ElGamal,

(b) Flowchart dekripsi kombinasi RSA dan ElGamal 23

4.1 Halaman utama 25

4.2 File yang dienkripsi 25

4.3 Halaman enkripsi 1 26

4.4 Pop-up window pilih file 1 26

4.5 Halaman enkripsi 2 27

4.6 Halaman enkripsi 3 27

4.7 Pop-up window simpan file 28

4.8 Hasil.txt 28

4.9 Halaman dekripsi 1 29


(81)

4.12 Halaman dekripsi 3 30


(82)

DAFTAR LAMPIRAN

Nomor Judul Halaman

1 Fungsi utama 51

2 Fungsi enkripsi 52


(1)

DAFTAR ISI

Halaman

PERSETUJUAN i

PERNYATAAN ii

PENGHARGAAN iii

ABSTRAK iv

ABSTRACT v

DAFTAR ISI vi

DAFTAR TABEL viii

DAFTAR GAMBAR ix

DAFTAR LAMPIRAN xi

BAB 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Perumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Kerangka Pemikiran 3

1.7 Metodologi Penelitian 4

BAB 2 LANDASAN TEORI

2.1 Kriptografi 5

2.1.1 Pengertian Kriptografi 5

2.1.2 Sejarah Kriptografi 6

2.1.3 Terminologi Kriptografi 8

2.1.4 Tujuan Kriptografi 10

2.1.5 Jenis-Jenis Kriptografi 10

2.2 Algoritma Kriptografi 12

2.2.1 Algoritma RSA 12

2.2.1.1 Proses Pembangkitan Kunci 13

2.2.1.2 Proses Enkripsi 14

2.2.1.3Proses Dekripsi 14

2.2.2 Algoritma ElGamal 14

2.2.2.1 Proses Pembangkitan Kunci 15

2.2.2.2 Proses Enkripsi 16

2.2.2.3 Proses Dekripsi 16

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Permasalahan 17

3.2 Analisis Kebutuhan 17

3.3 Perancangan Sistem 18

3.3.1 Perancangan Flowchart 18


(2)

3.3.3 Flowchart Algoritma ElGamal 20 3.3.4 Flowchart Kombinasi Algoritma RSA dan ElGamal 23

BAB 4 IMPLEMENTASI

4.1 Kebutuhan Perangkat Lunak dan Perangkat Keras 24

4.2 Implementasi 24

4.2.1 Proses Enkripsi 25

4.2.2 Proses Dekripsi 29

4.3 Analisis dalam Aplikasi 31

4.3.1 Pengamanan Pesan 31

4.3.2 Pengungkapan Pesan 36

4.4 Pengujian Sistem 39

4.4.1 Hasil Algoritma RSA 39

4.4.1.1 Pengamanan Pesan 39

4.4.1.2 Pengungkapan Pesan 42

4.4.2 Hasil Algoritma ElGamal 43

4.4.2.1 Pengamanan Pesan 43

4.4.2.2 Pengungkapan Pesan 45

4.4.3 Perbandingan Hasil kombinasi Algoritma RSA dan ElGamal dengan Hasil Masing-Masing Algoritma 47

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 49

5.2 Saran 49

DAFTAR PUSTAKA 51


(3)

DAFTAR TABEL

Nomor Judul Halaman Tabel

4.1 Kode ASCII Plainteks 1 31

4.2 Plainteks ElGamal 34

4.3 Cipherteks RSA 37

4.4 Kode ASCII Plainteks 2 38

4.5 Kode ASCII Plainteks 3 39

4.6 Kode ASCII Plainteks 4 42

4.7 Kode ASCII Plainteks 5 43

4.8 Kode ASCII Plainteks 6 46


(4)

DAFTAR GAMBAR

Nomor Judul Halaman Gambar

1.1 Flowchart pengamanan data pada file dokumen 4

2.1 (a) Sebuah scytale, (b) Pesan ditulis secara horizontal, baris

per baris 7

2.2 Mesin enigma 7

2.3 (a) Plainteks, (b) Cipherteks 8

2.4 (a) Skema enkripsi, (b) Skema dekripsi 9 2.5 (a) Skema enkripsi kriptografi simetri, (b) Skema dekripsi

kriptografi simetri 11

2.6 (a) Skema enkripsi kriptografi asimetri, (b) Skema dekripsi

kriptografi asimetri 12

3.1 Flowchart pembangkit kunci RSA 19

3.2 (a) Flowchart enkripsi RSA, (b) Flowchart dekripsi RSA 20

3.3 Flowchart pembangkit kunci ElGamal 21

3.4 Flowchart enkripsi ElGamal 22

3.5 Flowchart dekripsi ElGamal 22

3.6 (a) Flowchart enkripsi kombinasi RSA dan ElGamal,

(b) Flowchart dekripsi kombinasi RSA dan ElGamal 23

4.1 Halaman utama 25

4.2 File yang dienkripsi 25

4.3 Halaman enkripsi 1 26

4.4 Pop-up window pilih file 1 26

4.5 Halaman enkripsi 2 27

4.6 Halaman enkripsi 3 27

4.7 Pop-up window simpan file 28

4.8 Hasil.txt 28

4.9 Halaman dekripsi 1 29

4.10 Pop-up window pilih file 2 29


(5)

4.12 Halaman dekripsi 3 30


(6)

DAFTAR LAMPIRAN

Nomor Judul Halaman

1 Fungsi utama 51

2 Fungsi enkripsi 52