• Tidak ada hasil yang ditemukan

Implementasi Algoritma Kunci Publik Luc dan Algoritma Kompresi Goldbach Codes untuk Perancangan Aplikasi Pengamanan dan Kompresi File Pdf

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Kunci Publik Luc dan Algoritma Kompresi Goldbach Codes untuk Perancangan Aplikasi Pengamanan dan Kompresi File Pdf"

Copied!
112
0
0

Teks penuh

(1)

Listing Program

Pembangkit Kunci.VB

Public NotInheritable Class LUC Private Sub New()

End Sub

Private Shared rng As New RNGCryptoServiceProvider()

Public Shared e As BigInteger, N As BigInteger, tN As BigInteger, sN As

BigInteger

Public Shared d As BigInteger

Public Shared p As BigInteger, q As BigInteger 'public static BigInteger [] enk_char;

Private Shared rnd As Byte() = New Byte(3) {}

(2)

Private Shared Function generate_tN(p As BigInteger, q As BigInteger) As

'System.Diagnostics.Debug.WriteLine(p, "p"); Do

rng.GetBytes(rnd)

tester = (BitConverter.ToUInt16(rnd, 2) Mod p) tester = BigInteger.ModPow(tester, (p - 1) / 2, p) 'System.Diagnostics.Debug.WriteLine(tester, "tester"); If tester <> 1 AndAlso tester - p <> -1 Then

(3)

FormEnk.VB

Private Sub BrowseFileEnkripsiButton_Click(sender As Object, e As

EventArgs) Handles BrowseFileEnkripsiButton.Click HasilEnkripsiTextBox.Text = ""

SaveFileEnkripsi.Enabled = False Dim filePath As String

If (OpenFileEnkripsiDialog.ShowDialog = DialogResult.OK) Then filePath = OpenFileEnkripsiDialog.FileName.ToString

Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)))

Private Sub EnkripsiButton_Click(sender As Object, e As EventArgs) Handles EnkripsiButton.Click

SaveFileEnkripsi.Enabled = True LUC.hasil_kunci()

Dim time As New System.Diagnostics.Stopwatch() time.Start()

Tampung.luc_c_kuncia = LUC.enkripsi(FileContentEnkripsiTextBox.Text) time.Stop()

waktu.Text = time.ElapsedMilliseconds.ToString() & " ms" pTextBox.Text = LUC.p.ToString()

(4)

End Sub

Private Shared Sub hasilenk(val As BigInteger) EnkripsiForm.sb.Append(val)

EnkripsiForm.sb.Append("-") End Sub

Private Sub SaveFileEnkripsi_Click(sender As Object, e As EventArgs) Handles SaveFileEnkripsi.Click

If SaveFileEnkripsiDialog.ShowDialog = DialogResult.OK Then Dim path As String = SaveFileEnkripsiDialog.FileName File.WriteAllText(path, sb.ToString())

'Dim fs As FileStream = File.Create(path) 'Dim info As Byte() = New

UTF8Encoding(True).GetBytes(LUC.d.ToString & " " & LUC.N.ToString & " " & Me.enkripsiResult)

Private Sub FileContentEnkripsiTextBox_TextChanged(sender As Object, e As

EventArgs) Handles FileContentEnkripsiTextBox.TextChanged End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) End Sub

Private Sub pTextBox_TextChanged(sender As Object, e As EventArgs) Handles pTextBox.TextChanged

End Sub

Private Sub waktu_TextChanged(sender As Object, e As EventArgs) Handles waktu.TextChanged

Public Shared Function dekripsi(enk As BigInteger()) As String Dim chars As Integer() = New Integer(enk.Length - 1) {} Dim i As Integer = 0

For Each c_e As BigInteger In enk

(5)

Next (Asc(spasi) - 31).ToString().PadLeft(2, "0"c)

Dim char_a As Integer = Integer.Parse(char_gab) chars.Add(char_a)

End If

Return chars.ToArray() End Function

Private Shared Function gabung_string(c_d As Integer()) As String 'int i = 0;

BigInteger, N As BigInteger) As BigInteger Dim Vold As BigInteger = 2

(6)

Return InlineAssignHelper(Vnew, If(Vnew > 0, Vnew, N + Vnew))

Private Sub BrowseFileDekripsiButton_Click(sender As Object, e As

EventArgs) Handles BrowseFileDekripsiButton.Click

If OpenFileDekripsiDialog.ShowDialog = DialogResult.OK Then Try

Private Sub DekripsiButton_Click(sender As Object, e As EventArgs) Handles DekripsiButton.Click

Dim time As New System.Diagnostics.Stopwatch() time.Start()

hasil = LUC.dekripsi(Tampung.luc_c_kuncia) time.Stop()

waktu.Text = time.ElapsedMilliseconds.ToString() & " ms" TextBox10.Text = hasil

End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

'If SaveFileEnkripsiDialog.ShowDialog = DialogResult.OK Then 'Dim path As String = SaveFileEnkripsiDialog.FileName

(7)

graph = PdfSharp.Drawing.XGraphics.FromPdfPage(pdfPage)

'Dim info As Byte() = New UTF8Encoding(True).GetBytes(LUC.d.ToString & " " & LUC.N.ToString & " " & Me.enkripsiResult)

'fs.Write(info, 0, info.Length)

Private Sub KompresiButton_Click(sender As Object, e As EventArgs) Handles KompresiButton.Click

FileContentKompresiTextBox.Text = sb.ToString() End Sub

Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles FileContentKompresiTextBox.TextChanged

End Sub

Private Function HasilKompresiTextBox() As Object Throw New NotImplementedException

End Function

Private Function SaveFileKompresi() As Object Throw New NotImplementedException

End Function

(8)

End Sub

Private Sub HasilKompresi_Click(sender As Object, e As EventArgs) Handles HasilKompresi.Click

If OpenFileKompresiDialog.ShowDialog = Windows.Forms.DialogResult.OK Then

FilePathKompresiTextBox.Text = OpenFileKompresiDialog.FileName End If

(9)

End If

(10)
(11)

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

Tampung.hasil_dekompresi = GoldBach.dekompresi(Tampung.hasil_kompresi) Dim action As New Action(Of BigInteger)(AddressOf hasilenk)

Array.ForEach(Tampung.luc_c_kuncia, action)

