PERANCANGAN APLIKASI KRIPTOGRAPHY – ADVANCED ENCRYPTION STANDARD.

(1)

TUGAS AKHIR

Disusun Oleh :

DEDY BUDIAWAN

NPM. 0534010171

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JAWA TIMUR S U R A B A Y A


(2)

Syukur Alhamdulillaahi rabbil ‘alamin terucap ke hadirat Allah SWT atas segala limpahan Kekuatan-Nya sehingga dengan segala keterbatasan waktu, tenaga, pikiran dan keberuntungan yang dimiliki penyusun, akhirnya penyusun dapat menyelesaikan Skripsi yang berjudul “Perancangan Aplikasi Kriptography – Advanced Encryption Standard” tepat waktu.

Skripsi dengan beban 4 SKS ini disusun guna diajukan sebagai salah satu syarat untuk menyelesaikan program Strata Satu (S1) pada jurusan Teknik Informatika, Fakultas Teknologi Industri, UPN ”VETERAN” Jawa Timur.

Melalui Skripsi ini penyusun merasa mendapatkan kesempatan emas untuk memperdalam ilmu pengetahuan yang diperoleh selama di bangku perkuliahan. Namun, penyusun menyadari bahwa Skripsi ini masih jauh dari sempurna. Oleh karena itu penyusun sangat mengharapkan saran dan kritik dari para pembaca untuk pengembangan aplikasi lebih lanjut.

Surabaya, Desember 2010


(3)

Selama pelaksanaan Tugas Akhir dan dalam penyelesaian penulisan laporan Tugas Akhir ini, penulis mendapatkan banyak bantuan dan bimbingan dari berbagai pihak. Karena itu, penulis ingin mengucapkan terima kasih kepada :

1. Bapak Ir. Teguh Sudarto, MM selaku Rektor Universitas Pembangunan Nasional ”Veteran” Jawa Timur.

2. Bapak Ir. Sutiyono. MT, selaku dekan Fakultas Teknologi Industri Universitas Pembangunan Nasional ”Veteran” Jawa Timur.

3. Bapak Basuki Rahmat. SSi, MT, selaku Kepala Jurusan Teknik Informatika Universitas Pembangunan Nasional ”Veteran” Jawa Timur. 4. Bapak Prof. Dr. Ir H. Akhmad Fauzi, MMT selaku dosen wali.

5. Bapak Nurcahyo Wibowo, S.Kom, M.Kom, Bapak Achmad Junaidi, S.Kom, M.Kom, Bapak Ir. Kemal Wijaya, MT, Bapak Chrystia Aji Putra, S.Kom, Bapak Wahyu S.J Saputra S.Kom selaku dosen pembimbing, penguji sidang tugas akhir dan lisan yang telah memberikan banyak kritik dan saran serta memberikan wawasan yang lebih luas.

6. Seluruh dosen teknik informatika yang telah memberikan ilmu, wawasan, tenaga dan waktunya dalam mengembangkan wawasan serta ilmu berkaitan dengan informasi dan teknologi.

7. Kedua Orang Tua, Adik (Luky) dan Keluarga Besar yang ada di Nganjuk tercinta atas motivasi dan doanya sehingga semua yang dikerjakan dapat berjalan lancar.


(4)

Bagus Kurniawan, Ferry Syaifullah Arifin, Ahmad Naiim, Dodik Irmawan, Vidi, Apza rhee, Yoehar Tubagus Syaifullah, Ibrahim tauhid, Dido, Eka Wijaya Kurniawan, Rizal Hakim, Bagus Burhanun Na’im, Khoirul Huda, Ibnoe Qoyim, Yogie, Muslim dan teman-teman semua yang belum disebutkan, terima kasih banyak atas do’a dan nasehatnya. Sukses selalu buat semua.

10.Dan semua pihak yang tidak dapat disebutkan satu persatu.

Penulis menyadari sepenuhnya masih terdapat banyak kekurangan dalam penyelesaian penulisan laporan Tugas Akhir ini. Segala kritik saran yang bersifat membangun sangat diharapkan dari semua pihak, guna perbaikan dan pengembangan dimasa yang akan datang. Akhirnya besar harapan penulis agar laporan ini dapat diterima dan berguna bagi semua pihak. Amin…

Surabaya, Desember 2010

Penulis


(5)

ABSTRAK ... i

KATA PENGANTAR ... ii

UCAPAN TERIMA KASIH ... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... vii

DAFTAR TABEL ... ix

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Perumusan Masalah ... 4

1.3 Batasan Masalah ... 4

1.4 Tujuan ... 5

1.5 Manfaat ... 5

1.6 Metode Penelitian ... 5

1.7 Sistematika Penulisan ... 6

BAB II TINJAUAN PUSTAKA ... 8

2.1 Kriptografi ... 8

2.1.1 Sejarah Kriptografi ... 9

2.1.2 Taksonomi Primitif – Primitif Kriptografi... 14

2.2 Enkripsi Kunci Rahasia... 16

2.3 Pola – Pola Penyaringan Data... 18

2.4 Sejarah AES ... 20

2.4.1 Algoritma AES ... 26

2.4.2 Penyandian Blok ... 30

2.4.3 Algoritma Rijndael ... 33

BAB III PERANCANGAN SISTEM ... 45

3.1 Perancangan Sistem ... 45


(6)

3.4.1 Flowchart Enkripsi ... 48

3.4.2 Flowchart Dekripsi ... 49

3.5 Perancangan Antar Muka ... 49

BAB IV IMPLEMENTASI SISTEM ... 52

4.1. Lingkungan Implementasi ... 52

4.2. Implementasi Sistem ... 53

4.3. Implementasi Antar Muka ... 54

4.3.1. Form Enkripsi ... 55

4.3.2. Form Dekripsi ... 55

4.3.3. Form Help ... 56

4.3.4. Form About ... 57

4.3.5. Form Utama ... 57

BAB V UJI COBA DAN EVALUASI ... 59

5.1. Lingkungan Uji Coba ... 59

5.2. Skenario Uji Coba ... 59

5.3. Pelaksanaan Uji Coba ... 60

5.3.1. Uji Coba Enkripsi ... 60

5.3.2. Uji Coba Dekripsi ... 64

BAB VI PENUTUP ... 67

6.1. Kesimpulan ... 67

6.2. Saran ... 67


(7)

Gambar 2.1. Enkripsi Kunci Rahasia ………... 16

Gambar 2.2. Pengelompokan Enkripsi Beserta Contoh...………... 18

Gambar 2.3. Byte Input, Array State dan Byte Output..………. 29

Gambar 2.4. Mode Operasi ECB ………… ………... 30

Gambar 2.5. Mode Operasi CBC …………...……… 31

Gambar 2.6. Mode Operasi CFB ………. ……….. 32

Gambar 2.7. Mode Operasi OFB ..……….. 33

Gambar 2.8. Diagram Alir Proses Enkripsi.……… 36

Gambar 2.9. Subbytes()…….. ……… 37

Gambar 2.10. Transformasi Shiftrows() ……….……… 38

Gambar 2.11. MixColumns()………..……… 39

Gambar 2.12. AddRounkey()…..……… 41

Gambar 2.13. Diagram Alir Proses Dekripsi…..……… 41

Gambar 2.14. Transformasi InvShiftRows()……… 42

Gambar 3.1 Diagram Hirarki ………….………. 45

Gambar 3.2 Flowchart Enkripsi ……… 48

Gambar 3.3 Flowchart Dekripsi……….. 49

Gambar 3.4 Rancangan Antar Muka….. ……… 50

Gambar 3.5 Rancangan Halaman Menu Encrypt…. ……….. 51

Gambar 3.6 Rancangan Halaman Menu Decrypt..………. 51

Gambar 4.1 Pseudocode Enkripsi... 53

Gambar 4.2 Pseudocode Dekripsi... 54

Gambar 4.3 Tampilan Form Enkripsi... 55

Gambar 4.4 Tampilan Form Dekripsi... 56

Gambar 4.5 Tampilan FormHelp... 56

Gambar 4.6 Tampilan Form About... 57

Gambar 4.7 Tampilan Form Utama... 58

Gambar 5.1 Cari Plaintext yang sudah di simpan... 61


(8)

Gambar 5.5 Proses Enkripsi 256 bit ... ... 63

Gambar 5.6 Simpan Ciphertext ... 63

Gambar 5.7 Cari Ciphertext ... 64

Gambar 5.8 Open Ciphertext ... 64

Gambar 5.9 Proses Dekripsi 128 bit... 65

Gambar 5.10 Proses Dekripsi 192 bit ... 65


(9)

Tabel 2.1. 15 Algoritma Finalis AES……… 21

Tabel 2.2. Algoritma Finalis AES – Testing………. 22

Tabel 2.3. Finalis AES……….………… 23

Tabel 2.4. Metrik Penilaian 5 Finalis AES Berdasarkan Parameter NIST.……. 25

Tabel 2.5. Array Byte………..………. 28

Tabel 2.6. Perbandingan Jumlah Round dan Key……….……… 34

Tabel 2.7. Substitusi (S-Box)………. ……….. 36

Tabel 2.8. Tabel E dan Tabel L……… 40


(10)

Penyusun : Dedy Budiawan

ABSTRAK

Seiring dengan perkembangan zaman, kebutuhan manusia meningkat. Termasuk kebutuhan akan informasi. Oleh sebab itu, pengiriman dan penyimpanan data melalui media elektronik memerlukan suatu proses yang mampu menjamin keamanan dan keutuhan dari data tersebut. Untuk menjamin keamanan dan keutuhan dari suatu data, dibutuhkan suatu proses penyandian. Enkripsi dilakukan ketika data akan dikirim. Proses ini akan mengubah suatu data asal menjadi data rahasia yang tidak dapat dibaca. Sementara itu, proses dekripsi dilakukan oleh penerima data yang dikirim tersebut. Data rahasia yang diterima akan diubah kembali menjadi data asal. Dengan cara penyandian tersebut, data asli tidak akan terbaca oleh pihak yang tidak berkepentingan, melainkan hanya oleh penerima yang memiliki kunci dekripsi. Didorong oleh kegunaan yang penting tersebut, teknik (algoritma) penyandian telah berkembang sejak zaman dahulu kala. Mulai dari era sebelum masehi, hingga sekarang algoritma penyandian ini selalu berkembang. Pertimbangan bahwa sebuah standard algoritma yang baru sangatlah diperlukan untuk tetap menjaga kerahasiaan suatu data. Dalam hal ini, kunci yang lebih panjang juga merupakan keharusan.

Saat ini, AES digunakan sebagai standard algoritma kriptografi yang terbaru. Algoritma sebelumnya dianggap tidak mampu lagi untuk menjawab tantangan perkembangan teknologi komunikasi yang sangat cepat. AES sendiri adalah algoritma kriptografi dengan menggunakan algoritma Rijndael yang dapat mengenkripsi dan mendekripsi blok data sepanjang 128 bit dengan panjang kunci 128 bit, 192 bit, atau 256 bit. Dengan panjang kunci 128 bit, Misal state =19, hasil SubBytesnya = d4, ShiftRows = d4, MixColumns = 04, AddRoundKey = a4 dan proses tersebut diulang sampai 10 kali hasil ciphertextnya = 39.


