BAB I
PENDAHULUAN
1.1. Latar Belakang
Berkat
perkembangan teknologi yang begitu pesat memungkinkan manusia dapat
berkomunikasi dan saling bertukar informasi/data secara jarak jauh. Antar kota
antar wilayah antar negara bahkan antar benua bukan merupakan suatu kendala
lagi dalam melakukan komunikasi dan pertukaran data. Seiring dengan itu
tuntutan akan sekuritas (keamanan) terhadap kerahasiaan informasi yang saling
dipertukarkan tersebut semakin meningkat. Begitu banyak pengguna seperti
departemen pertahanan, suatu perusahaan atau bahkan individu-individu tidak
ingin informasi yang disampaikannya diketahui oleh orang lain atau
kompetitornya atau negara lain. Oleh karena itu dikembangkanlah cabang ilmu
yang mempelajari tentang cara-cara pengamanan data atau dikenal dengan istilah
Kriptografi.
Dalam
kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi. Enkripsi
adalah proses dimana informasi/data yang hendak dikirim diubah menjadi bentuk
yang hampir tidak dikenali sebagai informasi awalnya dengan menggunakan
algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu mengubah
kembali bentuk tersamar tersebut menjadi informasi awal.
Algoritma
kriptografi berdasarkan jenis kunci yang digunakan dapat dibedakan menjadi dua
jenis yaitu :
·
Algoritma simetris
Dimana
kunci yang digunakan untuk proses enkripsi dan dekripsi adalah kunci yang sama
·
Algoritma asimetris
Dimana
kunci yang digunakan untuk proses enkripsi dan dekripsi menggunakan kunci yang
berbeda.
Sedangkan
berdasarkan besar data yang diolah dalam satu kali proses, maka algoritma
kriptografi dapat dibedakan menjadi dua jenis yaitu :
·
Algoritma block cipher
Informasi/data
yang hendak dikirim dalam bentuk blok-blok besar (misal 64-bit) dimana
blok-blok ini dioperasikan dengan fungsi enkripsi yang sama dan akan
menghasilkan informasi rahasia dalam blok-blok yang berukuran sama.
·
Algoritma stream cipher
Informasi/data
yang hendak dikirim dioperasikan dalam bentuk blok-blok yang lebih kecil (byte
atau bit), biasanya satu karakter persatuan persatuan waktu proses, menggunakan
tranformasi enkripsi yang berubah setiap waktu.
Camellia
merupakan algoritma kriptografi simetris
blok cipher. Dalam Camellia proses enkripsi dan dekripsi dilakukan pada
blok data berukuran 128-bit dengan kunci yang dapat berukuran 128-bit, 192-bit,
256-bit. Algoritma Camellia dikembangkan oleh :
1. Kazumaro
Aoki (NTT - Nippon Telegraph and Telephone Corp.)
2. Tetsuya
Ichikawa (Mitsubishi electric Corp.)
3. Masayuki
Kanda (NTT – Nippon Telegraph and Telephone Corp.)
4. Mitsuru
Matsui (Mitsubishi electric Corp.)
5. Shiho
Moriai (NTT – Nippon Telegraph and Telephone Corp.)
6. Junko
Nakajima (Mitsubishi electric Corp.)
7. Toshio
Tokita (Mitsubishi electric Corp.)
Dimana
versi 1.0 pada bulan Juli 2000, versi 2.0 pada September 2001 dan versi 2.1
pada Febuari 2002.
1.2.
Rumusan Masalah
Berdasarkan
latar belakang masalah yang telah diuraikan di atas, maka rumusan masalahnya
adalah bagaimana menerapkan algoritma kriptografi AES dan membuat antarmuka
yang memudahkan untuk input data ke program dan output data.
1.3.
Batasan Masalah
Beberapa
batasan dalam perincian masalah, yaitu:
1. Algoritma
AES yang dibahas hanya enkripsi yaitu menyandikan plainteks menggunakan cipher key untuk
menghasilkan cipherteks.
2. Inputan
dilakukan pada saat pengeditan program atau bersifat statis.
1.4. Tujuan
Ada empat tujuan mendasar dari ilmu
kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :
1. Kerahasiaan, adalah layanan yang digunakan untuk
menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia
untuk membuka/mengupas informasi yang telah disandi.
2. Integritas
data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah.
Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi
manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan,
penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.
3. Autentikasi,
adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem
maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling
memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus
diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.
4. Non-repudiasi.,
atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan
terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.
BAB II
DASAR TEORI
2.1.
Pengertian Kriptografi
Kriptografi
adalah ilmu sekaligus seni untuk menjaga kerahasiaan pesan dengan cara
menyamarkannya menjadi bentuk tersandi yang tidak mempunyai makna. Bentuk
tersandi ini hanya dapat dibaca oleh pihak yang berhak membacanya. Pesan yang akan
dirahasiakan sebelum disamarkan disebut plainteks, sedangkan pesan setelah
disamarkan disebut chiperteks. Proses penyamaran plainteks ke chiperteks disebut
enkripsi, sedangkan pengembalian chiperteks menjadi plainteks semula disebut
dekripsi.
2.2. Sejarah Kriptografi
Kriptografi
telah lama digunakan oleh tentara Sparta di Yunani sekitar tahun 400 SM. Mereka
menggunakan alat yang disebut scytale. Alat ini terbuat dari daun
papirus yang dililitkan pada batang silinder. Pesan yang akan dikirim ditulis
horizontal. Setelah ditulis, daun dilepaskan dari batang kemudian dikirimkan ke
penerima. Penerima dapat membaca pesan tersebut setelah melilitkan kembali daun
tersebut pada batang silinder dengan ukuran diameter yang sama. Teknik ini
dikenal dengan nama transposisi chiper yang merupakan metode enkripsi tertua. Pada
zaman Romawi kuno, Julius Caesar juga menggunakan kriptografi untuk mengirimkan
pesannya. Pesan yang ia kirimkan ditulis dengan mengganti alfabet dengan
alfabet lain dengan kunci tertentu. Sang penerima tentu saja telah diberi tahu kunci
tersebut. Cara menyandikannya adalah dengan mengganti semua susunan alfabet
dengan alfabet yang posisinya berada setelah alfabet tersebut tergantung kunci.
Sebagai contoh, Julius Caesar mengganti huruf a, b, dan c menjadi d, e, dan f. Pada
perang dunia kedua, Jerman menggunakan mesin untuk mengrenkripsi pesan yang
dikirimkan Hitler ke tentaranya yang bernama mesin enigma. Jerman meyakini
kode-kode enkripsi dari mesin tersebut tidak dapat dipecahkan karena memiliki
sekitar 15 milyar kemungkinan untuk mendekripsikannya. Kenyataannya sekutu
mampu mendekripsikannya sehingga mesin tersebut beberapa kali memgalami
perubahan.
2.3. Algoritma Kriptografi
Berdasarkan
kunci yang dipakai, algoritma kriptografi dibagi menjadi tiga macam.
2.3.1. Hash Function
Fungsi
hash sering disebut sebagai fungsi satu arah (one-way function).
Fungsi ini mengubah suatu input menjadi output, tetapi output tersebut tidak
dapat dikembalikan menjadi bentuk semula. Salah satu manfaatnya adalah
penggunaan sidik jari (fingerprint). Sidik jari digunakan sebagai
identitas pengirim pesan. Fungsi lain adalah untuk kompresi dan message digest.
Contoh algoritma fungsi ini adalah MD-5 dan SHA.
2.3.2. Asimetri
Pada
algoritma ini, digunakan dua buah kunci yang berhubungan yang disebut dengan
kunci umum dan kunci pribadi. Kunci umum dapat dipublikasikan sehingga pesan
dapat dienkripsikan tetapi tidak dapat didekripsikan dengan kunci tersebut.
Kunci pribadi hanya boleh digunakan oleh pihak yang berhak untuk mendekripsikan
pesan yang terenkripsi. Algoritma yang menggunakan kunci umum dan publik ini
antara lain Digital Signature Algorithm (DSA), Rivest-Shamir-Adleman (RSA),
Diffie-Hellman (DH), dan sebagainya.
2.3.3. Simetri
Algoritma
ini menggunakan kunci yang sama untuk mengenkripsi dan mendekripsi data. Untuk mendekripsikan
data, penerima menggunakan kunci yang sama dengan kunci yang digunakan pengirim
untuk mengenkripsi data. Contoh dari algoritma ini adalah Data Encryption
Standard (DES), International Data Encryption Algorithm (IDEA), Advanced
Encryption Standard (AES), dan sebagainya. Dalam makalah ini, algoritma AES
akan dibahas lebih lanjut.
BAB III
PEMBAHASAN
3.1.
Sekilas tentang AES
Algoritma
kriptografi bernama Rijndael yang didesain oleh oleh Vincent Rijmen dan
John Daemen asal Belgia keluar 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. Pada 2006, AES merupakan salah satu algoritma terpopuler yang
digunakan dalam kriptografi kunci simetrik.
Dalam kriptografi, Advanced Encryption
Standard (AES) merupakan standar enkripsi dengan kunci-simetris yang
diadopsi oleh pemerintah Amerika Serikat. Standar ini terdiri atas 3 blok cipher,
yaitu AES-128,
AES-192
and AES-256,
yang diadopsi dari koleksi yang lebih besar yang awalnya diterbitkan sebagai Rijndael.
Masing-masing cipher memiliki ukuran 128-bit,
dengan ukuran kunci masing-masing 128, 192, dan 256 bit. AES telah dianalisis
secara luas dan sekarang digunakan di seluruh dunia, seperti halnya dengan
pendahulunya, Data Encryption
Standard (DES).
3.2.
Definisi AES
AES diumumkan oleh Institut
Nasional Standar dan Teknologi (NIST) sebagai Standar
Pemrosesan Informasi Federal (FIPS) publikasi 197 (FIPS 197) pada
tanggal 26 November 2001
setelah proses standarisasi selama 5 tahun, di mana ada 15 desain enkripsi yang
disajikan dan dievaluasi, sebelum Rijndael terpilih sebagai yang paling cocok.
AES efektif menjadi standar pemerintah Federal pada tanggal 26 Mei 2002
setelah persetujuan dari Menteri Perdagangan. AES tersedia dalam berbagai paket
enkripsi yang berbeda. AES merupakan standar yang pertama yang dapat diakses
publik dan sandi-terbuka yang disetujui oleh NSA
untuk informasi rahasia. Salah satu alasan mengapa AES encryption
bekerja dengan baik adalah metode enkripsi ini bekerja pada beberapa network
layer pada saat yang sama. Walaupun AES dan Rijndael digunakan secara
bergantian, terdapat beberapa perbedaan yang dapat dengan mudah diketahui.
Sementara AES menggunakan blok cipher fix 128-bit, Rijndael dapat menggunakan
blok cipher apa saja dan kunci 32-bit. Ukuran kunci dan blok cipher yang
digunakan memiliki berkisar antara 128-bit sampai 256-bit. AES ini merupakan
algoritma block cipher dengan menggunakan sistem permutasi dan substitusi
(P-Box dan S-Box) bukan dengan jaringan Feistel sebagaiman block cipher pada
umumnya. Tidak seperti DES yang berorientasi bit, Rijndael
beroperasi dalam orientasi byte. Setiap putaran mengunakan kunci
internal yang berbeda (disebut round key). Enciphering melibatkan
operasi substitusi dan permutasi. Jenis AES terbagi 3, yaitu :
1. AES-128
2. AES-192
3. AES-256
Pengelompokkan
jenis AES ini adalah berdasarkan panjang kunci yang digunakan. Angka-angka di
belakang kata AES menggambarkan panjang kunci yang digunakan pada tipa-tiap
AES. Selain itu, hal yang membedakan dari masing-masing AES ini adalah
banyaknya round yang dipakai. AES-128 menggunakan 10 round, AES-192 sebanyak 12
round, dan AES-256 sebanyak 14 round.
Berikut merupakan tabel diagramnya:
AES memiliki ukuran block yang tetap sepanjang 128 bit
dan ukuran kunci sepanjang 128, 192, atau 256 bit. Tidak seperti Rijndael yang block dan kuncinya dapat berukuran kelipatan
32 bit dengan ukuran minimum 128 bit dan maksimum 256 bit. Berdasarkan ukuran
block yang tetap, AES bekerja pada matriks berukuran 4x4 di mana tiap-tiap sel
matriks terdiri atas 1 byte (8 bit). Sedangkan Rijndael sendiri dapat mempunyai
ukuran matriks yang lebih dari itu dengan menambahkan kolom sebanyak yang
diperlukan.
·
Garis besar Algoritma Rijndael
yang beroperasi pada blok 128-bit dengan
kunci 128-bit adalah sebagai berikut (di luar proses pembangkitan round key):
§
AddRoundKey:
melakukan XOR antara state awal (plainteks) dengan cipher key.
Tahap ini disebut juga initial round.
§
Putaran
sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah:
o
SubBytes: substitusi byte dengan menggunakan tabel
substitusi (S-box).
o
ShiftRows:
pergeseran baris-baris array state secara wrapping.
o
MixColumns:
mengacak data di masing-masing kolom array state.
o
AddRoundKey:
melakukan XOR antara state sekarang round key.
§ Final
round: proses untuk putaran terakhir:
o
SubBytes
o
ShiftRows
o
AddRoundKey
GAMBAR DIAGRAM AES
·
Selama kalkulasi plainteks menjadi
cipherteks, status sekarang dari data disimpan di dalam array of
bytes dua dimensi, state, yang berukuran NROWS ´ NCOLS.
·
Untuk blok data 128-bit, ukuran state
adalah 4 ´ 4.
·
Elemen array state diacu sebagai S[r,c],
0 £ r < 4
dan 0 £ c < Nb
(Nb adalah panjang blok dibagi 32.
·
Pada AES-128, Nb = 128/32
= 4)
Contoh gambarannya
BAB IV
IMPLEMENTASI PROGRAM
4.1.
Source Code AES 128
Di
sisni kami menggunakan contoh program AES 128 karena dinilai cukup simple
daripada 192 yang sangat jarang sekali ada.
import
java.io.*;
import
javax.crypto.KeyGenerator;
import
javax.crypto.SecretKey;
import
javax.crypto.Cipher;
import
java.security.NoSuchAlgorithmException;
import
java.security.InvalidKeyException;
import
java.security.InvalidAlgorithmParameterException;
import
javax.crypto.NoSuchPaddingException;
import
javax.crypto.BadPaddingException;
import
javax.crypto.IllegalBlockSizeException;
import
java.security.SecureRandom;
import
sun.misc.BASE64Encoder;
class
AES
{
public static void main(String[] args)
{
DataInputStream dis=new
DataInputStream(System.in);
String strDataToEncrypt = new String();
String strCipherText = new String();
String strDecryptedText = new String();
try
{
KeyGenerator keyGen =
KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
Cipher aesCipher =
Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE,secretKey);
strDataToEncrypt = "selamat
datang";
byte[] byteDataToEncrypt =
strDataToEncrypt.getBytes();
byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt);
strCipherText = new
BASE64Encoder().encode(byteCipherText);
aesCipher.init(Cipher.DECRYPT_MODE,secretKey,aesCipher.getParameters());
byte[] byteDecryptedText =
aesCipher.doFinal(byteCipherText);
strDecryptedText = new
String(byteDecryptedText);
//Hasil
System.out.println("===================");
System.out.println("Program AES
");
System.out.println("===================");
System.out.println("Pesan Teks
yang didekripsi = "+strDecryptedText);
System.out.println("Chiper Teks
digenerate menggunakan AES = "+strCipherText);
}
catch (NoSuchAlgorithmException
noSuchAlgo)
{
System.out.println("
No Such Algorithm exists " + noSuchAlgo);
}
catch (NoSuchPaddingException noSuchPad)
{
System.out.println(" No Such
Padding exists " + noSuchPad);
}
catch (InvalidKeyException invalidKey)
{
System.out.println(" Invalid
Key " + invalidKey);
}
catch (BadPaddingException badPadding)
{
System.out.println(" Bad
Padding " + badPadding);
}
catch (IllegalBlockSizeException
illegalBlockSize)
{
System.out.println(" Illegal
Block Size " + illegalBlockSize);
}
catch
(InvalidAlgorithmParameterException invalidParam)
{
System.out.println(" Invalid
Parameter " + invalidParam);
}
}
}
4.2. Berikut Hasil Output AES 128
BAB V
KESIMPULAN
Algoritma
kriptografi AES Rijndael adalah algoritma kriptografi yang cukup handal
hingga saat ini. Pada tahun 2006, National Security Agency (NSA) pernah
menyatakan bahwa AES cukup aman digunakan untuk mengamankan
data-data pemerintah Amerika Serikat yang bukan tergolong sangat
rahasia. Hingga tahun 2006 serangan terbaik terhadap algoritma Rijndael hanya
berhasil menembus putaran ke-7 untuk kunci 128 bit, putaran ke-8 untuk kunci
192 bit, dan putaran ke-9 untuk kunci 256 bit. Dengan melihat jumlah putaran
yang berhasil ditembus, tidaklah tidak mungkin suatu hari algoritma ini dapat
dengan mudah ditembus. Namun demikian algoritma Rijndael masih dipandang
algoritma yang cukup handal.
DAFTAR REFERENSI
Ini ane share program AES 128 dan DES bagi yang mau silahkan download Di sini
Password : sapi
Boleh tanya apakah hasil enkripsi des dan aes sama modelnya? Tetap pesan acak atau grafik...
BalasHapusBoleh tanya apakah hasil enkripsi des dan aes sama modelnya? Tetap pesan acak atau grafik...
BalasHapus