If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then System.IO.File.WriteAllText(SaveFileDialog1.FileName,

If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then TextBox1.Text = OpenFileDialog1.FileName

End If End Sub

Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint

(12)

DAFTAR RIWAYAT HIDUP

Saya yang bertanda tangan dibawah ini:

DATA PRIBADI

Nama : Sabrina Ridha Sari Sinaga

Alamat : Jln. Klambir 5 Gg: Uncu

Email : [email protected]

Tempat/Tanggal Lahir : Medan/ 10 Agustus 1992 Jenis Kelamin : Perempuan

Status : Belum Menikah

PENDIDIKAN

1998-2004 : SD SWASTA SUPRIYADI MEDAN

2004-2007 : SMP NEGERI 18 MEDAN

2007-2010 : SMA SWASTA DHARMA PANCASILA MEDAN

2010-2013 : DIII-Teknik Informatika Universitas Sumatera Utara 2014-2016 : S1 Ekstensi Ilmu Komputer Universitas Sumatera Utara

SEMINAR

Seminar Nasional Literasi Informasi (SENARAI) Universitas Sumatera Utara

Demikianlah Daftar Riwayat Hidup ini saya buat dengan sebenarnya.

Hormat Saya

(13)

DAFTAR PUSTAKA

Batten, Lyyn Margaret. 2013. Public Key Cryptography Applications and Attacks. IEEE (The Institute of Electric and Electronics Engineers). New Jersey. Bentley & Jeffrey L. Whitten. 2007. Systems Analysis and Design for The Global

Enterprise Sevent Edition. McGraw Hill: New York.

Forouzan, B.A. 2007. Cryptography & Network Security. Tata McGraw Hill: New Delhi.

Irawan, A.F. 2013. Sistem Keamanan Pesan Pada Android Gingerbread (2.3.4) dengan Algoritma LUC. Skripsi. Universitas Jember.

Kromodimoeljo, S. 2009. Teori & Aplikasi Kriptografi, SPK IT CONSULTING. Lubis, W.A. 2013. Penyandian Data Teks dengan Algoritma Elgamal dan Algoritma

Kompresi Data dengan Algoritma Elias Gamma Code. Skripsi. Universitas Sumatera Utara.

Pahlevy, R.T. 2010. Rancang Bangun Sistem Pendukung Keputusan Menentukan Penerima Beasiswa dengan Menggunakan Metode Simple Additive Weighting

(SAW). Skripsi. Universitas Pembangunan Nasional Veteran.

Putra, E. 2013. Implementasi Kriptografi Kurva Eliptik Dengan Algoritma Elgamal Dan Metode Pembangkitan Bilangan Prima Rabin-Miller Untuk Pengamanan

File Teks. Skripsi. Universitas Sumatera Utara.

Merdiyan, M. 2005. Implementasi Algoritma Run Length, Half Byte dan Huffman Untuk Kompresi File. Jurnal Seminar Nasional Aplikasi Teknologi

Informasi 3(2):79-84

(14)

Salomon, David. 2007. Variable-Lenghts Code For Data Compression. Springer: New York.

Saputra, R., Yismianto, B., Suhartono. 2006, Kriptografi Teks Dengan Menggunakan Algoritma LUC. Prosiding Seminar SPMIPA 2006, pp1-5.

Sansani, S. 2008. Penggunaan Aritmatika Modulo dan Balikan Modulo Pada Modifikasi Pada Algoritma Knapsack. Informatika.stei.itb.ac.id, 26 Maret 2016 (diakses 26 Maret 2016).

Sinaga, P.H.R. 2014. Analisis Perbandingan Kinerja Kriptografi Algoritma RSA-CRT

dan LUC Untuk Mengamankan Data Teks. Skripsi. Universitas Sumatera

Utara.

Smith, P. & M, Lennon. 1993. LUC: A New Public Key System. In Ninth IFIP

Symposium on Computer Security ed. E. G. Douglas, pp. 103-117. Elsevier

Science Publisher.

Taufiq, M. 2010. Penerapan Algoritma Kriptografi ElGamal untuk Pengaman File Citra. Jurnal Electrics Electronics Communications Controls Informatics

System EECCIS 4(1): 8-11.

Tammam, G. 2014. Pengertian Pseudocode dan Contohnya. Academia.edu , 3 Oktober 2016 (diakses 3 Oktober 2016).

Yunos, F., Atan, A.M., Said, M.R.M. Transformasi Polifungsi LUC Dalam Sistem Kriptografi. Jurnal Teknologi 37 (C ) Dis. 2002: 21-38.

Zelvina, A., Effendi, S., Arisandi, D,. 2012. Perancangan Aplikasi Pembelajaran Kriptografi Kunci Publik Elgamal Untuk Mahasiswa. Jurnal Dunia

(15)

BAB 3

ANALISIS PERANCANGAN SISTEM

Pada bab 3 akan membahas analisis terhadap sistem yang akan dirancangan dengan menggunakan algoritma kriptografi LUC dan algoritma kompresi Goldbach Codes.

3.1 Analisis

Dalam merancang sistem, diperlukan analisis terhadap sistem yang akan dirancang terlebih dahulu. Tujuan dari analisis ini agar sistem yang dirancang menjadi tepat guna dan ketahanan dari sistem tersebut akan lebih terjaga. Di samping itu dengan dilakukannya analisis, akan dapat mempermudah kerja kita dalam membuat sistem, dan jika suatu saat nanti ada perbaikan atau penambahan dalam sistem tersebut, maka akan mudah untuk diselesaikan.

Analisis sistem terdiri dari tahapan-tahapan berbeda yang mendekripsikan pengembangan sistem. Dalam tugas akhir ini, ada dua fase analisis yaitu: analisis masalah, dan analisis kebutuhan.

3.1.1 Analisis masalah

Untuk dapat mengurangi ancaman yang terjadi saat melakukan pertukaran informasi yang sangat rahasia, dapat dilakukan dengan melakukan pengkodean untuk informasi yang akan dikirim ataupun disimpan.

Salah satu yang digunakan untuk perancangan sistem dalam analisis masalah adalah dengan menggunakan diagram ishikawa. Kegunaan diagram ishikawa dalam menganalisis masalah adalah untuk mendapatkan sebab akibat dari permasalahan yang timbul dari beberapa sumber utama yang memberikan kontribusi paling signifikan, dimana sumber-sumber ini kemudian dipilih untuk proses perbaikan.

(16)

Pada gambar 3.1 merupakan gambar diagram ishikawa, kepala ikan ditulis disebelah kanan adalah masalah, dari garis horizontal utama, dibuat garis diagonal yang menjadi cabang. Setiap cabang memiliki sebab utama dari masalah yang ditulis. Sebab diinterpretasikan sebagai “cause”

Gambar 3.1 Diagram Ishikawa dalam Masalah Penelitian Pengamanan dan

Kompresi File PDF

Permasalahan utama (effect) pada gambar 3.1 ditunjukkan oleh ujung garis horizontal utama yang berada ditengah, yaitu mengamankan file PDF dengan algoritma LUC lalu mengkompresikannya dengan menggunakan Goldbach Codes.

(17)

Cause material berupa file PDF sering digunakan diintansi pemerintahan

seperti dalam membuat surat, dokumen negara atau yang lainnya. Dalam bidang akademis, file PDF juga sering digunakan untuk pembuatan makalah, jurnal bahkan

e-book.

Garis diagonal merupakakan cabang dari garis horizontal utama yang merupakan kategori-kategori yang mewakili sebab utama (cause). Dari sebab-sebab yang muncul tersebut terdapat akar dari permasalahan, yaitu adanya pihak ketiga yang ingin mengetahui isi yang terdapat didalam informasi dan hasil size enkripsi yang cukup besar, dan masing-masing algoritma memiliki kelemahan dan keunggulannya tersendiri. Sistem yang akan dibangun menggunakan Visual Studi 2012 yang memudahkan user untuk melakukan pengamanan dan kompresi file PDF.

3.1.2 Analisis kebutuhan sistem

Terdapat dua bagian dalam analisis kebutuhan sistem, yaitu kebutuhan fungsional dan kebutuhan non-fungsional. Kebutuhan fungsional menjelaskan proses-proses aktifitas yang dapat dilakukan oleh sistem dalam melakukan pelayanan yang dilakukan sistem dan kebutuhan yang dipenuhi oleh sistem, yaitu:

1. Fungsi Pembangkit Kunci

Dalam proses enkripsi dan dekripsi, sistem membutuhkan pembangkit kunci untuk memudahkan pengguna untuk menentukan kunci yang akan digunakan. Pada sistem yang digunakan, kunci yang dibangkitkan secara acak oleh sistem

.

a) Fungsi Enkripsi

(18)

b) Fungsi Dekripsi

Pada sistem, plaintext yang didapat merupakan hasil dari ciphertext yang dienkripsi. Pengguna sudah mempunyai kunci dekripsi ciphertext untuk mengubah menjadi

plaintext.

c) Fungsi Kompresi

Pada sistem, hasil cipherteks dengan kapasitas yang besar dikompresi hingga ukuran

file menjadi lebih kecil. Hasil ciphertext berupa (*txt) yang tersimpan didalam sistem.

Dalam hal ini, pengguna dapat memilih hasil enkripsi yang akan dikompresi.

d) Fungsi Dekompresi

Sistem melakukan dekompresi dengan string yang sama saat dengan berbentuk

ciphertext sebelum dikompresi.

2. Kebutuhan Non-Fungsional a) Performa

Sistem yang dibangun dapat menampilkan dan menyimpan hasil dari fungsi kriptografi dan kompresi yang dilakukan oleh sistem.

b) User friendly

Sistem yang dibangun memiliki tampilan yang mudah digunakan dan memiliki tampilan yang sederhana

c) Dokumentasi

(19)

d) Manajemen kualitas

Sistem yang dibangun memiliki kualitas yang baik yaitu pada saat proses pembangkit kunci dan dekripsi yang akurat.

3.1.3 Analisis proses

Sistem yang dibangun menggunakan algoritma LUC untuk melakukan proses enkripsi dan dekripsi file PDF dan hasil dari proses algoritma Goldbach Codes untuk kompresi dan dekompresi file dalam format .*txt.

Pengirim file PDF mengenkripsi file terlebih dahulu dengan menggunakan algoritma LUC, pembangkit kunci dilakukan secara acak sehingga diperoleh kunci enkripsi untuk mengenkripsi file. Proses dekripsi adalah pihak penerima yang memperoleh ciphertext yang memiliki kunci dekripsi untuk mengembalikan menjadi plainteks semula.

Penerima pesan memiliki ukuran file .*txt dengan kapasitas yang cukup besar, ukuran file dapat dikurangi dengan proses kompresi Goldbach Codes dengan Goldbach Codeword G0 dan dekompresi untuk membalikkan file ke ukuran semula.

3.2 Perancangan Sistem

Perancangan sistem merupakan spesifikasi dari solusi berbasis komputer secara detail, disebut juga dengan physical design. Perancangan sistem menekankan pada implementasi sistem secara teknis (Whitten & Bentley 2007).

Perancangan sistem yang akan dibangun memberikan gambaran alur kerja sistem. Perancangan sistem terdiri dari:

a. Flowchart atau diagram alir berguna untuk menggambarkan tahapan aktivitas

sebuah sistem atau sebuah use-case (Whitten & Bentley 2007).

b. Pseudocede adalah merupakan kode yang mirip dengan pemrograman

(20)

tidak ada aturan yang baku, biasanya ditulis berdasarkan basis bahasa pemrograman yang digunakan (Tammam, 2003).

c. Use case diagram merupakan diagram yang menggambarkan interaksi antara

sistem dengan pengguna dan eksternal sistem (Whitten & Bentley 2007).

d. Activity diagram merupakan diagram yang memodelkan langkah-langkah atau

aktivitas dari sebuah sistem. Perbedaan utama dari flowchart, activity diagram dapat menampilkan aktivitas sistem yang berjalan secara bersamaan (Whitten & Bentley 2007).