(11)

PENDAHULUAN

1.1. Latar Belakang

Salah satu hal terpenting dalam komunikasi menggunakan komputer dan jaringan komputer adalah untuk menjamin keamanan pesan, data, ataupun informasi dalam proses pertukaran data, sehingga menjadi salah satu pendorong munculnya teknologi Kriptografi. Kriptografi berbasis pada algoritma pengkodean data informasi yang mendukung kebutuhan dari dua aspek keamanan informasi, yaitu secrecy (perlindungan terhadap kerahasiaan data informasi) dan authenticity (perlindungan terhadap pemalsuan dan pengubahan informasi yang tidak diinginkan.

Kriptografi merupakan studi matematika yang mempunyai hubungan dengan aspek keamanan informasi seperti integritas data, keaslian entitas dan keaslian data. Kriptografi menggunakan berbagai macam teknik dalam upaya untuk mengamankan data. Pengiriman data dan penyimpanan data melalui media elektronik memerlukan suatu proses yang dapat menjamin keamanan dan keutuhan dari data yang dikirimkan tersebut. Data tersebut harus tetap rahasia selama pengiriman dan harus tetap utuh pada saat penerimaan di tujuan. Untuk memenuhi hal tersebut, dilakukan proses penyandian (enkripsi dan dekripsi) terhadap data yang akan dikirimkan.

Enkripsi dilakukan pada saat pengiriman dengan cara mengubah data asli menjadi data rahasia, sedangkan dekripsi dilakukan pada saat penerimaan


(12)

dengan cara mengubah data rahasia menjadi data asli. Jadi data yang dikirimkan selama proses pengiriman adalah data rahasia, sehingga data asli tidak dapat diketahui oleh pihak yang tidak berkepentingan. Data asli hanya dapat diketahui oleh penerima dengan menggunakan kunci rahasia.

Disini enkripsi dapat diartikan sebagai kode atau cipher. Sebuah system pengkodean menggunakan suatu tabel atau kamus yang telah didefinisikan untuk kata dari informasi atau yang merupakan bagian dari pesan, data, atau informasi yang di kirim. Sebuah cipher menggunakan suatu algoritma yang dapat meng kodekan semua aliran data (stream) bit dari suatu pesan asli (plaintext) menjadi cryptogram yang tidak di mengerti. Karena system cipher merupakan suatu sistem yang telah siap untuk di outomasi, maka teknik ini digunakan dalam sistem keamanan jaringan komputer.

National Institute of Standard and Technology (NIST) untuk pertama kalinya mengumumkan suatu algoritma standar penyandian data yang telah dijadikan standart sejak tahun 1977 adalah Data Encryption Standard (DES). Kekuatan DESini terletak pada panjang kuncinya yaitu 56-bit. Untuk menanggapi keinginan agar mengganti algoritma DES sebagai standart. Perkembangan kecepatan perangkat keras dan meluasnya penggunaan jaringan komputer terdistribusi mengakibatkan penggunaan DES, dalam beberapa hal, terbukti sudah tidak aman dan tidak mencukupi lagi terutama dalam hal yang pengiriman data melalui jaringan internet. Perangkat keras khusus yang bertujuan untuk menentukan kunci 56-bit DES hanya dalam waktu beberapa jam sudah dapat dibangun. Beberapa pertimbangan tersebut telah menandakan bahwa diperlukan sebuah standar algoritma baru dan kunci yang lebih panjang. Triple-DES muncul


(13)

sebagai alternative solusi untuk masalah-masalah yang membutuhkan keamanan data tingkat tinggi seperti perbankan, tetapi ia terlalu lambat pada beberapa penggunaan enkripsi.

Pada tahun 1997, the U.S. National Institue of Standards and Technology (NIST) mengumumkan bahwa sudah saatnya untuk pembuatan standar algoritma penyandian baru yang kelak diberi nama Advanced Encryption Standard (AES). Algoritma AES ini dibuat dengan tujuan untuk menggantikan algoritma DES & Triple-DES yang telah lama digunakan dalam menyandikan data elektronik. Setelah melalui beberapa tahap seleksi, algoritma Rijndael ditetapkan sebagai algoritma kriptografi AESpada tahun 2000.

Algoritma AES merupakan algoritma kriptografi simetrik yang beroperasi dalam mode penyandi blok (block cipher) yang memproses blok data 128-bit dengan panjang kunci 128-bit (AES- 128), 192-bit (AES-192), atau 256-bit (AES-256). Beberapa mode operasi yang dapat diterapkan pada algoritma kriptografi penyandi blok AES di antaranya adalah Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), dan Output Feedback (OFB). Implementasi AES dengan mode operasi ECB, CBC, CFB, dan OFBtentu saja memiliki kelebihan dan kekurangan tertentu dalam aspek tingkat keamanan data.

Dalam penelitian ini, penulis tertarik untuk menggunakan algoritma tersebut untuk membantu mengamankan data. Oleh karena itu penulis memilih tugas akhir dengan judul “Perancangan Aplikasi Kriptography – Advanced Encryption Standard”.


(14)

1.2. Perumusan Masalah

Untuk menyelesaikan semua itu, dalam tugas akhir ini akan dibahas beberapa pokok masalah, antara lain :

a. Bagaimana membuat program aplikasi kriptosistem menggunakan bahasa pemrograman Visual Basic.NET 2005?

b. Bagaimana penggunaan algoritma AES dengan bahasa pemrograman Visual Basic.NET 2005 dalam membantu keamanan aplikasi kriptosistem ?

1.3. Batasan Masalah

Pada tugas akhir kali ini akan dilakukan pembahasan mengenai hal sebagai berikut :

a. Rancangan program aplikasi ini dibuat untuk mengamankan pesan b. Ukuran teks yang dapat dienkripsi senilai 2000 karakter, teks berupa

angka dan huruf yang tersedia pada keyboard

c. Program aplikasi ini hanya dapat menyimpan file dalam format notepad (*.txt)

d. Algoritma kriptosistem ini hanya dapat mengenkripsi dan mendekripsi data yang berupa teks atau tulisan, bukan suara maupun gambar.


(15)

1.4. Tujuan

a. Membuat / merancang program aplikasi kriptosistem menggunakan bahasa pemrograman Visual Basic.NET 2005

b. Untuk mengetahui output program aplikasi kriptosistem menggunakan algoritma AES melalui bahasa pemrograman Visual Basic.NET 2005

1.5. Manfaat

a. Mempermudah user mengenkripsi dan mendekripsikan pesan

b. Melindungi kerahasiaan suatu informasi dari pihak yang tidak di harapkan

1.6. Metodologi Penelitian

Metodologi yang digunakan dalam pembuatan skripsi ini meliputi beberapa bagian, yaitu :

a. Tinjauan pustaka

Tinjauan pustaka ini meliputi studi mengenai teori, fitur-fitur kriptografi dan algoritma AES ( Advanced Encryption Standard )

b. Pengumpulan data

Pengumpulan data yang dilakukan meliputi pengumpulan data kriptografi dan algoritma AES ( Advanced Encryption Standard )


(16)

Pengujian sistem pada tugas akhir ini akan dilakukan dengan menjalankan aplikasi kriptosistem.

d. Pengambilan kesimpulan

Pengambilan kesimpulan berdasarkan hasil pengujian yang telah dilakukan terhadap sistem yaitu meliputi kesimpulan terhadap pengenkripsian dan pendekripsian yang akan diolah oleh aplikasi kriptosistem

e. Penulisan laporan tugas akhir

Penulisan laporan tugas akhir diambil dari hal-hal yang telah dilakukan mulai pengerjaan awal hingga selesai pengerjaan.

1.7. Sistematika Penulisan

Dalam laporan tugas akhir ini, pembahasan disajikan dalam enam bab dengan sistematika pembahasan sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisikan tentang latar belakang masalah, perumusan masalah, batasan masalah, tujuan, manfaat, dan sistematika penulisan pembuatan tugas akhir ini.

BAB II TINJAUAN PUSTAKA

Pada bab ini dijelaskan tentang teori-teori serta penjelasan-penjelasan yang dibutuhkan dalam pembuatan Perancangan Aplikasi Kriptography - Advanced Encryption Standard.


(17)

BAB III PERANCANGAN SISTEM

Bab ini dijelaskan tentang garis besar dan fokus dari rancangan aplikasi, juga berisi tentang alur proses program serta hal-hal yang diperlukan dalam implementasi. Seperti deskripsi umum sistem, spesifikasi kebutuhan sistem dan desain antarmuka.

BAB IV IMPLEMENTASI SISTEM

Pada bab ini berisikan bagaimana implementasi aplikasi yang telah dibuat berdasarkan desain yang telah dibuat dalam bab II.

BAB V UJI COBA DAN EVALUASI

Pada bab ini menjelaskan tentang pelaksanaan uji coba dan evaluasi dari pelaksanaan uji coba program yang dibuat.

BAB VI PENUTUP

Bab ini berisi kesimpulan dan saran yang diperoleh dari hasil penganalisaan data dalam bab-bab sebelumnya sesuai dengan tujuan penelitian tugas akhir ini.


(18)

TINJAUAN PUSTAKA

2.1 Kriptografi

Kriptografi (cryptography) berasal dari Bahasa Yunani: “cryptos” artinya “secret” (rahasia), sedangkan “graphein” artinya “writing” (tulisan). Jadi kripografi berarti “secret writing” (tulisan rahasia) (Munir, Rinaldi, 2006). Menurut tulisan situs http://id.wikipedia.org/wiki/Kriptografi Cryptanalysis

adalah aksi untuk memecahkan mekanisme kriptografi dengan cara mendapatkan plaintext atau kunci dari ciphertext yang digunakan untuk mendapatkan informasi berharga kemudian mengubah atau memalsukan pesan dengan tujuan untuk menipu penerima yang sesungguhnya. Encryption adalah mentransformasi data kedalam bentuk yang tidak dapat terbaca tanpa sebuah kunci tertentu. Tujuannya adalah untuk meyakinkan privasi dengan menyembunyikan informasi dari orang-orang yang tidak ditujukan, bahkan mereka-mereka yang memiliki akses ke data terenkripsi. Dekripsi merupakan kebalikan dari enkripsi, yaitu transformasi data terenkripsi kembali kebentuknya semula.

Enkripsi dan dekripsi pada umumnya membutuhkan penggunaan sejumlah informasi rahasia, disebut sebagai kunci. Untuk beberapa mekanisme enkripsi, kunci yang sama digunakan baik untuk enkripsi dan dekripsi; untuk mekanisme yang lain, kunci yang digunakan untuk enkripsi dan dekripsi berbeda. Dua tipe dasar dari teknologi kriptografi adalah symmetric key (secret/private key) cryptography dan asymmetric (public key) cryptography. Pada symmetric key


(19)

