SKRIPSI
EKO SATRIA
051411010
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
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
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,
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,
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.
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.
DAFTAR ISI
2.3.3 Teknik Permutasi atau Teknik Transposisi 16
2.4 Teknik-teknik Kriptanalisis 17
2.5Algoritma Rijndael 22
2.6 Keamanan Rijndael 32
3.2Implementasi 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 RijndaelUntuk 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
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
BAB 1
PENDAHULUAN
1.1Latar 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
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.2Perumusan 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
1.3Pembatasan 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
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.7Tinjauan 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
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
(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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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:
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
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
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
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
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
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
Dalam proses enkripsi ini terdapat proses enkripsi teks dan enkripsi file.
1. Proses enkripsi teks
For i = 1 To Nr - 1 'Nr is number of rounds
(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)
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
#If SUPPORT_LEVEL = 0 Then
Const MaxBlocks As Long = MaxFileChunkSize \ BlockSize #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
Next i
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)
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
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)
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
#If SUPPORT_LEVEL = 0 Then
Const BlockSize As Long = 16 'bytes
Const MaxBlocks As Long = MaxFileChunkSize \ BlockSize #Else #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
MsgBox "File Size Error - ciphertext file not a multiple of
Open PlaintextFileName For Binary Access Write As FileNum2
'For large files, decrypt in pieces no larger than
For i = 0 To m - BlockSize Step BlockSize
#If SUPPORT_LEVEL = 2 Then Case 160 file." & vbCrLf & "Wrong key, keysize, or blocksize?"
#Else
MsgBox "warning - incorrect length field in decrypted file." & vbCrLf & "Wrong key or keysize?"
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
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
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
Gambar 3.5 Enkripsi file
Gambar 3.6 Dekripsi file
Pada enkripsi dekripsi file, file yang dapat dienkripsi ialah file-file yang
terdapat dalam sistem komputer seperti file yang ada pada Microsoft Office, file exe,
telah dienkripsi akan berekstensi aes dan untuk melihat hasil dari enkripsi file tersebut
dapat dilihat menggunakan notepad.
Gambar 3.7 Hasil file enkripsi
Pada aplikasi hasil percobaan program yang dilakukan untuk lama proses
enkripsi dengan ukuran file yang berbeda dan dilakukan perbandingan dengan
algoritma 3DES. Percobaan aplikasi menggunakan komputer dengan spesifikasi
sebagai berikut:
1. Pentium IV 1,8Ghz
2. Memori DDR 1024Mb
3. Hard disk 160Gb
Tabel 3.1 Waktu Proses Enkripsi Algoritma Rijndael dan 3DES
No. Nama File Ukuran File Sumber Lama Proses (Detik)
KiloByte 3DES Rijndael
Waktu Proses Enkripsi Algoritma Rijndael dan 3DES
0
49 71 185 238 461 486 524 552 553 1170 3600 3896
Kilo Byte
Tabel 3.2 Waktu Proses Dekripsi Algoritma Rijndael dan 3DES
No. Nama File Ukuran File Sumber Lama Proses (Detik)
KiloByte 3DES Rijndael
1 Ferarri.jpg 486 0,14 0,75
2 Yamaha.jpg 461 0,11 0,75
3 AES6.pdf 238 0,11 0,39
4 Memory.pdf 185 0,08 0,28
5 Cilok putih.exe 552 0,17 0,84
6 Peanut.exe 553 0,14 0,81
7 Landasan Matematika.ppt 71 0,05 0,13 8 Slide proposal.ppt 524 0,12 0,87
9 Anlsis.doc 49 0,05 0,08
10 Bingkai.doc 1170 0,22 1,76
11 Cokelat, bendera.mp3 3896 0,58 5,67 12 Peterpan – Kota mati.mp3 3600 0,50 5,59
Waktu Proses Dekripsi Algoritma Rijndael dan 3DES
0 1 2 3 4 5 6
49 71 185 238 461 486 524 552 553 1170 3600 3896
Kilo Byte
D
e
ti
k
3Des
Rijndael
3.5 Rijndael Untuk Integritas Data
Pada saat mengirimkan pesan dan agar pesan yang dikirimkan tersebut sampai di
tujuan dengan aman serta tidak mengalami campur tangan pihak lain. Pesan tersebut
akan melalui berbagai jenis komputer, router atau gateway dan melintasi berbagai
macam media fisik komunikasi. Tujuannya adalah mencegah terjadinya perubahan
pesan ketika sedang dalam proses transmisi data terhadap pesan yang dikirimkan
maupun pesan yang diterima. Jika seorang penyadap melakukan perubahan data, maka
penyadap tersebut akan memperoleh pesan-pesan yang terenkripsi saja sehingga tidak
mencerminkan isi pesan yang sebenarnya.
Jika menginginkan isi pesan tetap terjaga keasliannya (tidak diubah oleh orang
yang tidak berhak), maka struktur Rijndael dapat mengakomendasikan banyak blok
dan kunci dengan penukaran pada nomor putaran. Berikut contoh proses enkripsi dan
dekripsi teks dengan melakukan perubahan pada kunci, cipherteks ataupun pada
ke duanya.
Contoh 1
Plainteks : november
Kunci : 123456
Cipherteks : 0D62F43FAE816AC1392158D47F3EC911
Perubahan yang dilakukan dengan cara mengubah pada kunci.
Cipherteks : 0D62F43FAE816AC1392158D47F3EC911
Kunci : 123455
Plainteks : ˆ GÊ®r'` t2 ÓL8
Perubahan yang dilakukan dengan cara mengubah pada cipherteks.
Cipherteks : 1D62F43FAE816AC1392158D47F3EC911
Kunci : 123456
Perubahan yang dilakukan dengan cara mengubah pada cipherteks dan kunci
Cipherteks : 1D62F43FAE816AC1392158D47F3EC911
Kunci : 123457
Plainteks : Ÿz B ¸ Ÿâ-bþú|
Contoh 2
Plainteks : universitas
Kunci : abcd
Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76C
Setelah dilakukan perubahan dengan cara melakukan perubahan pada kunci.
Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76C
Kunci : abcde
Plainteks : ÅRKM õåÿdQJ?Ü7üå
Perubahan yang dilakukan dengan cara mengubah pada cipherteks.
Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76A
Kunci : abcd
Plainteks : × ^»¼Ü«‚š¨2ûµÀ><
Perubahan yang dilakukan dengan cara mengubah pada cipherteks dan kunci
Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76A
Kunci : abcc
Plainteks : «.!o=ëGšók=jëñ³V
Contoh enkripsi dan enkripsi berupa file dengan melakukan perubahan pada kuncinya
Contoh 1
File : anlis.doc
Kunci : 1234
anlsis.doc
anlsis.doc.aes
Setelah dilakukan perubahan dengan cara melakukan perubahan pada kunci.
Cipherteks : anlsis.doc.aes
Kunci : 12345
anlsis.doc.aes
anlsis.doc
Contoh 2
File : Landasan Matematika Untuk Kriptografi.ppt
Kunci : mipa
Landasan Matematika Untuk Kriptografi.ppt
Landasan Matematika Untuk Kriptografi.ppt.aes
Setelah dilakukan perubahan dengan cara melakukan perubahan pada kunci.
Cipherteks : Landasan Matematika Untuk Kriptografi.ppt.aes
Kunci : usu
Landasan Matematika Untuk Kriptografi.ppt.aes
Untuk file yang berekstensi ppt atau file berbentuk Microsoft Power Point jika ada
perubahan kunci, maka hasilnya tidak akan terbaca lagi oleh Microsoft Power Point
dan dianggap file tersebut rusak.
Jika terjadi perbedaan, maka disimpulkan ada modifikasi terhadap isi pesan.
Aplikasi ini didasarkan pada kenyataan bahwa perubahan kunci akan menyebabkan
perubahan data pada saat akan dikembalikan pada bentuk semula dan hasilnya akan
berbeda dengan aslinya (plainteks). Dengan kata lain, Rijndael sangat peka terhadap
BAB 4
KESIMPULAN DAN SARAN
4.1 Kesimpulan
Dari analisa dan hasil implementasi algoritma Rijndael dapat diambil kesimpulan
sebagai berikut:
1. Dari hasil uji coba yang dilakukan antara algoritma Rijndael dan algoritma
3DES, algoritma Rijndael memiliki waktu enkripsi dan dekripsi sedikit lebih
lama.
2. Algoritma Rijndael sangat peka terhadap perubahan sekecil apapun pada data
masukan, ini didasarkan pada kenyataan bahwa perubahan kunci akan
menyebabkan perubahan data pada saat dikembalikan pada bentuk semula.
3. Algoritma Rijndael mempunyai panjang kunci paling sedikit 128 bit, ini
menyebabkan algoritma Rijndael tahan terhadap serangan exhaustive key
search.
4. Untuk setiap putarannya, Rijndael menggunakan kunci yang berbeda. Kunci
4.2 Saran
Saran yang dapat penulis ambil adalah:
1. Pembaca yang ingin melakukan enkripsi dan dekripsi baik berupa file ataupun
teks perlu mempertimbangkan faktor kelebihan maupun kekurang dari suatu
algoritma yang akan digunakan agar file atau teks terjaga keamanan dan
kerahasiaannya.
2. Diharapkan kepada Pembaca yang melakukan proses enkripsi dan dekripsi file
ataupun teks untuk menggunakan kunci yang lebih panjang dan lebih variatif
antara huruf dan angka ataupun kombinasi karakter berupa kode ASCII yang
akan lebih menyulitkan pemecahan cipherteks oleh kriptanalis.
3. Dalam mengimplementasikan algoritma Rijndael ini hanya dalam cakupan
kecil dan sangat mendasar yang menggunakan bahasa pemograman Microsoft
DAFTAR PUSTAKA
Ariyus, Dony. 2006. Kriptografi Keamanan Data dan Komunikasi. Yogyakarta: Graha Ilmu
Andi, 2003. Memahami Model Enkripsi dan Security Data. Semarang: Andi Yogyakarta
Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika Bandung
Kurniawan, Yusuf. 2004. Kriptografi Keamanan Internet dan Jaringan Komputer. Bandung: Informatika.
Joan Daemen & Vincent Rijmen. A Specification for Rijndael, the AES Algorithm.
Federal Information Processing Standards Publication 197, 2001. “Announcing the ADVANCED ENCRYPTION STANDARD (AES)” hal. 1-51.
LAMPIRAN: LISTING PROGRAM
Option Explicit
#Const SUPPORT_LEVEL = 2
Private m_Rijndael As New cRijndael
Public Property Let Status(TheStatus As String) If Len(TheStatus) = 0 Then
Private Sub DisplayString(TheTextBox As TextBox, ByVal TheString As String)
End If
Debug.Assert j = UBound(data2) + 1 HexDisplay = data2
End If
End Function
End Select
Private Function GetPassword() As Byte() Dim data() As Byte
If Check1.Value = 0 Then
data = StrConv(txtPassword.Text, vbFromUnicode) ReDim Preserve data(31)
Else
If HexDisplayRev(txtPassword.Text, data) <> (cboKeySize.ItemData(cboKeySize.ListIndex) \ 8) Then
data = StrConv(txtPassword.Text, vbFromUnicode)
#If SUPPORT_LEVEL Then UBound(ciphertext) + 1, BlockBits \ 8)
Status = ""
BlockBits = cboBlockSize.ItemData(cboBlockSize.ListIndex) pass = GetPassword BlockBits) <> 0 Then
DisplayString Text1, HexDisplay(plaintext, UBound(plaintext) + 1, BlockBits \ 8)
End If ...", "*.aes|*.aes|*.*|*.*", FileName & ".aes")
If Len(FileName2) <> 0 Then progress " & lblStatus.Caption
Status = "" End If
'MsgBox " complete" & vbCrLf & vbCrLf & " With time progress " & lblStatus.Caption
End If End If
Private Sub cmdFileDecrypt_Click() FileName2 = Left$(FileName, Len(FileName) - 4)
FileName2 = FileDialog(Me, True, "Save Decrypted Data As progress " & lblStatus.Caption
Text1FontName = Text1.FontName
cboBlockSize.AddItem "128 Bit"
cboBlockSize.ItemData(cboBlockSize.NewIndex) = 128 #If SUPPORT_LEVEL = 0 Then
cboBlockSize.Enabled = False #Else
#If SUPPORT_LEVEL = 2 Then
cboBlockSize.AddItem "160 Bit"
cboBlockSize.ItemData(cboBlockSize.NewIndex) = 160 cmdSizeTest.Visible = True
#End If
cboBlockSize.AddItem "192 Bit"
cboBlockSize.ItemData(cboBlockSize.NewIndex) = 192 #If SUPPORT_LEVEL = 2 Then
cboBlockSize.AddItem "224 Bit"
cboBlockSize.ItemData(cboBlockSize.NewIndex) = 224 #End If
cboBlockSize.AddItem "256 Bit"
cboBlockSize.ItemData(cboBlockSize.NewIndex) = 256 #End If
cboKeySize.AddItem "128 Bit"
cboKeySize.ItemData(cboKeySize.NewIndex) = 128 #If SUPPORT_LEVEL = 2 Then
cboKeySize.AddItem "160 Bit"
cboKeySize.ItemData(cboKeySize.NewIndex) = 160 #End If
cboKeySize.AddItem "192 Bit"
cboKeySize.ItemData(cboKeySize.NewIndex) = 192 #If SUPPORT_LEVEL = 2 Then
cboKeySize.AddItem "224 Bit"
cboKeySize.ItemData(cboKeySize.NewIndex) = 224 #End If
cboKeySize.AddItem "256 Bit"
cboKeySize.ItemData(cboKeySize.NewIndex) = 256 cboBlockSize.ListIndex = 0
cboKeySize.ListIndex = 0 txtPassword = ""
Status = ""
End Sub