3.3 Pemodelan Sistem

Pemodelan aplikasi dilakukan dengan membuat use-case diagram dan activity

diagram. Bertujuan untuk menggambarkan semua bagian-bagian yang berperan dalam

sistem yang dirancang.

3.3.1 Use-case diagram

Use-case diagram akan mendeksripsikan reaksi sistem dan hubungan sistem dengan

lingkungannya dan memproduksi hasil yang dibutuhkan oleh si pengguna sistem.

Use-case diagram sistem terdapat pada gambar 3.2

(21)

3.3.2 Actvity diagram

Activity diagram menggambarkan workflow atau aktivitas dari sebuah sistem.

Aktivitas dari sebuah sistem dalam activity diagram meliputi proses pembangkitan kunci, enkripsi, dekripsi, kompresi dan dekompresi.

3.3.2.1 Activity diagram pembangkit kunci

Acitivity diagram pembangkit kunci akan menjabarkan bagaimana user (pengguna)

melakukan proses pembangkit kunci dan menggambarkan melalui diagram bagaimana system bekerja. Gambar 3.3 adalah activity diagram pembangkit kunci untuk enkripsi dan dekripsi file PDF.

(22)

Berdasarkan gambar 3.3, proses pembangkit kunci dengan memilih terlebih dahulu

file PDF yang akan di enkripsi, lalu sistem secara otomatis akan melakukan proses

random untuk memilih nilai N, kunci enkripsi (e) dan dekripsi (d) mana yang akan digunakan berdasarkan hasil perhitungan algoritma yang digunakan.

3.3.2.2 Activity diagram proses enkripsi LUC

Proses enkripsi pada activity diagram ditunjukkan pada gambar 3.4 akan diperlihatkan bagaimana user sebagai pengguna melakukan proses enkripsi dan system mengelola hasil enkripsi yang diperintahkan oleh user.

Gambar 3.4 Activity diagram Proses Enkripsi LUC

Pada tampilan gambar 3.4, proses enkripsi yang dilakukan adalah user menginputkan

file PDF (*pdf), browse file PDF dari media penyimpanan. Lalu system akan

(23)

menghasilkan cipherteks yang ditampilkan oleh system. Maka user dapat menyimpan hasil cipherteks dengan format (*txt) ke media penyimpanan yang diinginkan.

3.3.2.3 Activity diagram proses kompresi goldbach codes

Activity diagram proses kompresi Goldbach Codes pada gambar 3.5 menggambarkan

kerja user dan system saat melalukan kompresi file.

Gambar 3.5 Activity diagram Proses Kompresi Goldbach Codes

(24)

3.3.2.4 Activity diagram dekompresi Goldbach Codes

Activity diagram dekompresi Goldbach Codes pada gambar 3.6 akan menunjukkan

user dan system bekerja dalam melakukan proses dekompresi Goldbach Codes.

Gambar 3.6 Activity diagram Dekompresi Goldbach Codes

Berdasarkan gambar 3.6, user melakukan browse file kompresi dengan format (*txt), lalu system secara otomatis melakukam proses dekompresi dan langsung menyimpan hasil dekompresi pada direktori penyimpanan \E. Selanjutnya, system menampilkan hasil dekompresi.

3.3.2.5 Acitivity diagram dekripsi LUC

Activity diagram dekompresi Goldbach Codes pada gambar 3.7 akan menunjukkan

(25)

Gambar 3.7 Activity diagram Dekripsi LUC

Pada gambar 3.7, user melakukan browse cipherteks lalu system menampilkan isi cipherteks yang dipilih oleh user. Selanjutnya, user melakukan dekripsi file dan

system akan melakukan mengambil kunci privat dekripsi yang telah tersimpan lalu

menampilkan hasil dekripsi. Setelah itu, user dapat menyimpan hasil file.

3.3.2.6 Sequence Diagram

Sequence diagram adalah diagram yang menampilkan interaksi antar objek yang

(26)

Gambar 3.8 Sequence Diagram Sistem

3.4 Perancangan Sistem

3.4.1 Pembuatan algoritma program

Pembuatan algoritma program adalah sebuah proses langkah-langkah algoritma LUC dan Goldbach Codes kedalam bahasa pemrograman. Tahap-tahapnya adalah sebagai berikut:

1. Pembuatan alur sistem secara umum

(27)

3. Pembuatan alur proses kompresi dan dekompresi dengan menggunakan algoritma Goldbach Codes dan penerapan algoritma Goldbach Codes kedalam bahasa pemrograman Visual Basic 2012.

4. Pembuatan proses pengujian bilangan prima dengan menggunakan Fermat dan menerapkannya kedalam bahasa pemrograman Visual Basic 2012.

3.4.2 Alur proses sistem secara umum

(28)

Proses tersebut dapat dilihat pada gambar 3.9 flowchart sistem secara umum.

(29)

3.4.3 Alur proses pembangkit kunci

Alur proses pembangkit kunci algoritma LUC dijelaskan sebagai berikut:

1. Nilai p ≠ q untuk mencari nilai N. Nilai p = 103, q = 109, maka hasil N = 11227

2. Setelah mendapat nilai N, lalu dicari T = (p-1).(q-1).(p+1).(q+1). Proses perhitungan T = (102).(108).(104).(110), maka didapat hasil 126023040. Nilai e diambil dari relatif prima T, dimana GCD (e,T)=1. Maka GCD (10037, 126023040) =1 Setelah mendapat nilai e untuk kunci enkripsi, maka dicari SN = LCM (p-1)(q-1)(p+1)(q+1).Hasil dari perhitungan rumus SN = 2625480

3. Nilai SN yang didapat digunakan dalam rumus e.d Mod SN = 1.

10037. d Mod 11227 memperoleh hasil kunci d = 2591213. Adapun pseudoce pembangkit kunci adalah sebagai berikut:

Pseudocode Untuk Fungsi gcd

Private Shared Function generate_bil_prima() As UInt16

Dim c_prima As UInt16

Do

rng.GetBytes(rnd)

(30)

Loop While c_prima < 85 OrElse Not Lehmann(c_prima)

Return c_prima

End Function

Private Shared Function GCD(a As BigInteger, b As BigInteger) As BigInteger

If a Mod b = 0 Then

Pseudocode Untuk Metode Lehman & Fermat

Private Shared Function Lehmann(p As BigInteger) As Boolean

Dim tester As BigInteger, i As BigInteger = 0

'System.Diagnostics.Debug.WriteLine(p, "p");

Do

rng.GetBytes(rnd)

tester = (BitConverter.ToUInt16(rnd, 2) Mod p)

tester = BigInteger.ModPow(tester, (p - 1) / 2, p) (Fermat)

'System.Diagnostics.Debug.WriteLine(tester, "tester");

If tester <> 1 AndAlso tester - p <> -1 Then

Private Shared Function lcm(ParamArray empat As BigInteger()) As BigInteger

Dim hasil As BigInteger = 1

For Each bil As BigInteger In empat

(31)

Next

Return hasil

End Function

Private Shared Function lcm(a As BigInteger, b As BigInteger) As BigInteger

Return CType((a * b) / GCD(a, b), BigInteger)

BigInteger, q As BigInteger, temp As BigInteger, _

(32)

Alur proses pembangkit kunci dapat dijelaskan pada flowchart gambar 3.10

Gambar 3.10 Flowchart Alur Pembangkit Kunci

3.4.5 Alur proses enkripsi LUC

Berikut ini adalah langkah-langkah dalam melakukan enkripsi pesan dengan menggunakan algoritma LUC:

1. Ubah plainteks kedalam ASCII. Lalu pecah plainteks kedalam blok be-record, masing-masing blok terdiri dari dua karakter.

SABRINA :

SA BR IN Asp

(33)

2. Setelah plainteks diubah kedalam ASCII, maka hitung enkripsi dengan algoritma LUC :

V [ 2…10037 ] = ( m. V [ i – 1] – V [ i – 2] ) mod 11227 V [ 0 ] = 2

Maka didapat hasil enkripsi 2182-5036-8882-8860-

Adapun pseudocode untuk proses enkripsi LUC sebagai berikut:

Private Shared Function barisan_LUC(P As BigInteger, Q As BigInteger, e As

BigInteger, N As BigInteger) As BigInteger

Dim Vold As BigInteger = 2

Dim Vnew As BigInteger = P

Dim temp As BigInteger, i As BigInteger = 2

While i <= e

temp = Vnew

Vnew = ((P * Vnew) - Vold) Mod N

Vold = temp

i += 1

End While

'System.Diagnostics.Debug.WriteLine(Vnew)

Return InlineAssignHelper(Vnew, If(Vnew > 0, Vnew, N + Vnew))

(34)

Alur proses enkripsi LUC dijelaskan pada flowchart berikut ini:

Gambar 3.11 Flowchart Enkripsi LUC

3.4.6 Alur Proses Kerja Dekripsi LUC

Adapun langkah-langkah dalam proses dekripsi file dengan menggunakan LUC sebagai berikut:

1. Hasil cipherteks Hasil cipherteks SABRINA adalah : 2182-5036-8882-8860- di dekripsi dengan menggunakan rumus:

