Senin, 20 Februari 2012

Mengenal dan Membandingkan Program AES 128, 192 dan 256 Pengaman Sistem Komputer


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



  Contoh: (elemen state dan kunci dalam notasi HEX)


 
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











2 komentar:

  1. Boleh tanya apakah hasil enkripsi des dan aes sama modelnya? Tetap pesan acak atau grafik...

    BalasHapus
  2. Boleh tanya apakah hasil enkripsi des dan aes sama modelnya? Tetap pesan acak atau grafik...

    BalasHapus