SKRIPSI
OLEH
ABDUL HANAN
NIM : 11111084
Saya menyatakan bahwa skripsi yang saya susun, sebagai syarat memperoleh
gelar sarjana merupakan karya tulis saya sendiri. Adapun bagian-bagian tertentu
dalam penulisan skripsi ini yang saya kutip dari hasil karya orang lain telah
dituliskan sumbernya secara jelas sesuai dengan norma, kaidah, dan etika
penulisan ilmiah. Saya bersedia menerima sanksi pencabutan gelar akademik yang
saya peroleh dan sanksi-sanksi lainnya sesuai dengan peraturan yang berlaku,
apabila dikemudian hari ditemukan adanya plagiat dalam skripsi ini.
ABDUL HANAN
Nim: 11111084
iii
ABSTRAK
Dalam dunia kriptografi, block cipher adalah cipher dengan kunci simetrik yang
terdiri dari kumpulan bit-bit dengan panjang tetap, yang disebut sebagai blok.
Algoritma enkripsi dengan menggunakan block cipher menerima masukan n-bit
block yang berisi plaintext dan memberikan keluaran n-bit block ciphertext.
Metode IDEA terdiri dari 8 putaran (iterasi) ditambah 1 putaran transformasi
output. IDEA menggunakan operasi aljabar yang berbeda-beda yaitu XOR,
penambahan modulo 216, dan perkalian modulo 216 + 1. Dalam satu putaran
terdapat 14 langkah algoritma dan proses invers kunci untuk proses dekripsi juga
cukup rumit, menyebabkan metode IDEA ini tergolong panjang dan rumit jika
dikerjakan secara manual. Perangkat lunak kriptografi dengan Algoritma IDEA
dengan menggunakan plaintext 64 bit dan kunci simetris 128 bit melalui proses
enkripsi akan menghasilkan chipertext yang ketika di deskripsi kembali dengan
menggunakan kunci simetris yang sama akan didapat plaintext awal.
Kata Kunci : Algoritma IDEA, plaintext, chipertext, block cipher, kunci simetris
ABSTRACT
Assalammu’alaikum Wr, Wb
Puji dan syukur penulis ucapkan kepada Allah SWT, dimana tanpa rahmat dan
hidayah Nya penulis bukanlah siapa-siapa dan tidak mampu menjalani kehidupan ini dengan
baik. Dengan semua yang diberikan Allah SWT kepada manusia semoga penulis dapat
mematuhi perintah dan menjauhi larangan Allah SWT.
Setelah melalui beberapa tahap pembelajaran dan pengorbanan pikiran,waktu,
tenaga dan materi akhirnya penulis mendapat peluang untuk menulis proposal judul tugas
akhir untuk menyelesaikan program studi Strata Satu (S1) jurusan Teknik Informatika di
STMIK U’budiyah Indonesia.
Dalam proposal ini penulis menggambarkan pentingnya Sistem Enkripsi dan
Deskripsi Data dengan Menggunakan Teori IDEA di dalam pelaksanaan kegiatan baik
perusahaan maupun instansi pemerintah.
Pada kesempatan ini, tidak lupa penulis mengucapkan terimakasih yang sebesar-
besarnya kepada :
1. Bapak DR. M. Amin Haris selaku Ketua STMIK U’budiyah Indonesia, yang telah
memberikan penulis kesempatan untuk menuntut ilmu di lembaga yang dipimpinnya.
2. Bapak Muslim, S. Si., M. Info Tech selaku Ketua Prodi Teknik Informatika, yang telah
membantu dalam proses pembelajaran sampai selesainya pendidikan yang penulis
tempuh.
3. Bapak Hendra Fajri, S. Kom sebagai Dosen Pembimbing pembimbing yang telah
membimbing dari awal hingga selesainya penulisan tugas akhir ini.
4. Staff Dosen, yang telah memberikan ilmu pengetahuan, sehingga penulis mampu
menyelesaikan pendidikan di STMIK U’budiyah Indonesia
5. Bapak dan Ibu tercinta yang telah mendidik dan membesarkan saya dengan penuh
pengorbanan dan kasih sayang.
6. Istri dan Anak saya tercinta, yang telah memberikan motivasi serta telah meluangkan
waktu, tenaga, dan pikiran kepada saya sehingga selesainya pendidikan sarjana Strata 1
(S1) saya.
7. Ibu Ina dan staff BAAK yang telah banyak membantu dalam menuntut ilmu di STMIK
U’budiyah Indonesia.
8. Bapak Drs. M. Yusra, SP, selaku atasan yang telah banyak memberikan dorongan dan
semangat, sehingga terlaksananya pendidikan.
iv
Muharram, ST, selaku teman dan rekan kerja yang telah membantu dalam
proses penulisan tugas akhir ini.
9. Teman-teman serta rekan kerja yang telah mendukung dalam penyelesaian tugas akhir.
Mudah-mudahan visi dan misi STMIK U’budiyah Indonesia akan terwujud sebagai
kesuksesan dalam membina mahasiswanya untuk mengikuti kemajuan teknologi yang
padasaat ini semakin berkembang.
Penulis menyadari tugas akhir ini masih banyak kekurangan sehingga saran dan
kritik pembaca merupakan masukan yang sangat berguna, Semoga laporan tugas akhir ini
dapat berguna bagi penulis sendiri juga bagi yang yang membutuhkan.
v
DAFTAR ISI
vii
2.4 Jenis-Jenis Kriptografi ................................................................ 10
2.4.1 Kriptografi Kunci Simetris ............................................. 11
2.4.1.1 Block Cipher ..................................................... 11
2.4.1.2 Stream Cipher ................................................... 12
2.4.1.3 Desain Cipher ................................................... 12
2.4.2 Kriptografi Kunci Asimetris ........................................... 13
2.5 Landasan Matematika Kriptografi ............................................. 14
2.5.1 Aritmatika Modulo ........................................................ 14
2.5.2 Invers Perkalian ............................................................. 15
2.5.3 Invers Penjumlahan ....................................................... 17
2.5.4 Operasi XOR ................................................................. 18
2.5.5 Permutasi (Permutation) ................................................ 18
2.5.6 Pergeseran Bit (Shift) .................................................... 19
2.5.7 Rotasi Bit (Rotate) ......................................................... 20
2.5.8 Perkalian Modulo .......................................................... 21
2.6 Algoritma IDEA ......................................................................... 21
2.6.1 Sejarah Algoritma IDEA ............................................... 21
2.6.2 Arsitektur Umum Prosesor Kriptografi IDEA ............... 21
2.6.3 Kekuatan Algoritma IDEA ............................................ 23
2.6.4 Kelebihan Algoritma IDEA ........................................... 24
2.6.5 Algoritma IDEA ............................................................. 25
viii
3.6 Proses Perancangan dan Analisa ................................................ 31
x
DAFTAR GAMBAR
xi
DAFTAR TABLE
xii
BAB I
PENDAHULUAN
1
algoritma hasil pengubahan tersebut diberi nama IPES (Improyed Proposed
Encryption Algorithm). Kemudian pada tahun 1992, IPES mengganti namanya
menjadi IDEA (International Data Encryption Algorithm). Metoda ini
menggunakan beberapa operasi dasar, seperti operasi logika XOR (Exclusive-OR),
operasi perkalian Mod 216+1 ( Multiplication module 216+1 ) dan operasi
penambahan Mod 216 (Addition Modulo 216). Metode ini terdiri dari 8 putaran
(Round) dan menggunakan 64 bit plaintext dengan panjang kunci sebesar 128 bit.
Berdasarkan latar belakang diatas, penulis mengangkat tema penelitian
dengan judul “Metode Enkripsi dan Deskripsi Menggunakan Kriptografi
IDEA”.
1
BAB II
TINJAUAN PUSTAKA
3
4
yang paling terkenal dalam sejarah dan tetap menjadi standar pengamanan data
elektronik komersial pada kebanyakan institusi keuangan di seluruh dunia.
2.2 KRIPTOGRAFI
Kriptografi berasal dari bahasa Yunani yakni kriptos yang artinya
tersembunyi dan graphia yang artinya sesuatu yang tertulis, sehingga kriptografi
dapat disebut sebagai sesuatu yang tertulis secara rahasia.
Menurut (Rinaldi Munir, 2006), Kriptografi merupakan suatu bidang ilmu
yang mempelajari tentang bagaimana merahasiakan suatu informasi penting ke
dalam suatu bentuk yang tidak dapat dibaca oleh siapapun serta
mengembalikannya kembali menjadi informasi semula dengan menggunakan
berbagai macam teknik yang telah ada sehingga informasi tersebut tidak dapat
diketahui oleh pihak manapun yang bukan pemilik atau yang tidak
berkepentingan. Sisi lain dari kriptografi ialah kriptanalisis (Cryptanalysis) yang
merupakan studi tentang bagaimana memecahkan mekanisme kriptografi.
Bagi kebanyakan orang, kriptografi lebih diutamakan dalam menjaga
komunikasi tetap rahasia dan khusus. Seperti yang telah diketahui dan disetujui
bahwa perlindungan (proteksi) terhadap komunikasi yang sensitif telah menjadi
penekanan kriptografi selama ini. Akan tetapi hal tersebut hanyalah sebagian dari
penerapan kriptografi dewasa ini.
2.2.1 Terminologi
Beberapa terminologi atau istilah yang penting untuk diketahui didalam
kriptografi menurut (Rinaldi Munir, 2006) dalam bukunya yang berjudul
Kriptografi adalah sebagai beriku:
A. Pesan, Plainteks, dan Cipherteks
Pesan (message) adalah data atau informasi yang dapat dibaca dan
dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext)
atau teks-jelas (cleartext). Pesan tidak hanya berupa teks, tetapi juga dapat
berbentuk gambar (image), suara (audio), vidio, atau berkas biner lainnya.
6
Pesan perlu disandikan ke bentuk lain yang tidak dipahami agar tidak
dapat dimengerti maknanya oleh pihak lain. Bentuk pesan yang tersandi
disebut cipherteks (ciphertext) atau kriptogram (cryptogram). Cipherteks
harus dapat ditransformasikan kembali menjadi plainteks semula agar
pesan yang diterima bisa dibaca.
B. Pengirim dan Penerima
Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim
(sender) adalah entitas yang mengirim pesan kepada entitas lainnya.
Penerima (receiver) adalah entitas yang menerima pesan. Entitas di sini
dapat berupa orang, komputer, kartu kredit, dan sebagainya.
C. Enkripsi dan Dekripsi
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi
(encryption) atau enciphering (standar nama menurut ISO 7498-2).
Sedangkan proses mengembalikan cipherteks menjadi plainteks semula
disebut dekripsi (decryption) atau deciphering (standard nama menurut
ISO 7498-2).
Enkripsi adalah proses mengamankan suatu informasi dengan membuat
informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus.
Keuntungan dari enkripsi adalah kode asli kita tidak dapat dibaca oleh
orang lain.
Dekripsi adalah proses mengembalikan suatu informasi dengan cara
tertentu dan sesuai dengan algoritma enkripsi yang dipakai. Dekripsi
merupakan proses kebalikan dari proses enkripsi, mengubah ciphertext
kembali ke dalam bentuk plaintext. Proses utama dalam suatu algoritma
kriptografi adalah enkripsi dan deskripsi.
D. Cipher dan kunci
Cipher atau algoritma kriptografi adalah aturan untuk enchipering dan
dechipering, atau fungsi matematika yang digunakan untuk enkripsi dan
dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk
enchipering dan dechipering. Kunci (key) adalah parameter yang
7
3. Otentikasi (authentication)
Otentikasi merupakan identifikasi yang dilakukan oleh masing – masing
pihak yang saling berkomunikasi, maksudnya beberapa pihak yang
berkomunikasi harus mengidentifikasi satu sama lainnya. Informasi yang
didapat oleh suatu pihak dari pihak lain harus diidentifikasi untuk
memastikan keaslian dari informasi yang diterima. Identifikasi terhadap
suatu informasi dapat berupa tanggal pembuatan informasi, isi informasi,
waktu kirim dan hal-hal lainnya yang berhubungan dengan informasi
tersebut.
4. Non-repudiation
Non-repudiation berfungsi untuk mencegah terjadinya penyangkalan
terhadap suatu aksi yang telah dilakukan oleh pelaku aksi itu sendiri. Jika
terjadi penyangkalan maka diperlukan suatu prosedur yang melibatkan
pihak ketiga untuk menyelesaikan masalah tersebut.
critical action (mungkin proses recovery kunci menjadi pemicu dari action ini,
atau mungkin juga proses recovery itu sendiri yang menjadi critical action).
Dalam sembarang secret sharing scheme, terdapat kumpulan orang yang
terpilih yang informasi kumulatif mereka cukup untuk memecahkan rahasia.
Dalam beberapa implementasi secret sharing schemes, setiap partisipan menerima
rahasia setelah rahasia dimaksud dihasilkan. Dalam implementasi lain, rahasia
sebenarnya tidak pernah dibuat kelihatan kepada partisipan, walaupun akses
diberikan untuk mendapatkan rahasia tersebut diberikan (misalnya akses ke dalam
ruangan atau izin untuk melakukan proses).
pasti rahasia, karena permutasi tersebut adalah fungsi dari kunci rahasia. Jika kita
menggunakan satu block cipher untuk mengenkrip satu pesan dengan panjang
sembarang, kita menggunakan teknik yang dikenal sebagai modus operasi untuk
block cipher tersebut. Agar dapat berguna, satu modus operasi setidak-tidaknya
seefisien dan seaman cipher fundamental. Teknik enkripsi mungkin memiliki
sifat-sifat tambahan terhadap sifat-sifat dasar yang dimiliki teknik biasa. Teknik
standard DES telah dipublikasi dalam berbagai publikasi. Versi standard yang
lebih umum menggabungkan 4 modus operasi dari DES untuk dapat diaplikasikan
terhadap block cipher dengan ukuran blok sembarang.
antara plaintext dan ciphertext. Cara paling mudah untuk melakukan hal ini adalah
dengan substitusi. Substitusi modern menggunakan cara yang sangat komplek.
Namun cara ini belum cukup. Cipher Jerman, Enigma, yang menggunakan
algoritma substitusi yang komplek dipecahkan oleh Sekutu dalam perang dunia
kedua.
Dimana diffusion berarti menghilangkan redundansi plaintext dengan
menyebarkan masukan ke seluruh ciphertext. Diperlukan waktu yang lebih lama
untuk memecahkan sandi rahasia ini, bila diffusion digunakan. Cara paling mudah
untuk melakukan diffusion adalah transposisi atau permutasi. Dalam dunia
kriptografi modern, confusion dan diffusion ini dilakukan secara sangat intensif
dengan bantuan komputer.
operasi perkalian modulo 216+1. Operasi modulo ini melibatkan bilangan 0 dan 1
saja sehingga identik dengan bit pada komputer.
Contohnya:
(65530 + 10) mod 216 = 65540 mod 65536 = 4
G1 = 3265
VO = 0
V1 = 1
While 3265 <> 0 --> BENAR
Y = Int(65537/3265) = 20
G2 = 65537 - 20 * 3265 = 237
G0 = 3265
G1 = 237
V2 = 0 - 20*1 = -20
V0 = 1
V1 = -20
While 237 <> 0 --> BENAR
Y = Int(3265/237) = 13
G2 = 3265 - 13 * 237 = 184
G0 = 237
G1 = 184
V2 = 1 - 13*-20 = 261
V0 = -20
V1 = 261
While 184 <> 0 --> BENAR
Y = Int(237/184) = 1
G2 = 237 - 1 * 184 = 53
G0 = 184
G1 = 53
V2 = -20 - 1*261 = -281
V0 = 261
V1 = -281
While 53 <> 0 --> BENAR
Y = Int(184/53) = 3
G2 = 184 - 3 * 53 = 25
G0 = 53
G1 = 25
V2 = 261 - 3*-281 = 1104
V0 = -281
V1 = 1104
While 25 <> 0 --> BENAR
Y = Int(53/25) = 2
G2 = 53 - 2 * 25 = 3
17
G0 = 25
G1 = 3
V2 = -281 - 2*1104 = -2489
V0 = 1104
V1 = -2489
While 3 <> 0 --> BENAR
Y = Int(25/3) = 8
G2 = 25 - 8 * 3 = 1
G0 = 3
G1 = 1
V2 = 1104 - 8*-2489 = 21016
V0 = -2489
V1 = 21016
While 1 <> 0 --> BENAR
Y = Int(3/1) = 3
G2 = 3 - 3 * 1 = 0
G0 = 1
G1 = 0
V2 = -2489 - 3*21016 = -65537
V0 = 21016
V1 = -65537
While 0 <> 0 --> SALAH, MAKA KELUAR DARI LOOPING.
If (21016 >= 0) --> BENAR
Invers = 21016
Jadi inverse perkalian dari 3265 adalah 21016.
A B AB
0 0 0
0 1 1
1 0 1
1 1 0
Nilai A jika di-XOR-kan dengan nilai B sebanyak dua kali maka akan
didapatkan nilai A kembali. Karena sifat istimewa yang dimiliki operasi XOR
tersebut sehingga operasi XOR cenderung dipakai dalam proses enkripsi dan
dekripsi yang memiliki algoritma yang sama.
Berikut ini adalah contoh operasi XOR :
1101 0110 0001 0100
1000 0001 1110 0000
0101 0111 1111 0100
12 4 13 5
14 6 15 7
0 8 1 9
11 2 3 10
Bit ke- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Bit 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1
Bit ke- 12 4 13 5 14 6 15 7 0 8 1 9 11 2 3 10
Bit 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 0
dengan “<<”.
Contoh operasi shift left :
11000110 << 1 : 10001100
11000110 << 2 : 00011000
20
Operasi Geser Kanan (Shift Right) yaitu operasi yang menggeser (shift)
sejumlah bit ke kanan (right) dengan nilai bit “0” (nol). Operasi shift right
rotate left :
11000110 <<< 1 : 10001101
11000110 <<< 2 : 00011011
11000110 <<< 3 : 00110110
2. Operasi Rotasi Kanan (Rotate Right) yaitu operasi memutar barisan bit ke
kanan sebanyak nilai yang diberikan secara per bit, bit kosong yang telah
tergeser di sebelah kiri akan digantikan dengan bit yang telah tergeser di
Keterangan :
1. Blok Penyandi IDEA
Blok ini berfungsi untuk melakukan proses penyandian data. Jika sub-
kunci yang diproses oleh blok ini berupa sub-kunci enkripsi maka
pesan yang dihasilkan adalah pesan rahasia (Chipertext) dan jika yang
diproses berupa sub-kunci deskripsi maka pesan yang dihasilkan
adalah pesan sebenarnya (Plaintext).
2. Blok pembangkit sub-kunci
Blok ini berfungsi untuk membentuk 52 buah sub-kunci enkripsi 16 bit
dari kunci enkripsi 128 bit. Sehingga membentuk 52 buah sub-kunci
dekripsi 16 bit dari kunci dekripsi 128 bit.
3. Blok port data-in
Blok ini berfungsi untuk membaca 2 buah blok data masukan 32 bit
dan penyimpanannya sebagai blok data masukan 64 bit yang akan
dienkripsi atau didekripsi.
23
dihindari dengan melakukan proses desain yang baik. Sampai tahun 2004,
serangan terbaik yang dapat dilakukan pada semua kunci yang dapat memecahkan
IDEA dilakukan di bawah putaran ke-5 (algoritma IDEA yang penuh
menggunakan 8.5 putaran).
Pada tahun 1996, Bruce Schneier sangat memandang tinggi IDEA, beliau
menulis, "Menurut saya, IDEA merupakan algoritma blok-chiper yang terbaik dan
paling aman yang tersedia pada masyarakat luas pada saat ini." (Applied
Cryptography, 2nd ed.) Akan tetapi, pada tahun 1999 dia tidak lagi
merekomendasikan algoritma IDEA dikarenakan ketersediaan dari algoritma lain
yang lebih cepat, beberapa perkembangan para kriptanalisis, dan munculnya hak
paten pada IDEA.
Sampai saat ini, serangan apapun pada sistem yang menggunakan
algoritma kriptografi IDEA baik secara aljabar maupun linear masih belum
diketahui oleh para kriptanalisis. Pada tahun 1997, Joan Daemen and Vincent
Rijmen akan menciptakan RIJNDAEL, sebuah standar NIST yang baru pada akhir
tahun 2001.
Output dari setiap round adalah empat sub blok yang dihasilkan pada langkah 11,
12, 13 dan 14. Sub blok 12 dan 13 di-swap (kecuali untuk putaran terakhir)
sehingga input dari putaran berikutnya adalah hasil kombinasi dari langkah 11 13
12 14.Setelah 8 putaran, akan dilakukan tranformasi output berikut,
1. Kalikan X1 dengan subkey K1 mod (216 + 1).
2. Tambahkan X2 dengan subkey K2 mod 216.
3. Tambahkan X3 dengan subkey K3 mod 216.
4. Kalikan X4 dengan subkey K4 mod (216 + 1).
28
START
INPUT PLAIN
TEXT DAN
KUNCI
MENGAMBIL VARIABEL
PLAIN TEXT DAN KUNCI
YA
YA
PROSES VARIABLE
DENGAN FORMULA
ENKRIPSI
SELESAI
START
INPUT
CHIPER TEXT
DAN KUNCI
MENGAMBIL VARIABEL
CHIPER TEXT DAN
KUNCI
YA
YA
YA
PROSES VARIABLE
DENGAN FORMULA
DENKRIPSI
SELESAI
Pada proses enkripsi, terdapat tiga operasi yang berbeda untuk pasangan
sub-blok 16-bit yang digunakan, sebagai berikut :
- XOR dua sub-blok 16-bit bir per bit
- Penjumlahan integer modul (216 + 1) dua sub-blok 16-bit , dimana kedua
sub-blok itu dianggap sebagai representasi biner dari integer biasa,
- Perkalian modulo (216 + 1) dua sub-blok 16-bit, dimana kedua sub-blok
16-bit itu dianggap sebagai representasi biner dari integer biasa kecuali
sub-blok nol dianggap mewakili integer 216
Blok pesan terbuka dengan lebar 64-bit , X, dibagi menjadi 4 sub-blok 16-
bit, X1, X2, X3, X4, sehingga X = (X1, X2, X3, X4). Keempat sub-blok 16-bit itu
ditransformasikan menjadi sub-blok 16-bit, Y1, Y2, Y3, Y4, sebagai pesan rahasia
64-bit Y = (Y1, Y2, Y3, Y4) yang berada dibawah kendali 52 sub_blok kunci 16-bit
yang dibentuk dari dari blok kunci 128 bit.
Keempat sub-blok 16-bit, X1, X2, X3, X4, digunakan sebagai masukan
untuk putaran pertama dari algoritma IDEA. Dalam setiap putaran dilakukan
operasi XOR, penjumlahan, perkalian antara dua sub-blok 16-bit dan diikuti
pertukaran antara sub-blok 16-bit putaran kedua dan ketiga. Keluaran putaran
sebelumnya menjadi masukan putaran berikutnya. Setelah putaran kedelapan
dilakukan transformasi keluaran yang dikendalikan oleh 4 sub-blok kunci 16-bit.
Berikut contoh perhitungan enkripsi dan deskripsi secara manual dengan
variable Plain Text bernilai “abcdefgh” dan kunci bernilai “1234567890123456”
1. Nilai konversi karakter ke binary
3 51 00110011
4 52 00110100
5 53 00110101
6 54 00110110
7 55 00110111
8 56 00111000
9 57 00111001
0 48 00110000
Ini adalah sebuah kunci yang nantinya akan digunakan untuk perhitungan
enkripsi dan deskripsi.
A. Proses Enkripsi
Pada proses enkripsi ini dilakukan perhitungan 8 kali putaran dengan setiap
putarannya dilakukan sebagai berikut:
Table 4.2 Langkah Proses Enkripsi
JUDUL PROGRAM
BAGIAN DEKLARASI
BLOCK FUNGSI-FUNGSI DAN VARIBEL
PROGRAM
BAGIAN PERNYATAAN
DAN PENERAPAN FUNGSI
IF …… THEN
EKSEKUSI ……
PROSEDUR- END IF
PROSEDUR
Sub Proses_Encryp()
On Error Resume Next
Dim i, cRow As Integer
Dim jlhBaris As Integer
Dim bTmp As Double
Dim tmpHasil As String
Dim jlhx As Integer
Dim X1, X2, X3, X4 As String
Dim proses As Integer
jlhx = (msfp.Rows - 1) * 2
proses = (jlhx / 8) * 14
L1 = ""
L2 = ""
L3 = ""
L4 = ""
L5 = ""
L6 = ""
L7 = ""
L8 = ""
L9 = ""
L10 = ""
L11 = ""
L12 = ""
L13 = ""
L14 = ""
bTmp = 0
tmpHasil = ""
frmmaster.xF.Caption = "Informasi Enkripsi Data:"
'frmmaster.txtinfo.Text = ""
i = 0
For i = 1 To val(txtjlh.Text)
frmmaster.txtinfo.Text = frmmaster.txtinfo.Text & Chr(13) & "
PUTARAN " & i & " " & Chr(13)
With frminfopkunci.msf
jlhBaris = .Rows - 1
Screen.MousePointer = vbHourglass
For cRow = 1 To proses
Select Case cRow
43
Case 1
.TextMatrix(cRow, 1) = "(X1 * K1) mod (2^16 + 1) =(" &
msfp.TextMatrix(cRow, 1) & " * " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) *
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L1 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 2
.TextMatrix(cRow, 1) = "(X2 + K2) mod 2^16 =" &
msfp.TextMatrix(cRow, 1) & " + " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) +
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L2 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 3
.TextMatrix(cRow, 1) = "(X3 + K3) mod 2^16 =" &
msfp.TextMatrix(cRow, 1) & " + " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) +
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L3 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 4
.TextMatrix(cRow, 1) = "(X4 * K4) mod (2^16 + 1) =(" &
msfp.TextMatrix(cRow, 1) & " * " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) *
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L4 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 5
.TextMatrix(cRow, 1) = "L#1 XOR L#3 =" & Trim(L1) & "
XOR " & Trim(L3)
tmpHasil = FXORBiner(Trim(L1), Trim(L3), 16)
L5 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 6
.TextMatrix(cRow, 1) = "L#2 XOR L#4 =" & Trim(L2) & "
XOR " & Trim(L4)
tmpHasil = FXORBiner(Trim(L2), Trim(L4), 16)
L6 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
44
Case 7
.TextMatrix(cRow, 1) = "(L#5 * K5) mod (2^16 + 1) =" &
L5 & " * " & msfk.TextMatrix(cRow - 2, 1) & " mod
(2^16 + 1)"
bTmp = FBiner2Dec(Trim(L5)) *
FBiner2Dec(msfk.TextMatrix(cRow - 2, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L7 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 8
.TextMatrix(cRow, 1) = "(L#6 + L#7)) mod 2^16 =" & L6
& " + " & L7 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L6)) + FBiner2Dec(Trim(L7))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L8 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 9
.TextMatrix(cRow, 1) = "(L#8 * K6) mod (2^16 + 1) =" &
L8 & " * " & msfk.TextMatrix(cRow - 3, 1)
bTmp = FBiner2Dec(Trim(L8)) *
FBiner2Dec(msfk.TextMatrix(cRow - 3, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L9 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 10
.TextMatrix(cRow, 1) = "(L#7 + L#9)) mod 2^16 =" & L7
& " + " & L9 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L7)) + FBiner2Dec(Trim(L9))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L10 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 11
.TextMatrix(cRow, 1) = "L#1 XOR L#9 =" & L1 & " XOR "
& L9
tmpHasil = FXORBiner(Trim(L1), Trim(L9), 16)
L11 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 12
.TextMatrix(cRow, 1) = "L#3 XOR L#9 =" & L3 & " XOR "
& L9
tmpHasil = FXORBiner(Trim(L3), Trim(L9), 16)
L12 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 13
.TextMatrix(cRow, 1) = "L#2 XOR L#10 =" & L2 & " XOR "
& L10
tmpHasil = FXORBiner(Trim(L2), Trim(L10), 16)
L13 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
45
Case 14
.TextMatrix(cRow, 1) = "L#4 XOR L#10 =" & L4 & " XOR "
& L10
tmpHasil = FXORBiner(Trim(L4), Trim(L10), 16)
L14 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
End Select
Next cRow
d_Grid
End With
Next i
Screen.MousePointer = vbDefault
Call transForm
End Sub
Berikut ini adalah proses yang terjadi pada proses Enkripsi dengan
Algoritma IDEA adalah :
1. Menginput plaintekt dan kunci
2. Ubah biner
3. Lakukan proses berikut untuk sampai 8 putaran
1. Set nilai i = 1
2. Lakukan proses untuk nilai i = 4
Proses yang akan dilakukan
Cek apakah nilai i = 2 atau i = 3
Jika ya
L#i = Xi+Ki mod 216.
Jika tidak
L#i = Xi*Ki mod 216+1.
3. Lakukan proses XOR
L#5 = L#1 XOR L#3.
L#6 = L#2 XOR L#4.
4. Selanjutnya lakukan proses
L#7 = (L#5*K5) mod 216+1
L#8 = (L#6+L#7) mod 216
L#9 = (L#8*K6) mod 216+1
L#10 = (L#7+L#9) mod 216
5. Set untuk nilai i=1.
6. Lakukan proses XOR sampai nilai i = 4.
Proses yang akan dilakukan
46
IF i = 1, maka
Xi = L#1 XOR L#9
Jika tidak IF i = 2, maka
Xi = L#3 XOR L#9
Jika tidak IF i = 3, maka
Xi = L#2 XOR L#10
Jika tidak
Xi = L#4 XOR L#10
4. Kemudian lakukan proses transformasi
1. Set nilai i = 1
2. Lakukan proses sampai nilai i = 4
Proses yang akan dilakukan
Cek apakah i = 2 atau i = 3
Jika ya
L#i = Xi+Ki Mod 216
Jika tidak
L#i = Xi*Ki Mod 216+1
5. Kemudian ubah hasil proses transformasi dari biner ke kode ASCII
1. Set 1 = 1
2. Lakukan perulangan sampai nilai i = 4
3. Yi = L#i
6. Kemudian di dapatkan hasil Chipertekt Y1+Y2+Y3+Y4.
Sub Proses_Decryp()
On Error Resume Next
Dim i, cRow As Integer
Dim jlhBaris As Integer
Dim bTmp As Double
Dim tmpHasil As String
Dim jlhx As Integer
Dim X1, X2, X3, X4 As String
Dim proses As Integer
jlhx = (msfp.Rows - 1) * 2
proses = (jlhx / 8) * 14
47
L1 = ""
L2 = ""
L3 = ""
L4 = ""
L5 = ""
L6 = ""
L7 = ""
L8 = ""
L9 = ""
L10 = ""
L11 = ""
L12 = ""
L13 = ""
L14 = ""
bTmp = 0
tmpHasil = ""
frmmaster.xF.Caption = "Informasi Deskripsi Data:"
'frmmaster.txtinfo.Text = ""
i = 0
For i = 1 To val(txtjlh.Text)
frmmaster.txtinfo.Text = frmmaster.txtinfo.Text & Chr(13) &
"PUTARAN " & i & " " & Chr(13)
With frminfopkunci.msf
jlhBaris = .Rows - 1
Screen.MousePointer = vbHourglass
For cRow = 1 To proses
Select Case cRow
Case 1
.TextMatrix(cRow, 1) = "(X1 * K1) mod (2^16 + 1) =("
& msfp.TextMatrix(cRow, 1) & " * " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) *
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L1 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 2
.TextMatrix(cRow, 1) = "(X2 + K2) mod 2^16 =" &
msfp.TextMatrix(cRow, 1) & " + " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) +
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L2 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 3
.TextMatrix(cRow, 1) = "(X3 + K3) mod 2^16 =" &
msfp.TextMatrix(cRow, 1) & " + " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) +
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L3 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
48
Case 4
.TextMatrix(cRow, 1) = "(X4 * K4) mod (2^16 + 1) =("
& msfp.TextMatrix(cRow, 1) & " * " &
msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) *
FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L4 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 5
.TextMatrix(cRow, 1) = "L#1 XOR L#3 =" & Trim(L1) & "
XOR " & Trim(L3)
tmpHasil = FXORBiner(Trim(L1), Trim(L3), 16)
L5 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 6
.TextMatrix(cRow, 1) = "L#2 XOR L#4 =" & Trim(L2) & "
XOR " & Trim(L4)
tmpHasil = FXORBiner(Trim(L2), Trim(L4), 16)
L6 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 7
.TextMatrix(cRow, 1) = "(L#5 * K5) mod (2^16 + 1) ="
& L5 & " * " & msfk.TextMatrix(cRow - 2, 1) & " mod
(2^16 + 1)"
bTmp = FBiner2Dec(Trim(L5)) *
FBiner2Dec(msfk.TextMatrix(cRow - 2, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L7 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 8
.TextMatrix(cRow, 1) = "(L#6 + L#7)) mod 2^16 =" & L6
& " + " & L7 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L6)) + FBiner2Dec(Trim(L7))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L8 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 9
.TextMatrix(cRow, 1) = "(L#8 * K6) mod (2^16 + 1) ="
& L8 & " * " & msfk.TextMatrix(cRow - 3, 1)
bTmp = FBiner2Dec(Trim(L8)) *
FBiner2Dec(msfk.TextMatrix(cRow - 3, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
L9 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 10
.TextMatrix(cRow, 1) = "(L#7 + L#9)) mod 2^16 =" & L7
& " + " & L9 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L7)) + FBiner2Dec(Trim(L9))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
49
L10 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 11
.TextMatrix(cRow, 1) = "L#1 XOR L#9 =" & L1 & " XOR "
& L9
tmpHasil = FXORBiner(Trim(L1), Trim(L9), 16)
L11 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 12
.TextMatrix(cRow, 1) = "L#3 XOR L#9 =" & L3 & " XOR "
& L9
tmpHasil = FXORBiner(Trim(L3), Trim(L9), 16)
L12 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 13
.TextMatrix(cRow, 1) = "L#2 XOR L#10 =" & L2 & " XOR
" & L10
tmpHasil = FXORBiner(Trim(L2), Trim(L10), 16)
L13 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 14
.TextMatrix(cRow, 1) = "L#4 XOR L#10 =" & L4 & " XOR
" & L10
tmpHasil = FXORBiner(Trim(L4), Trim(L10), 16)
L14 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
End Select
Next cRow
d_Grid
End With
Next i
Screen.MousePointer = vbDefault
Call transForm
End Sub
Dimana proses yang terjadi pada proses dekripsi tidak jauh berbeda
dengan proses enkripsi, berikut ini proses yang terjadi pada proses dekripsi
adalah:
1. Pertama menginput chipertekt dan kunci. Dimana kunci yang di input pada
proses dekripsi harus sama dengan kunci yang digunakan pada proses
enkripsi.
2. Ubah biner
3. Lakukan proses berikut untuk sampai 8 putaran
1. Set nilai i = 1
50
User T
Menguji variabel
Chiper Text inputan
Plain Teks
Dan Kunci
Menguji variabel T
inputan selesai
Pembentukan
Proses Ke n Proses Ke n Block Proses
proses_kunci
Y prosespbin
Proses_Deskirp proseskbin
Proses_Encryp
Pembentukan
Block Proses
Proses Ke n
proses_kunci
prosespbin
Proses Ke n
proseskbin
selesai
Kunci
0
Sistem Kriptografi
Algoritma IDEA
User
Pesan_rahasia, Pesan_asli
Keterangan :
1. Proses 0 adalah sistem kriptografi algoritma IDEA
Dimana user menginput plainteks dan kunci untuk mengamankan data
dengan menggunakan algoritma kriptografi simetris IDEA yang
menghasilkan output berupa pesan rahasia, pesan asli.
Pesan Asli
Sub_kunci_Enkripsi P.2 Output
Chipertext
Proses Enkripsi
Order Enkripsi
Plainteks
Order
P.1
Perintah
User Pemilihan
Proses
Order Dekripsi
Chiperteks
P.3 Output
Plaintext
Proses Dekripsi
Sub_kunci_Dekripsi
Pesan Rahasia
Keterangan:
1. Proses 1 adalah pemilihan proses
Dimana di dalam proses ini, user akan memilih proses yang akan di
lakukan, apakah ingin melakukan proses enkripsi atau dekripsi.
54
P.2.1
Input file
Blok_plain
Blok chiper
P.2.3 P.2.4
P.2.2 Karkter_Plain Biner_plain
Konversi ASCII Proses partisi
Konversi ke
ke biner (16 bit 64 bit jadi 4
ASCII
perkarakter) subblok 16 bit
Keterangan:
1. Proses 2.1 adalah proses input file
Dimana didalam proses ini, user menginput file yang akan di enkripsi.
55
P.3.7
Plainteks P.3.10 Krkter_plain P.3.9 ASCII_plain P.3.8 Biner_plain Proses gabung
User Proses gabung Konversi ke Konversi biner
keseluruhan blok
plainteks ASCII ke ASCII
bit
Cipherteks
Cipher 2
P.3.1
Input file P.3.6
Proses dekripsi
II
(transformasi)
Blok_cipher
Cipher 1
Keterangan:
1. Proses 3.1 adalah proses input file
Dimana dalam proses ini, user menginput file yang akan di lakukan
dekripsi.
2. Proses 3.2 adalah proses konversi ke ASCII
Di dalam proses ini, dimana karakter cipher akan mengkonversikan
karakter plaintext ke dalam kode ASCII.
3. Proses 3.3 adalah proses konversi ASCII ke biner (64 bit perkarakter)
Dalam proses ini, dimana ASCII cipher akan mengkonversi kode ASCII
plaintext ke dalam biner hexadesimal.
4. Proses 3.4 adalah proses partisi 64 bit jadi 4 subblok 16 bit
Dalam proses ini, dimana biner cipher akan mempartisi keseluruhan bit
plaintext menjadi blok-blok 64 bit.
5. Proses 3.5 adalah proses dekripsi I (round 1-8)
Dalam proses ini, dimana block cipher dan sub kunci dekripsi akan
melakukan proses dekripsi tahap I.
57
4.4 IMPLEMENTASI
Tahap implementasi dilakukan setelah perancangan sistem kriptografi
IDEA selesai dilakukan. Dalam implementasi akan ditampilkan bentuk dari
program yang dirancang. Ada pun program yang dimaksud terdiri atas beberapa
tampilan halaman, yaitu: halaman utama, form enkripsi, dan form dekripsi.
Misalkan kita akan mengenkripsi pesan, dimana pesan plaintext dan kunci.
Kunci : KRIPTOGRAFI IDEA
Plaintext : ABDHANAN
Berikut ini adalah proses enkripsi dari algoritma IDEA.
PROSES UNTUK BLOCK 1
PUTARAN 1
PUTARAN 2
PUTARAN 3
PUTARAN 4
PUTARAN 5
PUTARAN 6
PUTARAN 7
PUTARAN 8
TRANSFORMASI OUTPUT 1
User
Plain Teks :
ABDHANAN
Dan Kunci :
KRIPTOGRAFI IDEA
Menguji variabel T
Inputan
(Var. Lengkap)
Menghasilkan
Proses Ke n
chipertext
Y =
™/hŠm?çǺI
Proses_ Encryp
Pembentukan
Block Proses
(Jlh. Block=1) selesai
proses_ kunci
prosespbin
Proses Ke n
proseskbin
67
PUTARAN 2
PUTARAN 3
PUTARAN 4
PUTARAN 5
PUTARAN 6
PUTARAN 8
= 0010011111011001
TRANSFORMASI OUTPUT
BAB V
KESIMPULAN DAN SARAN
5.1 KESIMPULAN
1. Pada proses kriptografi dengan algoritma IDEA memiliki 8 putaran dan di
tambah satu lagi putaran transformasi output.
2. Panjang plaintext pada kriptografi algoritma IDEA minimal 64 bit
sedangkan panjang kunci 128 bit dan algoritma IDEA menggunakan
operasi aljabar yang berbeda-beda yaitu XOR, penambahan modulo 216,
perkalian 216+1.
3. Pada proses kriptografi dengan menggunakan metode IDEA ini
menggunakan kunci simetris pada proses enkripsi dan deskripsinya.
4. Pada penelitian tugas akhir ini, kriptografi dengan menggunakan metode
IDEA penulis menggunakan data berformat text.
5. Pada proses enkripsi dan dekripsi dengan menggunakan metode IDEA, file
plaintext awal setelah di enkripsi dengan menggunakan kunci simetris
akan menghasilkan file chipertext, lalu file chipertext di dekripsi kembali
dengan kunci simetris akan menghasilkan file plaintext awal.
5.2 SARAN
Adapun saran-saran yang dapat penulis berikan selama melakukan
penelitian ini guna untuk pengembangan perangkat lunak kriptografi dengan
Algoritma IDEA ini adalah:
1. Penulis menyarankan kepada pihak lain yang ingin melanjutkan penelitian
lanjutan proses enkripsi dan dekripsi ini dengan format lainnya, seperti
untuk gambar, suara dan vidio.
2. Hasil keamanan kriptografi dengan menggunakan Algoritma IDEA dapat
dibandingkan dengan penerapan pada Algoritma lain mana yang lebih baik
dalam menjamin kerahasiaan datanya.
DAFTAR PUSTAKA
Ariyus, Dony., Pengantar Ilmu Kriptografi: Teori Analisis dan Implementasi, Edisi
Pertama. Yogyakarta: Andi Offset, 2008.
Andriyanto, Tri, dan D.L., Crispina Pardede, Studi Dan Perbandingan Algoritma
Idea Dan Algoritma Blowfish,Universitas Gunadarma, ISSN : 1411-6286.
Indriyawan. Eko Pemrogaman Visual Basic 6.0 Menggunakan Array dan Binary.
Yogyakarta : Andi, 2001
Mangkulo, hengky alexander., “Cara Mudah Menguasai Visual Basic 6.0”, Penerbit PT.
Elek Media Komputindo, Jakarta. 2011.
Wahana Komputer : Memahami Model Enkripsi & Security Data. Penerbit ANDI,
Yogyakarta, 2003.