V [1] = C

V [ 2…d ] = ( C. V [ i – 1] – V [ i – 2] ) mod n

(35)

2. Maka Hasilnya kembali ke plainteks semula yaitu SABRINA. Berikut ini merupakan alur flowchart proses dekripsi LUC

Gambar 3.12 Flowchart Dekripsi LUC

3.4.7 Alur Proses Kompresi Goldbach Codes

(36)

Tabel 3.1 ASCII Codes Proses Kompresi

Char ASCII Codes ASCII Code (bin) Bit Freq Bit x Freq

A 65 01000001 8 2 16

S 83 01010011 8 1 8

B 66 01000010 8 1 8

R 82 01010010 8 1 8

I 73 01001001 8 1 8

N 78 01001001 8 1 8

Sp 32 00100000 8 1 8

Jumlah = 64 Setelah itu, dilakukan proses kompresi dengan Goldbach Codes menggunakan Goldbach G0 Code pada tabel 3.2

Tabel 3.2 Goldbach G0 Codes untuk Proses Kompresi

Char Freq N 2 (n + 3) Prima Goldbach GO Codes

Bit Bit x Freq

A 2 1 8 3+5 11 2 4

S 1 2 10 7+3 101 3 3

B 1 3 12 5 + 7 011 3 3

R 1 4 14 3 + 11 1001 4 4

I 1 5 16 5 + 11 0101 4 4

N 1 6 18 7 + 11 0011 4 4

Sp 1 7 20 7 + 13 00101 5 5

(37)

Maka hasil kompresinya adalah : 11101011100101010011001010000000

Hasil kompresi adalah 1110101110010101001100101, agar hasil kompresi dapat dibaca oleh komputer, maka dilakukan penambahan padding:

11101011100101010011001010000000

Penambahan padding dilakukan agar jumlah bit dapat dibagi menjadi 8 per bit. Agar dapat dibaca oleh komputer, maka dilakukan flagging dengan menambah biner sesuai dengan penambahan padding yang dipakai. Dalam kasus diatas, padding yang digunakan sebanyak 7, maka biner 7 adalah 0111. Maka hasil kompresi setelah dilakukan padding dan flagging adalah 111010111001010100110010100000000111

Adapun pseudocode untuk kompresi Goldbach Codes sebagai berikut:

Private Shared Function e_goldbach(i As Integer) As String

(38)

Exit For

End If

Next

sb.Append(1)

For j As Integer = Bil_Prima.IndexOf(bil) - 1 To 0 Step -1

If Bil_Prima(j) <> bil2 Then

sb.Insert(0, "0"c)

Else

sb.Insert(0, "1"c)

End If

Next

Return sb.ToString()

End Function

Alur flowchart untuk kompresi Goldbach Codes ditunjukkan pada gambar 3.13

(39)

Proses dekompresi pada Goldbach Codes adalah sistem membaca hasil kompresi lalu membalikkan file ke keadaan semua

S A B R I N A

101 11 011 1001 0101 0011 101

Adapun pseudocode untuk dekompresi Goldbach Codes adalah sebagai berikut:

Public Shared Function dekompresi(s_values As Byte()) As Byte()

(40)

3.5.1 Rancangan interface halaman htama

Halaman utama pada aplikasi pengamanan terdiri dari judul skripsi yang diimplementasikan ke dalam aplikasi pengamanan dan kompresi data, nama penulis, logo usu, nama fakultas dan tombol next untuk melanjutkan ke halaman berikutnya. Tampilan halaman utama terdapat pada gambar 3.12

Gambar 3.14 Perancangan Halaman Utama

Keterangan:

1. Label1 menampilkan judul skripsi

2. Label2 menampilkan nama penulis serta nim penulis 3. Label3 menampilkan logo fakultas

4. Label4 menampilkan nama fakultas serta nama universitas dan tahun pembuatan skripsi

5. Button5 untuk tombol next, melanjutkan ke halaman selanjutnya

(41)

Pada halaman rancangan aplikasi dan pengamanan file terdapat empat menu utama, yaitu enkripsi, kompresi, dekompresi dan dekripsi. Gambar 3.13 adalah user interface yang telah dirancang untuk memudahkan user dalam memilih menu yang akan dipilih.

Gambar 3.15 Rancangan Aplikasi Pengamanan dan Kompresi

Keterangan:

1. Button1 : menu enkripsi yang akan menampilkan halaman enkripsi

2. Button2 : menu kompresi yang akan menampilkan tampilan halaman kompresi 3. Button3 : menu dekompresi yang akan menampilkan tampilan halaman

dekompresi

4. Button4 : menu dekripsi yang akan menampilkan tampilan halaman dekripsi 5. Button5 : untuk keluar dari halaman

3.5.3 Rancangan interface halaman enkripsi

Rancangan halaman enkripsi terdiri dari browse, menampilkan hasil enkripsi, menyimpan hasil enkripsi dan terdapat juga halaman pembangkit kunci LUC. Form enkripsi terdiri dari button, text box, dan label.

(42)

Gambar 3.16 Rancangan Halaman enkripsi

Keterangan:

1. Text Box1 untuk menampilkan string nama media penyimpanan file 2. Button2 untuk mencari dimana file PDF yang akan di enkrpsi tersimpan 3. Text Box3 untuk menampilkan isi dari file PDF

4. Button3 untuk melakukan proses enkripsi

5. Label5 merupakan keterangan nama hasil enkripsi 6. TextBox6 untuk menampilkan hasil cipherteks 7. Button7 untuk melakukan proses penyimpanan 8. Form8 menampilkan pembangkit kunci LUC 9. Label 9 merupakan keterangan nila p

10.Label 10 merupakan keterangan nilai q 11.Label 11 merupakan keterangan nilai N 12.Label 12 merupakan keterangan nilai T 13.Label 13 merupakan keterangan nilai e 14.Label 14 merupakan keterangan nilai RN 15.Label 15 merupakan keterangan nilai d 16.TextBox16 untuk menampilkan nilai p

(43)

17.TextBox17 untuk menampilkan nilai q 18.TextBox18 untuk menampilkan nilai N 19.TextBox19 untuk menampilkan nilai T 20.TextBox20 untuk menampilkan nilai e 21.TextBox21 untuk menampilkan nilai RN 22.TextBox22 untuk menampilkan nilai d 23.Form23 merupakan form tampilan enkripsi

24.TextBox 24 untuk menampilkan waktu proses enkripsi berjalan.

3.5.4 Rancangan interface halaman kompresi

Rancangan halaman kompresi terdapat form kompresi yang diisi dengan text box, button, dan label untuk melengkapi proses kompresi.

Gambar 3.17 Rancangan Halaman Kompresi

Keterangan:

1. Form1 merupakan tampilan form kompresi

2. TextBox2 untuk menampilkan alamat tempat penyimpanan

3. Button3 untuk proses melakukan kompresi dan penyimpanan kompresi 4. TextBox4 untuk menampilkan hasil proses kompresi

(44)

3.5.6 Rancangan halaman dekompresi

Rancangan halaman dekompresi terdapat button, textboxt, dan form. Berikut ini merupakan tampilan halaman dekompresi yang telah dirancang

Gambar 3.18 Rancangan Halaman Dekompresi

Keterangan:

1. Form1 merupakann tampilan form halaman dekompresi 2. TextBox2 untuk menampilkan alamat dimana file tersimpan

3. Button3 untuk melakukan proses dekompresi dan melakukan penyimpanan 4. TextBox4 untuk menampilkan hasil dekompresi

(45)

3.5.7 Rancangan halaman dekripsi

Rancangan halaman dekripsi terdiri dari label, form, button dan textbox. Berikut ini adalah tampilan halaman dekripsi pada gambar 3.19

Gambar 3.19 Halaman Rancangan Dekripsi

Keterangan:

1. Form1 merupakan halam form dekripsi

2. TextBox2 untuk menampilkan alamat dimana file disimpan 3. Button3 untuk melakukan proses pencarian

4. TextBox4 untuk menampilkan isi file 5. Button5 untuk proses dekripsi

6. Label6 untuk keterangan judul hasil dekripsi 7. TextBox7 untuk menampilkan hasil dekripsi 8. Button8 untuk melakukan proses menyimpan file

9. Label9 menampilkan judul pembangkit kunci dekripsi LUC 10.Label10 menampilkan N

(46)

11.Label11 menampilkan d

12.TextBox12 menampilkan hasil N 13.TextBox13 menampilkan nilai d

(47)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pembahasan Bab 4 akan memaparkan bagaimana implementasi dari sistem yang telah dibangun, juga pengujian hasil implementasi pengamanan data file PDF dengan menggunakan algoritma LUC dan hasil implementasi kompresi data file dengan menggunakan algoritma Goldbach Codes menggunakan Visual Studio 2012.

4.1 Implementasi Sistem

Implementasi sistem merupakan representatif hasil desaign kedalam bahasa pemrograman. Implementasi dalam sistem yang dibangun menggunakan bahasa pemrograman visual basic dan menggunakan software Visual Studio 2012.

