Selamat Datang..Welcome..Benvenuto..Accueil..Willkommen di blog saya..........have a nice day
Thank you for visited...budayakan kebiasaan untuk meninggalkan jejak anda(jangan lupa komentar)


Marhaban Ya Ramadhan

Kamis, 01 September 2011

Sekilas tentang Kriptografi AES

  Kriptografi awalnya digunakan untuk mengirim pesan pada saat peperangan. Kriptografi telah dikenal pada masa kekaisaran Julius Caesar, pada saat itu kriptografi digunakan untuk mengirimkan pesan rahasia agar tidak dapat diketahui oleh pihak musuh. Cara merahasiakan pesan saat itu menggunakan metode Caesar. Metode Caesar itu sendiri adalah cara merahasiakan pesan pada saat itu dengan menggunakan teknik pergeseran dengan menggeser tiap huruf ke kanan atau ke kiri pada urutan alphabet beberapa buah. Pada zaman perang dunia kedua kriptografi juga sangat dibutuhkan untuk merahariakan pesan. Media yang dipakai pada saat itu menggunakan mesin untuk mengenkripsi pesan yang bernama Enigma.Seiring perkembangan zaman, metode kriptografi tidak hanya digunakan untuk mengirimkan pesan saat peperangan tetapi digunakan untuk kebutuhan yang lain seperti untuk mengamankan data sehingga saat ini banyak bermunculan algoritma modern.

Cryptography adalah ilmu dan seni penyandian yang bertujuan untuk menjaga keamanan dan kerahasiaan suatu pesan. Sedangkan Enkripsi adalah suatu proses yang melakukan perubahan  suatu kode dari yang bisa dimengerti menjadi tidak bisa dimengerti (tidak terbaca). Dekripsi adalah suatu proses dengan algoritma yang sama untuk mengembalikan informasi teracak tadi menjadi bentuk aslinya. Sejak perang dunia kedua berakhir, kriptografi dirasa masih dibutuhkan pada saat kehidupan sehari-hari untuk mengamankan data-data yang bersifat penting dan rahasia. Dengan begitu memicu banyaknya algoritma kriptografi yang bermunculan sesuai dengan perkembangan zaman. Sampai saat ini algoritma kriptografi modern sendiri berkembang pesat. Algoritma kriptografi modern dapat dibagi menjadi dua algoritma kunci yaitu algoritma kunci simetris dan algoritma asimetris.
Algoritma simetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi yang sama. Sedangkan algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi yang berbeda. Adapula algoritma yang beroperasi dalam mode bit dapat dibagi menjadi dua, yaitu stream chiper (chiper aliran) dan block chiper (cipher blok). Stream chiper adalah algoritma yang melakukan operasi dalam bentuk bit tunggal. Sedangkan block chiper adalah algoritma yang melakukan operasi dalam bentuk blok bit. Stream chiper dan block chiper adalah algoritma yang digunakan pada algoritma kunci simetris. Saat ini sudah banyak aplikasi enkripsi yang menggunakan algoritma kunci simetris. Salah satu algoritma dengan kunci simetris adalah DES (Data Encryption Standards). DES merupakan algoritma enkripsi standart yang dikeluarkan oleh National Institute of Standards and Technology (NIST). 


               Algoritma DES (Data Encryption Standard) yang banyak digunakan sebagai standard enkripsi kriptografi kunci simetris mendekati akhir penggunaannya karena mengandung banyak kontroversi dan dianggap sudah tidak aman lagi. Beberapa kriptografer keberatan karena proses pembuatannya yang tertutup. Selain itu panjang kuncinya juga dianggap terlalu pendek untuk dapat digunakan secara luas dalam berbagai bidang, dengan perangkat keras khusus kuncinya bisa ditemukan dalam beberapa hari. National Institute of Standard and Technology (NIST) sebagai agensi Departemen Perdagangan Amerika Serikat mengusulkan kepada Pemerintah Federal Amerika Serikat untuk sebuah standard kriptografi yang baru. DES (Data Encryption Standard) mungkin akan berakhir masa penggunaannya sebagai standard enkripsi kriptografi simetri. DES sudah dianggap tidak aman terutama karena panjang kunci yang relatif pendek sehingga mudah dipecahkan ditemukan dalam beberapa hari menggunakan teknologi saat ini. 