cryptography, baik pengirim maupun penerima memiliki kunci rahasia yang umum. Pada asymmetric key cryptography, pengirim dan penerima masing-masing berbagi kunci publik dan privat. Kriptografi saat ini lebih dari enkripsi dan dekripsi saja. Otentikasi menjadi bagian dari kehidupan kita sama seperti privasi. Kita menggunakan otentikasi dalam kehidupan sehari-hari, sebagai contoh saat kita menandatangani sejumlah dokumen dan saat kita berpindah ke dunia dimana keputusan dan persetujuan kita dikomunikasikan secara elektronis, kita membutuhkan teknik-teknik untuk otentikasi. Kriptografi menyediakan mekanisme untuk prosedur semacam itu. Digital signature (tanda tangan digital) mengikat dokumen dengan kepemilikan kunci tertentu, sedangkan digital timestamp mengikat dokumen dengan pembuatnya pada saat tertentu.

2.1.1Sejarah Kriptografi

Kriptografi memiliki sejarah yang panjang dan mengagumkan. Penulisan rahasia ini dapat dilacak kembali ke 3000 tahun SM saat digunakan oleh bangsa Mesir. Mereka menggunakan hieroglyphcs untuk menyembunyikan tulisan dari mereka yang tidak diharapkan. Hieroglyphcs diturunkan dari bahasa Yunani hieroglyphica yang berarti ukiran rahasia. Hieroglyphs berevolusi menjadi hieratic, yaitu stylized script yang lebih mudah untuk digunakan. Sekitar 400 SM, kriptografi militer digunakan oleh bangsa Spartan dalam bentuk sepotong papirus atau perkamen dibungkus dengan batang kayu. Sistem ini disebut Scytale.

Sekitar 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher substitusi untuk mengirim pesan ke Marcus Tullius Cicero. Pada cipher ini, huruf-huruf alfabet disubstitusi dengan huruf-huruf-huruf-huruf yang lain pada alfabet yang sama.


(20)

Karena hanya satu alfabet yang digunakan, cipher ini merupakan substitusi monoalfabetik. Cipher semacam ini mencakup penggeseran alfabet dengan 3 huruf dan mensubstitusikan huruf tersebut. Substitusi ini kadang dikenal dengan C3 (untuk Caesar menggeser 3 tempat). Secara umum sistem cipher Caesar dapat ditulis sebagai berikut :

Zi = Cn(Pi)

Dimana Zi adalah karakter-karekter ciphertext, Cn adalah transformasi substitusi alfabetik, n adalah jumlah huruf yang digeser, dan Pi adalah karakter-karakter plaintext. Disk mempunyai peranan penting dalam kriptografi sekitar 500 th yang lalu. Di Italia sekitar tahun 1460, Leon Battista Alberti mengembangkan disk cipher untuk enkripsi. Sistemnya terdiri dari dua disk konsentris. Setiap disk memiliki alfabet di sekelilingnya, dan dengan memutar satu disk berhubungan dengan yang lainnya, huruf pada satu alfabet dapat ditransformasi ke huruf pada alfabet yang lain.

Bangsa Arab menemukan cryptanalysis karena kemahirannya dalam bidang matematika, statistik, dan lingiustik. Karena setiap orang muslim harus menambah pengetahuannya, mereka mempelajari peradaban terdahulu dan mendekodekan tulisan-tulisannya ke huruf-huruf Arab. Pada tahun 815, Caliph al-Mamun mendirikan House of Wisdom di Baghdad yang merupakan titik pusat dari usaha-usaha translasi. Pada abad ke-9, filsuf Arab al-Kindi menulis risalat (ditemukan kembali th 1987) yang diberi judul “A Manuscript on Deciphering Cryptographic Messages”. Pada 1790, Thomas Jefferson mengembangkan alat enkripsi dengan menggunakan tumpukan yang terdiri dari 26 disk yang dapat diputar secara individual. Pesan dirakit dengan memutar setiap disk ke huruf yang


(21)

tepat dibawah batang berjajar yang menjalankan panjang tumpukan disk. Kemudian, batang berjajar diputar dengan sudut tertentu, A, dan huruf-huruf dibawah batang adalah pesan yang terenkripsi. Penerima akan menjajarkan karakter-karakter cipher dibawah batang berjajar, memutar batang kembali dengan sudut A dan membaca pesan plaintext.

Sistem disk digunakan secara luas selama perang sipil US. Federal Signal Officer mendapatkan hak paten pada sistem disk mirip dengan yang ditemukan oleh Leon Battista Alberti di Italia, dan dia menggunakannya untuk mengkode dan mendekodekan sinyal-sinyal bendera diantara unit-unit. Sistem Unix menggunakan cipher substitusi yang disebut ROT 13 yang menggeser alfabet sebanyak 13 tempat. Penggeseran 13 tempat yang lain membawa alfabet kembali ke posisi semula, dengan demikian mendekodekan pesan. Mesin kriptografi mekanik yang disebut Hagelin Machine dibuat pada tahun 1920 oleh Boris Hagelin di Scockholm, Swedia. Di US, mesin Hagelin dikenal sebagai M-209. Pada tahun 20-an, Herbert O. Yardley bertugas pada organisasi rahasia US MI-8 yang dikenal sebagai “Black Chamber”. MI-8 menjebol kode-kode sejumlah negara. Selama konferensi Angkatan Laut Washington tahun 1921-1922, US membatasi negosiasi dengan Jepang karena MI-8 telah memberikan rencana negosiasi Jepang yang telap disadap kepada sekretaris negara US. Departemen negara menutup MI-8 pada tahun 1929 sehingga Yardley merasa kecewa. Sebagai wujud kekecewaanya, Yardley menerbitkan buku The American Black Chamber, yang menggambarkan kepada dunia rahasia dari MI-8. Sebagai konsekuensinya, pihak Jepang menginstal kode-kode baru. Karena kepeloporannya dalam bidang ini, Yardley dikenal sebagai “Bapak Kriptografi Amerika”.


(22)

Japanese Purple Machine

Mengikuti peninggalan Yardley, William F.Friedman melanjutkan usaha cryptanalysis untuk tentara US. Tim Friedman berhasil menjebol cipher diplomatik Jepang yang baru. Rekan Yardley di Angkatan Laut US adalah Laurence Stafford. Stafford mengepalai tim yang memecahkan kode angkatan laut Purple Machine Jepang selama PD II. Kelompok pemecah kode ini bekerja di ruang bawah tanah yang gelap pada pusat distrik Naval di Pearl Harbour. Komandan Joseph J.Rochefort memimpin kelompok ini pada musim semi 1942 saat cryptanalysisnya menyadap dan mendekodekan pesan terkode Jepang. Pesan ini mengatakan akan ada serangan Jepang pada sebuah lokasi yang dikenal dengan AF. Rochefort yakin bahwa AF adalah pulau Midway.

Midway adalah basis US kunci yang memproyeksikan kekuatan US di pasifik tengah. Rochefort tidak dapat meyakinkan atasannya bahwa AF adalah pulau Midway. Sebagai tipu daya, Rochefort meminta personel Midway untuk mengirim pesan bahwa Midway memiliki masalah air. Pesannya dikirim dengan kode yang jelas dan lemah yang diyakini akan disadap dan dipecahkan oleh Jepang. Kemudian pada 22 Mei, agen rahasia Angkatan Laut Jepang mengirim pesan yang dibaca oleh US bahwa AF mempunyai masalah air. Sebagai hasil dari usaha jenius dalam memecahkan kode ini, laksamana Chester W.Nimitz mengotorisasi strategi untuk mengirimkan armada US untuk mengejutkan armada Jepang di Midway. Usaha yang hebat ini berdampak pada gema kemenangan US yang merupakan titik balik di perang Pasifik.


(23)

The German Enigma Machine

Militer Jerman menggunakan mesin cipher substitusi polialfabetik disebut Enigma sebagai sistem pengkodean utama selama PD II. Enigma menggunakan rotor mekanis untuk pengkodean dan pendekodean. Seorang Belanda, Hugo Koch mengembangkan mesin ini pada 1919, dan diproduksi untuk pasar komersial pada 1923 oleh Arthur Scherbius. Scherbius mendapatkan hal paten pada mesin Enigma untuk perusahaan Berlin Chiffriermasschinen Aktiengesellschaft. Pakar cryptanalysis Polandia, Marian Rejewski, bekerja bersama Perancis dari 1928 sampai 1938, berhasil memecahkan pengkabelan sistem 3 rotor yang digunakan Jerman saat itu dan menciptakan berkas kartu yang dapat mengantisipasi 6 kali 17,576 kemungkinan posisi rotor. Jerman mengubah indikator sistem dan jumlah rotor menjadi 6 pada 1938, sehingga meningkatkan kesulitan untuk memecahkan cipher Enigma. Dalam kerjanya pada 1938, Polandia dan Perancis mengkonstruksi mesin prototipe yang disebut “The Bombe” untuk memecahkan cipher Enigma. Namanya diturunkan dari bunyi detikan yang dihasilkan oleh mesin. Usaha memecahkan cipher Enigma diambil alih oleh Inggris di Bletchley Park Inggris dan dipimpin oleh banyak ilmuwan terkemuka termasuk Alan Turing.

Prototipe Bombe Turing muncul pada 1940, dan Bombe berkecepatan tinggi dikembangkan oleh Inggris dan Amerika pada 1943. Perkembangan komputer dan sistem komunikasi pada tahun 60an berdampak pada permintaan dari sektor-sektor privat sebagai sarana untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamanan. Dimulai dari usaha Feistel pada IBM di awal tahun 70an dan mencapai puncaknya pada 1977 dengan


(24)

pengangkatan DES (Data Encryption Standard) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Diffie dan Hellman mempublikasikan New Directions in Cryptography. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru dan jenius untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskret.

Meskipun penulis tidak memiliki realisasi praktis pada ide enkripsi kunci publik saat itu, idenya sangat jelas dan menumbuhkan ketertarikan yang luas pada komunitas kriptografi. Pada 1978 Rivest, Shamir dan Adleman menemukan rancangan enkripsi kunci publik dan tanda tangan, yang sekarang disebut RSA. Rancangan RSA berdasar pada masalah matematika yang sulit untuk kriptografi menggiatkan kembali usaha untuk menemukan metode yang lebih efisien untuk pemfaktoran. Tahun 80an menunjukkan peningkatan luas di area ini, sistem RSA masih aman. Pada 1991 standar internasional pertama untuk tanda tangan digital (ISO/IEC 9796) diadopsi. Standar ini berdasar pada rancangan kunci publik RSA. Pada 1994 pemerintah US mengadopsi Digital Signature Standard, sebuah mekanisme yang berdasar pada rancangan kunci publik ElGamal.

2.1.2Taksonomi Primitif-primitif Kriptografi

Ada beberapa dasar tool kriptografi (primitif) yang digunakan untuk mendukung keamanan informasi. Contoh dari primitif termasuk skema enkripsi,


(25)

fungsi hash, dan skema tanda tangan digital. Primitif-primitif ini harus dapat dievaluasi berdasarkan beberapa kriteria seperti:

1. Level keamanan. Hal ini biasanya sulit untuk dihitung. Sering diwakili dengan jumlah operasi yang dibutuhkan (menggunakan metode terbaik yang diketahui) untuk melawan tujuan yang diharapkan. Level keamanan biasanya didefinisikan work factor.