Proses implementasi yang dirancang, terdapat enam halaman form yang terdiri dari form halaman utama, form halaman aplikasi dan pengamanan, form enkripsi, form kompresi, form dekompresi dan form dekripsi.

4.1.1 Form halaman utama

Form halaman utama adalah form awal yang pertama kali muncul ketika aplikasi

digunakan. Form halaman utama terdiri dari judul skripsi, nama, nim penulis, logo fakultas, nama fakultas dan program studi, tahun pembuatan skripsi dan tombol button

(48)

Gambar 4.1 Halaman Utama

4.1.2 Form halaman aplikasi pengaman dan kompresi file

Form halaman kedua adalah form yang memperlihatkan empat menu utama dari

aplikasi yang telah dibangun. Menu-menu tersebut adalah enkripsi, kompresi, dekompresi dan dekripsi. Pada gambar 4.2 merupakan tampilan dari aplikasi pengamanan dan kompresi file PDF

(49)

4.1.3 Form Halaman Enkripsi

Form halaman enkripsi terdiri dari pencarian file PDF, proses pembangkit kunci LUC,

proses enkripsi, hasil enkripsi berupa cipherteks dan penyimpanan cipherteks. Dapat dilihat pada tampilan sebelah kanan, merupakan tampilan pembangkit kunci LUC, dapat dilihat pada label e merupakan kunci enkripsi ,dimana e merupakan kunci yang digunakan untuk pengamanan file. Gambar 4.3 akan memperlihatkan tampilan form enkripsi.

Gambar 4.3 Form Halaman Enkripsi

4.1.4 Form halaman kompresi

Form halaman kompresi adalah tampilan proses kompresi yang terdiri dari pencarian

file yang akan dilakukan kompresi, menampilkan hasil kompresi dan penyimpanan

kompresi. Pada gambar 4.4 adalah tampilan halam kompresi.

(50)

4.1.5 Form Halaman Dekompresi

Form halaman dekompresi adalah tampilan proses dekompresi yang terdiri dari

pencarian file yang akan dilakukan proses dekompresi, menampilkan hasil dekompresi dan penyimpanan file dekompresi. Tampilan form halaman dekompresi terdapat pada gambar 4.5

Gambar 4.5 Form Halaman Dekompresi

4.1.6 Form Halaman Dekripsi

Form halaman dekripsi adalah form yang telah dirancangan untuk dilakukannya

proses dekripsi. Pada tampilan form dekripsi, terdapat pembangkit kunci dekripsi LUC, pencarian file yang akan dilakukan proses dekripsi, tampilan file dekripsi, tampilan plainteks yang telah di dekripsi dan penyimpanan file dekripsi. Tampilan halaman dekripsi terdapat pada gambar 4.6

(51)

4.2 Pengujian Sistem

Pengujian sistem merupakan tahap pengujian pada sistem apakah sistem dapat berjalan dengan baik dan memberikan hasil yang akurat ketika digunakan. Pengujian sistem bertujuan apakah aplikasi yang dibangun sudah layak untuk digunakan atau masih mempunyai kriteria yang harus diperbaiki.

4.2.1 Pengujian pembangkit kunci dan enkripsi file

Pembangkit kunci akan dimunculkan saat dilakukannya proses enkripsi file PDF. Bilangan prima p dan q merupakan kunci utama untuk mendapatkan public key dan

private key. Setelah dilakukannya proses pembangkit kunci, maka file PDF dapat

dienkripsi dan hasil enkripsi ditampilkan pada form tampilan hasil enkripsi.

1. Pilih file PDF di tempat penyimpanan yang akan dilakukan proses enkripsi, seperti yang terdapat pada gambar 4.7

(52)

2. Setelah muncul isi file pdf, pilih button enkripsi untuk dilakukannya proses enkripsi. Secara otomatis, pembangkit kunci LUC akan muncul. Pembangkit kunci LUC dilakukan secara acak oleh sistem. Proses enkripsi dan pembangkit kunci LUC dapat dilihat pada gambar 4.8

Gambar 4.8. Hasil Enkripsi dan Pembangkit Kunci

3. Penyimpanan hasil enkripsi dalam format .*txt. Selanjutnya akan muncul pemberitahuan apakah file tersebut sudah tersimpan atau tidak seperti pada gambar 4.9

Gambar 4.9. Notifikasi File Tersimpan

4.2.2Pengujian kompresi

Pengujian kompresi pada aplikasi yang telah dibangun terdapat pada form kompresi, langkah-langkah pengujian kompresi sebagai berikut:

(53)

Gambar 4.10. Pencarian File yang Akan di Kompresi

Hasil pencarian merupakan file dengan format (.*txt) yang akan dilakukan proses kompresi. File tersebut merupakan cipherteks yang sebelumnya telah dilakukan proses enkripsi. Pada gambar 4.11 akan ditunjukkan hasil proses kompresi.

(54)

4.2.3. Pengujian Dekompresi

Pengujian dekompresi dilakukan setelah hasil kompresi diperoleh. Tahapan yang dilakukan adalah sebagai berikut:

1. Pilih file kompresi dalam format .(*txt). Pilih tombol browse untuk mencari dimana file tersebut disimpan. Seperti pada gambar 4.12 adalah gambar pencarian file kompresi yang akan dilakukan proses dekompresi.

Gambar 4.12 Pencarian File yang Akan di Dekompresi

Setelah file dipilih, lalu tekan tombol dekompresi untuk melakukan proses dekompresi. Seperti pada gambar 4.13 adalah gambar hasil proses dekompresi

(55)

4.2.4 Pengujian dekripsi

Pengujian dekripsi adalah tahap akhir dari pengujian sistem. Pada tahap ini diharapkan hasil yang telah melalui proses enkripsi, kompresi, dekompresi akan kembali ke plainteks awal. Berikut ini adalah tahapan pengujian dekripsi:

1. Pilih browse pada form dekripsi untuk mencari file (*txt) yang akan didekripsi. Gambar 4.14 adalah gambaran pencarian file dekripsi

Gambar 4.14 Proses Pencarian File yang Akan Dekripsi

Tampilan selanjutnya adalah menampilkan hasil dekompresi yang akan dilakukan proses dekripsi seperti pada gambar 4.15. Proses dekripsi selesai dan kembali menjadi plainteks. Hasil dekripsi disimpan ke dalam bentuk file PDF.

(56)

4.2.5 Pengujian hasil

Hasil pengujian merupakan uji hasil dari enkripsi, kompresi,dekompresi dan dekripsi. Pengujian hasil juga meliputi pengujian terhadap berapa lama waktu proses enkripsi dan dekripsi dengan panjang nilai kunci yang berbeda.

Terdapat juga uji string homogen dan heterogen pada pengujian hasil yang akan dilakukan. Uji hasil dilakukan dengan ukuran yang berbeda-beda. Adapun uji hasil yang telah dilakukan sebagai berikut:

a. Uji Coba Ke-1

Uji coba pertama adalah file PDF dengan ukuran 80 kb. Karakter dalam file PDF ini adalah sebanyak 18 karakter. Berikut ini uji merupakan uji hasil enkripsi pada gambar 4.16

Gambar 4.16 Uji Hasil Enkripsi pertama

b. Uji Hasil Ke-2

(57)

Pada gambar 4.17 terdapat hasil uji enkripsi kedua dengan size yang berbeda.

Gambar 4.17 Uji Hasil Enkripsi Pada Uji Coba Kedua

c. Uji Hasil Ke-3

Uji hasil kedua, merupakan file PDF dengan ukuran 120 kb dengan jumlah karakter 127251 karakter. Terdapat hasil gambar yang menunjukkan proses enkripsi pada gambar 4.18

(58)

d. Uji Hasil Ke-4

Uji hasil ke-empat merupakan file PDF dengan size 140 kb dengan jumlah karakter 2804 karakter. Pada gambar 4.19 terdapat hasil dari proses enkripsi

file

Gambar 4.19. Uji Hasil Enkripsi Pada Uji Coba Keempat

e. Uji Hasil Ke-5

Uji hasil kelima merupakan file PDF dengan size 160 kb dengan jumlah karakter 708 karakter. Pada gambar 4.20 terdapat hasil dari proses enkripsi file.

(59)

Dari uji coba yang telah dilakukan diatas, maka diperoleh hasil seperti pada tabel yang tertera dibawah ini:

Tabel 4.1 Hasil Uji Coba Lima Kali Percobaan

No Ukuran

Enkripsi Kompresi Dekompresi Dekripsi

1 80 1 1 1 4 1 1 99% 0 ukuran file yang terendah 80 kilobytes, 100 kilobytes, 120 kilobytes, 140 kilobytes dan 160 kilobytes. Nilai rata-rata dalam proses enkripsi dan kompresi menjadi parameter untuk Compression of Ratio (Cr), persentasi besar data sebesar 2,36% .

4.2.5.1 Hasil pengujian waktu enkripsi dan dekripsi

(60)

0 Tabel 4.2. Hasil Uji Waktu Enkripsi dan Dekripsi

Ukuran File

120 55483 3132264ms 30451 1945155ms

140 63851 90888ms 43451 55115ms

160 65339 19912ms 723059 233306ms

