1
ABSTRAK
Masalah keamanan merupakan salah satu aspek penting dari sebuah
sistem informasi. Pentingnya nilai sebuah informasi menyebabkan seringkali
informasi diinginkan hanya boleh diakses oleh orang-orang tertentu. Jatuhnya
informasi ke tangan pihak yang tidak diinginkan dapat menimbulkan kerugian
bagi pemilik informasi.
Banyak solusi yang dapat digunakan untuk menangani masalah keamanan
data. Salah satu solusi untuk mengamankan data yang dikirimkan adalah dengan
melakukan enkripsi (penyandian) pada data. Enkripsi dibagi menjadi dua bagian
utama, yaitu algoritma simetrik dan algoritma asimetrik. Pada tugas akhir ini
algoritma yang dipakai adalah algoritma XTEA yang merupakan algoritma
simetrik, yaitu penyandian dengan menggunakan kunci yang sama. Data yang
dikirimkan adalah data hasil enkripsi atau disebut juga ciphertext. Setelah data
diterima, maka data akan diolah kembali menjadi data sebenarnya atau disebut
juga plaintext.
Pada tugas akhir ini berhasil direalisasikan sebuah perangkat lunak untuk
pengaman data berbasis algoritma simetrik metoda XTEA dengan menggunakan
2
ABSTRACT
Security problem is one the most important aspect in an information
system. Importance value of information is often makes the information wanted to
be accessed by certain person only. Fall of information to the unwanted side can
couse losses to info’s owner.
Many solutions can be used to handle information’s security problem. One
of solutions to protect data is to encrypt the data. There are two general types of
encryption algorithm, symmetric algorithm and asymmetric algorithm. The
Algorithm that used in this project is XTEA, one of symmetric algorithm type that
encodes and decodes using only one same key. Sent data is encrypted data or so
called the ciphertext. After data is received, data will be processed back to the
original data or so called the plaintext.
In this project has successfully built an encryption software base on
DAFTAR ISI
ABSTRAK... ...i
ABSTRACT... ...ii
KATA PENGANTAR... ...iii
DAFTAR ISI... ...v
DAFTAR GAMBAR...ix
DAFTAR TABEL...xi
BAB I PENDAHULUAN...1
1.1 Latar Belakang...1
1.2 Identifikasi Masalah...2
1.3 Tujuan...2
1.4 Pembatasan Masalah...2
1.5 Spesifikasi Hardware...2
1.6 Sistematika Pembahasan...3
BAB II TEORI PENUNJANG...4
2.1 Kriptografi...4
2.1.1 Tujuan Kriptografi...7
2.2 Enkripsi dan Dekripsi Menggunakan Kunci...8
2.3 Algoritma Simetri Dan Algoritma Asimetri...9
2.3.1 Algoritma Simetri...9
2.3.2 Algoritma Asimetri...10
2.4 Mode Operasi Enkripsi Blok Cipher...12
2.5.1 Fungsi XOR...14
2.5.2 Bilangan Prima...14
2.5.3 Operasi Modulus...15
2.5.4 Algoritma Euclidean...16
2.5.5 Algoritma Extended Euclidean...17
2.5.6 Eksponensial Modulus...18
2.6 Enkripsi Dengan Algoritma XTEA...20
2.7 Algoritma Validasi Data...22
2.8 Algoritma Pembangkit Private Key dan Public Key...22
2.9 Feistel Cihper...22
BAB III Perancangan dan Realisasi Perangkat Lunak...24
3.1 Pengolahan Kunci XTEA...24
3.2 Program Enkripsi...24
3.3 Program Dekripsi...28
3.4 Program Pembangkit Privat Key dan Public Key...30
3.4.1 Sub Program rdmprime...31
3.4.2 Sub Program gcd...32
3.4.3 Sub Program Euclid...32
3.4.4 Program Validasi...34
3.4.5 Sub Program Pangkatmod...34
3.5 Realisasi Program...36
3.5.1 Program Enkripsi...36
3.5.3 Program Timer...38
BAB IV Data Pengamatan...39
4.1 Hasil Pengamatan Sederhana Program Enkripsi dan Dekripsi XTEA...39
4.1.1 Pengamatan Enkripsi XTEA Dengan Kunci Yang Sama...39
4.1.2 Pengamatan Enkripsi XTEA Dengan Kunci Yang Berbeda...45
4.2 Hasil Pengamatan Program Enkripsi dan Dekripsi Menggunakan File...49
4.2.1 Proses Enkripsi XTEA Dengan Menggunakan File...49
4.3 Hasil Pengamatan Waktu Dan Ukuran File...54
4.3.1 Pengamatan Enkripsi Dan Dekripsi Menggunakan Kunci Yang Sama..54
4.3.2 Pengamatan Enkripsi Dan Dekripsi Menggunakan Kunci Yang Beda..55
4.3.3 Pengamatan enkripsi Dan Dekripsi Menggunakan Kunci Delta Yang Berbeda...57
4.4 Pengamatan Hasil Proses Validasi...58
4.4.1 Pengamatan Terhadap Perubahan Ciphertext...58
4.4.2 Pengamatan Terhadap Perubahan Public Key...63
4.4.3 Pengamatan Terhadap Perubahan File Validasi...64
4.5 Analisa Hasil Pengamatan...65
BAB V Kesimpulan Dan Saran...67
5.1 Kesimpulan...67
5.2 Saran...67
4
DAFTAR GAMBAR
Gambar 2.1.... Kriptografi dengan proses enkripsi dan dekripsi ... 6
Gambar 2.2 Kriptografi Simetri Umum... 9
Gambar 2.3 Kriptografi Asimetri Umum... 11
Gambar 2.4 Diagram Umum Feistel Cipher ...23
Gambar 3.1 Diagram Alur Pengolahan Plaintext ... 25
Gambar 3.2 Diagram Alur Proses Enkripsi ... 27
Gambar 3.3 Diagram Alur Proses Dekripsi ... 29
Gambar 3.4 Diagram Alur Program Pembangkit Kunci Tanda Tangan Digital ... 30
Gambar 3.5 Diagram Alir Sub Program RdmPrime ... 31
Gambar 3.6 Diagram Alir Sub Program gcd ... 32
Gambar 3.7 Diagram Alir Sub Program Euclid ... 33
Gambar 3.8 Diagram Alir Program Validasi ... 34
Gambar 3.9 Diagram Alir Sub Program pangkatmod ... 35
Gambar 3.10 Tampilan Program Enkripsi ... 36
Gambar 3.11 Tampilan Program Dekripsi ... 37
Gambar 4.1 Tampilan program enkripsi algoritma XTEA dengan plaintext “percobaan” kunci “kunci” ... 40
Gambar 4.2 Tampilan penyimpan hasil enkripsi ... 41
Gambar 4.3 Tampilan penyimpanan kode validasi... 42
Gambar 4.5 Isi dari teks01dekrip.txt... 44
Gambar 4.6 Tampilan program enkripsi algoritma XTEA
dengan plaintext “percobaan 2”, kunci “coba” ... 46
Gambar 4.7 Tampilan program dekripsi dari algoritma XTEA plaintext
“percobaan 2” dengan kunci “coba” ... 47
Gambar 4.8 Isi dari coba2dekrip.txt...48
Gambar 4.9 Tampilan program enkripsi algoritma XTEA dengan plaintext
file original_text.txt, kata kunci “kunci”...50
Gambar 4.10 Tampilan program dekripsi dari fileoriginal_text_enkrip.txt
dengan menggunakan kunci “kunci”, disimpan dalam file
original_text_dekrip.txt...52
Gambar 4.11 Isi dari original_text_dekrip.txt...53
5
DAFTAR TABEL
Tabel 2.1 Nilai Extended Euclidean ... 18
Tabel 4.1 Enkripsi dan dekripsi menggunakan kunci yang sama, plaintext
yang berbeda-beda ... 39
Tabel 4.2 Enkripsi dan dekripsi menggunakan kunci yang sama, plaintext
yang berbeda-beda ... 45
Tabel 4.3 Hasil Pengamatan Proses Enkripsi XTEA ... 54
Tabel 4.4 Hasil Pengamatan Proses Dekripsi XTEA ... 55
Tabel 4.5 Hasil pengamatan Enkripsi file menggunakan kunci yang berbeda,
plaintext yang sama ... 56
Tabel 4.6 Hasil pengamatan Enkripsi file menggunakan kunci yang berbeda,
plaintext yang sama ... 56
Tabel 4.7. Hasil pengamatan Enkripsi file menggunakan kunci kedua
yang berbeda, plaintext yang sama...57
Tabel 4.8. Hasil pengamatan Enkripsi file menggunakan kunci
Listing UMain.pas
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus, StrUtils;
type
TMain = class(TForm)
TabSheet2: TTabSheet;
procedure btBrowseClick(Sender: TObject); procedure btEncryptClick(Sender: TObject); procedure btGenClick(Sender: TObject); procedure btBrowse1Click(Sender: TObject); procedure DecryptClick(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure About1Click(Sender: TObject); procedure TabSheet1Show(Sender: TObject); procedure TabSheet2Show(Sender: TObject);
{$R *.dfm}
uses xtea, RSATools, Tools, UAbout;
procedure TMain.btBrowseClick(Sender: TObject); begin
if OpenDlg.Execute then begin
edPath.Text:=OpenDlg.FileName;
RPlain.Lines.LoadFromFile(OpenDlg.FileName); end; temp:Xtea.TTeaMsgBlock; Read:Integer;
awal,akhir,lama:TDateTime; i,d,n:Integer;
s,x:longint; begin
if edPass.Text = ““ then
MessageDlg(“Kata Kunci Belum Diisi”,mtError,mbOKCancel,0) else
if RPlain.Text = ““ then
MessageDlg(“Document masih kosong”,mtError,mbOKCancel,0) else
if PrivD.Text = ““ then
Buffer[i]:=0; Signature”,”Pesan”,MB_OK) = IDOK then
n : Longint; //p * q
temp2 : array of Longint; // temp dynamic array handler that hand selection of e temp3 : Longint;
ulang:
//select e that is prime
For i1 := 2 To Round(Sqrt(temp4)) do begin
edPath1.Text:=OpenDlg.FileName;
RCipher.Lines.LoadFromFile(OpenDlg.FileName); end; temp:Xtea.TTeaMsgBlock; Read:Integer;
s,p:Longint; begin
if edPass1.Text = ““ then
MessageDlg(“Kata Kunci Belum Diisi”,mtError,mbOKCancel,0) else
if RCipher.Text = ““ then
edDuration.Clear;
OpenDlg.FileName := ““; SaveDlg.FileName := ““; OpenDlgV.FileName := ““; SaveDlgV.FileName := ““; end;
procedure TMain.TabSheet2Show(Sender: TObject); begin
edPath1.Clear; edPass1.Clear; RCipher.Clear; PubE1.Clear; PubN1.Clear; edStart1.Clear; edEnd1.Clear; edDuration1.Clear; OpenDlg.FileName := ““; SaveDlg.FileName := ““; OpenDlgV.FileName := ““; SaveDlgV.FileName := ““; end;
Listing Uxtea.pas
unit xtea;
interface
type
TTeaMsgBlock = array[0..1] of LongWord; TTeaKeyBlock = array[0..3] of LongWord;
procedure XTeaCrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock); procedure XTeaDecrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock); function XTeaCryptStr(const Msg, Pwd: string): string;
function XTeaDecryptStr(const Msg, Pwd: string): string;
function XTeaCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len : Integer): TTeaMsgBlock;
function XTeaDeCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len : Integer): TTeaMsgBlock;
procedure XTeaCrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock); var
procedure XTeaDecrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock); var
begin
function XTeaCryptStr(const Msg, Pwd: string): string; var
V[0] := 0; V[1] := 0;
function XTeaCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len : Integer): TTeaMsgBlock;
Move(V[0], Result, SizeOf(V)); end;
function XTeaDeCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len : Integer): TTeaMsgBlock;
Move(V[0], Result, SizeOf(V)); end;
{
========================================================== =============== }
Listing Uabout.pas
unit UAbout;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TfrmAbout = class(TForm) Panel1: TPanel;
procedure Button1Click(Sender: TObject); private
frmAbout: TfrmAbout;
Listing Tools.pas
function LRot16(X: word; c: integer): word; assembler; function RRot16(X: word; c: integer): word; assembler; function LRot32(X: dword; c: integer): dword; assembler; function RRot32(X: dword; c: integer): dword; assembler; procedure XorBlock(I1, I2, O1: PByteArray; Len: integer); procedure IncBlock(P: PByteArray; Len: integer);
function StrToDWord(s : string) : DWord; function DWordToStr(wo : DWord) : string;
implementation
function LRot16(X: word; c: integer): word; assembler; asm
function RRot16(X: word; c: integer): word; assembler; asm
mov ecx, edx rol eax, cl end;
function RRot32(X: dword; c: integer): dword; register; assembler; asm
mov ecx, edx ror eax, cl end;
procedure XorBlock(I1, I2, O1: PByteArray; Len: integer); var
procedure IncBlock(P: PByteArray; Len: integer); begin
Inc(P[Len-1]);
if (P[Len-1]= 0) and (Len> 1) then IncBlock(P,Len-1);
end;
function StrToDWord(s : string) : DWord; var cely : Dword;
var vysl : string; rr,ll : word;
Si1,Si2,Si3,Si4 : byte; begin
rr:=(wo shl 16) shr 16; ll:=(wo shr 16); Si2:=(ll shl 8) shr 8; Si1:=(ll shr 8); Si4:=(rr shl 8) shr 8; Si3:=(rr shr 8);
vysl:=chr(Si1)+chr(Si2)+chr(Si3)+chr(Si4); DWordToStr:=vysl;
end;
Listing RSATools
unit RSATools;
interface
uses SysUtils, StrUtils, IdGlobal, Math;
Function Euclid(nilai1 : Longint; nilai2 : Longint) : Longint ; Function gcd(p : longint; q : longint) : Longint;
Function RdmPrime() : Longint;
Function pangkatmod(num1 : longint;num2 : longint;num3 : longint) : longint;
implementation
A1 := B1; B1 := T1;
Function gcd(p : longint; q : longint) : Longint; var A11,B11,R11 : Longint;
label balik;
Function RdmPrime() : Longint;
var iRandom : integer; // holds random long result i2 : longint; // checkprime loop counter
//trap handler
Function pangkatmod(num1 : longint;num2 : longint;num3 : longint) : longint; var a22,b22,n22,nilaimod,nilaic,nilaid,nilaii,nilaik,naik : longint;
end; end;
pangkatmod := nilaid; End;
1
BAB I
PENDAHULUAN
Pada bab ini akan dijelaskan mengenai latar belakang, perumusan masalah,
tujuan, pembatasan masalah, serta sistematika penulisan laporan tugas akhir.
1.1 Latar Belakang
Masalah keamanan merupakan salah satu aspek penting dari sebuah sistem
informasi. Pentingnya nilai sebuah informasi menyebabkan seringkali informasi
diinginkan hanya boleh diakses oleh orang-orang tertentu. Jatuhnya informasi ke
tangan pihak yang tidak diingingkan dapat menimbulkan kerugian bagi pemilik
informasi.
Banyak solusi yang dapat digunakan untuk menangani masalah keamanan
data, salah satunya adalah dengan menggunakan enkripsi. Penulis akan mencoba
untuk membuat perangkat lunak yang dapat melakukan enkripsi dan dekripsi
terhadap data dengan menggunakan algoritma kunci simetrik XTEA sehingga data
1.2 Identifikasi Masalah
Permasalahan difokuskan pada bagaimana membuat perangkat lunak yang
mampu melakukan enkripsi data dan dapat melakukan dekripsi data kembali
secara benar dengan algoritma kunci simetrik XTEA.
1.3
Tujuan
Tujuan dari Tugas Akhir ini adalah dapat membuat sebuah perangkat lunak
yang sanggup melakukan enkripsi serta dekripsi data dengan menggunakan
algoritma kunci simetrik XTEA.
1.4 Pembatasan Masalah
• Perancangan perangkat lunak untuk enkripsi dan dekripsi hanya dengan
dengan menggunakan algoritma kunci simetrik XTEA.
• Perangkat lunak dirancang untuk melakukan enkripsi dan dekripsi pada
data berjenis text.
1.5 Spesifikasi Hardware
• CPU AMD Athlon 1700+
• RAM 512 MB
1.6 Sistematika Pembahasan
Materi pembahasan dalam laporan Tugas Akhir ini adalah:
BAB I PENDAHULUAN
Bab ini menjelaskan mengenai latar belakang Tugas Akhir, tujuan Tugas
Akhir, pembatasan masalah dan sistematika pembahasan.
BAB II TEORI PENUNJANG
Bab ini menjelaskan landasan-landasan teori yang bersangkutan dengan
enkripsi dan dekripsi algoritma XTEA, yaitu antara lain : teori dasar kriptografi,
algoritma simetrik dan asimetrik, mode enkripsi blok cipher, dan algoritma
XTEA.
BAB III PERANCANGAN DAN REALISASI
Bab ini berisi tentang perancangan dan realisasi dari program enkripsi dan
dekripsi algoritma XTEA
BAB IV HASIL PENGAMATAN
Bab ini berisi tentang data hasil pengamatan proses enkripsi dan dekripsi
dengan menggunakan algoritma XTEA.
BAB V KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan dan saran yang mungkin berguna dalam
BAB V
KESIMPULAN DAN SARAN
5.1
Kesimpulan
Berdasarkan hasil pengamatan dapat diambil kesimpulan:
1. Program enkripsi mengubah plaintext menjadi ciphertext dengan ukuran yang
tidak berubah. Ini dikarenakan file validasi yang tidak disatukan dengan
ciphertext_nya. Program dekripsi mengubah ciphertext menjadi plaintext
kembali dengan ukuran plaintext semula.
2. Penggunaan kunci utama maupun kunci kedua (delta) yang makin kompleks
akan cenderung menambah waktu proses enkripsi dan dekripsi.
3. Perubahan kecil pada ciphertext dapat terditeksi dengan baik oleh perangkat
lunak sehingga pemalsuan dengan cara mengubah isi ciphertext dapat
dihindari.
5.2
Saran
Berdasarkan hasil pengamatan dapat diambil saran:
1. Program dapat dikembangkan untuk memproses secara langsung data
masukan selain data teks, misalnya data gambar, suara atau citra digital
Daftar Pustaka
Knused, L, “Block Cipher – analysis design and application”. Phd Dissertation : Aarhus University, 1994.
Kurniawan, Yusuf , Ir. MT.,Kriptografi Keamanan Internet dan Jaringan Komunikasi, Penerbit Informatika, Bandung, 2004.
Schneier, Bruce, Applied Cryptography Second edition: protocols, Algorithms, and source code in C, John Wiley & Sons Inc, Singapore, 1996.
http://www.kremlinencrypt.com/crypto/algorithms.html
http://www.cix.co.uk
http://www.cs.ua.edu
http://www.di-mgt.com/crypto.html
http://www.ietf.org/rfc/rfc2612.txt
http://www.powerbasic.com/support/forums
http://www.pbcrypto.com