2. Fungsionalitas. Primitif-primitif dibutuhkan untuk memenuhi tujuan keamanan informasi yang bermacam-macam. Primitif mana yang paling efektif untuk tujuan yang diberikan akan ditentukan dengan properti dasar dari primitif.

3. Metode operasi. Primitif, saat diterapkan dengan bermacam cara dan dengan bermacam input, biasanya akan menunjukkan karakteristik yang berbeda, sehingga satu primitif dapat menyediakan fungsionalitas yang sangat berbeda pada mode operasi atau penggunaannya.

4. Unjuk kerja. Merupakan efisiensi sebuah primitif pada mode tertentu. (sebagai contoh algoritma enkripsi dapat dihitung dengan jumlah bit per detik yang dapat dienkripsinya).

5. Kemudahan implementasi. Merupakan kesulitan dalam merealisasikan primitif pada prakteknya. Dapat meliputi kompleksitas pengimplementasian primitif dalam lingkungan software maupun

hardware.

Kepentingan relatif dari bermacam kriteria ini sangat tergantung pada aplikasi dan sumber daya yang tersedia.


(26)

2.2. Enkripsi Kunci Rahasia

Menurut tulisan situs http://id.wikipedia.org/wiki/Kriptografi Secret-key cryptography kadang disebut sebagai symmetric cryptography merupakan bentuk kryptografi yang lebih tradisional, dimana sebuah kunci tunggal dapat digunakan untuk mengenkrip dan mendekrip pesan. Secret-key cryptography tidak hanya berkaitan dengan enkirpsi tetapi juga berkaitan dengan otentikasi. Salah satu teknik semacam ini disebut message authentication codes.

Masalah utama yang dihadapi secret-key cryptosystems adalah membuat pengirim dan penerima menyetujui kunci rahasia tanpa ada orang lain yang mengetahuinya. Ini membutuhkan metode dimana dua pihak dapat berkomunikasi tanpa takut akan disadap. Kelebihan secret-key cryptography dari public-key cryptography adalah lebih cepat.. Teknik yang paling umum dalam secret-key cryptography adalah block ciphers, stream ciphers, dan message authentication codes Gambar 2.1.


(27)

Berdasarkan jenis kunci yang digunakannya, algoritma kriptografi dikelompokan menjadi dua bagian, yaitu :

1. Symmetric Algorithm

Symmetric algorithm atau disebut juga secret key algorithm adalah algoritma yang kunci enkripsinya dapat dihitung dari kunci dekripsi dan begitu pula sebaliknya, kunci dekripsi dapat dihitung dari kunci enkripsi. Pada sebagian besar symmetric algorithm kunci enkripsi dan kunci dekripsi adalah sama. Symmetric algorithm memerlukan kesepakatan antara pengirim dan penerima pesan pada suatu kunci sebelum dapat berkomunikasi secara aman. Keamanan symmetric algorithm tergantung pada rahasia kunci. Pemecahan kunci berarti memungkinkan setiap orang dapat mengenkripsi dan mendekripsi pesan dengan mudah. Symmetric algorithm dapat dikelompokkan menjadi dua jenis, yaitu stream cipher dan block cipher.

Stream cipher beroperasi bit per bit (atau byte per byte) pada satu waktu. Sedangkan block cipher beroperasi per kelompokkelompok bit yang disebut blok (block) pada satu waktu

2. Asymmetric Algorithm

Asymmetric algorithm atau disebut juga public key algorithm didesain agar memudahkan dalam distribusi kunci yang digunakan untuk enkripsi dan dekripsi. Kunci dekripsi pada public key algorithm secara praktis tidak dapat dihitung dari kunci enkripsi. Algoritma ini disebut “public key” karena kunci dapat dibuat menjadi public. Setiap orang dapat menggunakan kunci enkripsi untuk mengenkripsi pesan, tetapi hanya orang yang memiliki kunci dekripsi yang dapat mendekripsi pesan tersebut. Pada public ini kunci


(28)

enkripsi sering disebut kunci public (public key), dan kunci dekripsi disebut kunci rahasia (private key).

Teknik kriptografi modern yang ada saat ini dapat dikelompokkan sebagaimana ditunjukkan Gambar 2.2. Pada bagian ini akan didiskusikan operasi-operasi penyandian dasar untuk memberikan dasar bagi pemahaman tentang evolusi metode-metode enkripsi dan usaha-usaha cryptanalysis yang berkaitan.

Gambar 2.2. Pengelompokkan Enkripsi Beserta Contoh

2.3. Pola-pola Penyaringan Data

Proteksi data dan informasi dalam komunikasi komputer menjadi penting karena nilai informasi itu sendiri dan meningkatnya penggunaan komputer di berbagai sektor. Melihat kenyataan semakin banyak data yang diproses dengan komputer dan dikirim melalui perangkat komunikasi elektronik maka ancaman terhadap pengamanan data akan semakin meningkat. Beberapa pola ancaman terhadap komunikasi data dalam komputer dapat diterangkan sebagai berikut :


(29)

1. Interruption

Interception terjadi bila data yang dikirimkan dari A tidak sampai pada orang yang berhak B. Interruption merupakan pola penyerangan terhadap sifat availability (ketersediaan data)

2. Interception

Serangan ini terjadi bila pihak ketiga C berhasil membaca data yang dikirimkan. nterception merupakan pola penyerangan terhadap sifat

confidentiality (kerahasiaan data) 3. Modification

Pada serangan ini pihak ketiga C berhasil merubah pesan yang dikirimkan. Modification merupakan pola penyerangan terhadap sifat

integrity (keaslian data) 4. Fabrication

Pada serangan ini, penyerang berhasil mengirimkan data ke tujuan dengan memanfaatkan identitas orang lain. Fabrication merupakan pola penyerangan terhadap sifat authenticity.

Ancaman-ancaman tersebut di atas menjadi masalah terutama dengan semakin meningkatnya komunikasi data yang bersifat rahasia seperti: pemindahan dana secara elektronik kepada dunia perbankan atau pengiriman dokumen rahasia pada instansi pemerintah. Untuk mengantisipasi ancaman-ancaman tersebut perlu dilakukan usaha untuk melindungi data yang dikirim melalui saluran komunikasi salah satunya adalah dengan teknik enkripsi. Dan untuk masalah kekuatan pengamanannya tergantung pada algoritma metode enkripsi tersebut dan juga kunci yang digunakan di dalamnya.


(30)

2.4. Sejarah AES (Advance Encryption Standard)

Menurut (Munir, Rinaldi, 2006) setelah Public 20 Tahun lebih semenjak DES (Data Encryption Standard) diciptakan, DES menjadi tulang punggung bagi algoritma enkripsi standar yang digunakan di dunia internasional. Hingga akhirnya sebelum masa itu habis telah banyak muncul tanda-tanda akan kejatuhannya, hal ini diawali oleh Eli Biham dan Adi Shamir yang memperkenalkan Differential Cryptanalysis pada tahun 1990 untuk melakukan

attack terhadap DES dan hasilnya pun cukup mengejutkan attack ini dapat merecover 48 bit kunci untuk DES dengan jumlah round kurang dari 16-round. Selain itu attack ini terbukti efektif dibandingkan dengan brute force attack untuk jumlah round yang kurang dari 16-round.

Setelah terbukti bahwa DES dapat dipecahkan, banyak kalangan mulai meragukannya. Seiring dengan perkembangan tersebut banyak bermunculan algoritma baru yang diharapkan menjadi pengganti DES, diantaranya varian atau pengembangan dari DES sendiri (Triple DES, DES-x, LOKI, S2 DES), FEAL, IDEA, MISTY, RC5 dan lain sebagainya. Namun semuanya gagal mencuri hati NIST (National Institute of Standards Technology) untuk menjadikan salah satu diantaranya menjadi algoritma standar yang baru menggantikan DES.

Pada awal januari 1997, NIST mengumumkan diadakannya kontes pemilihan algoritma satandar terbaru menggantikan DES dengan harapan algoritma standar yang baru dapat bertahan paling tidak 30 tahun serta mampu memproteksi informasi rahasia selama 100 tahun. Kemudian pada bulan april pada tahun yang sama, NIST mengumumkan requirements yang harus dipenuhi algoritma enkripsi standar yang baru, antara lain :


(31)

1. Block Cipher

2. Panjang blok 128-bit

3. Panjang kunci yang bervariasi (128/ 192/ 256-bit)

4. Memiliki kekuatan yang sama atau lebih baik dari Triple DES serta memiliki tingkat efisiensi yang cukup signifikan

5. Dapat diimplementasikan dalam dua bahasa pemrograman yaitu bahasa C dan Java

6. Jika algoritma tersebut terpilih maka akan menjadi standar public yang tidak menerima royalty.

Setelah melalui perjalanan panjang terdapat 15 algoritma yang menjadi finalis AES, algoritma yang dibuat tersebut memiliki struktur umum Tabel 2.1.


(32)

Akhirnya dilakukan proses analisis antar para kontestan maupun publik yang aware terhadap pemilihan AES. Pada hari pertama tercatat bahwa pertemuan tersebut dihadiri oleh 180 partisipan (termasuk NIST) yang berasal dari 23 negara. Sekitar 28 paper yang diterima dan 21 paper dipresentasikan. Hampir seluruh kandidat algoritma saling mengungkapkan kelemahan satu sama lain namun hal yang cukup mengejutkan adalah Rijndael, tidak terdapat satupun komentar negatif yang ditujukan pada algoritma ini. Kemudian komentar datang dari Eli Biham mengenai estimasi jumlah round minimum yang harus dipenuhi supaya algoritma tersebut dinyatakan ”secure”, dalam artian bahwa attack yang dilakukan memiliki kompleksitas yang lebih kecil daripada ”exhaustive key search” Tabel 2.2.


(33)

Dari 15 algoritma yang masuk pada awalnya setelah melalui proses yang cukup ketat akhirnya algoritma yang dinyatakan sebagai finalis teridiri dari 5 algoritma Tabel 2.3.

Tabel 2.3. 5 Finalis AES

Kemudian untuk menyederhanakan tugas yang sangat sulit untuk menentukan pemenang dari lima finalis algoritma Tabel 2.4, maka dibuatlah paremeter / metrik ukur yang menggunakan skala nilai 100. terdapat delapan parameter dengan bobot nilai yang terdistribusi pada masing – masing parameter berdasarkan tujuan NIST. Parameter tersebut antara lain :

a. Desain Algoritma & Presentation (10 poin)

Penilaian pada kriteria ini mencakup kesederhanaan, cryptographic core

yang mudah dipahami secara jelas, fungsi round dan desain rasional yang mendasari pembuatan algoritma tersebut

b. Security (30 poin)

Penilaian ini mencakup sifat menurun dari algoritma ketika digunakan sebagai block cipher. Hal ini meliputi penggunaan cryptographic core yang kuat, teruji dan terpercaya, yang terintegrasi dengan tepat pada fungsi enkripsi/ dekripsi, key scheduling yang tepat, tidak adanya operasi yang


(34)