Rata-Rata: 815.797,8ms Rata-Rata: 1.120.147,6ms

Pada tabel 4.2, terdapat hasil uji enkripsi dengan kunci yang berbeda pada setiap filenya. Semakin tinggi nilai kunci yang dihasilkan, maka semakin lama pula proses enkripsi. Begitu juga dengan dekripsi, besarnya hasil kunci dekripsi mempengaruhi

waktu hasil dekripsi. Hasil rata-rata untuk waktu enkripsi yaitu 815.797,8 milisecond dan dekripsi dengan waktu 1.120.147,6 milisecond. Pada gambar 4.21. menunjukkan

grafik perbandingan waktu enkripsi dan dekripsi.

(61)

Perbandingan waktu diperlihatkan pada grafik yang tertera pada gambar 4.21, Grafik paling tinggi adalah ukuran file 100 kilobytes, hal ini disebabkan jumlah halaman pada

file dan kunci enkripsi dan dekripsi yang digunakan.

4.2.5.2 Hasil pengujian string homogen dan heterogen

Hasil pengujian string homogen dan heterogen dari proses kompresi dan dekompresi dengan jenis string yang berbeda. String yang terdiri dari karakter yang sama disebut homogen, sedangkan string yang terdiri dari karakter yang berbeda disebut heterogen. Hasil pengujian string homogen dan heterogen pada tabel 4.3 dan 4.4

Tabel 4.3 Pengujian String Homogen

Terdapat dua file homogen dengan ukuran yang berbeda, file pertama dengan ukuran 80 kilobytes. Setelah dilakukan kompresi, ukuran file berubah menjadi 1

kilobytes.

(62)

Tabel 4.3 Pengujian String Heterogen dan 160 kilobytes. Hasil rata-rata space saving bernilai negatif karena proses kompresi tidak berjalan dengan baik, size semakin bertambah besar saat dilakukannya kompresi.

4.2.5.3. Hasil uji sample data file enkripsi

Pada penelitian ini, penulis mengadakan hasil uji file enkripsi dengan menguji sample data enkripsi dengan mengirimkan ke 100 email, dengan mengajukan beberapa pertanyaan seperti berikut:

1. Pada saat Anda membaca file yang saya kirim, apakah Anda mengetahui isi file tersebut? Berikan tanggapan Anda.

(63)
(64)

BAB 5

KESIMPULAN DAN SARAN

Pada Bab ini, akan disimpulkan hasil penelitian Penulis mengenai aplikasi yang telah dikerjakan. Pada Bab ini juga terdapat saran-saran yang bermanfaat untuk pengembangan aplikasi pengamanan dan kompresi file PDF.

5.1Kesimpulan

Selama proses pengerjaan skripsi, Penulis menarik kesimpulan bahwa:

1. Aplikasi yang dibangun dapat mengembalikan plainteks awal dengan dilakukannya pengujian sebanyak lima kali uji namun pada penelitian ini, untuk angka 6 yang ada pada file PDF tertentu, Algoritma LUC tidak dapat mengembalikan menjadi plainteks. Angka 6 berubah menjadi simbol titik atau simbol segitiga.

2. Ukuran file enkripsi > 80 kilobytes saat dilakukan kompresi tidak berjalan dengan optimal, ukuran file semakin bertambah lebih besar saat dikompresi. 3. Nilai kunci enkripsi menghasilkan waktu rata-rata sebesar 815.797,8

milisecond dan nilai kunci dekripsi menghasilkan waktu rata-rata sebesar

1.120.147,6 milisecond.

4. Hasil pengujian space saving mendapat rata-rata nilai negatif karena kompresi menghasilkan ukuran file yang lebih besar.

(65)

5.2Saran

Adapun saran yang dapat Penulis diberikan untuk menyempurnakan skripsi ini yaitu: 1. Sistem ini hanya mampu melakukan penyandian file (.*pdf), sehingga untuk

pengembangan selanjutnya dapat dilakukan dengan menggunakan file yang lain, seperti file jenis (.*doc), (.*rtf).

2. Algoritma Goldbach Codes tidak efektif untuk melakukan kompresi teks, untuk penelitian selanjutnya dapat memilih algoritma kompresi lain yang seperti Algoritma Huffman atau Algoritma Shannon-Fano.

3. Panjang kunci enkripsi dan dekripsi Algoritma LUC memakan waktu yang lama dengan menggunakan bahasa pemrograman visual basic, untuk penelitian selanjutnya dapat menggunakan bahasa pemrograman lain seperti

Java atau Phyton.

(66)

BAB 2

LANDASAN TEORI

Bab 2 membahas tinjauan teoritis yang berkaitan dengan algoritma kriptografi LUC dan algoritma kompresi Goldbach Codes.

2.1Kriptografi

Informasi dalam sebuah data memiliki nilai penting, dimana isi data dari informasi tersebut harus dijaga kerahasiaannya dari pihak yang ingin melakukan pembobolan data. Berkembangnya zaman menuju era teknologi yang sangat maju, kini kriptografi telah banyak digunakan untuk pengamanan data seperti gambar, pesan, audio, berkas

biner maupun dokumen.

2.1.1 Definisi kriptografi

Kata-kata “cryptography”, “cryptology” dan “cryptanalysis” umunya berubah-ubah dan masing-masing dari kata tersebut memiliki makna yang berbeda. Cryptography

yang awal katanya menggunakan kata “crypt”, dalam bahasa Yunani kruptos yang

artinya sembunyi. Kata terakhir “graphy” mengacu pada arti tulisan. Kriptografi

memiliki arti sebagai tulisan yang tersembunyi. (Batten, 2013).

(67)

Gambar 2.1 Urutan Proses Kriptografi (Munir, 2006)

Proses kriptografi pada umumnya, mengubah plainteks menjadi cipherteks, yang mana hasil dari cipherteks berupa simbol-simbol atau notasi angka yang tidak dapat dibaca oleh orang awam. Umunya, proses enkripsi dan dekrisp memerlukan kunci untuk menghasilkan cipherteks dan plainteks yang diinginkan. Cipherteks dapat dikembalikan menjadi tulisan awal dengan dilakukannya proses dekripsi.

2.1.2 Sejarah kriptografi

Secara historis ada empat kelompok orang yang berkontribusi terhadap perkembangan kriptografi, dimana mereka menggunakan kriptografi untuk menjamin kerahasiaan dalam komunikasi pesan penting, yaitu kalangan militer (termasuk intelijen dan mata-mata), kalangan diplomatik, dan penulis buku harian. Diantara empat kelompok ini, kalangan militer yang memberikan kontribusi paling penting karena pengiriman pesan di dalam suasana perang membutuhkan teknik enkripsi dan dekripsi yang rumit.

(68)

Pada zaman Romawi kuno, Julius Caesar telah menggunakan teknik kriptografi yang dijuluki Caesar Cipher untuk mengirimkan pesan rahasia. Meskipun teknik yang digunakan masih belum memadai.

Pada pedang dunia ke-II, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan mesin Enigma. Mesin Enigma menggunakan beberapa buah rotor (roda berputar) untuk melakukan enkripsi dengan cara yang sangat rumit. Awalnya, pihak sekutu kesulitan untuk memecahkan kode mesin kriptografi Jerman, namun seiring berjalannya waktu pihak sekutu mempelajari mesin Enigma dan berhasil memecahkan kode tersebut. Mesin Enigma dapat dilihat pada gambr 2.2

Gambar 2.2. Mesin Enkripsi Enigma yang digunakan oleh Tentara Jerman pada

Masa Perang Dunia ke-II. (Munir, 2006)

(69)

2.1.3 Tujuan kriptografi

Kriptografi bertujuan untuk memberikan aspek keamanan sebuah pesan atau informasi yang akan dikirim. Berikut ini aspek-aspek keamanan dalam kriptografi (Forouzan, 2007):

1. Kerahasiaan Data (Data Confidentialy)

Kerahasiaan data dirancang untuk memproteksi data dari penyerangan yang ingin membuka data.

2. Integritas Data (Data Integrity)

Integritas data adalah sebuah rancangan untuk memproteksi data dari modifikasi, penyisipan, penghapusan, dan orang yang tidak memiliki hak untuk membalas sebuah pesan.

3. Otentikasi (Authentication)

Mengidentifikasi kebenaran sumber pesan baik dari si pengirim maupun si penerima. Dua pihak harus saling berkomunikasi untuk mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan yang dikirim melalui saluran asalanya atau tidak.

4. Menolak Penyangkalan (Non-Repudiation)

Memberikan perlindungan dengan cara penolakan sebuah data baik dari si pengirim ataupun si penerima. Dalam non-repudiation akan membuktikan apakah data tersebut orisinil, penerima data dapat membuktikan identitas dari si pengirim jika disangkal. Non-repudiaton juga membuktikan dengan bukti pengiriman, apakah pesan yang dikirim diterima langsung oleh si penerima pesan.

5. Acces Control

(70)

2.1.4 Terminologi dan konsep dasar kriptografi

