Perancangan Perangkat Lunak Kriptografi Metoda Idea (International Data Encryption Algorithm)
PERANCANGAN PERANGKAT LUNAK KRIPTOGRAFI
METODA IDEA (INTERNATIONAL DATA ENCRYPTION
ALGORITHM)
SKRIPSI
WAY YANTONO SAING
100823025
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2013
(2)
PERSETUJUAN
Judul
:
PERANCANGAN PERANGKAT LUNAK
KRIPTOGRAFI
METODA IDEA
(INTERNATIONAL
DATA ENCRYPTION ALGORITHM)
Kategori
: SKRIPSI
Nama
: WAY YANTONO SAING
Nomor Induk Mahasiswa
: 100823025
Program Studi
: EKSTENSI (S1) MATEMATIKA
Departemen
: MATEMATIKA
Fakultas
: MATEMATIKA DAN ILMU PENGETAHUAN
ALAM
UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, September 2013
Komisi Pembimbing
:
Pembimbing 1
Pembimbing 2
Drs. Marihat Situmorang, M.Kom
Drs. Sawaluddin, M.IT
NIP. 19631214 198903 1 001
NIP. 19591231 199802 1
001
Diketahui/Disetujui oleh
Departemen Matematika FMIPA USU
Prof. Drs. Tulus, Vordipl.Math., M.Si., Ph.D
NIP. 19620901 198803 1 002
(3)
PERNYATAAN
PERANCANGAN PERANGKAT LUNAK KRIPTOGRAFI METODA IDEA
(INTERNATIONAL DATA ENCRYPTION ALGORITHM)
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, September 2013
Way Yantono Saing
100823025
(4)
PENGHARGAAN
Puji dan syukur penulis ucapkan kehadirat Allah SWT yang telah memberikan rahmat
dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi ini dalam waktu yang
ditetapkan.
Ucapan terima kasih Penulis sampaikan kepada Bapak Drs. Marihat
Situmorang, M.Kom, Drs. Sawaluddin, M.IT selaku pembimbing pada penyelesaian
skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada penulis.
Bapak Syahriol Sitorus, S.Si., M.IT. dan Bapak Dr. Syahril Efendi, M.IT. selaku
pembanding pada skripsi ini yang telah banyak memberi semangat dan motivasi.
Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen
Matematika FMIPA USU Bapak Prof. Dr. Tulus, Vordipl.Math., M.Si. dan Ibu Dr.
Mardiningsih, M.Si., Dekan dan Pembantu Dekan FMIPA USU, semua Dosen
Pengajar FMIPA USU, pegawai FMIPA USU dan rekan-rekan Penulis kelas Ekstensi
Matematika Komputasi tahun angkatan 2010. Akhirnya, tidak terlupakan Orang Tua
Penulis dan keluarga yang selama ini memberikan bantuan dan dorongan yang
diperlukan telah banyak memberikan bantuan dan dorongan untuk penyelesaian
skripsi ini. Semoga Allah SWT membalasnya.
Medan, September 2013
(5)
ABSTRAK
Tulisan ini mengkaji tentang kriptografi metoda IDEA
(International Data Encryption
Algorithm).
Masalah keamanan dan kerahasiaan data merupakan hal yang sangat
penting dalam suatu jaringan komputer yang terkoneksi dengan jaringan publik
misalnya internet. Tentu saja data yang sangat penting tersebut dilihat atau dibajak
oleh user yang tidak berwenang. Sistem keamanan pengiriman pesan/data dengan
menggunakan penyandian yang bertujuan untuk menjaga kerahasiaan suatu pesan dari
akses user yang tidak berwenang/berhak. Dalam skripsi ini dibahas tentang
perancanagn perangkat lunak kriptografi metoda IDEA.
(6)
DAFTAR ISI
Persetujuan
Pernyataan
Penghargaan
Abstrak
Abstrack
Daftar Isi
Bab 1 Pendahuluan
1.1.
Latar Belakang
1.2.
Perumusan Masalah
1.3.
Tujuan dan Manfaat Penulisan
1.4.
Pembatasan Masalah
1.5.
Metodologi Penelitian
1.6.
Tinjauan Pustaka
Bab 2 Landasan Teori
2.1.
Latar Belakang
2.1.1.
Sejarah Kriptografi
2.1.2.
Defenisi Kriptografi
2.1.3.
Tujuan Kriptografi
2.2.
Aplikasi Kriptografi
2.2.1. Komunikasi Aman
(Secure Communication)
2.2.2. Identifikasi dan Otentikasi
(Identification and
Authentication)
2.2.3.
Secret Sharing
2.2.4. Sertifikasi
(Certification)
2.2.5. Penemuan Kunci
(Key Recovery)
2.3. Jenis Sistem Kriptografi
2.4. Landasan Matematis Kriptografi
2.4.1. Aritmatika Modular
2.4.1. Inverse Perkalian
2.4.3. Inverse Penjumlahan
2.4.4. Operasi XOR
2.4.5. Permutasi
(Permutation)
2.4.6. Pergeseran Bit
(Shift)
2.4.7. Rotasi Bit
(Rotate)
2.4.8. Perkalian Modulo
2.5. Metode IDEA
2.5.1. Sejarah
2.5.2. Algoritma
2.5.3. Pembentukan Kunci
2.5.4. Enkripsi
2.5.5. Dekripsi
2.6. Perangkat Lunak
2.6.1. Tujuan Perangkat Lunak
2.6.2. langkah-langkah Pengembangan Perangkat Lunak
Halaman
ii
iii
iv
v
vi
vii
1
2
2
2
2
3
4
5
5
7
8
9
9
10
10
11
11
12
12
13
14
15
15
16
17
17
18
18
19
21
23
23
(7)
Bab 3 Pembahasan dan Perancangan
3.1. Pembahasan
3.1.1.
Persyaratan Perangkat Lunak
3.1.2.
Pembahasan Proses IDEA
3.1.2.1.
Proses Pembentukan Kunci
3.1.2.2.
Proses Enkripsi
3.1.2.3.
Proses Dekripsi
3.2.
Perancangan
3.2.1.
Form Splash Screen
3.2.2.
Form Proses pembentukan Kunci
3.2.3.
Form Proses Enkripsi/Dekripsi
Bab 4 Algoritma dan Implementasi
4.1.
Algoritma
4.1.1.
Algoritma Pembentukan Kunci Enkripsi dan
Dekripsi
4.1.2.
Algoritma Proses Enkripsi
4.1.3.
Algoritma proses Dekripsi
4.1.4.
Algoritma Fungsi Pendukung dalam Proses
pembentukan Kunci, Enkripsi dan Dekripsi
4.2.
Implementasi Sistem
4.2.1.
Spesifikasi Perangkat Kerasdan Perangkat Lunak
4.2.2.
Cara Menggunakan Perangkat Lunak
4.3.
Pengujian Sistem
Bab 5 Kesimpulan dan Saran
5.1. Kesimpulan dan Saran
5.2. Saran
25
25
26
26
31
30
46
46
47
49
49
51
55
58
62
62
63
75
77
77
77
(8)
ABSTRAK
Tulisan ini mengkaji tentang kriptografi metoda IDEA
(International Data Encryption
Algorithm).
Masalah keamanan dan kerahasiaan data merupakan hal yang sangat
penting dalam suatu jaringan komputer yang terkoneksi dengan jaringan publik
misalnya internet. Tentu saja data yang sangat penting tersebut dilihat atau dibajak
oleh user yang tidak berwenang. Sistem keamanan pengiriman pesan/data dengan
menggunakan penyandian yang bertujuan untuk menjaga kerahasiaan suatu pesan dari
akses user yang tidak berwenang/berhak. Dalam skripsi ini dibahas tentang
perancanagn perangkat lunak kriptografi metoda IDEA.
(9)
BAB 1
PENDAHULUAN
1.1.
Latar Belakang
Metode kriptografi digunakan untuk mengamankan data yang bersifat rahasia agar
tidak diketahui oleh orang lain. Metode kriptografi yang dapat digunakan untuk
mengamankan data ada bermacam-macam. Setiap metode memiliki kelebihan dan
kekurangannya masing-masing. Namun, masalah utamanya adalah bagaimana
mengetahui dan memahami cara kerja atau algoritma dari metoda kriptografi tersebut.
Penulis memilih pembelajaran metode kriptografi IDEA (
International Data
Encryption Algorithm
) karena sampai sekarang masih cukup handal untuk diterapkan
sebagai metoda pengamanan data.
Metoda IDEA diperkenalkan pertama kali oleh Xuejia Lai dan James Massey
pada tahun 1990 dengan nama PES (
Proposed Encryption Standard
). Tahun
berikutnya, setelah Biham dan Shamir mendemonstrasikan
cryptanalysis
yang
berbeda, sang penemu memperkuat algoritma mereka dari serangan dan algoritma
hasil pengubahan tersebut diberi nama IPES (
Improved Proposed Encryption
Algorithm
). Kemudian pada tahun 1992, IPES diganti namanya menjadi IDEA
(
International Data Encryption Algorithm
). Metoda IDEA ini menggunakan beberapa
operasi dasar, seperti operasi logika
XOR
(
Exclusive – OR
), operasi perkalian mod 2
16+ 1 (
multiplication modulo
2
16+ 1) dan operasi penambahan mod 2
16(
addition
modulo
2
16). Metoda ini terdiri dari 8 putaran (
round
) dan menggunakan 64
bit
plaintext
dengan panjang kunci sebesar 128
bit
.
Sandi rahasia ini dipatenkan di banyak negara tapi dapat digunakan secara
gratis untuk penggunaan yang tidak komersial. Nama “IDEA” juga dipatenkan dan
(10)
hak patennya berakhir tahun 2011. Lisensi dari IDEA dipegang oleh MediaCrypt.
IDEA digunakan di Pretty Good Privacy (PGP) v2.0 dan sebagai algoritma opsional
dalam OpenPGP, Netscape’s Secure Socket Layer (SSL), dan Secure Hypertext
transfer Protocol (SHTTP).
Tulisan ini akan membahas bagaimana mengetetahui dan memahami cara
kerja atau algoritma dari Metoda Kriptografi IDEA (
International Data Encryption
Algorithm
)” dengan merancang suatu perangkat lunak untuk mempermudah dalam
pemahaman metoda tersebut.
1.2.
Perumusan Masalah
Permasalahan yang dibahas dalam menyusun skripsi ini adalah bagaimana cara
mempermudah mempelajari dan menjelaskan proses pembentukan kunci, enkripsi dan
dekripsi metoda kriptografi IDEA dalam bentuk perangkat lunak.
1.3. Tujuan dan Manfaat Penulisan
Tujuan penyusunan skripsi ini adalah untuk merancang suatu perangkat lunak untuk
membantu pemahaman metoda kriptografi IDEA.
Manfaat dari penyusunan skripsi ini yaitu perangkat lunak dapat digunakan
sebagai fasilitas pendukung dalam proses belajar mengajar.
1.4. Pembatasan Masalah
Pembatasan permasalahan dalam merancang perangkat lunak ini adalah :
1.
Perangkat lunak akan mengolah tahap – tahap perhitungan dalam bentuk
bilangan biner dan heksadesimal.
(11)
3.
Perangkat lunak tidak dapat mengolah input berupa gambar.
4.
Perangkat lunak tidak menampilkan tahap – tahap konversi bilangan ke dalam
bilangan biner.
1.5. Metodologi Penelitian
Proses pembentukan kunci dimulai dengan membagi 128
bit key
menjadi 8 buah 16
bit subkey
. Ini merupakan delapan
subkey
pertama untuk algoritma dengan perincian
enam
subkey
pertama untuk putaran (
round
) 1 dan dua
subkey
terakhir untuk putaran
2.
Key
dirotasikan 25 bit ke kiri dan dibagi menjadi 8
subkey
lagi. Ini merupakan
delapan
subkey
kedua untuk algoritma dengan perincian empat
subkey
pertama untuk
putaran 2 dan empat
subkey
terakhir untuk putaran 3. Algoritma hanya menggunakan
52 buah
subkey
dengan perincian 6 buah
subkey
untuk 8 putaran ditambah 4 buah
subkey
untuk transformasi output.
Proses enkripsi algoritma IDEA adalah sebagai berikut, Pertama – tama,
plaintext
64
bit
dibagi menjadi 4 buah sub blok dengan panjang 16
bit
, yaitu X1, X2,
X3, X4. Empat sub blok ini menjadi masukan bagi iterasi tahap pertama algoritma.
Total terdapat 8 iterasi. Pada setiap iterasi, 4 sub blok di-XOR-kan, ditambahkan,
dikalikan dengan yang lain dan dengan 6 buah
subkey
16 bit. Diantara iterasi sub blok
kedua dan ketiga saling dipertukarkan. Akhirnya 4 buah sub blok dikombinasikan
dengan 4
subkey
dalam transformasi output.
Proses dekripsi hampir sama dengan proses enkripsi. Perbedaannya hanya
terletak pada aturan dari subkey-nya. Urutan
subkey
terbalik dengan proses enkripsi
dan
subkey
-nya di-
inverse
-kan.
Subkey
pada langkah transformasi output pada proses
enkripsi di-
inverse
-kan dan digunakan sebagai
subkey
pada putaran 1 pada proses
dekripsi.
Subkey
pada putaran 8 di-
inverse
-kan dan digunakan sebagai
subkey
pada
putaran 1 dan 2 pada proses dekripsi. Demikian seterusnya.
(12)
1.6.
Tinjauan Pustaka
Dalam penelitian ini, peneliti memanfaatkan buku-buku yang dapat dipergunakan
untuk menjelaskan teori-teori pemecahan masalah atau dasar pemikiran untuk
menjelaskan masalah yang dibahas.
Salah satu sumbangan yang paling penting dari kriptografi kunci publik ialah
tanda tangan digital. Pada tahun 1991, standar internasional yang pertama untuk tanda
tangan digital yang dipergunakan ialah berdasarkan pada skema kunci publik RSA.
Pada tahun 1994 pemerintah Amerika Serikat mengadopsi standar tanda tangan digital
yang didasarkan pada mekanisme skema kunci publik
ElGamal
.
Pencarian terhadap skema kunci publik yang baru dengan pengembangan dari
mekanisme kriptografi yang sudah ada dan pembuktian keamanan berlangsung
dengan cepat. Berbagai standar dan infrastruktur yang berhubungan dengan
kriptografi sedang dibangun. Produk – produk keamanan sedang dikembangkan untuk
memenuhi kebutuhan akan keamanan informasi pada masyarakat.
Dorothy Elizabeth Robling Denning, 1982. dalam bukunya
“Cryptography
and Data Security”
, kriptografi adalah ilmu dan studi penulisan rahasia, dimana
plaintext
ditransformasikan menjadi
ciphertext
. Proses mengubah
plaintext
menjadi
ciphertext
disebut enkripsi dan proses kebalikan dari transformasi
ciphertext
menjadi
plaintext
disebut dekripsi.
Rinaldi Munir, 2006. dalam bukunya “Kriptografi”, menerangkan bahwa
kriptografi bertujuan untuk memberi layanan keamanan yang dimaksud sebagai
aspek-aspek keamanan yaitu : Kerahasiaan (
confidentiality
), Integritas Data (Data
(13)
BAB 2
LANDASAN TEORI
2.1.
Latar Belakang Kriptografi
2.1.1.
Sejarah Kriptografi
Sejarah kriptografi dimulai pertama sekali dengan menggunakan metode pertukaran
posisi untuk mengenkripsi suatu pesan. Dalam sejarah perkembangannya, Julius
Caesar dalam mengirimkan pesan yang dibawa oleh hulubalangnya, sengaja
mengacak pesan tersebut sebelum diberikan kepada kurir. Hal ini dilakukan untuk
menjaga kerahasiaan pesan baik bagi kurir maupun bagi musuh jika kurir tertangkap
di tengah jalan oleh musuh. Ada orang yang mengatakan bahwa apa yang dilakukan
oleh Julius Caesar dianggap sebagai awal dari kriptografi.
Dalam sebuah buku yang berjudul
The Codebreaker
yang dikarang oleh David
Kahn pada tahun 1963, disebutkan bahwa kriptografi digunakan pertama sekali oleh
bangsa Mesir 4000 tahun yang lalu sampai saat sekarang ini. Sejak munculnya buku
tersebut maka kriptografi pun mulai diperbincangkan secara luas. Peminat dari buku
tersebut ialah peminat yang berhubungan dengan kemiliteran, layanan diplomatik dan
pemerintahan. Kriptografi digunakan sebagai suatu alat untuk melindungi rahasia dan
strategi – strategi negara.
Sampai pada akhir Perang Dunia I, kriptografi merupakan disiplin ilmu
matematika yang spesial. Penelitian dalam bidang ini tidak pernah sampai kepada
umum sehingga tidaklah mengherankan kalau banyak orang tidak mengetahui
keberadaan ataupun manfaat darinya. Kemudian pada Perang Dunia II, pihak militer
pun mulai menyadari akan manfaat dari penggunaan kriptografi maupun kriptanalisis.
(14)
Kriptografi memungkinkan untuk berkomunikasi dalam saluran yang aman (misalnya
komunikasi melalui radio gelombang panjang) dengan cara membuatnya menjadi
tidak dapat dimengerti oleh musuh. Kriptografi mencapai kemajuan yang pesat pada
akhir Perang Dunia II. Akan tetapi kriptografi masih merupakan sesuatu yang sangat
rahasia karena kriptografi telah menjadi bagian yang penting dalam komunikasi
militer.
Perkembangan komputer dan sistem komunikasi pada tahun 1960-an
mengakibatkan munculnya kebutuhan pihak swasta akan alat untuk melindungi
informasi dalam bentuk digital dan untuk menyediakan layanan keamanan informasi.
Kriptografi digital dimulai pada tahun 1970 atas usaha
Feistel
dari IBM dan
memuncak pada tahun 1977 dengan diadopsinya sistem kriptografi DES (
Data
Encryption Standard
) oleh
U.S. Federal Information Processing Standard
untuk
mengenkripsi informasi rahasia. DES merupakan mekanisme kriptografi yang paling
terkenal dalam sejarah dan tetap menjadi standar pengamanan data elektronik
komersial pada kebanyakan institusi keuangan di seluruh dunia.
Perkembangan yang paling pesat dan berpengaruh dalam sejarah kriptografi
ialah pada tahun 1976 dimana Whitfield Diffie dan Martin Hellman mempublikasikan
sebuah tesis berjudul
New Direction in Cryptography
. Dalam tesis ini diperkenalkan
konsep kunci publik kriptografi yang paling revolusioner dan juga menyediakan
metode baru dalam pertukaran kunci, yaitu keamanan yang didasarkan atas logaritma
diskrit. Walaupun penulis tesis tersebut tidak mempunyai praktek yang nyata akan
bentuk skema enkripsi kunci publik pada saat itu akan tetapi ide tersebut memicu
minat dan aktivitas yang besar dalam komunitas kriptografi. Pada tahun 1978, Rivest,
Shamir, dan Adleman menemukan enkripsi kunci publik yang pertama dan sekarang
ini dikenal dengan nama RSA (
Rivest, Shamir, and Adleman
). Skema RSA didasarkan
pada permasalahan matematika sulit yang terdiri dari pemfaktoran terhadap bilangan
yang besar nilainya. Karena adanya permasalahan matematika tersebut maka muncul
usaha – usaha untuk mencari cara yang paling efisien dalam pemfaktoran bilangan.
Skema kunci publik lainnya yang kuat dan praktis ditemukan oleh
ElGamal
. Skema
ini juga berdasarkan masalah logaritma diskrit.
(15)
Salah satu sumbangan yang paling penting dari kriptografi kunci publik ialah
tanda tangan digital. Pada tahun 1991, standar internasional yang pertama untuk tanda
tangan digital yang dipergunakan ialah berdasarkan pada skema kunci publik RSA.
Pada tahun 1994 pemerintah Amerika Serikat mengadopsi standar tanda tangan digital
yang didasarkan pada mekanisme skema kunci publik
ElGamal
.
Pencarian terhadap skema kunci publik yang baru dengan pengembangan dari
mekanisme kriptografi yang sudah ada dan pembuktian keamanan berlangsung
dengan cepat. Berbagai standar dan infrastruktur yang berhubungan dengan
kriptografi sedang dibangun. Produk – produk keamanan sedang dikembangkan untuk
memenuhi kebutuhan akan keamanan informasi pada masyarakat.
2.1.2.
Definisi Kriptografi
Ada beberapa definisi yang telah dikemukakan di dalam berbagai literatur. Kata
kriptografi berasal dari bahasa Yunani yaitu
cryptos
yang berarti rahasia dan
graphein
yang berarti tulisan. Jadi kriptografi dapat dijelaskan secara harfiah sebagai tulisan
rahasia. 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. (John
Wiley & Sons. 1996)
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.
(16)
2.1.3.
Tujuan Kriptografi
Kriptografi sesungguhnya merupakan studi terhadap teknik matematis yang terkait
dengan 4 aspek keamanan dari suatu informasi yakni kerahasiaan (
confidentiality
),
integritas data (
data integrity
), otentikasi (
authentication
), dan ketiadaan
penyangkalan (
non-repudiation
). Keempat aspek tersebut merupakan tujuan utama
dari suatu sistem kriptografi yang dapat dijelaskan sebagai berikut,
1.
Kerahasiaan (
confidentiality
)
Kerahasiaan bertujuan untuk melindungi suatu informasi dari semua pihak yang
tidak berhak atas informasi tersebut. Terdapat beberapa cara yang dapat digunakan
untuk menjaga kerahasiaan suatu informasi, mulai dari penjagaan secara fisik
misalnya menyimpan data pada suatu tempat khusus sampai dengan penggunaan
algoritma matematika untuk mengubah bentuk informasi menjadi tidak terbaca.
2.
Integritas data (
data integrity
)
Integritas data bertujuan untuk mencegah terjadinya pengubahan informasi oleh
pihak-pihak yang tidak berhak atas informasi tersebut. Untuk menjamin integritas
data ini kita harus mempunyai kemampuan untuk mendeteksi terjadinya
manipulasi data oleh pihak-pihak yang tidak berkepentingan. Manipulasi data
yang dimaksud di sini meliputi penyisipan, penghapusan, maupun penggantian
data.
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.
(17)
2.2.
Aplikasi Kriptografi
Kriptografi telah banyak digunakan di dalam aplikasi-aplikasi khususnya aplikasi
pengamanan data pada saat sekarang ini. Aplikasi khas dari kriptografi adalah sistem
yang dikembangkan dengan teknik dasar. Sistem seperti ini, dapat memiliki tingkat
kompleksitas yang beraneka ragam. Beberapa aplikasi yang lebih sederhana antara
lain , komunikasi yang aman, identifikasi, otentikasi, dan
secret sharing
. Aplikasi
yang lebih rumit seperti sistem untuk
electronic commerce
(
e-commerce
), sertifikasi,
electronic mail
yang aman, penemuan kunci dan akses komputer yang aman. Secara
umum, makin sederhana aplikasi makin cepat menjadi realita.
2.2.1.
Komunikasi Aman (Secure Communication)
Komunikasi aman merupakan penggunaan kriptografi yang paling sederhana. Dua
pihak dapat berkomunikasi secara aman dengan cara mengenkripsi pesan-pesan yang
mereka kirimkan di antara mereka. Hal ini dapat dicapai sedemikian rupa sehingga
pihak ketiga yang mendapat bocoran (menyadap) pembicaraan antar kedua pihak tadi
mungkin tidak pernah mengembalikan pesan dalam bentuk acak ke dalam bentuk
yang berarti.
2.2.2.
Identifikasi dan Otentikasi (Identification and Authentication)
Identifikasi dan otentikasi merupakan dua aplikasi kriptografi yang sangat banyak
digunakan saat ini. Identifikasi adalah proses verifikasi identitas seseorang atau
sesuatu. Sebagai contoh, ketika menarik uang dari bank dengan menggunakan kartu
Automatic Teller Machine
(ATM) dilengkapi dengan satu
Personal Identification
Number
(PIN) yang rahasia yang memadukan pemilik kartu dengan kartu tersebut
demikian juga dengan rekening yang bersangkutan. Ketika kartu dimasukkan ke
dalam mesin ATM, mesin tersebut akan meminta pengguna kartu untuk memasukkan
PIN. Jika PIN yang dimasukkan benar, mesin akan mengidentifikasikan orang tersebut
benar sebagai pemilik kartu sehingga kepada orang tersebut akan diberikan akses.
(18)
Aplikasi penting lainnya dari kriptografi adalah otentikasi. Otentikasi mirip dengan
indetifikasi, dimana keduanya memberikan kesempatan untuk akses ke dalam sumber
daya tertentu misalnya
Internet Account
, tetapi otentikasi memiliki cakupan lebih luas
karena tidak perlu mengidentifikasikan orang atau
entity
.
2.2.3.
Secret Sharing
Secret Sharing
merupakan salah satu aplikasi dari kriptografi yang memungkinkan
pendistribusian satu rahasia di antara sekumpulan orang yang saling percaya. Sebagai
contoh, dalam
(k; n)-threshold scheme
, informasi tentang rahasia adalah
didistribusikan sedemikian rupa sehingga sembarang k dari n orang (k
≤
n) memiliki
informasi yang cukup untuk menentukan (mengetahui) rahasia tersebut, tetapi
sembarang set k - 1 orang tidak dapat melakukannya. 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).
2.2.4.
Sertifikasi (Certification)
Sertifikasi merupakan salah satu aplikasi lainnya dari kriptografi. Sertifikasi adalah
sebuah skema dimana pihak yang dipercayai seperti penguasa atau pihak yang
berwenang mengeluarkan sertifikat untuk pihak lain. Pihak yang dipercayai
mengeluarkan kupon (
vouchers
) yang disebut sertifikat yang memiliki sejumlah arti
yang mendalam, misalnya nomor ijazah. Teknologi sertifikasi dikembangkan untuk
identifikasi dan otentikasi dimungkinkan dalam skala besar.
(19)
2.2.5.
Penemuan Kunci (Key Recovery)
Penemuan kunci adalah suatu teknologi yang memungkinkan sebuah kunci ditemukan
dalam kondisi tertentu tanpa pemilik memberitahukan. Ini perlu untuk dua alasan,
pertama, jika pemilik kunci menghilangkan atau secara tidak sengaja menghapus
kuncinya, penemuan kunci dapat menghindarkan malapetaka. Kedua, jika aparat
penegakan hukum ingin mengetahui suatu tindak kriminal tanpa sepengetahuan
tersangka, aparat tersebut harus mampu mendapatkan kunci yang diinginkan. Teknik
penemuan kunci sudah banyak digunakan saat ini, akan tetapi, penggunaan teknik ini
dalam hal penegakan hukum telah menimbulkan kontroversi.
2.3.
Jenis Sistem Kriptografi
Berdasarkan pemakaian kunci maka sistem kriptografi (c
ryptosystems
) dapat
digolongkan atas atas 2 jenis sistem yakni sistem kriptografi kunci publik (
public key
cryptography
) dan sistem kriptografi kunci rahasia (
secret key cryptography
). Dalam
sistem kriptografi kunci rahasia yang dikenal juga dengan
symmetric cryptosystems
,
pihak pengirim dan penerima bersama-sama menyepakati sebuah kunci rahasia yang
akan digunakan dalam proses enkripsi dan dekripsi tanpa diketahui oleh pihak lain.
Sedangkan dalam sistem kriptografi kunci publik atau dikenal dengan
assymmetric
cryptosystem
, pihak pengirim maupun pihak penerima mendapatkan sepasang kunci
yakni kunci publik (
public key
) dan kunci rahasia (
private key
) dimana kunci publik
dipublikasikan dan kunci rahasia tetap dirahasiakan. Enkripsi dilakukan dengan
menggunakan kunci publik sedangkan dekripsi dilakukan dengan menggunakan kunci
rahasia.
(20)
2.4.
Landasan Matematis Kriptografi
2.4.1.
Aritmatika Modular
Aritmatika modular merupakan operasi matematika yang banyak diimplementasikan
pada metode kriptografi. Pada metoda IDEA, operasi aritmetika modular yang dipakai
adalah operasi penjumlahan modulo 2
16dan operasi perkalian modulo 2
16+ 1. Operasi
modulo ini melibatkan bilangan 0 dan 1 saja sehingga identik dengan bit pada
komputer. Contohnya,
(65530 + 10) mod 2
16= 65540 mod 65536 = 4
(32675 * 4) mod (2
16+ 1) = 131060 mod 65537 = 65523
2.4.2.
Inverse Perkalian
Inverse
perkalian yang digunakan pada metode IDEA tidak seperti
inverse
pada
operasi perkalian dalam matematika.
Inverse
perkalian ini tidak dapat dijelaskan
secara matematis, tetapi dengan menggunakan algoritma berikut ini :
Fungsi Inverse(A As Double) As Double n = 65537
G0 = n G1 = A V0 = 0 V1 = 1
While (G1 <> 0) Y = Int(G0 / G1) G2 = G0 - Y * G1 G0 = G1
G1 = G2
V2 = V0 - Y * V1 V0 = V1
V1 = V2 Wend
If (V0 >= 0) Then Inverse = V0 Else
(21)
Inverse = V0 + n End If
End Fungsi
Contoh, Misalkan untuk A = 3265, maka proses kerjanya adalah sebagai berikut :
n = 65537 G0 = 65537 G1 = 3265 V0 = 0 V1 = 1
While (3265 <> 0)
Y = Int(65537 / 3265) = 20 G2 = 65537 - 20 * 3265 = 237 G0 = 3267
G1 = 237
V2 = 0 - 20 * 1 = -20 V0 = 1
V1 = -20 Wend
If (1 >= 0) Then Inverse = 1 Else
Inverse= 1 + 65537 End If
End Fubgsi
Jadi
inverse
perkalian dari 3265 adalah 1
2.4.3.
Inverse Penjumlahan
Inverse
penjumlahan dalam metode IDEA menggunakan algoritma berikut ini :
Inverse
penjumlahan = 65536 - pnBil
(22)
2.4.4.
Operasi XOR
XOR adalah operasi
Exclusive
-OR yang dilambangkan dengan tanda “
⊕
”. Operasi
XOR akan menghasilkan nilai bit “0” (nol) jika meng-XOR-kan dua buah bit yang
sama nilainya dan akan menghasilkan nilai bit “1” (satu) jika meng-XOR-kan dua
buah bit yang masing – masing nilai bitnya berbeda. Aturan yang berlaku untuk
operasi XOR dapat dilihat pada Tabel 2.1 berikut ini,
Tabel 2.1 Aturan Operasi XOR
A
B
A ⊕ B
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.
P
⊕
K = C ; C
⊕
K = P
Keterangan,
P =
Plaintext
K =
Key
C =
Ciphertext
Berikut ini adalah contoh operasi XOR :
1101 0110 0001 0100
1000 0001 1110 0000 ⊕
0101 0111 1111 0100
(23)
2.4.5.
Permutasi (Permutation)
Permutasi merupakan suatu proses korespondensi dari satu ke banyak. Permutasi
dalam kriptografi sering digunakan untuk memindahkan posisi sejumlah
bit
ke posisi
yang telah ditentukan dalam tabel permutasi. Ada beberapa metode dalam kriptografi
yang menggunakan permutasi pada awal maupun akhir dari proses enkripsi maupun
dekripsi, dan ada juga metode yang menggunakan permutasi untuk menghasilkan
beberapa subkunci yang diperlukan dalam proses enkripsi dan dekripsi.
Berikut ini adalah contoh permutasi :
Misalkan terdapat sebuah tabel permutasi 16 bit sebagai berikut :
12
4
13
5
14
6
15
7
0
8
1
9
11
2
3
10
Diberikan 1 baris bit sebagai berikut : 1110 0110 0000 1001
Terhadap barisan bit tersebut akan dilakukan permutasi menggunakan tabel permutasi
sebagai berikut :
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
Hasil permutasi :
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
2.4.6.
Pergeseran Bit (Shift)
Pergeseran
bit
(
Shift
) adalah operasi pergeseran terhadap suatu barisan
bit
sebanyak
yang diinginkan.
Bit
kosong yang telah tergeser akan diberikan nilai
bit
“0” (nol).
Operasi pergeseran terbagi menjadi dua macam yaitu,
(24)
1.
Operasi Geser Kiri (
Shift Left
) yaitu operasi yang menggeser (
shift
) sejumlah
bit
ke kiri (
left
) dengan nilai
bit
“0” (nol). Operasi
shift left
dilambangkan dengan
“
<<
”. Contoh operasi
shift left
:
11000110 << 1 : 10001100
11000110 << 2 : 00011000
11000110 << 3 : 00110000
2.
Operasi Geser Kanan (
Shift Right
) yaitu operasi yang menggeser (
shift
) sejumlah
bit
ke kanan (
right
) dengan nilai
bit
“0” (nol). Operasi
shift right
dilambangkan
dengan “
>>
”. Contoh operasi
shift right
:
11000110 >> 1 : 01100011
11000110 >> 2 : 00110001
11000110 >> 3 : 00011000
2.4.7.
Rotasi Bit (Rotate)
Rotasi
bit
(
Rotate
) adalah operasi perputaran terhadap suatu barisan
bit
sebanyak yang
diinginkan.
Bit
yang tergeser akan dipindahkan ke sisi barisan
bit
yang berlawanan
dengan arah putaran
bit
. Operasi rotasi terbagi atas dua macam yaitu,
1.
Operasi Rotasi Kiri (
Rotate Left
) yaitu operasi memutar barisan
bit
ke kiri
sebanyak nilai yang diberikan secara per
bit
,
bit
kosong yang telah tergeser di
sebelah kanan akan digantikan dengan
bit
yang telah tergeser di sebelah kirinya.
Operasi
rotate left
dilambangkan dengan “
<<<
”. Contoh operasi
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 sebelah kanannya.
Operasi
rotate right
dilambangkan dengan “
>>>
”.Contoh operasi
rotate right
:
11000110 >>> 1 : 01100011
11000110 >>> 2 : 10110001
11000110 >>> 3 : 11011000
(25)
2.4.8.
Perkalian Modulo
Perkalian dengan nol selalu menghasilkan nol dan tidak memiliki invers. Perkalian
modulo n juga tidak memiliki invers jika angka yang dikalikan tidak relatif prima
terhadap n. Sementara algoritma kriptografi memerlukan operasi yang memiliki
inversi. Angka 65537 (2
16+ 1) adalah sebuah bilangan prima. Oleh karena itu, operasi
perkalian modulo (2
16+ 1) pada algoritma IDEA memiliki inversi. Jika kita
membentuk suatu tabel perkalian untuk bilangan-bilangan mulai dari 1 sampai 65536,
maka setiap baris dan kolom hanya berisi setiap bilangan satu kali saja.
Dalam IDEA, untuk operasi perkalian, bilangan 16
bit
yang terdiri dari nol
semua dianggap sebagai bilangan 65536, sedangkan bilangan lainnya tetap sesuai
dengan bilangan tak bertanda yang diwakilinya.
Contoh :
(32542 * 10) mod 65537 = 325420 mod 65537 = 63272
(3154 * 25) mod 65537 = 78850 mod 65537 = 13313
2.5.
Metoda IDEA
2.5.1.
Sejarah
Metoda IDEA diperkenalkan pertama kali oleh Xuejia Lai dan James Massey pada
tahun 1990 dengan nama PES (
Proposed Encryption Standard
). Tahun berikutnya,
setelah Biham dan Shamir mendemonstrasikan
cryptanalysis
yang berbeda, sang
penemu memperkuat algoritma mereka dari serangan dan algoritma hasil pengubahan
tersebut diberi nama IPES (
Improved Proposed Encryption Algorithm
). Kemudian
pada tahun 1992, IPES diganti namanya menjadi IDEA (
International Data
Encryption Algorithm
). IDEA dirancang untuk menggantikan DES (
Data Encryption
Standard
).
(26)
2.5.2.
Algoritma
IDEA merupakan
block cipher
(cipher blok), yang beroperasi pada blok
plaintext
64
bit
. Panjang kuncinya 128
bit
. Algoritma yang sama digunakan untuk proses enkripsi
dan dekripsi. Sebagaimana algoritma enkripsi yang lain, IDEA menggunakan
confusion
dan
diffusion
, berbeda dengan DES yang menggunakan permutasi dan
substitusi untuk
confusion
dan
diffusion
, IDEA menggunakan operasi aljabar yang
tidak kompatibel sebagai berikut,
a.
XOR.
b.
Penambahan modulo 2
16.
c.
Perkalian modulo 2
16+ 1 (operasi ini menggantikan kotak-S atau
S-Box
).
Algoritma IDEA menggunakan perkalian modulo 2
16+ 1 dengan pertimbangan
berikut ini,
Perkalian dengan nol selalu menghasilkan nol dan tidak memiliki inversi. Perkalian
modulo n juga tidak memiliki inversi jika angka yang dikalikan tidak relatif prima
terhadap n. Sementara algoritma kriptografi memerlukan operasi yang memiliki
inversi. Angka 65537 (2
16+ 1) adalah sebuah bilangan prima. Oleh karena itu, operasi
perkalian modulo (2
16+ 1) pada algoritma IDEA memiliki inversi. Jika kita
membentuk suatu tabel perkalian untuk bilangan-bilangan mulai dari 1 sampai 65536,
maka setiap baris dan kolom hanya berisi setiap bilangan satu kali saja.
Dalam IDEA, untuk operasi perkalian, bilangan 16
bit
yang terdiri dari nol
semua dianggap sebagai bilangan 65536, sedangkan bilangan lainnya tetap sesuai
dengan bilangan tak bertanda yang diwakilinya. Algoritma IDEA ini dapat dibagi
menjadi tiga bagian besar, yaitu algoritma pembentukan kunci, enkripsi dan dekripsi.
2.5.3. Pembentukan Kunci
Proses pembentukan ini dimulai dengan membagi 128
bit key
menjadi 8 buah 16
bit
subkey
. Ini merupakan delapan
subkey
pertama untuk algoritma dengan perincian
enam
subkey
pertama untuk putaran (
round
) 1 dan dua
subkey
terakhir untuk putaran
2.
Key
dirotasikan 25 bit ke kiri dan dibagi menjadi 8
subkey
lagi. Ini merupakan
(27)
delapan
subkey
kedua untuk algoritma dengan perincian empat
subkey
pertama untuk
putaran 2 dan empat
subkey
terakhir untuk putaran 3.
Algoritma hanya menggunakan
52 buah
subkey
dengan perincian 6 buah
subkey
untuk 8 putaran ditambah 4 buah
subkey
untuk transformasi output. Proses pembentukan kunci dapat dilihat pada
gambar 2.10 di bawah ini :
Kunci masukan 128 bit
k1 … k128
Diputar ke kiri 25 bit
k1 … k128
o
o
o
Diputar ke kiri 25 bit
k1 … k128
Dikelompokkan ke dalam 8 buah subkey dengan panjang 16 bit.
K1 K2 K3 K4 K5 K6 K7 K8
Dikelompokkan ke dalam 8 buah subkey dengan panjang 16 bit.
K1 K2 K3 K4 K5 K6 K7 K8
Dikelompokkan ke dalam 8 buah subkey dengan panjang 16 bit. 4 buah subkey terakhir tidak digunakan.
K1 K2 K3 K4 K5 K6 K7 K8
Round 1 K1 K2 K3 K4 K5 K6
Round 2 K1 K2
Round 2 K3 K4 K5 K6
Round 3 K1 K2 K3 K4
Transformasi Output
K1 K2 K3 K4
Gambar 2.10 Proses Pembentukan Kunci untuk IDEA
2.5.4. Enkripsi
Proses enkripsi algoritma IDEA adalah sebagai berikut,
Pertama – tama,
plaintext
64
bit
dibagi menjadi 4 buah sub blok dengan panjang 16
bit
, yaitu X1, X2, X3, X4. Empat sub blok ini menjadi masukan bagi iterasi tahap
pertama algoritma. Total terdapat 8 iterasi. Pada setiap iterasi, 4 sub blok di-XOR-kan,
(28)
ditambahkan, dikalikan dengan yang lain dan dengan 6 buah
subkey
16 bit. Diantara
iterasi sub blok kedua dan ketiga saling dipertukarkan. Akhirnya 4 buah sub blok
dikombinasikan dengan 4
subkey
dalam transformasi output. Pada setiap tahapan,
urutan berikut ini dikerjakan,
1.
Kalikan X1 dengan K1 mod (2
16+ 1).
2.
Tambahkan X2 dengan K2 mod 2
16.
3.
Tambahkan X3 dengan K3 mod 2
16.
4.
Kalikan X4 dengan K4 mod (2
16+ 1).
5.
XOR hasil dari step 1 dan 3.
6.
XOR hasil dari step 2 dan 4.
7.
Kalikan hasil dari step 5 dengan K5 mod (2
16+ 1).
8.
Tambahkan hasil dari step 6 dan 7 mod 2
16.
9.
Kalikan hasil dari step 8 dengan K6 mod (2
16+ 1).
10.
Tambahkan hasil dari step 7 dan 9.
11.
XOR hasil dari step 1 dan 9.
12.
XOR hasil dari step 3 dan 9.
13.
XOR hasil dari step 2 dan 10.
14.
XOR hasil dari step 4 dan 10.
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 (2
16+ 1).
2.
Tambahkan X2 dengan subkey K2 mod 2
16.
3.
Tambahkan X3 dengan subkey K3 mod 2
16.
4.
Kalikan X4 dengan subkey K4 mod (2
16+ 1).
(29)
X1 X2
K1(1) K2(1) K3(1) K4(1)
X3 X4
K5(1)
K6(1)
K1(9) K2(9) K3(9) K4(9)
Y1 Y2 Y3 Y4
Satu putaran / iterasi
(round)
Tujuh putaran / iterasi (round) lainnya
Transformasi Output
o
o
o
Gambar 2.11 Proses Enkripsi Algoritma IDEA
2.5.5.
Dekripsi
Proses dekripsi sama persis dengan proses enkripsi. Perbedaannya hanya terletak pada
aturan dari subkey-nya. Urutan
subkey
terbalik dengan proses enkripsi dan
subkey
-nya
di-
inverse
-kan.
Subkey
pada langkah transformasi output pada proses enkripsi
di-inverse
-kan dan digunakan sebagai
subkey
pada putaran 1 pada proses dekripsi.
(30)
dan 2 pada proses dekripsi. Demikian seterusnya. Agar lebih jelas, lihatlah tabel
berikut ini.
Tabel 2.2 Subkey enkripsi dan dekripsi algoritma IDEA
Round Subkey Enkripsi Subkey Dekripsi
1 K1(1) K2(1) K3(1) K4(1) K5(1) K6(1) K1(9)-1
-
K2(9) -K3(9) K4(9)-1 K5(8) K6(8)2 K1(2) K2(2) K3(2) K4(2) K5(2) K6(2) K1(8)-1 -K3(8) -K2(8) K4(8)-1 K5(7) K6(7)
3 K1(3) K2(3) K3(3) K4(3) K5(3) K6(3) K1(7)-1 -K3(7) -K2(7) K4(7)-1 K5(6) K6(6)
4 K1(4) K2(4) K3(4) K4(4) K5(4) K6(4) K1(6)-1 -K3(6) -K2(6) K4(6)-1 K5(5) K6(5)
5 K1(5) K2(5) K3(5) K4(5) K5(5) K6(5) K1(5)-1 -K3(5) -K2(5) K4(5)-1 K5(4) K6(4)
6 K1(6) K2(6) K3(6) K4(6) K5(6) K6(6) K1(4)-1 -K3(4) -K2(4) K4(4)-1 K5(3) K6(3)
7 K1(7) K2(7) K3(7) K4(7) K5(7) K6(7) K1(3)-1 -K3(3) -K2(3) K4(3)-1 K5(2) K6(2)
8 K1(8) K2(8) K3(8) K4(8) K5(8) K6(8) K1(2)-1 -K3(2) -K2(2) K4(2)-1 K5(1) K6(1)
Transformasi
output K1(9) K2(9) K3(9) K4(9) K1(1)
-1
-K2(1) -K3(1) K4(1)-1
2.6.
Perangkat Lunak
Seiring dengan perkembangan peradaban manusia dan kemajuan pesat di bidang
teknologi, tanpa disadari komputer telah ikut berperan dalam dunia pendidikan
terutama penggunaannya sebagai alat bantu pengajaran. Percobaan penggunaan
komputer untuk proses belajar dimulai di Amerika Serikat pada akhir tahun 1950-an
dan awal tahun 1960-an. Kemudian penelitian selanjutnya dilakukan oleh Harvard
University bekerja sama dengan IBM pada tahun 1965. Setelah munculnya komputer
mikro, sistem pengajaran dengan komputer menjadi semakin meluas pada
pengembangan aplikasi perangkat lunak ajar yang dikenal dengan istilah perangkat
lunak pembelajaran. Perangkat lunak pembelajaran dengan komputer muncul dari
sejumlah disiplin ilmu, terutama ilmu komputer dan psikologi. Dari ilmu komputer
dan matematika muncul program – program yang membuat semua perhitungan dan
fungsi lebih mudah dan bermanfaat. Sedangkan dari ilmu psikologi muncul
pengetahuan mengenai teori belajar, teknik belajar, serta motivasi yang baik.
(31)
2.6.1.
Tujuan Perangkat Lunak
Tujuan dari perangkat lunak, antara lain :
1.
Peningkatan pengawasan
2.
Penggunaan sumber daya
3.
Individualisasi
4.
Ketepatan waktu dan tingkat ketersediaan
5.
Pengurangan waktu latihan
6.
Perbaikan hasil kerja
7.
Alat yang nyaman dipakai
8.
Pengganti cara belajar
9.
Peningkatan kepuasan belajar
10.
Pengurangan waktu pengembangan
2.6.2.
Langkah-Langkah Pengembangan Perangkat Lunak
Ada 5 tahap siklus pengembangan perangkat lunak pembelajaran yaitu :
1.
Pengembangan spesifikasi perancangan detail
Tujuan dari pengembangan spesifikasi perancangan detail ini meliputi perluasan
konsep perancangan untuk menciptakan suatu rencana yang efektif.
2.
Pengembangan teknik
Pengembangan ini biasanya dilakukan dengan persetujuan dari tim perancang.
Tahap ini biasanya akan diulang-ulang dan sering terjadi perbaikan.
3.
Evaluasi
Untuk menghasilkan suatu perangkat lunak pembelajaran yang dapat memenuhi
standar maka perlu dilakukan suatu pengujian. Pengujian biasanya dilakukan pada
bagian pelajaran dan pelatihan. Hasil dari pengujian inilah yang dievaluasi oleh
tim perancang.
4.
Produksi dan pengembangan
Produksi ini harus dilakukan secara teknis dan logis dalam pembuatan
dokumentasi. Sedangkan pengembangan yang dilakukan mengacu pada proses
pengembangannya.
(32)
5.
Evaluasi akhir
Langkah pengujian yang dapat dilakukan misalnya dengan melakukan suatu
kuisioner maupun konsultasi dengan mereka yang ingin belajar. Hasilnya dapat
menjadi pedoman apakah perangkat lunak pembelajaran tersebut perlu dilakukan
perbaikan lagi atau tidak.
(33)
BAB 3
PEMBAHASAN DAN PERANCANGAN
3.1.
Pembahasan
3.1.1.
Persyaratan Perangkat Lunak
Perangkat lunak pembelajaran metode kriptografi IDEA memiliki persyaratan sebagai
berikut :
1.
Perangkat lunak cukup menerima
plaintext
sepanjang 8 karakter dan kunci
sepanjang 16 karakter.
2.
Perangkat lunak harus dapat menampilkan tahapan-tahapan proses
pembentukan kunci, enkripsi dan dekripsi.
3.
Perangkat lunak akan menyediakan teori-teori dasar mengenai metode IDEA.
4.
Kecepatan visualisasi proses pada perangkat lunak dapat disesuaikan dengan
cepat lambatnya daya tangkap
user
.
5.
Perangkat lunak harus dapat menampilkan tahapan proses perhitungan dalam
biner dan heksadesimal.
6.
User
diasumsikan telah memahami dasar matematika kriptografi seperti
operasi XOR, perkalian modulo, penjumlahan modulo,
Left Rotate
, dan
konversi antar basis bilangan dan konversi dari bilangan ke
ASCII Code
yaitu
mencakup biner ke desimal, heksadesimal ke desimal, biner ke heksadesimal,
biner ke
ASCII Code
, heksadesimal ke
ASCII Code
dan sebaliknya.
(34)
3.1.2.
Pembahasan Proses IDEA
Proses penyelesaian metoda kriptografi IDEA ini dapat dibagi menjadi 3 tahapan
yaitu:
1.
Proses Pembentukan Kunci.
2.
Proses Enkripsi.
3.
Proses Dekripsi.
3.1.2.1.
Proses Pembentukan Kunci
Metoda IDEA memiliki
input
128 bit kunci (
key
) yang identik dengan 32 digit
heksadesimal ataupun 16 karakter yang diproses untuk menghasilkan 52 buah
subkey
dengan perincian masing-masing 6 buah
subkey
akan digunakan pada 8 putaran dan 4
buah
subkey
untuk transformasi output.
Untuk lebih memahami proses pembentukan kunci pada metoda IDEA,
diberikan sebuah contoh berikut ini.
Misalkan :
Input
kunci = wayyantonosaings
Proses pembentukan kuncinya adalah sebagai berikut :
KUNCI ENKRIPSI
---
************* PUTARAN - 1 ************* INPUT KUNCI :
011101110110000101111001011110010110000101101110011101000110111101101 11001101111011100110110000101101001011011100110011101110011
Pecah menjadi 8 kelompok :
KE1 (Putaran 1) = 0111011101100001 KE2 (Putaran 1) = 0111100101111001 KE3 (Putaran 1) = 0110000101101110 KE4 (Putaran 1) = 0111010001101111 KE5 (Putaran 1) = 0110111001101111 KE6 (Putaran 1) = 0111001101100001 KE1 (Putaran 2) = 0110100101101110 KE2 (Putaran 2) = 0110011101110011
************* PUTARAN - 2 *************
(35)
rotasi kiri
(01110111011000010111100101111001011000010110111001110100011011110110 111001101111011100110110000101101001011011100110011101110011, 25) = 111100101100001011011100111010001101111011011100110111101110011011000 01011010010110111001100111011100110111011101100001011110010
Pecah menjadi 8 kelompok :
KE3 (Putaran 2) = 1111001011000010 KE4 (Putaran 2) = 1101110011101000 KE5 (Putaran 2) = 1101111011011100 KE6 (Putaran 2) = 1101111011100110 KE1 (Putaran 3) = 1100001011010010 KE2 (Putaran 3) = 1101110011001110 KE3 (Putaran 3) = 1110011011101110 KE4 (Putaran 3) = 1100001011110010
************* PUTARAN - 3 ************* rotasi kiri
(11110010110000101101110011101000110111101101110011011110111001101100 001011010010110111001100111011100110111011101100001011110010, 25) = 110100011011110110111001101111011100110110000101101001011011100110011 10111001101110111011000010111100101111001011000010110111001
Pecah menjadi 8 kelompok :
KE5 (Putaran 3) = 1101000110111101 KE6 (Putaran 3) = 1011100110111101 KE1 (Putaran 4) = 1100110110000101 KE2 (Putaran 4) = 1010010110111001 KE3 (Putaran 4) = 1001110111001101 KE4 (Putaran 4) = 1101110110000101 KE5 (Putaran 4) = 1110010111100101 KE6 (Putaran 4) = 1000010110111001
************* PUTARAN - 4 ************* rotasi kiri
(11010001101111011011100110111101110011011000010110100101101110011001 110111001101110111011000010111100101111001011000010110111001, 25) = 011110111001101100001011010010110111001100111011100110111011101100001 01111001011110010110000101101110011101000110111101101110011
Pecah menjadi 8 kelompok :
KE1 (Putaran 5) = 0111101110011011 KE2 (Putaran 5) = 0000101101001011 KE3 (Putaran 5) = 0111001100111011 KE4 (Putaran 5) = 1001101110111011 KE5 (Putaran 5) = 0000101111001011 KE6 (Putaran 5) = 1100101100001011 KE1 (Putaran 6) = 0111001110100011 KE2 (Putaran 6) = 0111101101110011
************* PUTARAN - 5 ************* rotasi kiri
(01111011100110110000101101001011011100110011101110011011101110110000 101111001011110010110000101101110011101000110111101101110011, 25) =
(36)
100101101110011001110111001101110111011000010111100101111001011000010 11011100111010001101111011011100110111101110011011000010110
Pecah menjadi 8 kelompok :
KE3 (Putaran 6) = 1001011011100110 KE4 (Putaran 6) = 0111011100110111 KE5 (Putaran 6) = 0111011000010111 KE6 (Putaran 6) = 1001011110010110 KE1 (Putaran 7) = 0001011011100111 KE2 (Putaran 7) = 0100011011110110 KE3 (Putaran 7) = 1110011011110111 KE4 (Putaran 7) = 0011011000010110
************* PUTARAN - 6 ************* rotasi kiri
(10010110111001100111011100110111011101100001011110010111100101100001 011011100111010001101111011011100110111101110011011000010110, 25) = 011011101110110000101111001011110010110000101101110011101000110111101 10111001101111011100110110000101101001011011100110011101110
Pecah menjadi 8 kelompok :
KE5 (Putaran 7) = 0110111011101100 KE6 (Putaran 7) = 0010111100101111 KE1 (Putaran 8) = 0010110000101101 KE2 (Putaran 8) = 1100111010001101 KE3 (Putaran 8) = 1110110111001101 KE4 (Putaran 8) = 1110111001101100 KE5 (Putaran 8) = 0010110100101101 KE6 (Putaran 8) = 1100110011101110
************* PUTARAN - 7 ************* rotasi kiri
(01101110111011000010111100101111001011000010110111001110100011011110 110111001101111011100110110000101101001011011100110011101110, 25) = 010111100101100001011011100111010001101111011011100110111101110011011 00001011010010110111001100111011100110111011101100001011110
Pecah menjadi 8 kelompok (4 kelompok terakhir tidak digunakan) : KE1 (Transformasi Output) = 0101111001011000
KE2 (Transformasi Output) = 0101101110011101 KE3 (Transformasi Output) = 0001101111011011 KE4 (Transformasi Output) = 1001101111011100 KUNCI DEKRIPSI
---
KD1(Putaran 1) = Inverse(KE1-Putaran9) = 0011110110000100 KD2(Putaran 1) = Minus(KE2-Putaran9) = 1110111110111000 KD3(Putaran 1) = Minus(KE3-Putaran9) = 1110110110101111 KD4(Putaran 1) = Inverse(KE4-Putaran9) = 0000001010110111 KD5(Putaran 1) = (KE5-Putaran8) = 0000100011001000
(37)
KD1(Putaran 2) = Inverse(KE1-Putaran8) = 1111101000010101 KD2(Putaran 2) = Minus(KE3-Putaran8) = 1101011101111000 KD3(Putaran 2) = Minus(KE2-Putaran8) = 1101101111110111 KD4(Putaran 2) = Inverse(KE4-Putaran8) = 1001011100110100 KD5(Putaran 2) = (KE5-Putaran7) = 0010100110101000
KD6(Putaran 2) = (KE6-Putaran7) = 1010101010001001
KD1(Putaran 3) = Inverse(KE1-Putaran7) = 0011111111010101 KD2(Putaran 3) = Minus(KE3-Putaran7) = 1011101110101100 KD3(Putaran 3) = Minus(KE2-Putaran7) = 1111101101101100 KD4(Putaran 3) = Inverse(KE4-Putaran7) = 0100010100111000 KD5(Putaran 3) = (KE5-Putaran6) = 1101010001010101
KD6(Putaran 3) = (KE6-Putaran6) = 0100010011110100
KD1(Putaran 4) = Inverse(KE1-Putaran6) = 1000101001110000 KD2(Putaran 4) = Minus(KE3-Putaran6) = 1001101110101011 KD3(Putaran 4) = Minus(KE2-Putaran6) = 1011010111011110 KD4(Putaran 4) = Inverse(KE4-Putaran6) = 1010001011101010 KD5(Putaran 4) = (KE5-Putaran5) = 0010101010100010
KD6(Putaran 4) = (KE6-Putaran5) = 0111101000100010
KD1(Putaran 5) = Inverse(KE1-Putaran5) = 0101110011001110 KD2(Putaran 5) = Minus(KE3-Putaran5) = 1101010101101110 KD3(Putaran 5) = Minus(KE2-Putaran5) = 1111110111001110 KD4(Putaran 5) = Inverse(KE4-Putaran5) = 0110110010001011 KD5(Putaran 5) = (KE5-Putaran4) = 0101000100111101
KD6(Putaran 5) = (KE6-Putaran4) = 0001000100000100
KD1(Putaran 6) = Inverse(KE1-Putaran4) = 0001010011011111 KD2(Putaran 6) = Minus(KE3-Putaran4) = 1011011011011011 KD3(Putaran 6) = Minus(KE2-Putaran4) = 1110011011101011 KD4(Putaran 6) = Inverse(KE4-Putaran4) = 0001001000101110 KD5(Putaran 6) = (KE5-Putaran3) = 1000000100100101
KD6(Putaran 6) = (KE6-Putaran3) = 0001000100010101
KD1(Putaran 7) = Inverse(KE1-Putaran3) = 0000101101110011 KD2(Putaran 7) = Minus(KE3-Putaran3) = 0110110101100110 KD3(Putaran 7) = Minus(KE2-Putaran3) = 0111010101011100 KD4(Putaran 7) = Inverse(KE4-Putaran3) = 1101010011001000 KD5(Putaran 7) = (KE5-Putaran2) = 1001001010001000
(38)
KD6(Putaran 7) = (KE6-Putaran2) = 1000101010000010
KD1(Putaran 8) = Inverse(KE1-Putaran2) = 0100000011001111 KD2(Putaran 8) = Minus(KE3-Putaran2) = 0110000101111000 KD3(Putaran 8) = Minus(KE2-Putaran2) = 1010110110110111 KD4(Putaran 8) = Inverse(KE4-Putaran2) = 0100000111010110 KD5(Putaran 8) = (KE5-Putaran1) = 0100010001000101
KD6(Putaran 8) = (KE6-Putaran1) = 0100000100100000
KD1(Putaran 9) = Inverse(KE1-Putaran1) = 0011001101110101 KD2(Putaran 9) = Minus(KE2-Putaran1) = 1010101110110001 KD3(Putaran 9) = Minus(KE3-Putaran1) = 1011101110111111 KD4(Putaran 9) = Inverse(KE4-Putaran1) = 0111110001000101
3.1.2.2.
Proses Enkripsi
Proses enkripsi dari metoda IDEA terdiri dari 8 iterasi (putaran) ditambah satu putaran
transformasi output. Proses ini memiliki
input
data
plaintext
64 bit yang identik
dengan 16 digit heksadesimal atau 8 karakter.
Proses enkripsi dari metoda IDEA dapat dilihat pada contoh berikut ini.
Misalkan
plaintext
= ‘facebook’ dengan kunci yang dihasilkan di atas, maka proses
enkripsinya adalah sebagai berikut :
PROSES ENKRIPSI ************* PUTARAN - 1 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0110011001100001 * 0011000100110000 mod (2^16 + 1) = 1010111110000101
02) L#2 = (X2 + K2) mod 2^16 = 0110001101100101 + 0011000000110001 mod 2^16 = 1001001110010110
03) L#3 = (X3 + K3) mod 2^16 = 0110001001101111 + 0011000100110000 mod 2^16 = 1001001110011111
04) L#4 = (X4 * K4) mod (2^16 + 1) = 0110111101101011 * 0011000100110001 mod (2^16 + 1) = 1011100100010011
05) L#5 = L#1 XOR L#3 = 1010111110000101 XOR 1001001110011111 = 0011110000011010
(39)
06) L#6 = L#2 XOR L#4 = 1001001110010110 XOR 1011100100010011 = 0010101010000101
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0011110000011010 * 0011000100110001 mod (2^16 + 1) = 0110111101101110
08) L#8 = (L#6 + L#7)) mod 2^16 = 0010101010000101 + 0110111101101110 mod 2^16 = 1001100111110011
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 1001100111110011 * 0011000000110001 mod (2^16 + 1) = 1110101010001001
10) L#10 = (L#7 + L#9)) mod 2^16 = 0110111101101110 + 1110101010001001 mod 2^16 = 0101100111110111
11) L#11 = L#1 XOR L#9 = 1010111110000101 XOR 1110101010001001 = 0100010100001100
12) L#12 = L#3 XOR L#9 = 1001001110011111 XOR 1110101010001001 = 0111100100010110
13) L#13 = L#2 XOR L#10 = 1001001110010110 XOR 0101100111110111 = 1100101001100001
14) L#14 = L#4 XOR L#10 = 1011100100010011 XOR 0101100111110111 = 1110000011100100
Untuk putaran berikutnya : X1 = L#11 = 0100010100001100 X2 = L#12 = 0111100100010110 X3 = L#13 = 1100101001100001 X4 = L#14 = 1110000011100100
************* PUTARAN - 2 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0100010100001100 * 0011000100110001 mod (2^16 + 1) = 0111011000001000
02) L#2 = (X2 + K2) mod 2^16 = 0111100100010110 + 0011000000110000 mod 2^16 = 1010100101000110
03) L#3 = (X3 + K3) mod 2^16 = 1100101001100001 + 0110001001100010 mod 2^16 = 0010110011000011
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1110000011100100 * 0110000001100010 mod (2^16 + 1) = 0100001010011101
05) L#5 = L#1 XOR L#3 = 0111011000001000 XOR 0010110011000011 = 0101101011001011
06) L#6 = L#2 XOR L#4 = 1010100101000110 XOR 0100001010011101 = 1110101111011011
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0101101011001011 * 0110001001100010 mod (2^16 + 1) = 0101010011010010
08) L#8 = (L#6 + L#7)) mod 2^16 = 1110101111011011 + 0101010011010010 mod 2^16 = 0100000010101101
(40)
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 0100000010101101 * 0110001001100000 mod (2^16 + 1) = 0110001000000110
10) L#10 = (L#7 + L#9)) mod 2^16 = 0101010011010010 + 0110001000000110 mod 2^16 = 1011011011011000
11) L#11 = L#1 XOR L#9 = 0111011000001000 XOR 0110001000000110 = 0001010000001110
12) L#12 = L#3 XOR L#9 = 0010110011000011 XOR 0110001000000110 = 0100111011000101
13) L#13 = L#2 XOR L#10 = 1010100101000110 XOR 1011011011011000 = 0001111110011110
14) L#14 = L#4 XOR L#10 = 0100001010011101 XOR 1011011011011000 = 1111010001000101
Untuk putaran berikutnya : X1 = L#11 = 0001010000001110 X2 = L#12 = 0100111011000101 X3 = L#13 = 0001111110011110 X4 = L#14 = 1111010001000101
************* PUTARAN - 3 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0001010000001110 * 0110001001100010 mod (2^16 + 1) = 0000000110100111
02) L#2 = (X2 + K2) mod 2^16 = 0100111011000101 + 0110001001100000 mod 2^16 = 1011000100100101
03) L#3 = (X3 + K3) mod 2^16 = 0001111110011110 + 0110000001100010 mod 2^16 = 1000000000000000
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1111010001000101 * 0110000001100000 mod (2^16 + 1) = 0001110111101011
05) L#5 = L#1 XOR L#3 = 0000000110100111 XOR 1000000000000000 = 1000000110100111
06) L#6 = L#2 XOR L#4 = 1011000100100101 XOR 0001110111101011 = 1010110011001110
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 1000000110100111 * 1100010011000100 mod (2^16 + 1) = 1011110000110110
08) L#8 = (L#6 + L#7)) mod 2^16 = 1010110011001110 + 1011110000110110 mod 2^16 = 0110100100000100
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 0110100100000100 * 1100010011000100 mod (2^16 + 1) = 0010011001011001
10) L#10 = (L#7 + L#9)) mod 2^16 = 1011110000110110 + 0010011001011001 mod 2^16 = 1110001010001111
11) L#11 = L#1 XOR L#9 = 0000000110100111 XOR 0010011001011001 = 0010011111111110
(41)
12) L#12 = L#3 XOR L#9 = 1000000000000000 XOR 0010011001011001 = 1010011001011001
13) L#13 = L#2 XOR L#10 = 1011000100100101 XOR 1110001010001111 = 0101001110101010
14) L#14 = L#4 XOR L#10 = 0001110111101011 XOR 1110001010001111 = 1111111101100100
Untuk putaran berikutnya : X1 = L#11 = 0010011111111110 X2 = L#12 = 1010011001011001 X3 = L#13 = 0101001110101010 X4 = L#14 = 1111111101100100
************* PUTARAN - 4 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0010011111111110 * 1100000011000100 mod (2^16 + 1) = 0000000001011011
02) L#2 = (X2 + K2) mod 2^16 = 1010011001011001 + 1100010011000100 mod 2^16 = 0110101100011101
03) L#3 = (X3 + K3) mod 2^16 = 0101001110101010 + 1100000011000000 mod 2^16 = 0001010001101010
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1111111101100100 * 1100010011000000 mod (2^16 + 1) = 0101011010111001
05) L#5 = L#1 XOR L#3 = 0000000001011011 XOR 0001010001101010 = 0001010000110001
06) L#6 = L#2 XOR L#4 = 0110101100011101 XOR 0101011010111001 = 0011110110100100
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0001010000110001 * 1100000011000100 mod (2^16 + 1) = 0010011001010000
08) L#8 = (L#6 + L#7)) mod 2^16 = 0011110110100100 + 0010011001010000 mod 2^16 = 0110001111110100
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 0110001111110100 * 1100010011000000 mod (2^16 + 1) = 0111101000101111
10) L#10 = (L#7 + L#9)) mod 2^16 = 0010011001010000 + 0111101000101111 mod 2^16 = 1010000001111111
11) L#11 = L#1 XOR L#9 = 0000000001011011 XOR 0111101000101111 = 0111101001110100
12) L#12 = L#3 XOR L#9 = 0001010001101010 XOR 0111101000101111 = 0110111001000101
13) L#13 = L#2 XOR L#10 = 0110101100011101 XOR 1010000001111111 = 1100101101100010
14) L#14 = L#4 XOR L#10 = 0101011010111001 XOR 1010000001111111 = 1111011011000110
(42)
Untuk putaran berikutnya : X1 = L#11 = 0111101001110100 X2 = L#12 = 0110111001000101 X3 = L#13 = 1100101101100010 X4 = L#14 = 1111011011000110
************* PUTARAN - 5 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0111101001110100 * 1000100110000001 mod (2^16 + 1) = 1000011010101111
02) L#2 = (X2 + K2) mod 2^16 = 0110111001000101 + 1000100110001001 mod 2^16 = 1111011111001110
03) L#3 = (X3 + K3) mod 2^16 = 1100101101100010 + 1000100110000001 mod 2^16 = 0101010011100011
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1111011011000110 * 1000000110001001 mod (2^16 + 1) = 0101100100011001
05) L#5 = L#1 XOR L#3 = 1000011010101111 XOR 0101010011100011 = 1101001001001100
06) L#6 = L#2 XOR L#4 = 1111011111001110 XOR 0101100100011001 = 1010111011010111
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 1101001001001100 * 1000000110000001 mod (2^16 + 1) = 1101100111101011
08) L#8 = (L#6 + L#7)) mod 2^16 = 1010111011010111 + 1101100111101011 mod 2^16 = 1000100011000010
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 1000100011000010 * 1000100110001001 mod (2^16 + 1) = 1011100001011010
10) L#10 = (L#7 + L#9)) mod 2^16 = 1101100111101011 + 1011100001011010 mod 2^16 = 1001001001000101
11) L#11 = L#1 XOR L#9 = 1000011010101111 XOR 1011100001011010 = 0011111011110101
12) L#12 = L#3 XOR L#9 = 0101010011100011 XOR 1011100001011010 = 1110110010111001
13) L#13 = L#2 XOR L#10 = 1111011111001110 XOR 1001001001000101 = 0110010110001011
14) L#14 = L#4 XOR L#10 = 0101100100011001 XOR 1001001001000101 = 1100101101011100
Untuk putaran berikutnya : X1 = L#11 = 0011111011110101 X2 = L#12 = 1110110010111001 X3 = L#13 = 0110010110001011 X4 = L#14 = 1100101101011100
************* PUTARAN - 6
(43)
*************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0011111011110101 * 1000000110001001 mod (2^16 + 1) = 0000011001000010
02) L#2 = (X2 + K2) mod 2^16 = 1110110010111001 + 1000100110001001 mod 2^16 = 0111011001000010
03) L#3 = (X3 + K3) mod 2^16 = 0110010110001011 + 0001001100010011 mod 2^16 = 0111100010011110
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1100101101011100 * 0000001100000011 mod (2^16 + 1) = 0111001110110000
05) L#5 = L#1 XOR L#3 = 0000011001000010 XOR 0111100010011110 = 0111111011011100
06) L#6 = L#2 XOR L#4 = 0111011001000010 XOR 0111001110110000 = 0000010111110010
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0111111011011100 * 0001001100000011 mod (2^16 + 1) = 1100011100101001
08) L#8 = (L#6 + L#7)) mod 2^16 = 0000010111110010 + 1100011100101001 mod 2^16 = 1100110100011011
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 1100110100011011 * 0000001100010011 mod (2^16 + 1) = 1000011110001011
10) L#10 = (L#7 + L#9)) mod 2^16 = 1100011100101001 + 1000011110001011 mod 2^16 = 0100111010110100
11) L#11 = L#1 XOR L#9 = 0000011001000010 XOR 1000011110001011 = 1000000111001001
12) L#12 = L#3 XOR L#9 = 0111100010011110 XOR 1000011110001011 = 1111111100010101
13) L#13 = L#2 XOR L#10 = 0111011001000010 XOR 0100111010110100 = 0011100011110110
14) L#14 = L#4 XOR L#10 = 0111001110110000 XOR 0100111010110100 = 0011110100000100
Untuk putaran berikutnya : X1 = L#11 = 1000000111001001 X2 = L#12 = 1111111100010101 X3 = L#13 = 0011100011110110 X4 = L#14 = 0011110100000100
************* PUTARAN - 7 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 1000000111001001 * 0001001100000011 mod (2^16 + 1) = 0110011010111000
02) L#2 = (X2 + K2) mod 2^16 = 1111111100010101 + 0001001100010011 mod 2^16 = 0001001000101000
03) L#3 = (X3 + K3) mod 2^16 = 0011100011110110 + 0001001100010011 mod 2^16 = 0100110000001001
(44)
04) L#4 = (X4 * K4) mod (2^16 + 1) = 0011110100000100 * 0000001100010011 mod (2^16 + 1) = 1001001010010001
05) L#5 = L#1 XOR L#3 = 0110011010111000 XOR 0100110000001001 = 0010101010110001
06) L#6 = L#2 XOR L#4 = 0001001000101000 XOR 1001001010010001 = 1000000010111001
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0010101010110001 * 0000011000100110 mod (2^16 + 1) = 0111101101000000
08) L#8 = (L#6 + L#7)) mod 2^16 = 1000000010111001 + 0111101101000000 mod 2^16 = 1111101111111001
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 1111101111111001 * 0000011000000110 mod (2^16 + 1) = 1011011111101001
10) L#10 = (L#7 + L#9)) mod 2^16 = 0111101101000000 + 1011011111101001 mod 2^16 = 0011001100101001
11) L#11 = L#1 XOR L#9 = 0110011010111000 XOR 1011011111101001 = 1101000101010001
12) L#12 = L#3 XOR L#9 = 0100110000001001 XOR 1011011111101001 = 1111101111100000
13) L#13 = L#2 XOR L#10 = 0001001000101000 XOR 0011001100101001 = 0010000100000001
14) L#14 = L#4 XOR L#10 = 1001001010010001 XOR 0011001100101001 = 1010000110111000
Untuk putaran berikutnya : X1 = L#11 = 1101000101010001 X2 = L#12 = 1111101111100000 X3 = L#13 = 0010000100000001 X4 = L#14 = 1010000110111000
************* PUTARAN - 8 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 1101000101010001 * 0010011000100110 mod (2^16 + 1) = 1111100011010110
02) L#2 = (X2 + K2) mod 2^16 = 1111101111100000 + 0000011000100110 mod 2^16 = 0000001000000110
03) L#3 = (X3 + K3) mod 2^16 = 0010000100000001 + 0010011000100110 mod 2^16 = 0100011100100111
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1010000110111000 * 0010011000000110 mod (2^16 + 1) = 0000001001001011
05) L#5 = L#1 XOR L#3 = 1111100011010110 XOR 0100011100100111 = 1011111111110001
06) L#6 = L#2 XOR L#4 = 0000001000000110 XOR 0000001001001011 = 0000000001001101
(45)
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 1011111111110001 * 0010011000100110 mod (2^16 + 1) = 0010011100101100
08) L#8 = (L#6 + L#7)) mod 2^16 = 0000000001001101 + 0010011100101100 mod 2^16 = 0010011101111001
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 0010011101111001 * 0010011000000110 mod (2^16 + 1) = 1101110011111010
10) L#10 = (L#7 + L#9)) mod 2^16 = 0010011100101100 + 1101110011111010 mod 2^16 = 0000010000100110
11) L#11 = L#1 XOR L#9 = 1111100011010110 XOR 1101110011111010 = 0010010000101100
12) L#12 = L#3 XOR L#9 = 0100011100100111 XOR 1101110011111010 = 1001101111011101
13) L#13 = L#2 XOR L#10 = 0000001000000110 XOR 0000010000100110 = 0000011000100000
14) L#14 = L#4 XOR L#10 = 0000001001001011 XOR 0000010000100110 = 0000011001101101
Untuk transformasi output : X1 = L#11 = 0010010000101100 X2 = L#13 = 0000011000100000 X3 = L#12 = 1001101111011101 X4 = L#14 = 0000011001101101
*********************** TRANSFORMASI OUTPUT ***********************
01) Y1 = (X1 * K1) mod (2^16 + 1) = 0010010000101100 * 0000110001001100 mod (2^16 + 1) = 1100101101010100
02) Y2 = (X2 + K2) mod 2^16 = 0000011000100000 + 0100110000001100 mod 2^16 = 0101001000101100
03) Y3 = (X3 + K3) mod 2^16 = 1001101111011101 + 0100110001001100 mod 2^16 = 1110100000101001
04) Y4 = (X4 * K4) mod (2^16 + 1) = 0000011001101101 * 0100110001001100 mod (2^16 + 1) = 0100001001110010
Hasil Enkripsi :
Y1 = 1100101101010100 = ËT Y2 = 0101001000101100 = R, Y3 = 1110100000101001 = è) Y4 = 0100001001110010 = Br
(46)
3.1.2.3.
Proses Dekripsi
Proses dekripsi merupakan kebalikan dari proses enkripsi. Proses dekripsi
menggunakan algoritma yang sama dengan proses enkripsi. Sebagai contoh, misalkan
ingin didekripsikan kembali hasil enkripsi yang telah didapatkan di atas, maka proses
dekripsinya adalah sebagai berikut :
PROSES DEKRIPSI ************* PUTARAN - 1 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 1100101101010100 * 0010001000010011 mod (2^16 + 1) = 0010010000101100
02) L#2 = (X2 + K2) mod 2^16 = 0101001000101100 + 1011001111110100 mod 2^16 = 0000011000100000
03) L#3 = (X3 + K3) mod 2^16 = 1110100000101001 + 1011001110110100 mod 2^16 = 1001101111011101
04) L#4 = (X4 * K4) mod (2^16 + 1) = 0100001001110010 * 0111011110010011 mod (2^16 + 1) = 0000011001101101
05) L#5 = L#1 XOR L#3 = 0010010000101100 XOR 1001101111011101 = 1011111111110001
06) L#6 = L#2 XOR L#4 = 0000011000100000 XOR 0000011001101101 = 0000000001001101
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 1011111111110001 * 0010011000100110 mod (2^16 + 1) = 0010011100101100
08) L#8 = (L#6 + L#7)) mod 2^16 = 0000000001001101 + 0010011100101100 mod 2^16 = 0010011101111001
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 0010011101111001 * 0010011000000110 mod (2^16 + 1) = 1101110011111010
10) L#10 = (L#7 + L#9)) mod 2^16 = 0010011100101100 + 1101110011111010 mod 2^16 = 0000010000100110
11) L#11 = L#1 XOR L#9 = 0010010000101100 XOR 1101110011111010 = 1111100011010110
12) L#12 = L#3 XOR L#9 = 1001101111011101 XOR 1101110011111010 = 0100011100100111
13) L#13 = L#2 XOR L#10 = 0000011000100000 XOR 0000010000100110 = 0000001000000110
14) L#14 = L#4 XOR L#10 = 0000011001101101 XOR 0000010000100110 = 0000001001001011
Untuk putaran berikutnya : X1 = L#11 = 1111100011010110 X2 = L#12 = 0100011100100111
(47)
X3 = L#13 = 0000001000000110 X4 = L#14 = 0000001001001011
************* PUTARAN - 2 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 1111100011010110 * 1110111100100110 mod (2^16 + 1) = 1101000101010001
02) L#2 = (X2 + K2) mod 2^16 = 0100011100100111 + 1101100111011010 mod 2^16 = 0010000100000001
03) L#3 = (X3 + K3) mod 2^16 = 0000001000000110 + 1111100111011010 mod 2^16 = 1111101111100000
04) L#4 = (X4 * K4) mod (2^16 + 1) = 0000001001001011 * 0101011110000000 mod (2^16 + 1) = 1010000110111000
05) L#5 = L#1 XOR L#3 = 1101000101010001 XOR 1111101111100000 = 0010101010110001
06) L#6 = L#2 XOR L#4 = 0010000100000001 XOR 1010000110111000 = 1000000010111001
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0010101010110001 * 0000011000100110 mod (2^16 + 1) = 0111101101000000
08) L#8 = (L#6 + L#7)) mod 2^16 = 1000000010111001 + 0111101101000000 mod 2^16 = 1111101111111001
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 1111101111111001 * 0000011000000110 mod (2^16 + 1) = 1011011111101001
10) L#10 = (L#7 + L#9)) mod 2^16 = 0111101101000000 + 1011011111101001 mod 2^16 = 0011001100101001
11) L#11 = L#1 XOR L#9 = 1101000101010001 XOR 1011011111101001 = 0110011010111000
12) L#12 = L#3 XOR L#9 = 1111101111100000 XOR 1011011111101001 = 0100110000001001
13) L#13 = L#2 XOR L#10 = 0010000100000001 XOR 0011001100101001 = 0001001000101000
14) L#14 = L#4 XOR L#10 = 1010000110111000 XOR 0011001100101001 = 1001001010010001
Untuk putaran berikutnya : X1 = L#11 = 0110011010111000 X2 = L#12 = 0100110000001001 X3 = L#13 = 0001001000101000 X4 = L#14 = 1001001010010001
************* PUTARAN - 3 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0110011010111000 * 1010111100000000 mod (2^16 + 1) = 1000000111001001
(48)
02) L#2 = (X2 + K2) mod 2^16 = 0100110000001001 + 1110110011101101 mod 2^16 = 0011100011110110
03) L#3 = (X3 + K3) mod 2^16 = 0001001000101000 + 1110110011101101 mod 2^16 = 1111111100010101
04) L#4 = (X4 * K4) mod (2^16 + 1) = 1001001010010001 * 1000100001001100 mod (2^16 + 1) = 0011110100000100
05) L#5 = L#1 XOR L#3 = 1000000111001001 XOR 1111111100010101 = 0111111011011100
06) L#6 = L#2 XOR L#4 = 0011100011110110 XOR 0011110100000100 = 0000010111110010
07) L#7 = (L#5 * K5) mod (2^16 + 1) = 0111111011011100 * 0001001100000011 mod (2^16 + 1) = 1100011100101001
08) L#8 = (L#6 + L#7)) mod 2^16 = 0000010111110010 + 1100011100101001 mod 2^16 = 1100110100011011
09) L#9 = (L#8 * K6) mod (2^16 + 1) = 1100110100011011 * 0000001100010011 mod (2^16 + 1) = 1000011110001011
10) L#10 = (L#7 + L#9)) mod 2^16 = 1100011100101001 + 1000011110001011 mod 2^16 = 0100111010110100
11) L#11 = L#1 XOR L#9 = 1000000111001001 XOR 1000011110001011 = 0000011001000010
12) L#12 = L#3 XOR L#9 = 1111111100010101 XOR 1000011110001011 = 0111100010011110
13) L#13 = L#2 XOR L#10 = 0011100011110110 XOR 0100111010110100 = 0111011001000010
14) L#14 = L#4 XOR L#10 = 0011110100000100 XOR 0100111010110100 = 0111001110110000
Untuk putaran berikutnya : X1 = L#11 = 0000011001000010 X2 = L#12 = 0111100010011110 X3 = L#13 = 0111011001000010 X4 = L#14 = 0111001110110000
************* PUTARAN - 4 *************
01) L#1 = (X1 * K1) mod (2^16 + 1) = 0000011001000010 * 0111100111111000 mod (2^16 + 1) = 0011111011110101
02) L#2 = (X2 + K2) mod 2^16 = 0111100010011110 + 1110110011101101 mod 2^16 = 0110010110001011
03) L#3 = (X3 + K3) mod 2^16 = 0111011001000010 + 0111011001110111 mod 2^16 = 1110110010111001
04) L#4 = (X4 * K4) mod (2^16 + 1) = 0111001110110000 * 0111111111010110 mod (2^16 + 1) = 1100101101011100
(1)
b. Setelah itu, akan muncul form ‘Inverse Kunci Perkalian’, seperti terlihat pada gambar berikut ini :
Gambar 4.20 Langkah-2 untuk proses inverse kunci perkalian
c. Klik tombol ‘Proses’ untuk memulai proses inverse kunci perkalian dan bit output akan ditampilkan pada textbox.
(2)
6. Untuk melakukan proses rotasi kiri, lakukan langkah-langkah berikut ini :
a. Klik menu ‘Proses’, pilih sub menu ‘Rotasi Kiri’ seperti terlihat pada gambar berikut ini :
Gambar 4.22 Langkah-1 untuk proses rotasi kiri
b. Setelah itu, akan muncul form ‘Rotasi Kiri’, seperti terlihat pada gambar berikut ini :
(3)
c. Ketikkan nilai bit pada textbox dan besar bit yang akan dirotasikan. Klik tombol ‘Proses’ untuk memulai proses rotasi kiri dan bit output akan ditampilkan pada textbox.
Gambar 4.24 Langkah-3 untuk proses rotasi kiri
4.3 Pengujian Sistem
Parameter pembelajaran enkripsi dan dekripsi yang diterapkan pada perangcangan perangkat lunak tersebut adalah menggunakan metode Black Box yaitu yang berfokus pada persyaratan atau kebutuhan fungsional perangkat lunak yang dibuat. Metode pengujian Black Box memfokuskan pada keperluan fungsional dari perangkat lunak. Oleh karena itu, pengujian dengan metode Black Box memungkinkan untuk membuat himpunan kondisi input yang akan melatih seluruh syarat-syarat fungsional suatu program.
Tabel 4.1 Penujian Sistem
Data Masukan Harapan Pengamatan Kesimpulan
Pengujian Pembentukan
Kunci
Muncul tampilan proses pembentukan kunci dengan pilihan tampilan proses dalam bentuk biner atau heksa.
Proses
pembentukan kunci sukses dan muncul pilihan tampilan proses dalam bentuk biner dan heksa.
(4)
Pembentukan Kunci
Muncul panjang kunci harus 16 karakter dan menampilkan prosesnya.
Muncul peringatan bahwa panjang kunci harus 16 karakter. Jikas telah
sesuai proses ditampilkan. Sesuai Proses Enkripsi Plain text: Kunci: Cipher text:
Plain text disisi harus 8 karakter, kunci 16 karakter dari hasil yang
telah diproses sebelumnya. Cipher text
sebagai tempat dari hasil proses enkripsi, jika semuanya disi sesuai maka proses tahapan ditampilakan sampai selesai.
Cipher text ditampilkan setelah
proses dijalankan dan seluruh proses tahapan demi tahapan ditampilkan. Sesuai Proses Dekripsi Cipher text: Kunci: Plain text:
Cipher text harus diisi sesuai dengan hasil enkripsi sebelumnya, kunci 16 karakter dari hasil yang telah diproses sebelumnya, maka plain text sebagai tempat dari hasil proses dekripsi, jika semuanya disi sesuai maka proses tahapan ditampilakan sampai selesai.
Plain text ditampilkan setelah
proses dijalankan dan seluruh proses tahapan demi tahapan
ditampilkan.
(5)
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Setelah melalui proses penyelesaian skripsi yang berjudul ‘Perancangan Perangkat Lunak Kriptografi Metode IDEA’, penulis menarik kesimpulan sebagai berikut : 1. Perangkat lunak ini dapat menampilkan langkah-langkah penyelesaian algoritma
untuk proses pembentukan kunci, enkripsi dan dekripsi secara tahap demi tahap sehingga mempermudah pemahaman.
2. Keunggulan dari metode IDEA adalah penggunaan operasi yang tidak kompatibel sehingga tidak dapat diserang oleh kriptanalisis.
3. Perangkat lunak ini menyediakan fasilitas pengaturan kecepatan visualisasi proses. 4. Perangkat lunak ini menyediakan teori-teori dasar mengenai metode IDEA.
5.2. Saran
Penulis ingin memberikan beberapa saran yang mungkin berguna untuk pengembangan lebih lanjut pada perancangan perangkat lunak kriptografi metode IDEA yaitu :
1. Perangkat lunak dapat dikembangkan agar dapat digabungkan dengan metode kriptografi yang lain.
2. Perangkat lunak dapat ditambahkan soal-soal latihan untuk mendukung proses pembelajaran.
(6)
Ario Suryokusumo. 2001. Microsoft Visual Basic 6.0. Jakarta: Elex Media Komputindo.
Brian Al Bahr. 2007. “International Data Encryption Algorithm” Bandung: Institut Teknologi Bandung.
Bruce Schneier. 1996. Applied Crytography, Second Edition. John Willey and Sons Inc.
Djoko Pramono. 2002. Mudah menguasai Visual Basic 6, Jakarta: Elex Media Komputindo.
Dorothy Elizabeth Robling Denning. 1982. Cryptography and Data Security. Purdue University.
Jusuf Kurniawan. 2004. Keamanan Internet dan Jaringan Komunikasi. Bandung: Informatika Bandung.
Kholidya Yuli Wardani,.2010. “Implementasi Metoda Kriftografi IDEA pada Priority Dealer untuk Layanan Pemesanan dan Laporan Penjualan Handphone Berbasis Web”. M.Zen S.Hadi, Mike Yuliana. Surabaya: Politeknik Elektronika Negeri Surabaya.
Mukhlisulfatih Latief. 2009. “Studi Perbandingan Enkripsi Menggunakan Algoritma IDEA Dan MMB”. Gorontalo: Universitas Negeri Gorontalo.