SKRIPSI
EKO SATRIA
051411010
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2009
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains
EKO SATRIA
051411010
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2009
PERSETUJUAN
Judul : STUDI ALGORITMA RIJNDAEL
DALAM SISTEM KEAMANAN DATA
Kategori : SKRIPSI
Nama : EKO SATRIA
Nomor Induk Mahasiswa : 051411010
Program Studi : SARJANA (S1) MATEMATIKA
Departemen : MATEMATIKA
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN
ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan,
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dra. Mardiningsih, M.Si. Syahriol Sitorus, S.Si, M.IT.
NIP. 131803344 NIP. 132174687
Diketahui/Disetujui oleh
Departemen Matematika FMIPA USU Ketua,
DR. Saib Suwilo, M.Sc. NIP. 131796149
PERNYATAAN
STUDI ALGORITMA RIJNDAEL DALAM SISTEM KEAMANAN DATA
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan,
Eko Satria 051411010
PENGHARGAAN
Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpahan rahmat dan karunia-Nya skripsi ini berhasil diselesaikan dalam waktu yang telah direncanakan.
Ucapan terima kasih saya sampaikan kepada Bapak Syahriol Sitorus, S.Si, M.IT dan Ibu Dra. Mardiningsih, M.Si. selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada saya untuk menyempurnakan skripsi ini. Panduan ringkas, padat dan profesional telah diberikan kepada saya agar penulis dapat menyelesaikan tugas ini. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Dr. Saib Suwilo, M.Sc. dan Bapak Drs. Henri Rani Sitepu, M.Si., Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen pada Departemen Matematika FMIPA USU, pegawai di FMIPA USU, dan rekan-rekan kuliah. Akhirnya, tidak terlupakan kepada bapak, ibu dan semua ahli keluarga yang selama ini memberikan bantuan dan dorongan yang diperlukan. Semoga Tuhan Yang Maha Esa membalasnya.
ABSTRAK
Algoritma kriptografi bernama Rijndael didesain oleh Vincent Rijmen dan John Daemen asal Belgia yang keluar sebagai pemenang kontes algoritma kriptografi sebagai pengganti DES yang diadakan oleh NIST (National Institutes of Standards and Technology) milik pemerintah Amerika Serikat pada 26 November 2001. Algoritma Rijndael inilah yang kemudian dikenal dengan Advanced Encryption Standard (AES). Setelah mengalami beberapa proses standardisasi oleh NIST, Rijndael kemudian diadopsi menjadi standard algoritma kriptografi secara resmi pada 22 Mei 2002.
Tugas akhir ini membahas tentang studi dan implementasi Algoritma Rijndael untuk menyandikan data yang disimpan dalam media penyimpanan dan dalam pengimplementasinya menggunakan bahasa pemrograman Microsoft Visual Basic 6.0.
THE STUDY OF THE ALGORITHM RIJNDAEL IN THE SECURITY SYSTEM OF THE DATA
ABSTRACT
The cryptography algorithm named Rijndael was designed by Vincent Rijmen and John Daemen from Belgium that went out as the winner of the contest of the cryptography algorithm as the replacement Des that was held by NIST (National Institutes of Standards and Technology) property of the United States government on November 26 2001. This Rijndael algorithm that afterwards was known with Advanced Encryption Standard (AES). After experiencing several processes of the standardisation by NIST, Rijndael was afterwards adopted to standard the cryptography algorithm officially on May 22 2002.
The task of this end discussed about the study and the algorithm Rijndael implementation to encode the data that was kept in the storage media and in pengimplementasi him used the programming language of Microsoft Visual Basic 6.0.
DAFTAR ISI Halaman PERSETUJUAN ii PERNYATAAN iii PENGHARGAAN iv ABSTRAK v ABSTRACT vi
DAFTAR ISI vii
DAFTAR GAMBAR ix DAFTAR TABEL x BAB 1 PENDAHULUAN 1.1 Latar Belakang 1 1.2 Perumusan Masalah 2 1.3 Pembatasan Masalah 3 1.4 Tujuan Penelitian 3 1.5 Kontribusi Penelitian 3 1.6 Metode Penelitian 4 1.7 Tinjauan Pustaka 4
BAB 2 LANDASAN TEORI
2.1 Teori Dasar Kriptografi 7
2.2 Algoritma Kriptografi 8
2.2.1 Algoritma Simetri 10
2.2.2 Algoritma Tak Simetri 12
2.2.3 Fungsi Hash (Hash Function) 14
2.3 Teknik Dasar Kriptografi 15
2.3.1 Metode Substitusi 15
2.3.2 Teknik Blok 15
2.3.3 Teknik Permutasi atau Teknik Transposisi 16
2.4 Teknik-teknik Kriptanalisis 17
2.5 Algoritma Rijndael 22
2.6 Keamanan Rijndael 32
BAB 3 PEMBAHASAN
3.1 Analisis Desain Rijndael 34
3.1.1 Kotak Substitusi (S-Box) 34
3.1.2 Operasi MixColumns 35
3.1.3 Ekspansi Kunci 35
3.2 Implementasi Algoritma Rijndael 36
3.2.1 Pembentukan Kotak Substitusi (S-Box) 36
3.2.2 Proses MixColumns 39
3.2.3 Proses Enkripsi 39
3.3 Flowchart Program 47
3.4 Implementasi 48
3.5 Rijndael Untuk Integritas Data 54
BAB 4 KESIMPULAN DAN SARAN
4.1 Kesimpulan 60
4.2 Saran 61
DAFTAR PUSTAKA 62
DAFTAR GAMBAR
Halaman
Gambar 2.1 Proses enkripsi dan dekripsi 10
Gambar 2.2 Algoritma simetri 11
Gambar 2.3 Algoritma tak simetri 13
Gambar 2.4 Permutasi 16
Gambar 2.5 Serangan kriptografi man-in-the middle 19
Gambar 2.6 Diagram proses enkripsi dan proses dekripsi 24
Gambar 2.7 Transformasi SubByte dengan S-Box 25
Gambar 2.8 Proses SubBytes 25
Gambar 2.9 Hasil SubBytes 25
Gambar 2.10 Transformasi Shiftrows 26
Gambar 2.11 Proses transformasi Shiftrows 27
Gambar 2.12 Hasil dari ShiftRows 28
Gambar 2.13 Operasi MixColumns 28
Gambar 2.14 Hasil keseluruhan MixColumns 28
Gambar 2.15 Transformasi AddRoundKey 28
Gambar 2.16 Hasil AddRoundKey 29
Gambar 2.17 Proses ekspansi kunci 30
Gambar 2.18 Proses algoritma Rijndael 31
Gambar 3.1 Flowchart aplikasi enkripsi dan dekripsi algoritma Rijndael 47
Gambar 3.2 Form utama 48
Gambar 3.3 Hasil enkripsi teks 49
Gambar 3.4 Hasil dekripsi teks 49
Gambar 3.5 Enkripsi file 50
Gambar 3.6 Dekripsi file 50
Gambar 3.7 Hasil file enkripsi 51
Gambar 3.8 Grafik waktu proses enkripsi Rijndael dan 3DES 52 Gambar 3.9 Grafik waktu proses dekripsi Rijndael dan 3DES 53
DAFTAR TABEL
Halaman
Tabel 2.1 Subtitusi 15
Tabel 2.2 Teknik blok 16
Tabel 2.3 Versi-versi AES 22
Tabel 2.4 S-Box Rijndael 24
Tabel 3.1 Waktu Proses Enkripsi Algoritma Rijndael dan 3DES 52 Tabel 3.2 Waktu Proses Dekripsi Algoritma Rijndael dan 3DES 53
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Data merupakan salah satu aset penting dalam kelangsungan hidup perusahaan mana pun, instansi-instansi pemerintahan, maupun institusi-institusi pendidikan. Penyimpanan data memerlukan berbagai macam pertimbangan, terutama dari segi keamanannya dan kerahasiaannya.
Dalam menjaga keamanan data terdapat sebuah metode pengamanan data yang dikenal dengan nama kriptografi. Kriptografi merupakan salah satu metode pengamanan data yang dapat digunakan untuk menjaga kerahasiaan data, keaslian data serta keaslian pengirim.
Kriptografi adalah ilmu yang berguna untuk mengacak (kata yang lebih tepat adalah masking) data sedemikian rupa sehingga tidak bisa dibaca oleh pihak ke tiga. Tentu saja data yang diacak harus bisa dikembalikan ke bentuk semula oleh pihak yang berwenang.
Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data
.
Data yang ingin diacak biasanya disebut Plainteks (Plaintext). Data diacak dengan menggunakan Kunci Enkripsi (Encryption Key). Proses pengacakan itu sendiri disebut Enkripsi (Encryption). Plainteks yang telah diacak disebut Cipherteks (Chipertext). Kemudian proses untuk mengembalikan Cipherteks ke Plainteks disebut
Dekripsi (Decryption). Kunci yang digunakan pada tahap Dekripsi disebut Kunci Dekripsi (Decryption Key).
2 (Dua) tipe dasar dari teknologi kriptografi adalah symmetric key (secret/private key) cryptography dan asymmetric (public key) cryptography. Pada symmetric key cryptography, baik pengirim maupun penerima memiliki kunci rahasia yang umum. Pada asymmetric key cryptography, pengirim dan penerima masing-masing berbagi kunci publik.
Algoritma kriptografi yang baik akan memerlukan waktu yang lama untuk memecahkan data yang telah disandikan. Seiring dengan perkembangan teknologi komputer, dunia teknologi informasi membutuhkan algoritma kriptografi yang lebih kuat dan aman.
Algoritma kriptografi bernama Rijndael yang didesain oleh Vincent Rijmen dan John Daemen asal Belgia sebagai pemenang kontes algoritma kriptografi pengganti DES yang diadakan oleh NIST (National Institutes of Standards and Technology) milik pemerintah Amerika Serikat pada 26 November 2001. Algoritma Rijndael inilah yang kemudian dikenal dengan Advanced Encryption Standard (AES). Setelah mengalami beberapa proses standardisasi oleh NIST, Rijndael kemudian diadopsi menjadi standard algoritma kriptografi secara resmi pada 22 Mei 2002.
1.2 Perumusan Masalah
Bagaimana menganalisa dan mengimplementasikan algoritma Rijndael dalam menjaga keamanan data agar pihak yang tidak berwenang atau Kriptanalisis tidak dapat memecahkan data yang telah diacak sehingga keamanan dan kerahasian data dapat terjaga.
1.3 Pembatasan Masalah
Dalam perancangan sistem keamanan data menggunakan algoritma Rijndael dilakukan beberapa batasan sebagai berikut:
1. Metode yang digunakan menggunakan algoritma Rijndael. 2. Dalam pengamanan data hanya sebatas integritas data.
3. Dalam pengamanan data file yang dapat diproses file-file yang ada pada Microsoft Office, file berekstensi exe, rtf, txt.
4. Dalam perancangan dan menerapkan algoritma Rijndael dengan menggunakan bahasa pemrograman Visual Basic 6.0.
1.4 Tujuan Penelitian
Tujuan penelitian menganalisa dan mengimplentasikan algoritma Rijndael dalam sistem pengamanan data.
1.5 Kontribusi Penelitian
Manfaat penelitian ini untuk menambah pengetahuan dan wawasan penulis tentang kriptografi khususnya enkripsi dan dekripsi di dalam pengamanan dan kerahasiaan suatu data menggunakan Algoritma Rijndael.
1.6 Metode Penelitian
Penelitian ini dilakukan dengan langkah-langkah sebagi berikut:
1. Melakukan studi literatur mengenai algoritma Rijndael baik pada beberapa buku, makalah, maupun artikel-artikel yang ada pada situs-situs internet yang berhubungan dengan algoritma Rijndael.
2. Menganalisa proses enkripsi dan dekripsi pada algoritma Rijndael.
3. Melakukan perancangan dan menerapkan algoritma Rijndael dengan menggunakan bahasa pemrograman Visual Basic 6.0.
1.7 Tinjauan Pustaka
Dalam tulisan ini, penulis memanfaatkan buku-buku yang dapat dipergunakan untuk menjelaskan teori-teori pemecahan masalah atau dasar pemikiran untuk menjelaskan masalah yang dibahas.
(Andi, 2003) dalam bukunya ”Memahami Model Enkripsi dan Security Data”, berkaitan dengan masalah yang terjadi dan perlunya pengamanan terhadap data yang ada dalam komputer, lingkup keamanan data dari suatu sistem komputer mencakup hal-hal yang tidak saja berkaitan dengan:
1. Keamanan fisik, komputer harus diletakkan pada tempat yang dapat dikontrol, karena kemungkinan penyalahgunaan dapat terjadi (user yang tidak disiplin meninggalkan komputer dalam keadaan hidup sehingga orang tidak berhak dapat menggunakan fasilitas komputer tersebut).
2. Keamanan akses, apabila seluruh akses sistem komputer secara administrasi harus dikontrol dan terdokumentasi, maka suatu permasalahan dapat diketahui penyebabnya dan mencari pemecahannya.
3. Keamanan file atau data, apabila file atau data yang sensitif dan bersifat rahasia, maka diperlukan tingkat akses dan bahkan dapat dibuatkan suatu kode sandi tertentu. Jika file atau data tersebut dicuri, maka isi informasinya tidak mudah didapatkan.
4. Keamanan jaringan, dengan pemanfaatan jaringan publik, data yang ditransmisikan dalam jaringan harus aman dari kemungkinan dapat diketahui isi informasinya sehingga untuk informasi yang sensitif harus dibuatkan kode sandi tertenru untuk pengamanannya pada saat transmisi. (Dony Ariyus, 2006) dalam bukunya “Kriptografi Keamanan Data dan Komunikasi“, kriptografi berasal dari bahasa Yunani, menurut bahasa dibagi menjadi 2 (dua) yaitu kripto dan graphia, kripto berarti secret (rahasia) dan graphia berarti writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain. Algoritma adalah urutan langkah-langkah logis untuk penyelesaian masalah yang disusun secara sistematis. Algoritma kriptografi merupakan langkah-langkah logis untuk menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut. Algoritma kriptografi terdiri dari 3 (tiga) fungsi dasar yaitu:
1. Enkripsi, merupakan hal yang sangat penting dalam kriptografi yang merupakan pengaman data yang dikirimkan terjaga rahasianya. Pesan asli disebut plaintext yang dirubah menjadi kode-kode yang tidak dimengerti. Enkripsi bisa diartikan dengan cipher.
2. Deskripsi, merupakan kebalikan dari enkripsi, pesan yang telah dienkripsi dikembalikan kebentuk asalnya (plaintext) disebut dengan deskripsi pesan. 3. Kunci, yang dimaksud disini adalah kunci yang dipakai untuk melakukan
enkripsi dan dekripsi, kunci terbagi 2 (dua) bagian yaitu kunci pribadi (private key) dan kunci umum (public key).
(Rinaldi Munir, 2006) dalam bukunya “Kriptografi“, Rijndael menggunakan substitusi dan permutasi, dan sejumlah putaran (cipher berulang) setiap putaran menggunakan kunci internal yang berbeda (kunci setiap putaran disebut round key).
Joan Daemen & Vincent Rijmen, dalam artikel yang berjudul A Specification for Rijndael, the AES Algorithm, menjelaskan 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 chipertext. Chiper key dari AES terdiri dari key dengan panjang 128 bit, 192 bit, atau 256 bit.
Federal Information Processing Standards Publication 197, dalam artikel yang berjudul Announcing the ADVANCED ENCRYPTION STANDARD (AES), menjelaskan 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 blok input atau blok data sebesar 128 bit, key yang digunakan pada algoritma AES tidak harus mempunyai besar yang sama dengan blok input. Chiper 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.
BAB 2
LANDASAN TEORI
2.1 Teori Dasar Kriptografi
Kriptografi (cryptography) berasal dari bahasa Yunani “cryptos” artinya “secret” (rahasia), sedangkan “graphein” artinya “writing” (tulisan). Jadi, kriptografi berarti “secret writing” (tulisan rahasia). Ada beberapa definisi kriptografi yang telah dikemukakan di dalam beberapa literatur. Definisi yang dipakai di dalam buku-buku yang lama (sebelum tahun 1980-an) menyatakan bahwa kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Definisi ini mungkin cocok pada masa lalu di mana kriptografi digunakan untuk keamanan komunikasi penting seperti komunikasi di kalangan militer, diplomat dan mata-mata. Namun saat ini kriptografi lebih dari sekedar privacy, tetapi juga tujuan data integrity, authentication dan non repudiation.
Ada 4 (empat) tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu:
1. Kerahasiaan (confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
Di dalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan menjadi cipherteks.
2. Integritas data (data integrity), adalah layanan yang menjamin bahwa pesan masih asli atau belum pernah dimanipulasi selama pengiriman.
Dengan kata lain, aspek keamanan ini dapat diungkapkan sebagai pertanyaan: “Apakah pesan yang diterima masih asli atau tidak mengalami perubahan?”. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubstitusian data lain ke dalam pesan yang sebenarnya.
3. Otentikasi (authentication), adalah layanan yang berhubungan dengan identifikasi, baik mengindentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication atau entity authentication) maupun mengindentifikasi kebenaran sumber pesan (data origin authencation).
Pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran komunikasi juga harus diotentikasi asalnya. Dengan kata lain, aspek keamanan ini dapat diungkapkan sebagai pertanyaan: “Apakah pesan yang diterima benar-benar berasal dari pengirim yang benar?”.
4. Nirpenyangkal (non-repudiation), adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
2.2 Algoritma Kriptografi
Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan dechipering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk enciphering dan dechiphering.
Keamanan algoritma kriptografi sering diukur dari banyaknya kerja yang dibutuhkan untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Apabila semakin banyak proses yang diperlukan berarti juga semakin
lama waktu yang dibutuhkan, maka semakin kuat algoritma tersebut dan semakin aman digunakan untuk menyandikan pesan.
Algoritma kriptografi terdiri dari fungsi dasar yaitu:
1. Enkripsi, merupakan hal yang sangat penting dalam kriptografi yang merupakan pengamanan data yang dikirimkan terjaga rahasianya, pesan asli disebut plainteks yang dirubah menjadi kode-kode yang tidak dimengerti. Enkripsi bisa diartikan dengan cipher atau kode.
2. Dekripsi, merupakan kebalikan dari enkripsi, pesan yang telah dienkripsi dikembalikan kebentuk asalnya (plainteks) disebut dengan dekripsi pesan. Algoritma yang digunakan untuk dekripsi tentu berbeda dengan yang digunakan untuk enkripsi.
3. Kunci, yang dimaksud di sini adalah kunci yang dipakai untuk melakukan enkripsi dan dekripsi, kunci terbagi jadi 2 (dua) bagian yaitu kunci pribadi (private key) dan kunci umum (public key).
Konsep matematis yang mendasari kriptografi adalah relasi antara 2 (dua) buah himpunan yaitu himpunan yang berisi elemen-elemen plainteks dan himpunan yang berisi cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-elemen antar kedua himpunan tersebut. Misalkan P menyatakan plainteks dan C menyatakan cipherteks, maka fungsi enkripsi E memetakan P ke C,
E(P)=C (2.1)
Dan fungsi dekripsi D memetakan C ke P,
Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka kesama berikut harus benar,
D(E(P))=P (2.3)
Kriptografi modern menggunakan kunci, yang dalam hal ini algoritma tidak lagi dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci adalah parameter yang digunakan untuk transformasi enciphering dan dechipering. Kunci biasanya berupa string atau deretan bilangan. Jika menggunakan kunci K, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai
EK(P)=C dan DK(C)=P (2.4)
dan ke dua fungsi ini memenuhi
DK(EK(P))=P (2.5)
Gambar dibawah memperlihatkan skema enkripsi dan dekripsi dengan menggunakan kunci.
Gambar 2.1 Proses enkripsi dan dekripsi
2.2.1 Algoritma Simetri
Algoritma ini juga sering disebut dengan algoritma klasik, karena memakai kunci yang sama untuk kegiatan enkripsi dan dekripsinya. Mengirim pesan dengan menggunakan algoritma ini, penerima pesan harus diberitahukan kunci dari pesan
Enkripsi Dekripsi
Plainteks Cipherteks Plainteks Kunci Kunci
tersebut agar bisa mendekripsi pesan yang dikirim. Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain, maka orang tersebut bisa melakukan enkripsi dan dekripsi terhadap pesan tersebut.
Secara umum, cipher yang termasuk ke dalam kriptografi simetri beroperasi dalam mode blok (block cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan terhadap satu blok data yang berukuran tertentu, atau beroperasi dalam mode aliran (stream cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan terhadap 1 bit atau 1 byte data. Aplikasi kriptografi simetri yang utama adalah melindungi kerahasiaan data yang dikirim melalui saluran tidak aman dan melindungi kerahasiaan data yang disimpan pada media yang tidak aman. Kelemahan dari sistem ini adalah baik pengirim maupun penerima pesan harus memiliki kunci yang sama, sehingga pengirim pesan harus mencari cara yang aman untuk memberitahukan kunci kepada penerima pesan.
Gambar 2.2 Algoritma simetri
Namun, di samping kelemahan tersebut, kriptografi simetri memiliki keuntungan juga. Keuntungan menggunakan kriptografi simetri ini adalah kecepatan operasinya yang sangat baik. Dibandingkan dengan kriptografi tak simetri, kriptografi simetri memiliki kecepatan operasi yang jauh lebih cepat. Kelebihan kriptografi kunci simetri:
1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi dan dekripsi membutuhkan waktu yang singkat.
2. Ukuran kunci simetri relatif pendek. Algoritma kriptografi simetri dapat digunakan untuk membangkitkan bilangan acak.
Enkripsi Dekripsi
Plainteks Cipherteks Plainteks Kunci
3. Algoritma kriptografi simetri dapat disusun untuk menghasilkan cipher yang lebih kuat.
4. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.
Kelemahan kriptografi kunci simetri:
1. Kunci simetri harus dikirim melalui saluran yang aman. 2 (dua) entitas yang berkomunikasi harus menjaga kerahasiaan kunci ini.
2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.
2.2.2 Algoritma Tak Simetri
Algoritma tak simetri sering juga disebut dengan algoritma kunci publik, dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsinya berbeda. Pada algoritma tak simetri kunci terbagi menjadi 2 (dua) bagian:
1. Kunci umum (public key) adalah kunci yang boleh semua orang tahu (dipublikasikan).
2. Kunci pribadi (private key) adalah kunci yang dirahasiakan (hanya boleh diketahui oleh satu orang).
Kunci-kunci tersebut saling berhubungan satu dengan yang lainnya. Dengan kunci publik orang dapat mengenkripsi pesan tapi tidak bisa mendekripsinya, hanya orang yang memiliki kunci pribadi yang dapat mendekripsi pesan tersebut. Algoritma tak simetri bisa melakukan pengiriman pesan lebih aman dari pada algoritma simetris.
Gambar 2.3 Algoritma tak simetri
Kelebihan kriptografi kunci tak simetri:
1. Hanya kunci pribadi yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin). Tidak ada kebutuhan mengirim kunci pribadi sebagaimana pada sistem simetri.
2. Pasangan kunci publik dan kunci pribadi tidak perlu diubah, bahkan dalam periode waktu yang panjang.
3. Dapat digunakan untuk mengamankan pengiriman kunci simetri.
4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda tangan digital pada pesan.
Kelemahan kriptografi kunci tak simetri:
1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar.
2. Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat kali ukuran plainteks).
3. Ukuran kunci relatif besar daripada ukuran kunci simetri. Enkripsi Dekripsi
Plainteks Cipherteks Plainteks Kunci Umum Kunci Pribadi
4. Jika kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka cipherteks tidak memberikan informasi mengenai otentikasi pengirim.
5. Tidak ada algoritma kunci publik yang terbukti aman.
Aplikasi kriptografi kunci publik dapat dibagi menjadi 3 (tiga) kategori, yaitu:
1. Kerahasiaan data. Seperti pada kriptografi kunci simetri, kriptografi kunci publik dapat digunakan untuk menjaga kerahasiaan data (provide confidentiality/secrecy) melalui mekanisme enkripsi dan dekripsi. Contoh algoritma untuk aplikasi ini adalah RSA, Knapsack, Rabin, ElGamal, Elliptic Curve Cryptography (ECC).
2. Tanda-tangan digital. Tanda-tangan digital (digital signature) dengan menggunakan algoritma kriptografi kunci publik dapat digunakan untuk membuktikan otentikasi pesan maupun otentikasi pengirim (provide authentication). Contoh algoritmanya untuk aplikasi ini adalah RSA, DSA dan ElGamal.
3. Pertukaran kunci (key exchange). Algoritma kriptografi kunci publik dapat digunakan untuk pengiriman kunci simetri (session keys). Contoh algoritmanya adalah RSA dan Diffie-Hellman.
2.2.3 Fungsi Hash (Hash Function)
Fungsi hash sering disebut dengan fungsi hash satu arah (one way function), message digest, fingerprint, fungsi kompresi dan Message Authentication Code (MAC), hal ini merupakan suatu fungsi matematika yang mengambil input panjang variabel dan mengubahnya kedalam urutan biner dengan panjang yang tetap. Fungsi hash biasanya untuk keperluan membuat sidik jari dari suatu pesan. Sidik jari pada pesan merupakan
suatu tanda yang menandakan bahwa pesan tersebut benar-benar dari orang yang diinginkan.
2.3 Teknik Dasar Kriptografi
Berikut ini dicontohkan metode atau cipher yang menjadi dasar dalam melakukan proses enkripsi dan dekripsi pada suatu data.
2.3.1 Metode Substitusi
Metode ini berkerja dengan menukar 1 karakter yang lain. Langkah pertama adalah membuat suatu tabel substitusi. Tidak ada aturan khusus dalam membuat tabel substitusi, dapat dibuat sesuai keinginan, dengan catatan bahwa penerima pesan memiliki tabel yang sama untuk keperluan dekripsi. Semakin acak tabel substitusi maka semakin sulit pemecahan cipherteks. Salah satu contoh teknik ini adalah Caesar cipher.
Tabel 2.1 Subtitusi
A B C D E F G H I J K L M N O P Q R S T U E F G H I J K L M N O P Q R S T U V W X Y
Plaintext : METODE SUBSTITUSI
Ciphertext : QIXSHI WYFWXMXYWM
2.3.2 Teknik Blok
Sistem enkripsi kadang membagi plainteks menjadi blok-blok yang terdiri atas beberapa karakter yang kemudian dienkripsikan secara independen. Contoh plainteks yang dienkripsikan dengan menggunakan teknik blok adalah:
V W X Y Z Z [ \ ] ^
Tabel 2.2 Teknik blok E P K I Blok 1 N S R Blok 2 K I I Blok 3 R D P Blok 4 I E S Blok 5
Dengan menggunakan teknik blok dipilih jumlah lajur dan kolom untuk penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan teknik ini. Plainteks dituliskan secara vertikal ke bawah berurutan pada lajur, dan dilanjutkan pada kolom berikutnya sampai seluruhnya tertulis. Cipherteksnya adalah hasil pembacaan plainteks secara horizontal berurutan sesuai dengan bloknya. Jadi cipherteks yang dihasilkan dengan teknik ini adalah “EPEKINSR KII RDP IES”. Plainteks dapat pula ditulis secara horizontal dan cipherteksnya adalah hasil pembacaan secara vertikal.
2.3.3 Teknik Permutasi atau Teknik Transposisi
Teknik ini memindahkan atau merotasikan karakter dengan aturan tertentu. Prinsipnya adalah berlawanan dengan teknik substitusi. Dalam teknik substitusi, karakter berada posisi yang tetap tetapi identitasnya yang diacak. Pada teknik permutasi, identitas karakternya tetap, namun posisinya yang diacak sebelum dilakukan permutasi, umumnya plainteks dibagi menjadi blok-blok dengan panjang yang sama. Contoh:
2.4 Teknik-teknik Kriptanalisis
Terdapat beberapa teknik dalam melakukan kriptanalisis, tergantung kepada akses yang dimiliki oleh kriptanalis, apakah melalui cipherteks, plainteks, ataupun aspek lain dari sistem kriptografi. Berikut adalah beberapa tipe penyerangan yang umum dipakai untuk memecahkan sandi:
1. Known-Plaintext Analysis
Dengan prosedur ini, kriptanalis mengetahui sebagian isi plainteks dari cipherteks yang berhasil didapatkan. Menggunakan informasi yang ada ini, kriptanalis berusaha untuk mencari kunci yang digunakan untuk menghasilkan cipherteks.
Pesan-pesan yang memiliki format terstruktur memberikan peluang kepada kriptanalis untuk menebak plainteks dari cipherteks yang bersesuaian. Contoh dari pesan-pesan terstruktur ini adalah email dengan kolom from, to, subject, kemudian salam penutup dan pembuka pada surat seperti ”dengan hormat”, salam dan lainnya. Linear Cryptanalysis adalah salah satu algoritma yang termasuk ke dalam serangan known-plaintext. Linear Cryptanalysis diperkenalkan oleh Mitsuru Matsui pada tahun 1993. Pada algoritma ini penyerang akan mempelajari fungsi linear yang merepresentasikan hubungan antara cipherteks dan plainteks untuk mendapatkan kunci. Algoritma berbasis XOR, termasuk ke dalam algortima enkripsi atau dekripsi yang tidak aman karena dapat dipecahkan menggunakan linear cryptanalysis.
2. Chosen-Plaintext Analysis
Kriptanalis telah dapat menghasilkan plainteks dari cipherteks yang ada, namun kuncinya sendiri belum ditemukan. Pada serangan jenis ini kriptanalis dapat memilih plainteks tertentu untuk dienkripsikan, yaitu plainteks yang lebih mengarahkan penemuan kunci.
Kriptanalis berusaha untuk menemukan kunci pembangun cipherteks dengan membandingkan keseluruhan cipherteks dengan plainteks yang ada. Teknik enkripsi RSA (Rivest Shanir Adleman) telah terbukti dapat dipecahkan menggunakan teknik analisis ini.
Differential Analysis adalah sebuah teknik yang dikembangkan oleh Eli Biham dan Adi Shamir. Teknik ini memberikan suatu cara untuk menemukan beberapa bit kunci dari plainteks dan cipherteks yang tersedia, dengan begitu jumlah kemungkinan kunci yang akan dicoba pada exhaustive key search atau brute force attack dapat berkurang drastis, mengurangi waktu kalkulasi. Differential Analysis secara garis besar membahas pola lengkap dari bit-bit mana saja yang berubah dan tidak berubah pada proses pengubahan input menjadi output.
3. Ciphertext-Only Analysis
Pada teknik ini, kriptanalis hanya berbekal cipherteks saja, tanpa adanya pengetahuan mengenai plainteks. Teknik ini membutuhkan akurasi yang tinggi dalam melakukan penaksiran mengenai bagaimana sebuah pesan dapat disandikan.
Teknik ini dapat bekerja lebih baik dengan dukungan adanya pengetahuan tambahan mengenai teks. Apabila plainteks ditulis dalam bahasa Inggris, maka kriptanalis dapat menghitung frekuensi huruf dari chiperteks kemudian membandingkannya dengan frekuensi rata-rata huruf pada teks berbahasa Inggris. Namun cara penghitungan frekuensi huruf seperti ini hanya bekerja untuk plainteks yang didekripsi menggunakan teknik substitusi satu ke satu. Algoritma kriptografi modern memiliki daya tahan yang lebih tinggi terhadap jenis serangan seperti ini.
4. Man-In-The-Middle Attack
Penyerang, yang dalam hal ini adalah kriptanalis, masuk ke dalam saluran komunikasi antara ke dua pihak yang akan saling bertukar kunci mereka. Penyerang menempatkan dirinya sedemikian sehingga ke dua pihak tadi merasa bahwa mereka saling bertukar kunci, namun sebenarnya penyeranglah memberikan kunci-kunci yang nantinya digunakan oleh pihak-pihak tadi.
Gambar 2.5 Serangan kriptografi man-in-the middle
Teknik ini dapat dipatahkan dengan menggunakan kombinasi fungsi hash dan algoritma kunci publik. B dapat memeriksa apakah kunci publik yang diterima benar, dengan cara memeriksa sidik jari (fingerprint). Sidik jari ini adalah suatu fungsi hash dari kunci publik tersebut yang diberikan melalui jalur yang berbeda dengan pengiriman kunci publik. Sidik jari digunakan karena ukurannya yang lebih kecil dibandingkan dengan kunci publik sehingga lebih mudah ditentukan nilai kebenarannya.
Cara lain untuk mematahkan serangan tipe ini adalah dengan menyimpan kunci publik dalam suatu basis data online yang menjamin kebenaran dari kunci publik. Suatu CA (Certificate Authority) atau server kunci publik dapat memberikan keyakinan pada pengguna, pada saat mereka menyimpan kunci bahwa kunci tersebut bernilai benar.
5. Timing/Differential Power Analysis
Sangat berguna digunakan melawan smartcard, yang menghitung perbedaan konsumsi elektrik dalam jangka waktu tertentu ketika microchip melakukan pengamanan informasi. Teknik ini dapat digunakan untuk memperoleh informasi
mengenai perhitungan pembangkitan kunci yang digunakan dalam algoritma enkripsi dan fungsi-fungsi pengamanan lainnya. Teknik ini dapat dicegah dengan menggunakan random noise ketika melakukan enkripsi, atau mengacak alur fungsi sehingga lebih sulit untuk melacak fluktuasi tenaga listrik yang terpakai. Tipe analisis ini dikembangkan oleh Paul Kocher dari Cryptography Research. Penyerangan seperti ini umumnya terlepas dari jenis algoritma kriptografi yang digunakan.
6. Correlation
Saling terkaitnya antara kunci dengan hasil pengenkripsian merupakan sumber utama yang akan digunakan oleh kriptanalis. Pada kasus yang paling mudah, kunci justru secara tidak sengaja terbocorkan oleh sistem kriptografinya sendiri. Untuk kasus yang lebih kompleks, dicari keterhubungan antara informasi yang dapat diperoleh mengenai kriptosistem dan informasi mengenai perkiraan kunci. Ide mengenai keterhubungan merupakan ide dasar pada kriptosistem.
7. Kesalahan Dalam Kriptosistem
Kesalahan dalam kriptosistem dapat digunakan dalam kriptanalisis dan bahkan dapat membocorkan kuncinya sendiri. Kesalahan tersebut dapat dimanfaatkan dalam kriptanalisis. Kesalahan disini dapat juga berupa kelemahan dari fungsi matematis yang digunakan oleh algoritma enkripsi dekripsi atau pemilihan kunci lemah. Algoritma RSA merupakan contoh algoritma yang memiliki kesalahan yang dapat diserang.
8. Rubber-Hose Cryptanalysis
Serangan jenis ini dapat dikatakan sebagai serangan yang paling efektif dan dapat langsung memberikan hasil. Serangan ini berupa serangan langsung kepada pihak pengirim.
Rubber-hose attack didasarkan pada teori bahwa manusia yang berada di bawah tekanan akan menjadi lebih lemah. Di lain pihak, komputer tidak mengalami stress (di bawah tekanan) sehingga tidak akan terpengaruh dengan serangan semacam ini. Pada serangan ini, pihak ke tiga akan mengirimkan surat gelap, mengancam atau bahkan menyiksa hingga pihak pengirim mau memberikan kunci atau bahkan langsung memberikan plainteks yang besangkutan.
Serangan jenis ini tidak memandang tipe algoritma enkripsi dekripsi, serangan ini bekerja untuk mematahkan seluruh algoritma enkripsi dekripsi. Karena alasan inilah rubber-hose attack disebut sebagai serangan paling efektif. Terdapat beberapa cara efektif untuk menghadapi serangan jenis ini, antara lain:
1. Tetap tenang dan gunakan steganografi.
2. Pindah di luar jangkauan pihak-pihak lawan, misalnya di luar negeri. 3. Tingkatkan ketahanan fisik.
4. Untuk menghindari serangan secara sosial. Menjauhlah dari orang-orang terdekat dan jangan bina hubungan dekat (teman) baru.
5. Gunakan multipart key yang membutuhkan lebih dari satu orang untuk melakukan enkripsi dekripsi terhadap informasi.
6. Gunakan One-Time Pad di mana tidak mungkin memecahkan cipherteks tanpa menggunakan kunci, karena sifatnya yang terlalu panjang (sama dengan plainteks).
9. Serangan Terhadap Atau Menggunakan Hardware Dari Cryptosystem
Serangan jenis ini merupakan serangan jenis baru yang diprediksikan akan semakin sering muncul dengan semakin meluasnya penggunaan mobile crypto devices.
Serangan ini didasarkan kepada perhitungan rinci dari proses enkripsi yang dilakukan oleh suatu perangkat kripto. Dari informasi ini akan diperoleh informasi mengenai perhitungan kunci yang digunakan. Serangan jenis ini bersifat independen terhadap algoritma kriptografi yang digunakan oleh mobile crypto devices yang bersangkutan.
2.5 Algoritma Rijndael
Algoritma Rijndael menggunakan substitusi, permutasi dan sejumlah putaran yang dikenakan pada tiap blok yang akan dienkripsi dekripsi. Untuk setiap putarannya, Rijndael menggunakan kunci yang berbeda. Kunci setiap putaran disebut round key. Rijndael beroperasi dalam orientasi byte sehingga memungkinkan untuk implementasi algoritma yang efisien ke dalam software dan hardware. Ukuran blok untuk algoritma Rijndael adalah 128 bit (16 byte).
Rijndael mendukung panjang kunci 128 bit sampai 256 bit dengan step 32 bit. Panjang kunci dan ukuran blok dapat dipilih secara independen. Setiap blok dienkripsi dalam sejumlah putaran tertentu.
Karena AES menetapkan panjang kunci adalah 128, 192, dan 256, maka dikenal AES 128, AES 192, dan AES 256.
Tabel 2.3 Versi-versi AES
Panjang Kunci (Nk) Ukuran blok (Nb) Jumlah Round (Nr) AES – 128 4 4 10 AES – 192 6 4 12 AES – 256 8 4 14
Algoritma Rijndael mempunyai 3 (tiga) parameter:
1. Plainteks adalah array yang berukuran 16-byte, yang berisi data masukan. 2. Cipherteks adalah array yang berukuran 16-byte, yang berisi hasil enkripsi. 3. Kunci adalah array yang berukuran 16-byte, yang berisi kunci cipher (disebut
juga chiper key).
Garis besar algoritma Rijndael yang beroperasi pada blok 128 bit dengan kunci 128 bit adalah sebagai berikut:
5. AddRoundKey, melakukan XOR antara state awal (plainteks) dengan chiper key. Tahap ini disebut juga initial round.
6. Putaran sebanyak Nr–1 kali. Proses yang dilakukan pada setiap putaran adalah:
a. SubBytes adalah substitusi byte dengan menggunakan tabel substitusi (S-Box).
b. ShiftRows adalah pergeseran baris-baris array state secara wrapping. c. MixColumns adalah mengacak data di masing-masing kolom array
state.
d. AddRoundKey adalah melakukan XOR antara state sekarang round key. 7. Final round, proses untuk putaran terakhir:
a. SubBytes b. ShiftRows c. AddRoundKey
AddRoundKey SubBytes ShiftRows MixColumns AddRoundKey SubBytes ShiftRows AddRoundKey Cipher Text Plain Text AddRoundKey InvShiftRows InvSubBytes AddRoundKey InvMixColumns InvShiftRows InvSubBytes AddRoundKey Plain Text Cipher Text
Garis besar algoritma Rijndael diperlihatkan pada gambar diagram di bawah ini.
Gambar 2.6 Diagram proses enkripsi dan proses dekripsi
1. Transformasi SubBytes
Transformasi SubBytes memetakan setiap byte dari array state dengan menggunakan tabel substitusi S-Box. Tidak seperti DES yang mempunyai S-Box berbeda pada setiap putaran, Rijndael hanya mempunyai satu buah. Tabel yang digunakan adalah:
Cara pensubstitusian adalah sebagai berikut: jika setiap byte pada array state S[r,c]=xy, xy adalah digit heksadesimal dari nilai S[r,c], maka nilai substitusinya, dinyatakan dengan S’[r,c], adalah elemen di dalam S-Box yang merupakan perpotongan baris x dengan kolom y.
Gambar 2.7 Transformasi SubByte dengan S-Box
Gambar 2.8 Proses SubBytes
2. Transformasi ShiftRows
Transformasi ShiftRows melakukan pergeseran secara wrapping pada 3 (tiga) baris terakhir dari array state. Jumlah pergeseran bergantung pada nilai baris r. Baris r=1 digeser sejauh 1 byte, baris r=2 digeser sejauh 2 byte, dan baris r=3 digeser sejauh 3 byte. Baris r=0 tidak digeser.
Gambar 2.10 Transformasi Shiftrows Geser baris ke-1:
Hasil pergeseran baris ke-1 dan geser baris ke-2:
Hasil pergeseran baris ke-2 dan geser baris ke-3:
Gambar 2.11 Proses transformasi Shiftrows
3. Tranformasi MixColumns
Transformasi MixColumns mengalikan setiap kolom dari array state dengan polinom a(x)mod(x4+1). Setiap kolom diperlakukan sebagai polinom 4-suku pada GF(28). Polinom a(x) yang ditetapkan adalah:
a(x)={03}x3+{01}x2+{01}x+{02} (2.6)
Transformasi ini dinyatakan sebagai perkalian matrik:
s’(x)=a(x)⊗s(x) (2.7) = 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 (2.8)
)
}
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 cs
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
•
⊕
⊕
⊕
•
=
•
⊕
•
⊕
⊕
=
⊕
•
⊕
•
⊕
=
⊕
⊕
•
⊕
•
=
(2.9)Gambar 2.12 Hasil dari ShiftRows
Gambar 2.13 Operasi MixColumns
Gambar 2.14 Hasil keseluruhan MixColumns
4. Transformasi AddRoundKey
Transformasi ini melakukan operasi XOR terhadap sebuah round key dengan array state, dan hasilnya disimpan di array state.
Gambar 2.16 Hasil AddRoundKey
5. Ekspansi Kunci
Algoritma Rijndael melaksanakan cipher key dan membuat suatu ekspansi kunci untuk menghasilkan suatu key schedule. Jika ekspansi kunci yang diperlukan Rijndael Nb(Nr+1) word, sehingga bisa digunakan AES 128 bit, maka 4(10+1)=40 word=44x32 bit=1408 bit subkey. Ekspansi dari 128 menjadi
1408 bit subkey, proses ini disebut dengan key schedule. Subkey ini diperlukan karena setiap round merupakan suatu inisial dari Nb word untuk Nr=0 dan Nb untuk Nr=1,3 untuk Nr= 2,....,11 Nb untuk Nr=10, dari operasi ini akan didapatkan schedule kunci yang berisi array linier 4 byte word (wi), 0=i(Nr+1).
Contoh dari keseluruhan proses Algoritma Rijndael
2.6 Keamanan Rijndael
Untuk Rijndael, tipe serangan square attacks cukup menjadi dikenal sebagai serangan terbaik terhadap Rijndael. Square attacks adalah serangan yang memanfaatkan struktur orientasi byte. Algoritma ini bekerja dengan baik pada square cipher yang bekerja dalam 6 putaran.
Apabila Rijndael dengan kunci sepanjang 128 bit, maka serangan ini lebih cepat dari pada exhaustive search hingga 6 kali iterasi Rijndael.
Namun, untuk AES jelas bahwa serangan ini tidak mungkin dipraktekkan karena jumlah putaran pada Rijndael, mengakibatkan batas keamanan untuk algoritma ini menjadi lebih besar.
Pada tahun 2002 melalui suatu proses pengujian yang sifatnya teoritis ditemukan bahwa AES mungkin dapat dijebol atau dipecahkan. Metode attack ini dinamakan “XLS Attack“.
Serangan ini pertama kali dipublikasikan oleh Nicolas Courtois dan Josep Pieprzyk dalam makalah mereka yang berjudul “Cryptanalysis of Block Ciphers with Overdefined Systems of Equations”. Teknik ini diklaim dapat memecahkan AES lebih cepat dari cara exhaustive search. XSL attack mengandalkan pada keberhasilan menganalisis subsistem internal dari cipher untuk menurunkan persamaan kuadrat secara simultan. Kumpulan persamaan ini umumnya sangat besar. Contohnya pada 128 bit AES terdapat 8000 persamaan dengan jumlah variabel 1600. Metode untuk memecahkan persamaan ini disebut XSL (eXtended Sparse Linearisation). Jika persamaan tersebut dapat dipecahkan, maka kunci dapat diperoleh.
Jika Pemecahan persamaan tersebut menjadi masalah, maka ditemukan persamaan yang bersifat MQ(Multivariate quadratic). Persamaan MQ merupakan permasalahan yang bersifat NP-hard (Non Polinomial). XSL attack membutuhkan algoritma yang efisien untuk menyelesaikan MQ. Salah satu teknik untuk menyelesaikan sistem MQ adalah dengan linearisasi, yang mengubah setiap
persamaan kuadrat menjadi variabel yang independen yang akan menghasilkan persamaan linear dengan menggunakan algoritma seperti Gaussian elimination.
Tahun 2000, Courtois mengajukan algoritma untuk MQ yang bernama XL(eXtended Linearisastion). Algoritma ini meningkatkan jumlah persamaan dengan mengalikan dengan monomial derajat tertentu. Algoritma ini akan menghasilkan suatu bentuk struktur yang disebut XSL. Algoritma XSL dibentuk dari algoritma XL dengan memilih monomial secara selektif.
BAB 3
PEMBAHASAN
3.1 Analisis Desain Rijndael
Daemen dalam disertasinya, Rijndael didesain berdasarkan wide trail strategy. Strategi ini mengusulkan agar cipher terdiri dari tiga komponen utama:
1. Pencampuran kunci
Bertujuan agar keamanan algoritma tidak terletak pada dirahasiakannya algoritma, melainkan pada kerahasiaan kunci.
2. Transformasi nonlinear
Bertujuan agar bila diketahui keluaran, maka tidak dapat diketahui masukannya. Hal ini dapat dilakukan dengan kotak-S.
3. Transformasi linear
Bertujuan agar sebanyak mungkin transformasi nonlinear yang aktif. Dengan memisahkan transformasi linear dengan non linear, diharapkan dapat mendesain transformasi nonlinear terbebas dari transformasi linear dan sebaliknya.
3.1.1 Kotak Substitusi (S-Box)
S-Box pada Rijndael didesain dengan rumusan matematika untuk menghilangkan kecurigaan akan ditanamnya backdoor pada S-Box. Penggunaan inversi x-1 pada
GF(28) dikarenakan ketahanan operasi ini terhadap analisis sandi linear dan diferensial. Berikut ini adalah ringkasan kriteria S-Box:
a. Invertibility (untuk dekripsi).
b. Minimisasi korelasi antara kombinasi linear bit-bit masukan dan kombinasi linear bit-bit keluaran (menahan ASL).
c. Minimisasi nilai terbesar pada tabel XOR (menahan ASD).
d. Kompleksitas ekspresi aljabar pada GF(28) (diperoleh dengan tambahan L untuk menghalangi interpolation attack).
e. Kesederhanaan deskripsi (mudah analisisnya).
3.1.2 Operasi MixColumns
Bersama dengan operasi ShiftRows, MixColumns merupakan transformasi linear yang bertujuan untuk menyebarkan pengaruh transformasi nonlinear ke sebanyak mungkin komponen nonlinear di ronde selanjutnya. Apabila ShiftRows bertujuan menyebarkan pada arah baris, maka MixColumns bertujuan menyebarkan ke arah kolom. Dengan perpaduan dua operasi ini, diperolehlah difusi yang sangat baik.
3.1.3 Ekspansi Kunci
Subkey pada tiap ronde dapat diperoleh dari rumus: W[i]=W[i-6]⊕W[i-1]
F merupakan fungsi penggunaan kotak-S dan penambahan konstanta ronde. Penjadwalan kunci dapat diimplementasikan tanpa eksplisit menggunakan array W. Jika jumlah yang tersedia kecil, maka kunci per ronde dapat dihitung on-the-fly dan hanya membutuhkan buffer sebesar 64 byte. Ini berarti bahwa mengetahui 4 word (64 byte) berurutan dari kunci terekspansi akan dapat membangkitkan seluruh tabel subkey. Konstanta per ronde menghilangkan sifat simetri.
3.2 Implementasi Algoritma Rijndael
Implementasi Algoritma Rijndael dirancang dalam bahasa pemrograman Visual Basic 6.0. Berikut tahap implementasi algoritma Rijndael.
1. Pembentukan Kotak Substitusi (S-Box) 2. Proses MixColumns
3. Proses enkripsi 4. Proses dekripsi
3.2.1 Pembentukan Kotak Substitusi (S-Box)
Kotak substitusi (untuk ByteSub) dibentuk dari fungsi inversi perkalian pada GF(28) dan kemudian ditambahkan operasi XOR terhadap fungsi affine (semacam fungsi linear). Berikut implementasi kotak substitusi ke dalam bahasa pemrograman.
ltab(0) = 0 ltab(1) = 0 ltab(3) = 1 ptab(0) = 1 ptab(1) = 3
For i = 2 To 255 'ptab(i) = ptab(i - 1) Xor Xtime(ptab(i - 1)) If (ptab(i - 1) And &H80) Then
ptab(i) = ptab(i - 1) Xor ((ptab(i - 1) And 127) * 2) Xor &H1B
Else
ptab(i) = ptab(i - 1) Xor (ptab(i - 1) * 2) End If
Next i
Te4(0) = &H63636363 Td4(&H63) = 0
For i = 1 To 255
y = ptab(255 - ltab(i)) 'multiplicative inverse ib = y
If ib And &H80 Then ib = (ib And 127) * 2 Or 1 Else ib = ib * 2 y = y Xor ib
If ib And &H80 Then ib = (ib And 127) * 2 Or 1 Else ib = ib * 2 y = y Xor ib
If ib And &H80 Then ib = (ib And 127) * 2 Or 1 Else ib = ib * 2 y = y Xor ib
If ib And &H80 Then ib = (ib And 127) * 2 Or 1 Else ib = ib * 2 y = y Xor ib Xor &H63
s(0) = y s(1) = s(0) s(2) = s(0) s(3) = s(0)
CopyMemory Te4(i), s(0), 4& s(0) = i
s(1) = s(0) s(2) = s(0) s(3) = s(0)
CopyMemory Td4(y), s(0), 4& Next i
y = 1
For i = 0 To UBound(rco) rco(i) = y
If (y And &H80) Then 'y = Xtime(y) y = ((y And 127) * 2) Xor &H1B Else
y = y * 2 End If
Next i
For i = 0 To 255
y = Te4(i) And &HFF& If (y And &H80) Then
s(0) = ((y And 127) * 2) Xor &H1B s(3) = y Xor s(0) Else s(0) = y * 2 s(3) = y Xor s(0) End If s(2) = y s(1) = y CopyMemory s(4), s(0), 4& CopyMemory Te0(i), s(0), 4& CopyMemory Te1(i), s(3), 4& CopyMemory Te2(i), s(2), 4& CopyMemory Te3(i), s(1), 4& y = Td4(i) And &HFF&
If y = 0 Then s(3) = 0 s(2) = 0 s(1) = 0 s(0) = 0 Else
s(3) = ptab((CLng(ltab(&HB)) + CLng(ltab(y))) Mod 255) s(2) = ptab((CLng(ltab(&HD)) + CLng(ltab(y))) Mod 255) s(1) = ptab((CLng(ltab(&H9)) + CLng(ltab(y))) Mod 255) s(0) = ptab((CLng(ltab(&HE)) + CLng(ltab(y))) Mod 255) End If
CopyMemory s(4), s(0), 4& CopyMemory Td0(i), s(0), 4& CopyMemory Td1(i), s(3), 4& CopyMemory Td2(i), s(2), 4& CopyMemory Td3(i), s(1), 4& Next i
Implementasi S-Box kunci ekspansi dalam bahasa pemrograman.
rco(0)=&H1&:rco(1)=&H2&:rco(2)=&H4&:rco(3)=&H8&:rco(4)=&H10&
rco(5)=&H20&:rco(6)=&H40&:rco(7)=&H80&:rco(8)=&H1B&:rco(9) = &H36& #If SUPPORT_LEVEL Then
rco(10)=&H6C&:rco(11)=&HD8&:rco(12)=&HAB&:rco(13)=&H4D&:rco(14)=&H9A& rco(15)=&H2F&:rco(16)=&H5E&:rco(17)=&HBC&:rco(18)=&H63&:rco(19)=&HC6& rco(20)=&H97&:rco(21)=&H35&:rco(22)=&H6A&:rco(23)=&HD4&:rco(24)=&HB3& rco(25)=&H7D&:rco(26)=&HFA&:rco(27)=&HEF&:rco(28)=&HC5&
3.2.2 Proses MixColumns
Operasi ini merupakan suatu operasi dari penambahan kunci dengan operasi XOR. Berikut implementasi operasi MixColumns ke dalam bahasa pemrograman.
i = 4
CopyMemory fkey(0), pass(0), 4& * i For j = 0 To 9
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 4) Xor (Te4(s(0)) And &HFF000000) _ Xor (Te4(s(3)) And &HFF0000) _ Xor (Te4(s(2)) And &HFF00&) _ Xor (Te4(s(1)) And &HFF&) _ Xor rco(j)
fkey(i + 1) = fkey(i - 3) Xor fkey(i) fkey(i + 2) = fkey(i - 2) Xor fkey(i + 1) fkey(i + 3) = fkey(i - 1) Xor fkey(i + 2) i = i + 4
Next j Nr = 10
3.2.3 Proses Enkripsi
Dalam proses enkripsi ini terdapat proses enkripsi teks dan enkripsi file. 1. Proses enkripsi teks
Public Sub BlockEncrypt(plaintext() As Byte, ciphertext() As Byte, p As Long, q As Long) Dim i As Long Dim k As Long Dim t0 As Long Dim t1 As Long Dim t2 As Long Dim t3 As Long Dim s(15) As Byte
CopyMemory t0, plaintext(p + 0), 4& CopyMemory t1, plaintext(p + 4), 4& CopyMemory t2, plaintext(p + 8), 4& CopyMemory t3, plaintext(p + 12), 4& t0 = t0 Xor fkey(0)
t1 = t1 Xor fkey(1) t2 = t2 Xor fkey(2) t3 = t3 Xor fkey(3) k = 4
For i = 1 To Nr - 1 'Nr is number of rounds CopyMemory s(0), t0, 4&
CopyMemory s(4), t1, 4& CopyMemory s(8), t2, 4& CopyMemory s(12), t3, 4&
t0 = Te0(s(0)) Xor Te1(s(5)) Xor Te2(s(10)) Xor Te3(s(15)) Xor fkey(k + 0)
t1 = Te0(s(4)) Xor Te1(s(9)) Xor Te2(s(14)) Xor Te3(s(3)) Xor fkey(k + 1)
t2 = Te0(s(8)) Xor Te1(s(13)) Xor Te2(s(2)) Xor Te3(s(7)) Xor fkey(k + 2)
t3 = Te0(s(12)) Xor Te1(s(1)) Xor Te2(s(6)) Xor Te3(s(11)) Xor fkey(k + 3) k = k + 4 Next i 'Final round CopyMemory s(0), t0, 4& CopyMemory s(4), t1, 4& CopyMemory s(8), t2, 4& CopyMemory s(12), t3, 4&
t0 = (Te4(s(0)) And &HFF&) Xor (Te4(s(5)) And &HFF00&) Xor
(Te4(s(10)) And &HFF0000) Xor (Te4(s(15)) And &HFF000000) Xor fkey(k + 0)
t1 = (Te4(s(4)) And &HFF&) Xor (Te4(s(9)) And &HFF00&) Xor
(Te4(s(14)) And &HFF0000) Xor (Te4(s(3)) And &HFF000000) Xor fkey(k + 1)
t2 = (Te4(s(8)) And &HFF&) Xor (Te4(s(13)) And &HFF00&) Xor (Te4(s(2)) And &HFF0000) Xor (Te4(s(7)) And &HFF000000) Xor fkey(k + 2)
t3 = (Te4(s(12)) And &HFF&) Xor (Te4(s(1)) And &HFF00&) Xor
(Te4(s(6)) And &HFF0000) Xor (Te4(s(11)) And &HFF000000) Xor fkey(k + 3)
CopyMemory ciphertext(q + 0), t0, 4& CopyMemory ciphertext(q + 4), t1, 4& CopyMemory ciphertext(q + 8), t2, 4& CopyMemory ciphertext(q + 12), t3, 4& End Sub
2. Proses enkripsi file
Public Function FileEncrypt(PlaintextFileName As String, CiphertextFileName As String, BlockBits As Long) As Long #Else
Public Function FileEncrypt(PlaintextFileName As String, CiphertextFileName As String) As Long
#End If
Dim FileNum As Integer Dim FileNum2 As Integer Dim i As Long
Dim m As Long 'ciphertext file size Dim n As Long 'plaintext file size Dim data() As Byte
#If SUPPORT_LEVEL = 0 Then
Const MaxBlocks As Long = MaxFileChunkSize \ BlockSize #Else
Dim BlockSize As Long Dim MaxBlocks As Long Select Case BlockBits Case 128: BlockSize = 16 Case 192: BlockSize = 24 Case 256: BlockSize = 32 #If SUPPORT_LEVEL = 2 Then Case 160: BlockSize = 20 Case 224: BlockSize = 28 #End If
Case Else: Err.Raise 1, , "cRijndael.FileEncrypt - Illegal BlockBits value"
End Select
MaxBlocks = MaxFileChunkSize \ BlockSize #End If
n = FileLen(PlaintextFileName) #If SUPPORT_LEVEL Then
m = ((n + BlockSize) \ BlockSize) * BlockSize #Else
m = (n + BlockSize) And (-BlockSize) 'BlockSize=16 specific #End If
FileNum = FreeFile
Open PlaintextFileName For Binary Access Read As FileNum FileNum2 = FreeFile
Open CiphertextFileName For Binary Access Write As FileNum2 'For large files, encrypt in pieces no larger than
MaxFileChunkSize
If m > MaxBlocks * BlockSize Then
ReDim data(MaxBlocks * BlockSize - 1) Do
Get #FileNum, , data #If SUPPORT_LEVEL Then
Select Case BlockBits Case 128
#End If
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize BlockEncrypt data, data, i, i
Next i #If SUPPORT_LEVEL Then Case 192
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize Block192Encrypt data, data, i, i
Next i Case 256
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize Block256Encrypt data, data, i, i
Next i
#If SUPPORT_LEVEL = 2 Then Case 160
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize Block160Encrypt data, data, i, i
Next i Case 224
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize Block224Encrypt data, data, i, i
Next i #End If
End Select #End If
Put #FileNum2, , data
m = m - MaxBlocks * BlockSize Loop While m > MaxBlocks * BlockSize End If
'Encrypt the last piece of the file ReDim data(m - 1)
Get #FileNum, , data
data(m - 1) = n Mod BlockSize #If SUPPORT_LEVEL Then
Select Case BlockBits Case 128
#End If
For i = 0 To m - BlockSize Step BlockSize BlockEncrypt data, data, i, i
Next i
#If SUPPORT_LEVEL Then Case 192
For i = 0 To m - BlockSize Step BlockSize Block192Encrypt data, data, i, i Next i
Case 256
For i = 0 To m - BlockSize Step BlockSize Block256Encrypt data, data, i, i Next i
#If SUPPORT_LEVEL = 2 Then Case 160
For i = 0 To m - BlockSize Step BlockSize Block160Encrypt data, data, i, i Next i
Case 224
For i = 0 To m - BlockSize Step BlockSize Block224Encrypt data, data, i, i Next i
#End If
End Select #End If
Put FileNum2, , data Close FileNum
Close FileNum2 End Function
3.2.4 Proses Dekripsi
Dalam proses dekripsi ini terdapat proses dekripsi teks dan dekripsi file. 1. Proses dekripsi teks
Public Sub BlockDecrypt(plaintext() As Byte, ciphertext() As Byte, p As Long, q As Long) Dim i As Long Dim k As Long Dim t0 As Long Dim t1 As Long Dim t2 As Long Dim t3 As Long Dim s(15) As Byte
CopyMemory t0, ciphertext(q + 0), 4& CopyMemory t1, ciphertext(q + 4), 4& CopyMemory t2, ciphertext(q + 8), 4& CopyMemory t3, ciphertext(q + 12), 4& t0 = t0 Xor rkey(0)
t1 = t1 Xor rkey(1) t2 = t2 Xor rkey(2) t3 = t3 Xor rkey(3) k = 4
For i = 1 To Nr - 1 'Nr is number of rounds CopyMemory s(0), t0, 4&
CopyMemory s(4), t1, 4& CopyMemory s(8), t2, 4& CopyMemory s(12), t3, 4&
t0 = Td0(s(0)) Xor Td1(s(13)) Xor Td2(s(10)) Xor Td3(s(7)) Xor rkey(k + 0)
t1 = Td0(s(4)) Xor Td1(s(1)) Xor Td2(s(14)) Xor Td3(s(11)) Xor rkey(k + 1)
t2 = Td0(s(8)) Xor Td1(s(5)) Xor Td2(s(2)) Xor Td3(s(15)) Xor rkey(k + 2)
t3 = Td0(s(12)) Xor Td1(s(9)) Xor Td2(s(6)) Xor Td3(s(3)) Xor rkey(k + 3) k = k + 4 Next i 'Final round CopyMemory s(0), t0, 4& CopyMemory s(4), t1, 4& CopyMemory s(8), t2, 4& CopyMemory s(12), t3, 4&
t0 = (Td4(s(0)) And &HFF&) Xor (Td4(s(13)) And &HFF00&) Xor
(Td4(s(10)) And &HFF0000) Xor (Td4(s(7)) And &HFF000000) Xor rkey(k + 0)
t1 = (Td4(s(4)) And &HFF&) Xor (Td4(s(1)) And &HFF00&) Xor
(Td4(s(14)) And &HFF0000) Xor (Td4(s(11)) And &HFF000000) Xor rkey(k + 1)
t2 = (Td4(s(8)) And &HFF&) Xor (Td4(s(5)) And &HFF00&) Xor
(Td4(s(2)) And &HFF0000) Xor (Td4(s(15)) And &HFF000000) Xor rkey(k + 2)
t3 = (Td4(s(12)) And &HFF&) Xor (Td4(s(9)) And &HFF00&) Xor (Td4(s(6)) And &HFF0000) Xor (Td4(s(3)) And &HFF000000) Xor rkey(k + 3)
CopyMemory plaintext(p + 0), t0, 4& CopyMemory plaintext(p + 4), t1, 4& CopyMemory plaintext(p + 8), t2, 4& CopyMemory plaintext(p + 12), t3, 4& End Sub
2. Proses dekripsi file
Public Function FileDecrypt(PlaintextFileName As String, CiphertextFileName As String, BlockBits As Long) As Long #Else
Public Function FileDecrypt(PlaintextFileName As String, CiphertextFileName As String) As Long
#End If
Dim FileNum As Integer Dim FileNum2 As Integer Dim i As Long
Dim m As Long 'ciphertext file size Dim n As Long 'plaintext file size Dim data() As Byte
#If SUPPORT_LEVEL = 0 Then
Const BlockSize As Long = 16 'bytes
Const MaxBlocks As Long = MaxFileChunkSize \ BlockSize #Else
Dim BlockSize As Long Dim MaxBlocks As Long Select Case BlockBits Case 128: BlockSize = 16 Case 192: BlockSize = 24 Case 256: BlockSize = 32 #If SUPPORT_LEVEL = 2 Then Case 160: BlockSize = 20 Case 224: BlockSize = 28 #End If
Case Else: Err.Raise 1, , "cRijndael.FileDecrypt - Illegal BlockBits value"
End Select
MaxBlocks = MaxFileChunkSize \ BlockSize #End If
m = FileLen(CiphertextFileName) #If SUPPORT_LEVEL Then
If (m = 0) Or ((m Mod BlockSize) <> 0) Then #Else
If (m = 0) Or ((m And (BlockSize - 1)) <> 0) Then 'BlockSize=16 specific
MsgBox "File Size Error - ciphertext file not a multiple of block size"
FileDecrypt = 1 Else
FileNum = FreeFile
Open CiphertextFileName For Binary Access Read As FileNum FileNum2 = FreeFile
Open PlaintextFileName For Binary Access Write As FileNum2 'For large files, decrypt in pieces no larger than
MaxFileChunkSize
If m > MaxBlocks * BlockSize Then
ReDim data(MaxBlocks * BlockSize - 1) Do
Get #FileNum, , data #If SUPPORT_LEVEL Then
Select Case BlockBits Case 128
#End If
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize
BlockDecrypt data, data, i, i Next i
#If SUPPORT_LEVEL Then Case 192
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize
Block192Decrypt data, data, i, i Next i
Case 256
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize
Block256Decrypt data, data, i, i Next i
#If SUPPORT_LEVEL = 2 Then Case 160
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize
Block160Decrypt data, data, i, i Next i
Case 224
For i = 0 To (MaxBlocks - 1) * BlockSize Step BlockSize
Block224Decrypt data, data, i, i Next i
#End If
End Select #End If
Put #FileNum2, , data
m = m - MaxBlocks * BlockSize Loop While m > MaxBlocks * BlockSize End If
'Decrypt the last piece of the file ReDim data(m - 1)
Get #FileNum, , data #If SUPPORT_LEVEL Then
Select Case BlockBits Case 128
For i = 0 To m - BlockSize Step BlockSize BlockDecrypt data, data, i, i
Next i
#If SUPPORT_LEVEL Then Case 192
For i = 0 To m - BlockSize Step BlockSize Block192Decrypt data, data, i, i Next i
Case 256
For i = 0 To m - BlockSize Step BlockSize Block256Decrypt data, data, i, i Next i
#If SUPPORT_LEVEL = 2 Then Case 160
For i = 0 To m - BlockSize Step BlockSize Block160Decrypt data, data, i, i Next i
Case 224
For i = 0 To m - BlockSize Step BlockSize Block224Decrypt data, data, i, i Next i
#End If
End Select #End If
'Recover length field
If data(m - 1) < BlockSize Then
n = m - BlockSize + CLng(data(m - 1)) Else
#If SUPPORT_LEVEL Then
MsgBox "warning - incorrect length field in decrypted file." & vbCrLf & "Wrong key, keysize, or blocksize?"
#Else
MsgBox "warning - incorrect length field in decrypted file." & vbCrLf & "Wrong key or keysize?"
#End If
n = m End If
If n > 0 Then
ReDim Preserve data(n - 1) Put FileNum2, , data
End If
Close FileNum Close FileNum2 End If
3.3 Flowchart Program
Adapun flowchart dari aplikasi enkripsi dan dekripsi adalah sebagai berikut:
Gambar 3.1 Flowchart aplikasi enkripsi dan dekripsi algoritma Rijndael Mulai Tampilan Form Utama Pilih Proses File Teks Input teks Masukan Kunci Pilih Ukuran Blok
Ya Tidak
Pilih Panjang Kunci
File Enkripsi Enkripsi Ya Tidak Dekripsi Dekripsi Input file Output teks/file Ya Tidak Ya Tidak Proses Stop
3.4 Implementasi
Implementasi algoritma Rijndael dibuat menggunakan Microsoft Visual Basic 6.0. Aplikasi terdiri enkripsi dekripsi teks dan enkripsi dekripsi file.
Gambar 3.2 Form utama
Peletakan enkripsi dekripsi teks dan enkripsi dekripsi file diletakan bersama pada 1 (satu) form dan hanya dipisahkan menggunakan frame yang masing-masing didalamnya terdapat tombol encrypt dan decrypt. Sebelum melakukan enkripsi dan dekripsi baik itu teks atau file diharuskan melakukan pengisian key dan melakukan pilihan block size dan key size yang mana secara default nya berada pada posisi 128 bit.
Gambar 3.3 Hasil enkripsi teks
Gambar 3.4 Hasil dekripsi teks
Pada enkripsi dekripsi teks telah disedia frame untuk pengisian plainteks yang diinginkan. Jika ingin melakukan enkripsi dekripsi teks yang baru, maka dapat dilakukan dengan penghapusan teks yang lama dengan menekan tombol clear.