Dalam ilmu kriptografi akan ditemukan beberapa istilah atau terminologi yang sangat penting untuk diketahui dalam memahami kriptografi. Oleh karena itu, penulis akan menjelaskan beberapa istilah penting dalam kriptografi yang akan sering digunakan dalam penulisan. Berikut beberapa istilah penting dalam kriptografi.

a) Plainteks dan Cipherteks

Dalam memahami bidang ilmu kriptografi, sering muncul kata plainteks. Plainteks diartikan sebagai pesan awal atau pesan asli dari si pengirim yang. Umunya, plainteks merupakan sebuah pesan yang belum mengalami perubahan sama sekali. Plainteks dapat berupa teks, dokumen, video ataupun audio.

Plainteks yang akan dikirim oleh si pengirim dapat diubah menjadi kode-kode, simbol ataupun angka yang tidak diketahui maknanya, istilah ini disebut sebagai cipherteks. Cipherteks adalah sebuah metode untuk merahasiakan tulisan tangan, dimana plainteks (pesan awal) diubah menjadi cipherteks.

Berikut ini merupakan perbandingan antara plainteks dan cipherteks pada gambar 2.3

(71)

b) Sender dan Recipient

Pertukaran informasi data atau pengiriman data melibatkan dua entitas, dimana adanya sender (pengirim) dan recipient (penerima). Entitas disini tidak hanya orang yang melakukan pengiriman pesan dan penerima pesan, tetapi juga dapat berupa mesin komputer, kartu kredit, dan sebagainya. Orang dapat bertukar informasi dengan orang lain, contoh Bob mengirim pesan kepada Alice. Sedangkan didalam mesin komputer seperti mesin ATM yang berkomunikasi dengan komputer server di bank.

Pengirim tentu ingin mengirimkan pesan dan menyimpan pesan secara aman, ia yakin bahwa tidak ada pihak lain yang membaca pesan tersebut. Hal ini dapat dilakukan dengan melakukan proses penyandian pesan atau cipherteks.

c) Enkripsi dan Dekripsi

Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption) atau enchipering (standard nama menurut ISO 7498-2).

Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan dekripsi (descryption) atau dechipering (standard nama menurut ISO 7498-2). Proses enkripsi dan dekripsi dapat diterapkan pada pesan yang dikirim ataupun pesan yang disimpan. Encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi, sedangkan istilah encryption of data at-rest mengacu pada enkripsi pesan yang tersimpan di dalam storage.

d) Kriptanalis dan Kriptologi

(72)

akhirnya mengarah dan menemukan kunci unutk mengungkap isi plainteks (Munir, 2006).

Kriptologi dapat juga diartikan sebagai seni dan ilmu untuk membuat dan memecahkan kode rahasia. Kriptologi dibagi menjadi kriptografi (seni dan ilmu membuat kode rahasia), kriptanalisis (ilmu dan seni untuk memecahkan chiperteks menjadi plainteks tanpa mengetahui kunci yang digunakan).

2.1.5 Jenis kriptografi

Kriptografi berdasarkan kunci enkripsi dan dekripsinya terbagi menjadi dua, yaitu:

1. Kriptografi Simetri

Kriptografi Simetri adalah Salah satu jenis algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Sistem kriptografi kunci-simetri diasumsikan sebagai pengirim dan penerima sudah memiliki kunci yang sama. (Zelvina, 2012).

Keamanan Algoritma Simetri terletak pada kerahasiaan kuncinya. Contoh algoritma simetri adalah DES (Data Encryption Standar), AES (Advanced

Encryption Standard), RC4, Vernam, dll. Proses enkripsi dan dekripsi algoritma

simetri terdapat pada Gambar 2.4:

Gambar 2.4 Skema Kriptografi Simetri. Kunci Simetri Sama dengan Kunci

(73)

a. Kelebihan Kriptografi Simetri

1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi/dekripsi membutuhkan waktu yang singkat.

2. Ukuran kunci simetri relatif pendek.

3. Algoritma kriptografi simetri dapat digunakan untuk membangkitkan bilangan acak.

4. Algorima kriptografi simetri dapat disusun untuk menghasilkan cipher yang lebih kuat.

5. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.

b. Kekurangan Kriptografi Simetri

1. Kunci simetri harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasisan kunci ini.

2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.

2. Kriptografi Asimetri

Algoritma asimetri adalah algoritma kriptografi yang enkripsi dan dekripsnya menggunakan kunci yang berbeda. Kunci enkripsi tidak bersifat rahasia atau diketahui oleh umum yang dinamakan sebagai public key (kunci public).

(74)

Gambar 2.5 Skema Algoritma Asimetri (Munir, 2006)

a. Kelebihan Kriptografi Asimetri

1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin). Tidak ada kebutuhan mengirim kunci privat sebagaimana pada sistem simetri.

2. Pasangan kunci publik/kunci privat tidak perlu diubah, bahkan dalam periode waktu yang panjang.

3. Dapat digunakan untuk mengamankan pengiriman kunci simetri.

4. Beberapa algoritma kunci-publik dapat digunakan untuk memberi tanda tangan digital pada pesan (akan dijelaskan pada materi kuliah selanjutnya)

b. Kekurangan Kriptografi Asimetri

1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar.

2. Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat kali ukuran plainteks).

3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetri.

(75)

4. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka cipherteks tidak memberikan informasi mengenai otentikasi pengirim.

5. Tidak ada algoritma kunci-publik yang terbukti aman (sama seperti block

cipher). Kebanyakan aalgoriam mendasakan keamanannya pada sulitnya

memecahkan persoalan-persoalan aritmetik (pemfaktoran, logaritmik, dsb) yang menjadi dasar pembangkitan kunci

2.2Algoritma LUC

Algoritma ini merupakan salah satu jenis algoritma asimetri. Pada sub bab ini penulis akan menjelaskan tentang Algoritma LUC beserta cara kerja algoritma LUC itu sendiri.

2.2.1 Perkembangan algoritma LUC

Pada tahun 1993, Smith dan Michael menyatakan bahwa algoritma LUC merupakan algoritma yang dijabarkan dari deret Lucas. Sehingga didapat rumus enkripsi dan dekripsi dari barisan lucas tersebut.

Algoritma LUC mempunyai ciri khas dari algoritma kriptografi asimetri yang lain, dimana setiap katakter dari string berupa teks atau plainteks yang dimasukkan, lalu dikonversi kedalam bentuk bilangan dengan kode ASCII (American Standard

Code for Information Interchange). Inputan file teks berupa file berecord, setip

(76)

a. Bilangan prima p dan q b. Kode ASCII 255

c. Plainteks berupa file berecord

d. Kunci e merupakan public key dan kunci d yang bersifat private key.

2.3Landasan Matematika Algoritma LUC

Dalam mempelajari algoritma kriptografi, sebaiknya memahami terlebih dahulu konsep-konsep dasar perhitungan matematis yang akan digunakan dalam suatu algoritma kriptografi tersebut.

2.3.1 Aritmatika modulo

Aritmatika modulo merupakan salah satu peran yang penting dalam komputasi

integer, khususnya pada aplikasi kriptografi. Operator yang digunakan pada aritmatika

modulo adalah mod (modulo) yang menyatakan sisa hasil pembagian.

Diberikan a bilangan bulat dan m adalah bilangan bulat > 0. Operasi a mod m

(dibaca ”a modulo m”) memberikan sisa yang merupakan hasil dari pembagian a

dengan m. Dengan kata lain, a mod m = r , sehingga a = m.q + r, dengan 0 ≤ r < m. Dinotasikan: a mod m = r , = m.q + r, dengan 0 ≤ r < m. Sebagai contoh:

Jika 11 mod 3 = 2 , maka 11 = 3(3) + 2.

2.3.2 Least Common Multiple (LCM)

Least Common Multiple (LCM) dari suatu himpunan bilangan adalah bilangan terkecil

(77)

4 = 4, 8, 16, 24, 38, 32, 36, 40,…

6 = 6, 12, 18, 24, 30, 36, 42, …

Kelipatan persekutuannya adalah bilangan-bilangan yang muncul pada kedua baris geometri tersebut, yakni 12, 24, dan 36. Jadi, LCM dari 4 dan 6 adalah 12.

2.3.3 Fermat’s Little Theorem

Teorema Little Fermat memberikan uji yang baik untuk ketidakprimaan. Peranan

penting Fermat’s Little Theorem dalam kriptografi adalah mempermudah perhitungan

matematis prima sebagai dasar dari teknik enkripsi asimetris.

Untuk bilangan prima (p) dan bilangan bulat (a) , a p≡ a (mod p). Di mana p adalah bilangan bulat dan a adalah urutan bilangan yang lebih kecil dari p. Jika

hasilnya ≠ 1, maka p bukan bilangan prima. Sebaliknya, jika hasilnya = 1, maka p

bilangan prima. Berikut ini contoh penerapan metode Fermat: a. Bila p = 6

Setelah melakukan perhitungan untuk memastikan apakah 6 bilangan prima

(78)

2 7-1 mod 7 = 26 mod 7 = 1 3 7-1 mod 7 = 36 mod 7 = 1 4 7-1 mod 7 = 46 mod 7 = 1 5 7-1 mod 7 = 56 mod 7 = 1 6 7-1 mod 7 = 66 mod 7 = 1