lemah, diffusi yang sesuai, whitening, tidak adanya trapdor, tidak adanya

weak keys atau semi weak keys. Hal lain yang juga diperhatikan adalah jaminan mengenai pemetaan satu-satu plainteks ke cipherteks menggunakan kunci yang sama dan pemetaan satu – satu yang berbeda menggunakan kunci yang berbeda

c. Kemudahan Implementasi (Ease of Implementation, 10 poin)

Hal ini sangat dipengaruhi oleh kesederhanaan dan kapabilitas dalam coding

algoritma agar dapat berjalan pada hardware, software, dan operating system yang berbeda

d. Fleksibiltas Penggunaan (Usage Flexibility, 10 poin)

Fleksibilitas yang dimaksud dalam proses ini adalah penggunaan algoritma tersebut sebagai fungsi Hash, Pseudo Random Number Generator, Message Authentication Codes dan Stream Cipher. Hampir sebagian besar finalis memenuhi kriteria ini

e. Performance/ Computational Efficiency (10 poin)

Hal ini mengenai karakteristik performance algoritma pada platforms yang berbeda dengan konfigurasi yang berbeda (ukuran kunci, ukuran blok, jumlah round). Pada uji kriteria ini Twofish dan RC6TM menunjukkan performa yang baik pada semua platform

f. Performance/ Adaptability on Smart Cards (10 poin)

Hal ini mencakup performance algoritma dan adaptibilitas pada Smart Cards. Rijndael dan Serpent bekerja lebih baik pada platform ini


(35)

g. Demonstrated/Expected strength against Cryptanalysis (10 poin)

Kriteria ini mencakup penilaian mengenai kekuatan algoritma terhadap linier, non-linier, statistical dan differential cryptanalysis termasuk power

dan timing attack. Selain itu hal ini juga mencakup interpolation attack,

partial key guessing, related key cryptanalysis, distributed key search, short-cut attacks seperti visual cryptanalysis. Ini merupakan tambahan 30 poin untuk keseluruhan security

h. Future Resilience (10 poin)

Penilaian ini ini meliputi fleksibiltas untuk digunakan dengan ukuran blok/kunci yang disesuaikan, paralelisme menurun yang dapat dieksploitasi (exploitable inherent parallelism), kesesuaian dengan arsitektur masa depan, serta operting system.


(36)

Akhirnya pada tahun 2000 Rijndael ditetapkan sebagai AES kemudian pada tanggal 26 November 2001 ditetapkan Rijndael sebagai standar baru AES melalui FIPS 197 (Federal Information Processing Standards Publications). Pembaca dapat menyimpulkan sendiri dari data dukung yang disajikan apakah Rijndael yang terpilih cukup menjadi jawaban untuk menjadi algoritma enkripsi yang reliable atau hanya policy NSA yang memiliki peran dan kepentingan yang cukup besar untuk tetap dapat memonitor seluruh traffic pertukaran informasi.

2.4.1Algoritma AES

Input dan output dari algoritma AES terdiri dari urutan data sebesar 128 bit. Urutan data yang sudah terbentuk dalam satu kelompok 128 bit tersebut disebut juga sebagai blok data atau plaintext yang nantinya akan dienkripsi menjadi ciphertext. Cipher key dari AES terdiri dari key dengan panjang 128 bit, 192 bit, atau 256 bit.

Seluruh byte dalam algoritma AES diinterpretasikan sebagai elemen

finite field. Elemen finite field ini dapat dikalikan dan dijumlahkan, tetapi hasil dari penjumlahan dan perkalian elemen finite field sangat berbeda dengan hasil dari penjumlahan dan perkalian bilangan biasa.

A. Penjumlahan

Penjumlahan dari dua elemen dalam suatu finite field dilakukan dengan menjumlahkan koefisien dari pangkat polinom yang bersesuaian dari dua elemen tersebut. Penjumlahan dilakukan dengan operasi XOR dan dinotasikan dengan . Dengan operasi ini, maka 11 = 0, 10 = 1, 01 = 1, dan 00 = 1. Pengurangan dari polinomial identik dengan penjumlahan polinomial.


(37)

Sebagai alternatif, penjumlahan elemen-elemen pada finite field dapat dijelaskan sebagai penjumlahan modulo 2 dari bit yang bersesuaian dalam byte. Untuk 2 byte {a7a6a5a4a3a2a1a0} dan {b7b6b5b4b3b2b1b0}, hasil penjumlahannya adalah {c7c6c5c4c3c2c1c0} dimana setiap ci = aibi. Contoh dari operasi penjumlahan adalah sebagai berikut :

(x6+x4+x2+x+1)(x7+x+1) = x7+x6+x4+x2 (notasi polinomial) {01010111}{10000011} = {11010100} (notasi biner)

{57}{83} = {d4} (notasi hexadesimal)

B. Perkalian

Dalam representasi polinomial, perkalian dalam GF(28) yang dinotasikan dengan mengacu pada perkalian modulo polinomial sebuah

irreducible polynomial yang berderajat 8. Sebuah polinom bersifat irreducible

jika satu-satunya pembagi adalah dirinya sendiri dan 1. Untuk algoritma AES,

irreducible polynomial ini adalah : m(x) = x8 + x4 + x3 + x + 1

atau dalam notasi hexadesimal adalah {01}{1b}. Sebagai contoh, {57}•{83} = {c1}

, karena

(x6 + x4 + x2 + x + 1) • (x7 + x + 1) = x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + 1

= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1


(38)

x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + x + 1 modulo (x8 + x4 + x3 + x + 1) = x7 + x6 + 1

Pengurangan modular oleh m(x) memastikan bahwa hasilnya akan berupa polinomial biner dengan derajat kurang dari 8, sehingga dapat dipresentasikan dengan 1 byte saja.Urutan bit diberi nomor urut dari 0 sampai dengan n-1 dimana n adalah nomor urutan. Urutan data 8 bit secara berurutan disebut sebagai byte dimana byte ini adalah unit dasar dari operasi yang akan dilakukan pada blok data.

Dalam algoritma AES, data sepanjang 128 bit akan dibagi-bagi menjadi array byte dimana setiap array byte ini terdiri dari 8 bit data input yang saling berurutan. Array byte ini direpresentasikan dalam bentuk Tabel 2.5.

:a0a1a2...a15

Dimana:

a0 = { input0,input1,...,input7 }

a1 = { input8,input9,...,input15 }

a15 = { input120,input121,...,input127 }

an = { input8n,input8n+1,...,input8n+7 }


(39)

Operasi algoritma AES dilakukan pada sebuah state dimana state

sendiri adalah sebuah array byte dua dimensi. Setiap state pasti mempunyai jumlah baris yang tetap, yaitu 4 baris, sedangkan jumlah kolom tergantung dari besarnya blok data. Baris pada state mempunyai indeks nomor row (r) dimana 0 ≤ r < 4, sedangkan kolom mempunyai indeks nomor column (c) dimana 0 ≤ c < Nb.

Nb sendiri adalah besarnya blok data dibagi 32.

Pada saat permulaan, input bit pertama kali akan disusun menjadi suatu array byte dimana panjang dari array byte yang digunakan pada AES adalah sepanjang 8 bit data Gambar 2.3. Array byte inilah yang nantinya akan dimasukkan atau dikopi ke dalam state dengan urutan :