Dengan alasan tersebut, NIST mengadakan sayembara terbuka untuk membuat standard algoritma kriptografi yang baru sebagai pengganti DES. Standard tersebut kelak diberi nama Advanced Encryption Standard (AES). Persyaratan yang diajukan oleh NIST tentang algoritma yang baru tersebut adalah:
1.Algoritma yang ditawarkan termasuk ke dalam kelompok algoritma kriptografi simetri berbasis cipher blok.
2. Seluruh rancangan algoritma harus publik (tidakdirahasiakan)
3. Panjang kunci fleksibel: 128, 192, dan 256 bit.
4. Ukuran blok yang dienkripsi adalah 128 bit.
5. Algoritma dapat diimplementasikan baik sebagai software maupun hardware.
NIST menerima 15 proposal algoritma yang masuk. Konferensi umum pun diselenggarakan untuk menilai keamanan algoritma yang diusulkan. Pada bulan Agustus 1998, NIST memilih 5 finalis yang didasarkan pada aspek keamanan algoritma, kemangkusan (efficiency), fleksibilitas, dan kebutughan memori (penting untuk embedded system). Finalis tersebut adalah:
1. Rijndael (dari Vincent Rijmen and Joan Daemen – Belgia, 86 suara)
2. Serpent (dari Ross Anderson, Eli Biham, dan Lars Knudsen – Inggris, Israel, dan   Norwegia, 59 suara).
3. Twofish (dari tim yang diketuai oleh Bruce Schneier – USA, 31 suara)
4. RC6 (dari Laboratorium RSA – USA, 23 suara)
5. MARS (dari IBM, 13 suara)
Pada bulan Oktober 2000, NIST mengumumkan untuk memilih Rijndael (dibaca: Rhine-doll), dan pada bulan November 2001, Rijndael ditetapkan sebagai AES, dan diharapkan Rijndael menjadi standard kriptografi yang dominan paling sedikit selama 10 tahun. Rijndael adalah salah satu algoritma enktipsi simetris. Dimana proses enkripsi dan dekripsinya menggunakan kunci yang sama. Rijndael merupakan algoritma yang ditetapkan sebagai standar metode enkripsi modern pengganti DES (Data Encryption Standard), dalam sayembara AES (Advanced Encryption Standard) oleh NIST (National Institute of Standards and Technology).  

A.    Algoritma Rijndael
Algoritma Rijndael adalah pemenang sayembara terbuka yang diadakan oleh NIST (National Institute of Standards and Technology) untuk membuat standard algoritma kriptografi yang baru sebagai pengganti Data Encryption Standard (DES). DES sudah dianggap tidak aman terutama karena panjang kunci yang relatif pendek sehingga mudah dipecahkan menggunakan teknologi saat ini. Rijndael diambil dari nama pembuatnya Dr. Vincent Rijmen dan Dr. Joan Daemen. 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. Tetapi tidak seperti DES yang berorientasi bit, 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). Garis besar Algoritma Rijndael yang beroperasi pada blok 128-bit dengan kunci 128-bit adalah sebagai berikut (di luar proses pembangkitan round key):
1. AddRoundKey: melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round.
2. Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah:
a. SubBytes: substitusi byte dengan menggunakan tabel substitusi (S-box).
b. ShiftRows: pergeseran baris-baris array state secara wrapping.
c. MixColumns: mengacak data di masing-masing kolom array state.
d. AddRoundKey: melakukan XOR antara state sekarang round key.
3. Final round: proses untuk putaran terakhir:
a. SubBytes
b. ShiftRows
c. AddRoundKey

B.     Algoritma Twofish
Twofish adalah algoritma kriptografi yang beroperasi dalam mode block cipher. Twofish menjadi salah satu finalis dalam kompetisi Advanced Encrytipon Standard (AES) yang diadakan oleh National Institute of Standards and Technology (NIST). Algoritma Twofish yang dibuat oleh Bruce Schneier adalah block cipher yang berukuran 128-bit yang dapat menerima kunci dengan panjang mencapai 256 bit. Twofish memenuhi semua kriteria yang dibutuhkan NIST, yaitu 128-bit block, 128 bit, 192 bit dan 256 bit kunci. Beberapa kelebihan twofish yaitu twofish adalah cipher blok 128 bit yang menerima kunci dengan panjang variabel 256 bits, twofish tidak mengandung kunci lemah, dan twofish telah didesain dari awal dengan menekankan pada kinerjanya. Twofish sangat efisien diimplementasikan pada beragam platform, yaitu CPU 32 bit, smart card 8 bit, dan perangkat keras VLSI. Twofish menggunakan jaringan Feistel sebanyak 16 kali dengan fungsi f di dalam jaringan Feistel tersebut menggunakan S-box. Selain itu, Twofish juga menggunakan transformasi pseudo Hadamard, metode whitening, Maximum Distance Separable (MDS), dan penjadwalan kunci.