Hasil diatas menunjukkan perhitungan untuk memastikan apakah 7 bilangan prima atau tidak, ditemukan hasil dari semua perhitungan = 1, maka jelas bahwa 7 merupakan bilangan prima.

2.3.4. Algoritma Lehman

Algoritma Lehman membagi suatu bilangan yang akan diuji, misal p dengan bilangan prima kurang dari 256 pengujian, dengan cara membangkitkaan bilangan acak a yang lebih kecil dari p dan dihitung a(p-1)/2mod p yang bernilai 1 atau -1. Berarti p berpeluang prima sebesar 50% yang apabila langkah ini dulang dan lolos sebanyak t kali, maka akan menghasilkan sebuah bilangan prima p yang mempunyai kesalahan tidak lebih dari 1/2t.

2.3.5 Algoritma Euclidean

Bilangan terbesar yang mampu membagi setiap seluruh anggota himpunan bilangan tersebut dan menghasilkan bilangan bulat. Dua buah bilangan bulat a dan b , dimana salah satu dari keduanya tidak sama dengan 0, dikatakan relatif prima jika gcd(a,b) = 1.

Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar (PBB) dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan bahwa ada dua buah bilangan bulat tak negatif yakni m dan n dimana nilai m n. Adapun

tahap-tahap pada algoritma Euclidean adalah:

1. Jika n = 0 maka m adalah PBB (m, n); stop. Kalau tidak (yaitu n ≠ 0) lanjutkan ke langkah nomor 2.

(79)

3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah nomor 1.

Algoritma Euclidean dapat digunakan untuk mencari dua buah bilangan bulat yang relatif prima. Contoh:

m = 80, n = 12 ; memenuhi syarat karena m ≥ n

80 = 6.12 + 8 12 = 1.8 + 4

8 = 2.4 + 0, sisa pembagi terakhir adalah 0 maka (80,12) = 4

2.3.6 Bilangan relatif prima

Dua buah bilangan bulat a dan b dikatakan relatif prima jika FPB atau GCD (greatest

common divisor) dari a dan b bernilai 1.

Contoh : 17 dan 11 relatif prima sebab FPB (17, 11) = 1. Begitu juga 23 dan 7 relatif

prima karena FPB (23, 7) = 1. Tetapi 15 dan 3 tidak relatif prima sebab FPB (15, 3) = 3 ≠ 1.

2.3.7 Invers Modulo

Jika a dan m relatif prima, gcd (a, m) = 1, dan m > 1, maka dapat menemukan invers (balikan) dari a modulo m. Balikan a modulo m adalah bilangan bulat a-1 , sehingga: aa-1 ≡ 1 (mod m)

Dari definisi relatif prima, diketahui bahwa gcd (a,m) = 1 sehingga terdapat bilangan bulat p dan q, sehingga

pa + qm =1

yang mengimplikasikan bahwa pa + qm 1 (mod m), karena qm ≡ 0 (mod m), maka

(80)

Sebagai contoh: karean gcd (4,9) = 1, maka invers modulo dari 4 (mod 9) ada. 9 = 2. 4 + 1

Susunan persamaan diatas menjadi: -2 . 4 + 1 . 9 = 1. Dari persamaan terakhir, diperoleh -2 merupakan invers modulo dari 4 mod 9. Periksa bahwa :

-2.4 ≡ 1 (mod 9) (9 habis membagi -2. 4-1 = -9).

2.4Prinsip Kerja Algoritma LUC

2.4.1 Proses pembangkit kunci algoritma LUC:

a. Dibutuhkan nilai p dan q yang diambil secara acak, dimana p ≠ q. Jumlah p dan q tidak melebihi dua digit bilangan prima. Perkalian nilai p dan q dibutuhkan untuk mencari nilai modulus N.

1. Algoritma Kunci Publik

a) Pilih dua buah bilangan prima sembarang, misal p dan q dimana p ≠ q.

p = 47

q = 17

b) Hitung nilai n = p x q. n = p x q

n = 47 x 17 = 799

c) Hitung t = (p-1).(q-1).(p+1).(q+1) = (47-1).(17-1).(47+1).(17+1) = (46).(16).(48).(18)

(81)

d) Menentukan nilai e (bilangan relatif prima). Pilih e secara acak dimana Z < e < n-1 dan GCD (e,t) = 1

RP (p-1) = RP 46 = { 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43} RP (q-1) = RP 16 = {3, 5, 7, 11, 13}

RP (p+1) = RP 48 = {3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43, 47} RP (q+1) = RP 18 = {3, 5, 7, 11, 13, 17}

Hasil perhitungan bilangan relatif prima diatas terdapat beberapa bilangan yang sama, yaitu {3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43, 47}. Maka pilih e = 13, GCD (13, 635904) = 1.

e) Hitung RN = LCM (p-1, q-1, p+1, q+1) RN = LCM (46, 16, 48, 18) = 3312

f) Hitung d sehingga mendapatkan hasil e.d mod RN = 1. Pada tabel 1 merupakan tabel perhitungan untuk mencari d.

Tabel 2.1 Perhitungan Untuk Mencari d

D e.d mod RN = 1

13. d mod 3312 = 1

1 13

2 26

3 39

4 52

..2293 1

(82)

2.4.2 Proses enkripsi

Langkah-langkah dalam mengirimkan pesan dengan menggunakan Algoritma LUC sebagai berikut:

a. Dalam melakukan proses enkripsi, setiap karakter dari string berupa text atau plainteks dikonversikan kedalam kode ASCII

Misal : plainteks = A Kode ASCII = 65.

b. Plainteks A dengan Kode ASCII 65 c. Enkripsi dengan rumus:

V [ 2…e ] = ( m. V [ i – 1] – V [ i – 2] ) mod n

V [ 0 ] = 2

V [ 1 ] = 65

V [ 2…e ] = ( 65. V [ i – 1] – V [ i – 2] ) mod 799

C = Ciphertext = V[ e ] = V [13] = 608.

2.4.3 Proses Dekripsi

Langkah-langkah dalam melakukan proses dekripsi LUC adalah: a) Dapatkan hasil cipherteks C = Cipherteks

b) Dekripsi dengan rumus bertingkat:

V [0] = 2 V [1] = C = 608

(83)

V [2…d] = (608. V [ i – 1] – V [ i – 2] ) mod 799

m = V[d]

m = V [2293] = 65 = “A”

2.5 Definisi Kompresi

Kompresi data adalah proses yang dapat mengubah sebuah aliran data masukan (sumber data atau data asli) ke dalam aliran data yang lain yang memiliki ukuran yang lebih kecil (Salomon, 2007).

Penggunaan kompresi data dapat mengurangi ukuran dari sebuah file yang sangat berguna ketika memproses, menyimpan, dan mengirim sebuah file dengan ukuran yang besar. Jika algoritma kompresi yang digunakan bekerja dengan baik, seharusnya ada perbedaan yang signifikan antara file asli dan file yang telah dikompresi. Secara garis besar terdapat 2 buah penggolongan algoritma kompresi, yaitu:

1. Kompresi Loseless

Kompresi Loseless membangun kembali data asli yang sama persis dengan data yang di kompresi. Selama melakukan proses kompresi, tidak ada informasi yang hilang dari data tersebut. Contoh aplikasi lossless compression : WINRAR dan WINZIP

Gambar

Gambar 3.10 Flowchart Alur Pembangkit Kunci
Gambar 3.11 Flowchart Enkripsi LUC
Gambar 3.12 Flowchart Dekripsi LUC
Tabel 3.2 Goldbach G0 Codes untuk Proses Kompresi
+7

Referensi

Dokumen terkait

Retribusi Daerah, yang selanjutnya disebut Retribusi, adalah pungutan Daerah sebagai pembayaran atas jasa atau pemberian izin tertentu yang khusus disediakan

Data nukleotida hasil sekuensing tersebut, kemudian dianalisis dengan menggunakan BLAST, yaitu untuk menentukan homologi dengan database gen penyandi

Untuk memperoleh pemahaman tentang putusan Pengadilan Agama Cimahi Nomor 8500/Pdt.G/2017/PA.Cmi tentang diterimanya gugatan balik (rekonvensi) nafkah Māḍiyah anak karena

Kesehatan reproduksi perempuan tidak terpisah dengan kebijakan kependudukan.. Kebijakan kependudukan meliputi dua hal yang mendasar

Selain itu perancangan aristektur: perancangan aristektur yang digunakan dalam sistem ini meliputi Website , Framework Codeigniter Modular Extensions yang mempunyai

Berbagai upaya nasional dan internasional telah dilakukan KNPP-PA untuk berkontribusi dalam memecahkan masalah lingkungan, khususnya yang terkait dengan upaya

Dari diagram aktivitas belajar siklus I dan siklus II dapat dijelaskan mengenai peningkatan aktivitas belajar peserta didik, perolehan data pada siklus I indikator pertama

Berbagai upaya nasional dan internasional telah dilakukan KNPP-PA untuk berkontribusi dalam memecahkan masalah lingkungan, khususnya yang terkait dengan upaya