s[r,c] = in[r+4c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb

sedangkan dari state akan dikopi ke output dengan urutan :

out[r+4c] = s[r,c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb


(40)

2.4.2Penyandian Blok

Penyandian blok pada dasarnya adalah proses penyandian terhadap blok data yang jumlahnya sudah ditentukan. Untuk sistem penyandian blok terdapat empat jenis mode operasi, yaitu Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB).

A. Electronic Code Book (ECB)

Mode ECB adalah mode yang paling umum dan paling mudah untuk diimplementasikan. Cara yang digunakan adalah dengan membagi data ke dalam blok-blok data terlebih dahulu yang besarnya sudah ditentukan. Blok-blok data inilah yang disebut plaintext karena blok data ini belum disandikan. Proses enkripsi akan langsung mengolah plaintext menjadi ciphertext tanpa melakukan operasi tambahan. Suatu blok plaintext yang dienkripsi dengan menggunakan kunci yang sama akan menghasilkan ciphertext yang sama Gambar 2.4.

Keuntungan dari mode OBC ini adalah kemudahan dalam implementasi dan pengurangan resiko salahnya semua plaintext akibat kesalahan pada satu plaintext. Namun mode ini memiliki kelemahan pada aspek keamanannya. Dengan mengetahui pasangan plaintext dan ciphertext, seorang

kriptanalis dapat menyusun suatu code book tanpa perlu mengetahui kuncinya.


(41)

B. Cipher Block Chaining (CBC)

Pada CBC digunakan operasi umpan balik atau dikenal dengan operasi berantai (chaining). Pada CBC, hasil enkripsi dari blok sebelumnya adalah

feedback untuk enkripsi dan dekripsi pada blok berikutnya. Dengan kata lain, setiap blok ciphertext dipakai untuk memodifikasi proses enkripsi dan dekripsi pada blok berikutnya Gambar 2.5.

Pada CBC diperlukan data acak sebagai blok pertama. Blok data acak ini sering disebut initialization vector atau IV. IV digunakan hanya untuk membuat suatu pesan menjadi unik dan IV tidak mempunyai arti yang penting sehingga IV tidak perlu dirahasiakan.


(42)

C. Cipher Feedback (CFB)

Pada mode CBC, proses enkripsi atau dekripsi tidak dapat dilakukan sebelum blok data yang diterima lengkap terlebih dahulu. Masalah ini diatasi pada mode Cipher Feedback (CFB). Pada mode CFB, data dapat dienkripsi pada unit-unit yang lebih kecil atau sama dengan ukuran satu blok. Misalkan pada CFB 8 bit, maka data akan diproses tiap 8 bit Gambar 2.6.

Pada permulaan proses enkripsi, IV akan dimasukkan dalam suatu

register geser. IV ini akan dienkripsi dengan menggunakan kunci yang sudah ada. Dari hasil enkripsi tersebut, akan diambil 8 bit paling kiri atau Most Significant Bit untuk di-XOR dengan 8 bit dari plaintext. Hasil operasi XOR inilah yang akan menjadi ciphertext dimana ciphertext ini tidak hanya dikirim untuk ditransmisikan tetapi juga dikirim sebagai feedback ke dalam register geser untuk dilakukan proses enkripsi untuk 8 bit berikutnya.


(43)

D. Output Feedback (OFB)

Sama pada mode CFB, mode OFB juga memerlukan sebuah register

geser dalam pengoperasiannya. Pertama kali, IV akan masuk ke dalam register

geser dan dilakukan enkripsi terhadap IV tersebut. Dari hasil proses enkripsi tersebut akan diambil 8 bit paling kiri untuk dilakukan XOR dengan plaintext

yang nantinya akan menghasilkan ciphertext. Ciphertext tidak akan diumpan balik ke dalam register geser, tetapi yang akan diumpan balik adalah hasil dari enkripsi IV Gambar 2.7.

Gambar 2.7. Mode Operasi OFB

2.4.3Algoritma AESRijndael

Pada algoritma AES, jumlah blok input, blok output, dan state adalah 128 bit. Dengan besar data 128 bit, berarti Nb = 4 yang menunjukkan panjang data tiap baris adalah 4 byte. Dengan panjang kunci 128-bit, maka terdapat sebanyak 3,4  1038 = 2128 kemungkinan kunci. Jika komputer tercepat dapat


(44)

mencoba 1 juta kunci setiap detik, maka akan dibutuhkan waktu 5,4  1024 tahun untuk mencoba seluruh kunci. Jika tercepat yang dapat mencoba 1 juta kunci setiap milidetik, maka dibutuhkan waktu 5,4  1018 tahun untuk mencoba seluruh kunci

Dengan blok input atau blok data sebesar 128 bit, key yang digunakan pada algoritma AES tidak harus mempunyai besar yang sama dengan blok input.

Cipher key pada algoritma AES bisa menggunakan kunci dengan panjang 128 bit, 192 bit, atau 256 bit. Perbedaan panjang kunci akan mempengaruhi jumlah round

yang akan diimplementasikan pada algoritma AES ini. Di bawah ini adalah Tabel yang memperlihatkan jumlah round (Nr) yang harus diimplementasikan pada masing-masing panjang kunci Tabel 2.6. Tidak seperti DES yang berorientasi bit,

Rijndael beroperasi dalam orientasi byte. Setiap putaran mengunakan kunci internal yang berbeda (disebut round key). Enciphering melibatkan operasi substitusi dan permutasi.

Tabel 2.6 Perbandingan jumlah Round dan Key

A. Ekspansi Kunci

Algoritma AES mengambil kunci cipher, K, dan melakukan rutin ekspansi kunci (key expansion) untuk membentuk key schedule. Ekspansi kunci menghasilkan total Nb(Nr+1) word. Algoritma ini membutuhkan set awal key


(45)

yang terdiri dari Nb word, dan setiap round Nr membutuhkan data kunci sebanyak

Nb word. Hasil key schedule terdiri dari array 4 byte word linear yang dinotasikan dengan [wi]. SubWord adalah fungsi yang mengambil 4 byte word input dan mengaplikasikan S-Box ke tiap-tiap data 4 byte untuk menghasilkan word output. Fungsi RotWord mengambil word [a0, a1, a2, a3] sebagai input, melakukan permutasi siklik, dan mengembalikan word [a1, a2, a3, a0]. Rcon[i] terdiri dari nilai-nilai yang diberikan oleh [xi-1, {00}, {00}, {00}], dengan xi-1 sebagai pangkat dari x (x dinotasikan sebagai {02} dalam field GF(28). Word ke Nk

pertama pada ekspansi kunci berisi kunci cipher. Setiap word berikutnya, w[i], sama dengan XOR dari word sebelumnya, w[i-1] dan word Nk yang ada pada posisi sebelumnya, w[i-Nk]. Untuk word pada posisi yang merupakan kelipatan

Nk, sebuah transformasi diaplikasikan pada w[i-1] sebelum XOR, lalu dilanjutkan oleh XOR dengan konstanta round, Rcon[i]. Transformasi ini terdiri dari pergeseran siklik dari byte data dalam suatu word RotWord, lalu diikuti aplikasi dari lookup Tabel untuk semua 4 byte data dari word SubWord.

B. Enkripsi

Proses enkripsi pada algoritma AES terdiri dari 4 jenis transformasi bytes, yaitu SubBytes, ShiftRows, Mixcolumns, dan AddRoundKey. Pada awal proses enkripsi, input yang telah dikopikan ke dalam state akan mengalami transformasi byte AddRoundKey. Setelah itu, state akan mengalami transformasi SubBytes, ShiftRows, MixColumns, dan AddRoundKey secara berulang-ulang sebanyak Nr. Proses ini dalam algoritma AES disebut sebagai round function.


(46)

Round yang terakhir agak berbeda dengan round-round sebelumnya dimana pada

round terakhir, state tidak mengalami transformasi MixColumns Gambar 2.8.

Gambar 2.8. Diagram Alir Proses Enkripsi

a. SubBytes

SubBytes merupakan transformasi byte dimana setiap elemen pada state akan dipetakan dengan menggunakan sebuah Tabel substitusi (S-Box). Hasil yang didapat dari pemetaan dengan menggunakan Tabel S-Box Tabel 2.7.


(47)

ini sebenarnya adalah hasil dari dua proses transformasi bytes, yaitu :

1. Invers perkalian dalam GF(28) adalah fungsi yang memetakan 8 bit ke 8 bit yang merupakan invers dari elemen finite field tersebut. Suatu byte a merupakan invers perkalian dari byte b bila a•b = 1, kecuali {00} dipetakan ke dirinya sendiri. Setiap elemen pada state akan dipetakan pada Tabel invers. Sebagai contoh, elemen “01010011” atau {53} akan dipetakan ke {CA} atau “11001010”.

2. Transformasi affine pada state yang telah dipetakan. Transformasi affine

ini apabila dipetakan dalam bentuk matriks adalah sebagai berikut :

                                                                                                           0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 7 6 5 4 3 2 1 0 ' 7 ' 6 ' 5 ' 4 ' 3 ' 2 ' 1 ' 0 b b b b b b b b b b b b b b b b

b7 b6 b5 b4 b3 b2 b1 b0 adalah urutan bit dalam elemen state atau array byte dimana

b7adalah most significant bit atau bit dengan posisi paling kiri Gambar 2.9.


(48)

b. ShiftRows

Transformasi Shiftrows pada dasarnya adalah proses pergeseran bit dimana bit paling kiri akan dipindahkan menjadi bit paling kanan (rotasi bit). Transformasi ini diterapkan pada baris 2, baris 3, dan baris 4. Baris 2 akan mengalami pergeseran bit sebanyak satu kali, sedangkan baris 3 dan baris 4 masing-masing mengalami pergeseran bit sebanyak dua kali dan tiga kali Gambar 2.10.

Gambar 2.10 Transformasi ShiftRows()

c. MixColumns

MixColumns mengoperasikan setiap elemen yang berada dalam satu kolom pada state Gambar 2.11. Elemen pada kolom dikalikan dengan suatu


(49)

polinomial tetap a(x) = {03}x3 + {01}x2 + {01}x + {02}. Secara lebih jelas, transformasi mixcolumns dapat dilihat pada perkalian matriks berikut ini :

                                         c c c c c c c c s s s s s s s s , 3 , 2 , 1 , 0 ' , 3 ' , 2 ' , 1 ' , 0 02 01 01 03 03 02 01 01 01 03 02 01 01 01 03 02

Melakukan proses penambahan pada operasi ini berarti melakukan operasi bitwise

XOR. Maka hasil dari perkalian matriks diatas dapat dianggap seperti perkalian yang ada di bawah ini :

) } 02 ({ ) } 03 ({ ) } 03 ({ ) } 02 ({ ) } 03 ({ ) } 02 ({ ) } 03 ({ ) } 02 ({ , 3 , 2 , 1 , 0 ' , 3 , 3 , 2 , 1 , 0 ' , 2 , 3 , 2 , 1 , 0 ' , 1 , 3 , 2 , 1 , ' , 0 c c c c c c c c c c c c c c c c c c c o c s s s s s s s s s s s s s s s s s s s s                        

Mixcolumns membutuhkan tabel penunjang dalam memperoleh hasil tabel tersebut adalah tabel E dan tabel L Tabel 2.8.


(50)

Tabel 2.8. Tabel E dan Tabel L

d. AddRoundKey

Pada proses AddRoundKey, sebuah round key ditambahkan pada state

dengan operasi bitwise XOR. Setiap round key terdiri dari Nb word dimana tiap

word tersebut akan dijumlahkan dengan word atau kolom yang bersesuaian dari

state sehingga :

s0',c,s1',c,s2',c,s3',c

s0,c,s1,c,s2,c,s3,c

wround*Nbc

untuk0cNb

[wi] adalah word dari key yang bersesuaian dimana i = round*Nb+c.


(51)

dimana key yang digunakan adalah initial key (key yang dimasukkan oleh kriptografer dan belum mengalami proses key expansion) Gambar 2.12.

Gambar 2.12. AddRoundKey ()

C. Dekripsi

Transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah yang berlawanan untuk menghasilkan inverse cipher yang mudah dipahami untuk algoritma AES. Transformasi byte yang digunakan pada invers cipher

adalah InvShiftRows, InvSubBytes, InvMixColumns, dan AddRoundKey. Algoritma dekripsi dapat dilihat pada skema berikut ini Gambar 2.13.


(52)

a. InvShiftRows

InvShiftRows adalah transformasi byte yang berkebalikan dengan transformasi ShiftRows. Pada transformasi InvShiftRows, dilakukan pergeseran bit ke kanan sedangkan pada ShiftRows dilakukan pergeseran bit ke kiri. Pada baris kedua, pergeseran bit dilakukan sebanyak 3 kali, sedangkan pada baris ketiga dan baris keempat, dilakukan pergeseran bit sebanyak dua kali dan satu kali Gambar 2.14.

Gambar 2.14. Transformasi InvShiftRows() b. InvSubBytes

InvSubBytes juga merupakan transformasi bytes yang berkebalikan dengan transformasi SubBytes. Pada InvSubBytes, tiap elemen pada state

dipetakan dengan menggunakan Tabel inverse S-Box. Tabel ini berbeda dengan Tabel S-Box dimana hasil yang didapat dari Tabel ini adalah hasil dari dua proses


(53)

yang berbeda urutannya Tabel 2.9, yaitu transformasi affine terlebih dahulu, baru kemudian perkalian invers dalam GF(28).

                                                                                                           1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 2 3 4 5 6 7 ' 0 ' 1 ' 2 ' 3 ' 4 ' 5 ' 6 ' 7 b b b b b b b b b b b b b b b b

Perkalian invers yang dilakukan pada transformasi InvSubBytes ini sama dengan erkalian invers yang dilakukan pada transformasi SubBytes.

Tabel 2.9. Inverse S-box

c. InvMixColumns

Pada InvMixColumns, kolom-kolom pada tiap state (word) akan dipandang sebagai polinom atas GF(28) dan mengalikan modulo x4 + 1 dengan


(54)

a-1(x)= {0B}x3 + {0D}x2 + {09}x + {0E}.

Atau dalam matriks :

)

(

)

(

)

(

'

x

s

x

a

x

s

c c c c c c c c

s

s

s

s

E

D

B

B

E

D

D

B

E

D

B

E

s

s

s

s

, 3 , 2 , 1 , 0 ' , 3 ' , 2 ' , 1 ' , 0

0

09

0

0

0

0

09

0

0

0

0

09

09

0

0

0

Hasil dari perkalian diatas adalah :

)

}

0

({

)

}

09

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

09

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

09

({

)

}

09

({

)

}

0

({

)

}

0

({

)

}

0