C.    Algoritma Serpent
Algoritma Serpent merupakan hasil kerjasama internasional yang melibatkan tiga negara Inggris, Israel, dan Norwegia melalui tiga buah universitasnya. Inggris dalam hal ini diwakili oleh Cambridge University sedangkan Israel diwakili oleh Haifa Israel dan Norwegia diwakili oleh University of Bergen. Algoritma ini dikembangkan oleh Ross Anderson dari Inggris, Eli Biham dari Israel, dan Lars Knudsen dari Norwegia. Secara umum, algoritma Serpent merupakan pengembangan dari DEA. Algoritma ini mendukung kunci dengan panjang mulai dari 40 bit hingga 256 bit. Algoritma Serpent terdiri dari beberapa tahapan. Initial permutation IP. Putaran transformasi sebanyak 32 putaran yang pada tiap putarannya dilakukan operasi key mixing, subtitusi dengan S-box pada tiap putaran kecuali putaran terakhir dan transformasi linear dimana transformasi ini akan digantikan dengan operasi key mixing pada putaran terakhir. Dan terakhir adalah permutasi kembali IP-1. Cipherteks membutuhkan 132 kunci dengan panjang 32 bit yang diperoleh dari 256 bit kunci dari pengguna sehingga menghasilkan prekey sejumlah 132. Round key kemudian diperoleh dengan mentransformasi prekey menggunakan S-box.  Operasi Algoritma pada Serpent
1.      Transformasi Awal
-          Permutasi IP
2.      Putaran Transformasi
-          31x
-          Key Mixing
-          S-boxes
-          Transformasi Linear
3.      Tranformasi Akhir
-          Key Mixing
-          S-boxes
-          Key Mixing
-          Permutasi IP-1

D.    Komparasi
1.      Rijndael dan Twofish
Pada sebuah percobaan ekripsi hasilnya menunjukkan penggunaan memori ketika menggunakan algoritma Twofish lebih banyak dibandingkan ketika menggunakan algoritma Rijndael Sedangkan waktu eksekusi yang dilakukan lebih cepat jika dilakukan dengan menggunakan algoritma Twofish, yaitu 15 milidetik, sedangkan algoritma Rijndael memerlukan waktu 16 milidetik. Perbedaan pada waktu pemrosesan algoritma tidak terlalu dipermasalahkan, tetapi pada perbedaan memori terlihat bahwa Rijndael menggunakan memori yang lebih sedikit dibandingkan dengan Twofish. Perbedaan itu cukup terlihat ketika menggunakan mesin dengan memori dengan ukuran yang rendah. Sehingga, dapat disimpulkan bahwa Rijndael merupakan algoritma yang lebih baik untuk digunakan dalam melakukan enkripsi.

2.      Rijndael dan Serpent
Pembahasan terhadap algoritma Rijndael dan Serpent dilakukan berdasarkan terutama pada performansi dan keamanan serta kaitannya dengan desain algoritma secara umum. Dalam hal performansi, Rijndael jauh mengalahkan Serpent dalam banyak prosesor dan arsitektur. Dan Serepent hanya mampu mengalahkan performansi Rijndael pada prosesor 32 bit. Dalam segi keamanan, dapat dikatakan Serpent lebih baik dari Rijndael karena lebih sulit untuk dibobol dan keamanan dari Serpent mampu mengatasi semua jenis serangan kriptanalis. Namun untuk keamanan, Rijndael juga tidak begitu buruk bahkan menurut standar AES sudah memenuhi standar keamanannya. Dalam segi desain, dipastikan Rijndael memiliki desain yang lebih sederhana. Desain algoritma Rijndael mempunyai struktur sejumlah 10 putaran sedangkan Serpent mempunyai proses yang lebih rumit karena jumlah putarannya jauh lebih banyak yaitu 32 putaran. Desain Serpent yang konservatif mungkin dirasa kaku atau mirip dengan desain DEA, namun desain ini mendukung implementasi yang efisien, rapid avalanche, dan implementasi bitslice yang lebih efisien.

3.      Twofish dan Serpent
Algoritma Serpent menggunakan struktur berbasis jaringan substitusi-permutasi seperti halnya algoritma Rijndael yang merupakan AES yang terpilih. Sedangkan Twofish menggunakan struktur jaringan Feistle. Dalam segi keamanan, secara umum, Serpent lebih konservatif dengan jumlah putarannya dari pada Twofish. Twofish dalam hal ini lebih mengarah pada efisiensi mixing conservatism. Oleh karena itu lebih seimbang dalam hal performansi dan keamanan dalam berbagai macam implementasinya. Dalam segi performansi, sebenarnya tidak bisa diputuskan algoritma mana yang lebih baik, karena untuk performansi sendiri bergantung pada hardware atau software dimana algoritma ini diimplementasikan.

E.     Hasil Akhir
 Rijndael sendiri dipilih jadi pemenang bukan karena algoritma paling aman, namun karena memiliki keseimbangan antara keamanan dan fleksibilitas dalam berbagai paltform software dan hardware. 
                                                                                                                                            
Mumet yak ??Saya aja yang nulis mumet *lah bangga


sumber : Mbah Gugel 
 



2 komentar: