Implementasi Kombinasi Algoritma RSA dan ElGamal Dalam Pengamanan Data Pada File Dokumen
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