({

, 3 , 2 , 1 , ' , 3 , 3 , 2 , 1 , ' , 2 , 3 , 2 , 1 , ' , 1 , 3 , 2 , 1 , ' , 0 c c c c o c c c c c o c c c c c o c c c c c o c

s

E

s

s

D

s

B

s

s

B

s

E

s

s

D

s

s

D

s

B

s

E

s

s

s

s

D

s

B

s

E

s

d. Inverse AddRoundKey

Transformasi Inverse AddRoundKey tidak mempunyai perbedaan dengan transformasi AddRoundKey karena pada transformasi ini hanya dilakukan operasi penambahan sederhana dengan menggunakan operasi bitwise XOR.


(55)

PERANCANGAN SISTEM

3.1 Perancangan Sistem

Perancangan sistem ini menjelaskan tentang konsep dari sistem yang akan dibuat. Perancangan program aplikasi kriptografi dengan menggunakan algoritma Advanced Encryption Standard. Rancangan ini digunakan untuk meningkatkan keamanan dalam proses pengiriman atau pertukaran data. Perancangan ini dilakukan dalam beberapa tahap yaitu dimulai dari pembuatan diagram hirarki, System Development Life Cycle (SDLC), Flowchart dan dilanjutkan dengan perancangan antar muka program.

3.2 Perancangan Diagram Hirarki

Diagram hirarki untuk memudahkan proses perancangan aplikasi kriptosistem dengan menggunakan algoritma enkripsi Advanced Encryption Standard (AES). Diagram hirarki ini memiliki dua sub menu, yaitu: Menu dan Help. Sub Menu terbagi lagi menjadi Encrypt, Decrypt dan Exit. Sedangkan sub menu Help juga terbagi lagi menjadi Help dan About. Untuk lebih lengkapnya dapat dilihat pada Gambar 3.1.


(56)

3.3 Siklus Hidup Pengembangan Sistem

Metode Siklus Hidup Pengembangan Sistem atau yang sering disebut dengan SDLC(System Development Life Cycle) adalah suatu metode untuk merancang aplikasi perangkat lunak. Nama lain dari sistem ini adalah metode waterfall.

Perancangan dengan menggunakan metode SDLC dilakukan dalam enam tahap, antara lain:

1. Perencanaan ( System engineering)

Perencanaan adalah suatu kegiatan untuk menentukan program aplikasi yang akan dirancang dan dijalankan, dan siapa yang akan merancang program aplikasi tersebut.

2. Analisis

Analisis adalah suatu kegiatan untuk menentukan topik dari permasalahan yang sedang dihadapi dan bagaimana cara pemecahan masalah tersebut.

3. Desain

Desain adalah suatu kegiatan untuk menentukan konsep dasar rancangan dari suatu program yang akan dibuat sehingga diharapkan dengan desain yang baik, maka para pengguna akan merasa nyaman dalam menggunakan program aplikasi tersebut

4. Pengkodean ( coding )

pengkodean adalah suatu kegiatan yang berguna untuk mengimplementasikan konsep dasar dari tahap sebelumnya yaitu tahap desain kedalam bahasa Pemrograman

5. Pengujian

Pengujian adalah suatu kegiatan untuk mencari kelemahan serta kesalahan yang terjadi pada program aplikasi dan kemudian


(57)

memperbaiki kelemahan dan kesalahan tersebut. Terdapat beberapa metode pengujian yang digunakan untuk menguji fungsi – fungsi dari suatu program aplikasi. Salah satunya yaitu menggunakan metode black box testing.Pengujian dengan metode black box testing tidak memperhatikan struktur internal / sifat dari program / modul, seperti pada white box testing, tetapi menguji apakah program sudah sesuai dengan spesifikasinya. Pengujian black box testing mengijinkan seseorang perancang aplikasi untuk memberikan sejumlah input lalu diproses oleh aplikasi yang dibuat sesuai dengan kebutuhan spesifikasinya. Pengujian ini dilakukan agar menghasilkan output atau tampilan yang benar sesuai dengan fungsi dari program tersebut. Metode black box testing berusaha menemukan kesalahan yang sesuai dengan beberapa kategori diantaranya : hilangnya suatu fungsi / penulisan program yang salah, kesalahan interface program, kesalahan pada saat inisialisasi / validasi , kesalahan pengakssan data, dan kesalahan performasi.

6. Pemeliharaan (maintenance)

Pemeliharaan adalah suatu kegiatan evaluasi terhadap program aplikasi yang berjalan seperti : kesalahan pengkodean dalam program, kerusakan program yang menyebabkan performa program menurun ataupun memperbaharui program dengan fasilitas tambahan, supaya program dapat berjalan dengan baik dan performanya meningkat.

Rancangan SDLC untuk program aplikasi kriptosistem algoritma AES meliputi tahap Perencanaan, Analisis, desain, Pengkodean dan Pengujian.

3.4 Flowchart

Perancangan flowchart digunakan untuk menggambarkan sejumlah proses terstruktur dalam sistem, berorientasikan pada aliran proses yang terjadi. Demi memudahkan pembaca orang awam dalam mengerti isi dan maksud dari


(58)

aplikasi ini. Perancangan flowchart dibuat semudah dan sesimpel mungkin demi memudahkan pembacaan. Adapun perancangan aplikasi kriptosistem adalah sebagai berikut ini :

3.4.1 Flowchart Enkripsi

Proses yang terdapat pada Enkripsi yaitu user pertama kali memilih menu encrypt, kemudian klik pada tombol ”New” maka pada layar akan terlihat frame message, setelah itu user mengetikkan pesan ke frame message, kemudian user juga harus mengisikan key dan key sizenya yang telah disepakati, jika sudah user menekan tombol encrypt, maka pesan akan terenkripsi. Bila user ingin menyimpan pesan yang sudah terenkripsi tersebut tekan tombol save. Setelah user menyimpan data atau informasi, User dapat membuka file yang telah tersimpan sebelumnya dengan menekan tombol open. Jika user tidak mau menyimpan pesan yang sudah terenkripsi dan ingin keluar dari aplikasi, maka pilih menu exit. Untuk lebih lengkapnya dapat dilihat pada Gambar 3.2.


(59)

3.4.2 Flowchart Dekripsi

Proses pada dekripsi hampir sama dengan enkripsi, tetapi pada dekripsi user tidak perlu mengetikkan pesan, bisa langsung menggunakan menu open untuk membuka pesan yang akan dienkripsi dan mengisi key yang sudah disepakati. Untuk lebih lengkapnya dapat dilihat pada Gambar 3.3.

Gambar 3.3. Flowchart Dekripsi

3.5 Perancangan Antar Muka

Perancangan antar muka merupakan perancangan halaman aplikasi yang berinteraksi langsung antara sistem dengan pengguna. Perancangan antar


(60)

muka sistem merupakan salah satu bagian penting dalam tahap perancangan sistem. Dalam merancang antar muka aplikasi harus memudahkan pengguna dalam mengoperasikan sistem atau aplikasi tersebut.

Konsep rancangan yang sangat penting untuk mendesain halaman sebuah aplikasi adalah resolusi monitor. Terdapat 3 buah resolusi yang umum digunakan pada monitor, diantaranya 640x480, 800x600, 1024x768 pixel. Sedangkan rancangan antar muka aplikasi kriptosistem dapat dilihat pada Gambar 3.4.

Gambar 3.4. Rancangan Antar Muka

Setelah aplikasi dijalankan,maka akan ada beberapa menu aplikasi kriptosistem sesuai fungsinya.yang pertama menu encrypt. Perancangan halaman tersebut dapat dilihat pada Gambar 3.5.


(61)

Gambar 3.5. Rancangan Halaman Menu Encrypt

Untuk halaman menu decrypt dalam aplikasi kriptosistem hampir sama dengan menu encrypt. Perancangan menu decrypt dapat dilihat pada Gambar 3.6.


(62)

IMPLEMENTASI SISTEM

Pada bab IV ini akan dibahas mengenai implementasi dari rancangan sistem yang telah dibuat pada bab III. Bagian implementasi sistem kali ini meliputi: lingkungan implementasi, implementasi sistem dan implementasi antar muka.

4.1 Lingkungan Implementasi

Pada bagian ini akan dijelaskan mengenai perangkat keras dan perangkat lunak yang digunakan pada implementasi sistem ini.

Perangkat keras:

a. Processor Intel Core2Duo 1,8 Ghz b. Memori 2 GB

c. Harddisk 120 GB d. Monitor 13”.

Perangkat lunak:

a. Sistem Operasi Windows XP SP2

b. Microsoft Visual Studio 2005 (VB.NET) c. Photoshop CS2 (mengolah menu aplikasi)


(63)

4.2 Implementasi Sistem

Pada tahap ini akan dibahas mengenai implementasi sistem dari perancangan sistem yang telah dibahas sebelumnya. Dalam pembuatan aplikasi kriptosistem ada dua proses yaitu:

1. Proses Enkripsi

Proses enkripsi adalah proses menyandikan plaintext menjadi ciphertext. Agar aplikasi kriptositem bisa mengenkripsi saya menambahkan script yang bisa menyandikan plaintext menjadi ciphertext. Berikut pseudocodenya (Gambar 4.1)

Gambar 4.1. Pseudocode Enkripsi

2. Proses Dekripsi

Proses dekripsi adalah proses mengembalikan ciphertext menjadi plaintext semula. Berikut pseudocodenya (Gambar 4.2).

‘Mulai enkripsi’

cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length) ‘selesai enkripsi’

cryptoStream.FlushFinalBlock()

‘konversi data enkripsi dari suatu arus memory ke dalam suatu byte array’

Dim cipherTextBytes As Byte()

cipherTextBytes = memoryStream.ToArray() ‘nutup arus kedua-duanya’

memoryStream.Close() cryptoStream.Close()

‘konversi data enkripsi ke dalam suatu base64’ Dim cipherText As String

cipherText = Convert.ToBase64String(cipherTextBytes) ‘enkripsi kembali’


(64)

Gambar 4.2. Pseudocode Dekripsi

4.3 Implementasi Antar Muka

Pada tahap ini akan dijabarkan tentang implementasi antar muka dari aplikasi yang telah dibuat berdasarkan perancangan yang telah dibahas pada bab III. Sistem ini berfungsi untuk mendata informasi enkripsi dan dekripsi yang akan dikelola oleh user, sehingga dari data enkripsi dan dekripsi nantinya akan didapatkan informasi yang akurat. Pada sistem ini terdapat beberapa form utama yaitu:

1. Form Enkripsi 2. Form Dekripsi 3. Form Help 4. Form About 5. Form Utama.

‘mulai dekripsi’

Dim decryptedByteCount As Integer

decryptedByteCount = cryptoStream.Read(plainTextBytes, _ 0, _

plainTextBytes.Length) ‘nutup arus kedua-duanya’

memoryStream.Close() cryptoStream.Close()

‘konversi data enkripsi ke dalam UTF8’ Dim plainText As String

plainText = Encoding.UTF8.GetString(plainTextBytes, _ 0, _

decryptedByteCount) ‘dekripsi kembali’ Decrypt = plainText


(65)

4.3.1 Form Enkripsi

Form enkripsi berfungsi sebagai pengacak pesan atau informasi sehingga menjadi bentuk yang tidak dapat terbaca oleh orang lain dan menjadi suatu pesan yang rahasia. Tampilan form enkripsi dapat dilihat pada Gambar 4.3 di bawah ini.

Gambar 4.3. Tampilan Form Enkripsi

4.3.2 Form Dekripsi

Form Dekripsi yang berfungsi untuk menerjemahkan pesan yang telah diacak sehingga dapat dibaca oleh si penerima pesan atau oleh pihak – pihak yang berhak menerima pesan tersebut. Tampilan form dekripsi dapat dilihat pada Gambar 4.4 di bawah ini.


(66)

Gambar 4.4 Tampilan Form Dekripsi

4.3.3 Form Help

Form Help dapat digunakan sebagai panduan untuk menjalankan program aplikasi ini. Tampilan formHelp dapat dilihat pada Gambar 4.5 di bawah ini.


(67)

4.3.4 Form About

Form About ini menampilkan penjelasan singkat mengenai program aplikasi dan pembuat program aplikasi ini. Tampilan formAbout dapat dilihat pada Gambar 4.6 di bawah ini.

Gambar 4.6. Tampilan Form About

4.3.5 Form Utama

Form utama ini merupakan inti dari aplikasi ini, didalam form ini terdapat menu-menu yang menghubungkan ke form lain. Menu-menu pada form ini akan terbagi secara otomatis setelah aplikasi dijalankan. Tampilan form utama dapat dilihat pada Gambar 4.7 di bawah ini.


(68)

(69)

UJI COBA DAN EVALUASI

Pada bab ini akan dibahas mengenai uji coba terhadap aplikasi yang telah dibuat dan selanjutnya akan dibuat evaluasi dari hasil uji coba tersebut. Uji coba dilaksanakan untuk mengetahui apakah aplikasi dapat berjalan dengan baik sesuai perancangan yang dibuat. Evaluasi dilakukan untuk menentukan tingkat keberhasilan dari aplikasi tersebut.

5.1 Lingkungan Uji Coba

Pada uji coba kali ini akan menggunakan aplikasi kriptosistem. Spesifikasi uji coba kali ini adalah sebagai berikut:

- Sistem Operasi: Windows XP SP2

- Pemrograman : Microsoft Visual Basic 2005 - Processor Core 2 Duo 1.83 GHz

- Ram 2 Gb

- Harddisk 120 Gb.

5.2 Skenario uji coba

Setelah program aplikasi ini melewati proses tahap pengkodean, maka tahap selanjutnya adalah tahap pengujian. Pengujian terhadap program ini dilakukan dengan tujuan untuk mengetahui apakah program berjalan dan berfumgsi sesuai dengan spesifikasi rancangan atau tidak.


(70)

Metode yang digunakan adalah metode pengujian black box, yaitu metode pengujian yang hanya memberikan input pada program aplikasi.Input tersebut lalu diproses dan akan menghasilkan output yang menentukan kesesuaian program dengan spesifikasi rancangan dan kebutuhan fungsional yang diinginkan pengguna. Bila dari input yang diberikan menghasilkan output yang sesuai dengan spesifikasi rancangan, maka program aplikasi sudah benar dan tidak perlu dilakukan perbaikan. Namun bila dari input yang diberikan menghasilkan output yang tidak sesuai dengan spesifikasi rancangan, maka pada program aplikasi masih terdapat kesalahan dan perlu dilakukan perbaikan. Perbaikan ini dilakukan hingga program aplikasi menghasilkan output yang sesuai dengan spesifikasi rancangan dan kebutuhan fungsional pengguna.

5.3 Pelaksanaan Uji Coba

Pada sub-bab ini akan dijelaskan step-by-step mengenai pelaksanaan Cara uji coba yang telah dijabarkan pada sub-bab sebelumnya, untuk membuktikan uji coba aplikasi disertakan gambar tentang kejadian-kejadian yang sedang berlangsung pada aplikasi kriptosistem tersebut. Berikut penjelasan lebih detail mengenai proses yang terjadi:

5.3.1 Uji Coba Enkripsi

Uji coba ini dilakukan untuk mengetahui apakah proses pengenkripsian data atau pesan yang telah diinputkan sebelumnya berhasil atau tidak. Karena algoritma rijndael mendukung panjang kunci 128 bit sampai 256 bit. Jadi dalam enkripsi ada beberapa uji coba yaitu:


(71)

1. Kalau sebelumnya sudah menyimpan plaintext, tinggal klik button open dan cari dimana plaintext tersebut tersimpan. Lebih jelasnya bisa dilihat pada Gambar 5.1

Gambar 5.1 Cari Plaintext Yang Sudah Disimpan

2. Setelah ketemu file plaintextnya, klik 2x maka akan keluar seperti Gambar 5.2 di bawah ini


(72)

3. Kemudian isikan key dan tentukan key sizenya. Misal enkripsi dengan key size 128 bit. Lebih jelasnya bisa dilihat pada Gambar 5.3

Gambar 5.3 Proses Enkripsi 128 bit

4. Uji coba enkripsi dengan key size 192 bit. Lebih jelasnya bisa dilihat pada Gambar 5.4.


(73)

5. Uji coba enkripsi dengan key size 256 bit. Lebih jelasnya bisa dilihat pada Gambar 5.5.

Gambar 5.5. Proses Enkripsi 256 bit

6. Uji coba menyimpan plaintext yang sudah dienkripsi. Lebih jelasnya bisa dilihat pada Gambar 5.6.


(74)

5.3.2 Uji Coba Dekripsi

Uji coba ini dilakukan untuk mengetahui hasil dari proses enkripsi di atas. apakah proses pendekripsian data atau pesan yang telah dienkripsi sebelumnya berhasil atau tidak.

1. Open file Ciphertext yang sudah di simpan. Lebih jelasnya bisa dilihat pada Gambar 5.7

Gambar 5.7. Cari Ciphertext

2. Setelah ketemu file ciphertextnya, klik 2x maka akan keluar seperti Gambar 5.8 di bawah ini


(75)

3. Kemudian isikan key dan key sizenya sesuai enkripsi. Misal dekripsi dengan key size 128 bit. Lebih jelasnya bisa dilihat pada Gambar 5.9

Gambar 5.9. Proses Dekripsi 128 bit

2. Uji coba dekripsi dengan key size 192 bit. Lebih jelasnya bisa dilihat pada Gambar 5.10


(76)

3. Uji coba dekripsi dengan key size 256 bit. Lebih jelasnya bisa dilihat pada Gambar 5.11.


(77)

PENUTUP

6.1 Kesimpulan

Dari hasil perancangan dan pembuatan program aplikasi kriptosistem menggunakan algoritma Advanced Encryption Standard (AES) ini, dapat diambil kesimpulan sebagai berikut :

a. Dengan (Imports System.IO) untuk memanggil proses input atau output, (Imports System.Text) untuk proses plaintext atau ciphertext dan (Imports System.Security.Cryptography) untuk memanggil proses keamanan kriptografinya

b. Dengan menjalankan perintah atau fungsi RijndaelSimple.Encrypt (plaintext, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize) untuk proses enkripsi dan RijndaelSimple.Decrypt (ciphertext, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize) untuk proses dekripsi.

6.2 Saran

Berdasarkan pengalaman dalam proses pembuatan aplikasi ini, terdapat beberapa saran yang diusulkan oleh penyusun terkait untuk pengembangan aplikasi lebih lanjut. Diantaranya yaitu input untuk proses enkripsi tidak untuk format berbentuk text atau angka saja, tetapi bisa juga digunakan untuk mengenkripsi data yang berupa gambar (image), suara, video dan lain sebagainya.


(78)

1. Kurniawan, Yusuf. Kriptografi, Keamanan Internet dan Jaringan Komunikasi. Penerbit Informatika: Bandung, 2004.

2. Munir, Rinaldi. Kriptografi. Informatika: Bandung, 2006.

3. Munir, Rinaldi. Matematika Diskrit. Informatika: Bandung, 2005.

4. Munir, Rinaldi. Perancangan Algoritma Stream Cipehr dengan Chaos. Institut Teknologi Bandung: Bandung, 2005.


(1)

5. Uji coba enkripsi dengan key size 256 bit. Lebih jelasnya bisa dilihat pada Gambar 5.5.

Gambar 5.5. Proses Enkripsi 256 bit

6. Uji coba menyimpan plaintext yang sudah dienkripsi. Lebih jelasnya bisa dilihat pada Gambar 5.6.


(2)

64

5.3.2 Uji Coba Dekripsi

Uji coba ini dilakukan untuk mengetahui hasil dari proses enkripsi di atas. apakah proses pendekripsian data atau pesan yang telah dienkripsi sebelumnya berhasil atau tidak.

1. Open file Ciphertext yang sudah di simpan. Lebih jelasnya bisa dilihat pada Gambar 5.7

Gambar 5.7. Cari Ciphertext

2. Setelah ketemu file ciphertextnya, klik 2x maka akan keluar seperti Gambar 5.8 di bawah ini


(3)

3. Kemudian isikan key dan key sizenya sesuai enkripsi. Misal dekripsi dengan key size 128 bit. Lebih jelasnya bisa dilihat pada Gambar 5.9

Gambar 5.9. Proses Dekripsi 128 bit

2. Uji coba dekripsi dengan key size 192 bit. Lebih jelasnya bisa dilihat pada Gambar 5.10


(4)

66

3. Uji coba dekripsi dengan key size 256 bit. Lebih jelasnya bisa dilihat pada Gambar 5.11.


(5)

PENUTUP

6.1 Kesimpulan

Dari hasil perancangan dan pembuatan program aplikasi kriptosistem menggunakan algoritma Advanced Encryption Standard (AES) ini, dapat diambil kesimpulan sebagai berikut :

a. Dengan (Imports System.IO) untuk memanggil proses input atau output, (Imports System.Text) untuk proses plaintext atau ciphertext dan (Imports System.Security.Cryptography) untuk memanggil proses keamanan kriptografinya

b. Dengan menjalankan perintah atau fungsi RijndaelSimple.Encrypt (plaintext, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize) untuk proses enkripsi dan RijndaelSimple.Decrypt (ciphertext, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize) untuk proses dekripsi.

6.2 Saran

Berdasarkan pengalaman dalam proses pembuatan aplikasi ini, terdapat beberapa saran yang diusulkan oleh penyusun terkait untuk pengembangan aplikasi lebih lanjut. Diantaranya yaitu input untuk proses enkripsi tidak untuk format berbentuk text atau angka saja, tetapi bisa juga digunakan untuk mengenkripsi data yang berupa gambar (image), suara, video dan lain sebagainya.


(6)

DAFTAR PUSTAKA

1. Kurniawan, Yusuf. Kriptografi, Keamanan Internet dan Jaringan Komunikasi. Penerbit Informatika: Bandung, 2004.

2. Munir, Rinaldi. Kriptografi. Informatika: Bandung, 2006.

3. Munir, Rinaldi. Matematika Diskrit. Informatika: Bandung, 2005.

4. Munir, Rinaldi. Perancangan Algoritma Stream Cipehr dengan Chaos. Institut Teknologi Bandung: Bandung, 2005.