• Tidak ada hasil yang ditemukan

STUDI ALGORITMA RIJNDAEL DALAM SISTEM KEAMANAN DATA SKRIPSI EKO SATRIA

N/A
N/A
Protected

Academic year: 2021

Membagikan "STUDI ALGORITMA RIJNDAEL DALAM SISTEM KEAMANAN DATA SKRIPSI EKO SATRIA"

Copied!
83
0
0

Teks penuh

(1)

SKRIPSI

EKO SATRIA

051411010

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009

(2)

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

(3)

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

(4)

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

(5)

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.

(6)

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.

(7)

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.

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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.

(14)

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.

(15)

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.

(16)

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).

(17)

(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.

(18)

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.

(19)

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

(20)

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,

(21)

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

(22)

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

(23)

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.

(24)

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

(25)

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

(26)

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 [ \ ] ^

(27)

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:

(28)

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.

(29)

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.

(30)

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

(31)

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.

(32)

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.

(33)

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

(34)

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

(35)

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:

(36)

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

(37)

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:

(38)

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 c

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

=

=

=

=

(2.9)

(39)

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.

(40)

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).

(41)
(42)

Contoh dari keseluruhan proses Algoritma Rijndael

(43)

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

(44)

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.

(45)

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

(46)

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]

(47)

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

(48)

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&

(49)

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&

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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)

(55)

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

(56)

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

(57)

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

(58)

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

(59)

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.

(60)

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.

Gambar

Tabel  2.1  Subtitusi          15
Gambar 2.1 Proses enkripsi dan dekripsi
Gambar 2.2 Algoritma simetri
Gambar 2.3 Algoritma tak simetri
+7

Referensi

Dokumen terkait

Penggunaan alat penggilingan singkong dalam pembuatan kelanting yang masih manual dengan memutar tuas untuk menggiling merupakan aspek dimana proses tersebut dapat

Dapatan analisis MANOVA menunjukkan terdapat perbezaan yang signifikan dalam tahap kecerdasan emosi, kecerdasan spiritual, perapatan dengan ibu bapa, perapatan dengan rakan sebaya,

Berdasarkan kesimpulan di atas, perlu kiranya diketahui beberapa saran sebagai berikut: (1) Sebagai pengambil kebijakan perlu kiranya mengapresiasi guru- guru

Sarana hukum yang dapat dipergunakan untuk mempercepat penyelesaiaan masalah kredit macet perbankan melalui pelaksanaan pasal 1178 ayat (2) KUH Perdata Kreditur

Narasumber yang dipilih penulis adalah dua orang perawat yang telah bekerja lebih dari lima tahun di Panti Lansia Santa Anna dan dua orang lansia yang tinggal di Panti Lansia Santa

Tujuan penelitian ini adalah membandingkan pemeriksaan dokter gigi dan bukan dokter gigi dan untuk mendapatkan ketepatan pemeriksaan agar hasil survei kesehatan

[r]

Dengan demikian semakin banyak tekanan gas dinaikkan, maka atom gas yang dialirkan dalam tabung sputtering semakin meningkat dan energi ion-ion Ar yang menumbuki target juga