Perancangan dan Implementasi Aplikasi Kriptografi Algoritma AES-128 Pada File Dokumen Artikel Ilmiah Peneliti : Yulius Rio Pujianto (672011076) Magdalena A. Ineke Pakereng, M.Kom. Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen SatyaWacana Salatiga Agustus 2016
26
Embed
Perancangan dan Implementasi Aplikasi Kriptografi ...repository.uksw.edu/bitstream/123456789/11377/2/T1_672011076_Full...Perancangan. dan . Implementasi Aplikasi Kriptografi Algoritma
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Perancangan dan Implementasi Aplikasi Kriptografi Algoritma AES-128
Pada File Dokumen
Artikel Ilmiah
Peneliti :
Yulius Rio Pujianto (672011076)
Magdalena A. Ineke Pakereng, M.Kom.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen SatyaWacana
Salatiga
Agustus 2016
Perancangan dan Implementasi Aplikasi Kriptografi Algoritma AES-128
Pada File Dokumen
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh Gelar Sarjana Komputer
Peneliti :
Yulius Rio Pujianto (672011076)
Magdalena A. Ineke Pakereng, M.Kom.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen SatyaWacana
Salatiga
Agustus 2016
1
1. Pendahuluan
Kriptografi dapat dikatakan sebagai sebuah ilmu untuk menjaga pesan atau informasi
agar menjadi aman. Kriptografi berasal dari bahasa Yunani, kata “cryptos” yang berarti
“secret” (rahasia) dan “graphy” yang berarti “writing” (tulisan). Algoritma kriptografi terdiri
dari enkripsi dan dekripsi. Sebuah proses pengubahan suatu pesan dari yang dapat dimengerti
(plaintext) menjadi pesan yang tidak dapat dimengerti (ciphertext) dengan menggunakan
suatu kunci disebut enkripsi. Sementara proses kebalikannya, pengubahan ciphertext menjadi
plaintext disebut dengan dekripsi. Menurut pengertian secara harafiahnya, kriptografi adalah
ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke
tempat yang lain atau dari pengguna yang satu ke pengguna yang lain. Penggunaan kata
“seni” di dalam definisi di atas berasal dari fakta sejarah pada masa-masa awal kriptografi,
setiap orang telah mempunyai cara yang unik untuk merahasiakan suatu informasi. Cara-cara
unik tersebut berbeda-beda pada setiap orangnya sehingga setiap kali menulis pesan rahasia,
pesan tersebut memiliki nilai tersendiri sehingga kriptografi menjadi suatu seni dalam
penyandian pesan [1].
Beragam jenis dari kriptografi modern merupakan berjenis block cipher yang
digunakan sebagai pengamanan informasi, contohnya adalah DES (Data Encryption
Standard) yang pernah menjadi sebuah standar keamanan di negara Amerika Serikat (US),
tetapi kemudian digantikan oleh AES (Advanced Encryption Standard) pada bulan Mei pada
tahun 2005. Data Encryption Standard (DES) telah dijadikan patokan penyandian keamanan
data semenjak tahun 1977. Algoritma ini memiliki panjang kunci 56 bit. Dalam
perkembangan ilmu teknologi dan meluasnya penggunaan jaringan internet mengakibatkan
penggunaan DES, telah terbukti sudah tidak aman dan tidak menjawab kebutuhan terutama
dalam hal kebutuhan keamanan pengiriman data melalui jaringan internet. Sebuah hardware
yang pernah diciptakan secara khusus dengan tujuan untuk meretas kunci 56-bit DES hanya
dalam waktu beberapa jam saja sudah dapat dibangun [2].
Akibat terjadinya peristiwa tersebut kemudian menjadi sebuah pertanda bahwa
diperlukannya sebuah standard algoritma baru dengan kunci yang lebih panjang. Pada tahun
1997, the U.S. National Institue of Standards and Technology (NIST) memutuskan untuk
membuat sebuah kompetisi pembentukan algoritma baru yang kemudian diberi nama
Advanced Encryption Standard (AES). Algoritma baru AES ini dibuat dengan tujuan untuk
menggantikan algoritma DES yang telah lama digunakan sebagai standar keamanan
penyandian data digital. Algoritma Rijndael telah ditetapkan sebagai algoritma kriptografi
AES pada tahun 2001 setelah melalui berbagai tahap seleksi dan pertimbangan. Setelah
mengalami proses standarisasi yang dilakukan oleh NIST, maka algoritma Rijndael pada
tanggal 22 Mei tahun 2002, dinyatakan secara resmi menjadi algoritma kriptografi. Algoritma
AES termasuk dalam jenis kriptografi simetrik karena dalam proses enkripsi dekripsinya
menggunakan kunci yang sama, dimana saat beroperasi menggunakan metode penyandian
blok (block cipher) yang sanggup menyandikan blok data 128-bit dengan pilihan panjang
kunci 128-bit (AES-128), 192-bit (AES-192), atau 256-bit (AES-256) [3].
Saat ini jaringan komputer dan internet mempermudah dalam proses maupun aktivitas
pertukaran informasi. Permasalahannya adalah data-data informasi tersebut yang dijalankan
pada jaringan komputer pada umumnya merupakan data plaintext. Hal ini sangat beresiko
saat ada berbagai pihak lain yang dapat menyadap informasi tersebut, dapat dengan mudah
membaca isi informasi penting tersebut. Keamanan merupakan salah satu hal yang wajib
diperhitungkan dalam proses pertukaran informasi, sehingga dapat sampai ke tujuan dengan
aman serta tidak dapat diketahui atau pun dimanipulasi oleh pihak yang tidak
bertanggungjawab. Salah satu cara pengamanan yang dapat digunakan untuk mengamankan
informasi yaitu, metode kriptografi [4]. Berdasarkan permasalahan tersebut, yaitu
2
penyadapan informasi, maka akan dilakukan penelitian yang bertujuan untuk melakukan
“Perancangan dan Implementasi Aplikasi Kriptografi Algoritma AES-128 Pada File
Dokumen”.
2. Tinjauan Pustaka
Pada penelitian terdahulu yang berjudul “Enkripsi Dan Dekripsi Dengan Algoritma
AES 256 Untuk Semua Jenis File” [5], memiliki sebuah metode pengujian dengan melihat
hubungan antara besar file dengan lamanya waktu yang dibutuhkan dalam proses enkripsi
serta dekripsi. Hasil dari pengujian ini menunjukan bahwa waktu yang dibutuhkan untuk
melakukan enkripsi maupun dekripsi file dan atau teks tergantung pada besarnya file. File
yang memiliki ukuran yang lebih besar membutuhkan waktu yang lebih lama dalam proses
enkripsi dan dekripsi. Kesimpulan yang diperoleh dari penelitian ini adalah besar ukuran file
enkripsi akan bertambah 11 byte, hal ini disebabkan adanya penambahan header untuk
menyimpan informasi letak file asli. Dalam penelitian ini file hasil enkripsi dengan format
.aes saat di dekripsi, isi dari file tersebut ada yang berubah atau tidak sesuai dengan isi file
aslinya.
Penelitian yang dilakukan oleh Rifkie Primartha [6] yang berjudul “Penerapan Enkripsi
Dan Dekripsi File Menggunakan Algoritma Advanced Encryption Standard (AES)”, menerapkan
algoritma kriptografi AES pada bahasa pemrograman Java dengan tujuan membuat suatu
aplikasi software yang dapat melakukan fungsi enkripsi dan dekripsi. Hasil dari penelitian ini
menunjukan bahwa proses enkripsi dan dekripsi file maupun teks, pada prinsipnya memiliki
alur proses yang sama, memiliki waktu proses enkripsi dekripsi pada teks sederhana yang
relatif sama serta menunjukan bahwa AES dapat diterapkan pada berbagai aplikasi kompresi.
Penelitian terdahulu dengan judul, “Implementasi Kriptografi Pada File Dokumen
Menggunakan Algoritma AES-128” [7], penelitian ini mengimplementasikan penyandian file
digital untuk file PDF, DOC dan TXT. Penelitian iin mengimplementasikan software
menggunakan Matlab 7.0.4 serta secara khusus mengamati kebutuhan waktu proses enkripsi
dan dekripsi, dan ukuran file yang dihasilkan dari proses tersebut.
Berdasarkan kedua penelitian tersebut di atas yang pernah dilakukan tentang
kriptografi dengan metode AES melalui berbagai media file, maka dalam penelitian ini, akan
dilakukan penelitian yang bertujuan untuk merancang dan mengimplemetasikan aplikasi
kriptografi khusus untuk file dokumen digital seperti PDF, DOC, PPT, XLS, dan TXT yang
menggunakan metode AES 128 pada bahasa pemrograman Java, dimana dalam penelitian ini
pengguna dapat memilih berbagai macam file dokumen yang akan dilakukan enkripsi dan
dekripsi dengan waktu yang relatif cepat dan dapat memproses enkripsi dekripsi dalam satu
tampilan saja. Penelitian yang dilakukan akan melihat lamanya waktu dalam proses enkripsi
serta dekripsi dan besar ukuran file setelah melalui proses enkripsi data, dan melihat apakah
besar ukuran file yang telah didekripsi kembali semula dengan file aslinya. Sistem yang
dibangun diharapkan dapat membantu dan memudahkan para pengguna untuk menjaga
kerahasiaan data file dokumen, dengan cara enkripsi dengan metode AES-128, hasil file
enkripsi tidak mengalami penambahan besar ukuran file dan file hasil dekripsi sanggup
berubah kembali ke dalam bentuk aslinya tanpa ada yang berubah satu pun.
Proses enkripsi dan dekripsi yang dilakukan dengan menggunakan kunci yang sama
disebut algoritma kriptografi kunci simetri. Selain kriptografi algoritma kunci simetri ada
juga kriptografi algoritma kunci asimetri, yaitu proses enkripsi dan dekripsi yang dilakukan
dengan menggunakan kunci yang berbeda. Berdasarkan jenis kunci kriptografi dapat
dikelompokan menjadi dua jenis, yaitu algoritma kunci simetris dan asimetris. Berdasarkan
besar data yang diolah terdapat dua jenis yaitu, algoritma block chipper dimana data yang
dikirim dalam bentuk blok-blok besar dan algoritma block stream dimana data yang dikirim
3
dalam bentuk blok-blok kecil. Pada kriptografi terdapat sepasang kunci yaitu kunci publik
(public key) yang digunakan untuk proses enkripsi dan kunci privasi (privat key) yang
digunakan untuk proses dekripsi. Kunci publik tidak bersifat rahasia dan harus diketahui oleh
pengirim pada saat akan mengenkripsi data. Sebaliknya untuk kunci privasi sifatnya rahasia
dan hanya boleh diketahui oleh penerima pesan [8].
Enkripsi disebut juga sebagai kode atau cipher. Pembentukan enkripsi didasarkan
pada sebuah algoritma yang melakukan pengacakan suatu informasi menjadi bentuk yang
tidak bisa dibaca dan atau tidak bisa dilihat. Sementara itu dekripsi adalah proses algoritma
yang sama yang dipakai untuk pengembalian informasi acak menjadi bentuk aslinya [9].
Berikut adalah istilah - istilah yang digunakan dalam bidang kriptografi [10] :
1. Plaintext, adalah pesan/informasi yang hendak dikirimkan yang berisi data asli yang
mudah dibaca.
2. Ciphertext, adalah merupakan pesan yang telah melalui proses enkripsi/proses
penyandian, isi pesan tersebut sudah tidak dapat dibaca lagi.
3. Enkripsi, adalah sebuah alur proses pengubahan plaintext menjadi chipertext.
4. Dekripsi, adalah sebuah alur proses pengubahan chipertext menjadi bentuk data
asli/plaintext.
5. Key, merupakan sebuah kunci rahasia yang terdiri dari bilangan atau huruf atau
perpaduan dari keduanya yang digunakan dalam proses enkripsi maupun dekripsi.
Tujuan algoritma kriptografi merupakan aspek kemanan sebuah informasi yang dapat
dirangkum sebagai berikut [9]:
1. Kerahasiaan (confidentiality), adalah tujuan untuk menjaga agar pesan tidak dapat dibaca
oleh pihak lain.
2. Integritas data (data integrity), adalah tujuan untuk menjamin bahwa sebuah pesan masih
asli selama proses pengiriman.
3. Otentikasi (authentication), adalah sebuah tujuan yang berhubungan dengan
pengidentifikasian pesan, baik mengidentifikasi kebenaran pihak-pihak yang
berkomunikasi maupun mengidentifikasi kebenaran dari sumber pesan yang dikirim.
4. Anti-penyangkalan (non-repudiation), adalah tujuan untuk pencegahan penyangkalan
selama pertukaran informasi dari pihak pengirim pesan. Advanced Encryption Standard (AES) termasuk dalam kriptografi algoritma kunci simetri
dan cipher blok, algoritma ini menggunakan kunci yang sama saat enkripsi dan dekripsi. AES
merupakan algoritma yang input serta output-nya berupa blok dengan urutan data sebesar 128 bit.
Algoritma kriptografi AES memiliki panjang kunci yang beragam yaitu, 128 bit, 192 bit, serta 256
bit. Perbedaan panjang kunci tersebut mempengaruhi jumlah round (putaran) pada proses penyandian
pesan pada algoritma AES ini [10]. Berikut ini adalah Tabel 1 yang memperlihatkan jumlah round /
putaran ( Nr ) yang diimplementasikan pada masing-masing panjang kunci.
Tabel 1 Perbandingan Jumlah Round dan Key [9]
Jumlah Key
(Nk)
Ukuran Block
(Nb)
Jumlah Putaran
(Nr)
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14
Sebelum memulai proses enkripsi atau dekripsi terlebih dahulu ada proses yang
disebut state, state pada AES ini merupakan pelaksanaan operasi AES yang dilakukan
terhadap array of byte dua dimensi. Ukuran pada state merupakan komposisi NROWS X
NCOLS. Pada awal proses enkripsi, data pesan diubah terlebih dahulu dalam bentuk
heksadesimal kemudian dimasukkan pada matriks 4x4, satu matrik berisi 1 byte (8 bit),
berupa in0, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15 akan disalin
ke dalam array state. State inilah yang nantinya akan berperan dalam pengoperasian enkripsi
4
serta dekripsi. Kemudian output-nya akan ditampung ke dalam array out [11]. Gambar 1
menggambarkan proses dari input bytes, state array, dan output bytes :
Gambar 1 Proses Input Bytes, State Array, dan Output Bytes [9]
Proses enkripsi, pengubahan plainteks menjadi chiperteks dapat dirumuskan C = E
(M), dimana M merupakan pesan asli (plaintext), E adalah proses enkripsi dengan Key
Private sementara C adalah Chipertext (plaintext yang telah terenkripsi) [1].
Secara umum proses enkripsi dengan algoritma AES terdiri dari [10]:
1. AddRoundKey, adalah proses XOR antara state awal (plainteks) dengan cipherkey. Tahap
ini disebut juga dengan istilah initial round. Pada saat proses AddRoundKey, subkey
digabungkan dengan state. Proses penggabungan ini menggunakan operasi XOR untuk
setiap byte dari subkey dengan byte yang bersangkutan dari state. Setiap subkey berukuran
sama dengan state yang bersangkutan.
2. Proses putaran sebanyak Nr – 1 kali, dalam putaran tersebut terjadi proses :
a. SubByte adalah proses substitusi byte dengan menggunakan tabel substitusi (S-Box).
Sebuah tabel S-Box terdiri dari 16x16 baris dan kolom dengan masing-masing
berukuran 1 byte. Tabel S-Box diperlihatkan pada Gambar 3.
b. ShiftRow adalah proses pergeseran baris-baris array state secara wrapping. Proses ini
bekerja dengan cara memutar byte-byte pada 3 baris terakhir (baris 1, 2, dan 3) dengan
jumlah putaran yang berbeda. Baris 1 akan diputar sebanyak 1 kali, baris 2 akan
diputar sebanyak 2 kali, dan baris 3 akan diputar sebanyak 3 kali. Sedangkan baris 0
tidak akan diputar. Proses Shift Rows terlihat seperti pada Gambar 4.
c. MixColumn adalah proses pengacakan data pada masing-masing kolom array state.
Operasi ini menggabungkan 4 bytes dari setiap kolom tabel state dan menggunakan
transformasi linier.
d. AddRoundKey adalah proses operasi XOR antara state terbaru dengan roundkey.
3. Final round, merupakan sebuah proses untuk putaran terakhir yang terdiri dari :
a. SubByte
b. ShiftRow
c. AddRoundKey
Ilustrasi proses enkripsi AES dapat digambarkan seperti pada Gambar 2 :
5
Gambar 2 Proses Enkripsi AES [9]
Gambar 3 Tabel S-Box [9]
Gambar 4 Proses Shift Rows [9]
Proses dekripsi AES adalah proses mengubah chiperteks menjadi plainteks, dapat
dirumuskan menjadi M = D (C), dimana C adalah chiperteks, D adalah proses dekripsi menggunakan
key private serta M yang merupakan pesan asli setelah di dekripsi putaran sebanyak Nr – 1 kali [1].
Proses yang dilakukan pada setiap putaran adalah [10] :
1. InverseShiftRow, adalah proses kebalikan dari shiftrows, pada proses ini dilakukan
pergeseran bit ke kanan.
2. InverseSubByte, adalah proses kebalikan dari subbyte.
3. AddRoundKey, adalah operasi XOR antara state terbaru dengan round key.
4. InverseMixColumn, adalah proses mengacak data pada masing-masing kolom array state.
6
5. Final round, yang merupakan proses untuk putaran terakhir terdiri dari :
a. InverseShiftRow
b. InverseSubByte
c. AddRoundKey
Ilustrasi proses dekripsi AES dapat digambarkan seperti pada Gambar 5 :
Gambar 5 Proses Dekripsi AES [9]
3. Metode dan Perancangan Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang terbagi dalam