Minggu, 27 Maret 2016

Algoritma Enkripsi DES, IDEA dan AES

ALGORITMA  DES
DES (Data Encryption Standard) pertama dijadikan standard FIPS  (Federal Information Processing Standards) oleh NIST (National Institute of Standards and Technology) tahun 1977 untuk digunakan oleh semua instansi pemerintahan Amerika Serikat, dan semua kontraktor dan penyedia jasa untuk pemerintahan Amerika Serikat. DES dirancang oleh tim IBM yang dipimpin Horst Feistel dengan bantuan dari NSA (National Security Agency). DES adalah teknik enkripsi pertama (selain one-time pad) yang tahan terhadap linear cryptanalysis dan di®erential cryptanalysis.
DES menggunakan kunci sebesar 64 bit untuk mengenkripsi blok juga sebe- sar 64 bit. Akan tetapi karena 8 bit dari kunci digunakan sebagai parity, kunci efektif hanya 56 bit. Gambar 7.1 secara garis besar menunjukkan proses en-kripsi DES. Dalam DES, penomoran bit adalah dari kiri kekanan dengan bit 1 menjadi most signi¯cant bit, jadi untuk 64 bit, bit 1 mempunyai nilai 263.
Permutasi menggunakan initial permutation dilakukan terhadap input sebesar 64 bit. Hasil permutasi dibagi menjadi dua blok L0 dan R0, masing-masing sebesar 32 bit, dimana L0 merupakan 32 bit pertama dari hasil permutasi dan R0 merupakan 32 bit sisanya (bit 33 hasil permutasi menjadi bit 1 R0). Sebanyak 16 putaran enkripsi dilakukan menggunakan fungsi cipher f dan setiap putaran menggunakan kunci 48 bit yang berbeda dan dibuat berdasarkan kunci DES. Efeknya adalah setiap blok secara bergantian dienkripsi, masing-masing sebanyak 8 kali.



ALGORITMA
 IDEA
IDEA merupakan block cipher (cipher blok), yang beroperasi pada blok plaintext 64 bit.
Panjang kuncinya 128 bit. Algoritma yang sama digunakan untuk proses enkripsi dan dekripsi.
Sebagaimana algoritma enkripsi yang lain, IDEA menggunakan confusion dan diffusion, berbeda dengan DES yang menggunakan permutasi dan substitusi untuk confusion dan diffusionIDEA menggunakan operasi aljabar yang tidak kompatibel sebagai berikut,
a.              XOR.
b.             Penambahan modulo 216.
c.              Perkalian modulo 216 + 1 (operasi ini menggantikan kotak-S atau S-Box).
Algoritma IDEA menggunakan perkalian modulo 216 + 1 dengan pertimbangan berikut ini :
Perkalian dengan nol selalu menghasilkan nol dan tidak memiliki inversi. Perkalian modulo n juga tidak memiliki inversi jika angka yang dikalikan tidak relatif prima terhadap n. Sementara algoritma kriptografi memerlukan operasi yang memiliki inversi. Angka 65537 (216 + 1) adalah sebuah bilangan prima. Oleh karena itu, operasi perkalian modulo (216 + 1) pada algoritma IDEA memiliki inversi. Jika kita membentuk suatu tabel perkalian untuk bilanganbilangan mulai dari 1 sampai 65536, maka setiap baris dan kolom hanya berisi setiap bilangan satu kali saja.
Dalam IDEA, untuk operasi perkalian, bilangan 16 bit yang terdiri dari nol semua dianggap sebagai bilangan 65536, sedangkan bilangan lainnya tetap sesuai dengan bilangan tak bertanda yang diwakilinya. Algoritma IDEA ini dapat dibagi menjadi tiga bagian besar, yaitu algoritma pembentukan kunci, enkripsi dan dekripsi.

a.  Pembentukan Kunci
Proses pembentukan kunci dapat dilihat pada gambar
b.  Enkripsi


Proses enkripsi algoritma IDEA adalah sebagai berikut :
Pertama – tama, plaintext 64 bit dibagi menjadi 4 buah sub blok dengan panjang 16 bit, yaitu X1, X2, X3, X4. Empat sub blok ini menjadi masukan bagi iterasi tahap pertama algoritma. Total terdapat 8 iterasi. Pada setiap iterasi, 4 sub blok di-XOR-kan, ditambahkan, dikalikan dengan yang lain dan dengan 6 buah subkey 16 bit. Diantara iterasi sub blok kedua dan ketiga saling dipertukarkan. Akhirnya 4 buah sub blok dikombinasikan dengan 4 subkey dalam transformasi output. Pada setiap tahapan, urutan berikut ini dikerjakan :
1)           Kalikan X1 dengan K1 mod (216 + 1).
2)           Tambahkan X2 dengan K2 mod 216.
3)           Tambahkan X3 dengan K3 mod 216.
4)           Kalikan X4 dengan K4  mod (216 + 1).
5)           XOR hasil dari step 1 dan 3.
6)           XOR hasil dari step 2 dan 4.
7)           Kalikan hasil dari step 5 dengan K5 mod (216 + 1).
8)           Tambahkan hasil dari step 6 dan 7 mod 216.
9)           Kalikan hasil dari step 8 dengan K6 mod (216 + 1).
10)       Tambahkan hasil dari step 7 dan 9.
11)       XOR hasil dari step 1 dan 9.
12)       XOR hasil dari step 3 dan 9.
13)       XOR hasil dari step 2 dan 10.
14)       XOR hasil dari step 4 dan 10.
Output dari setiap round adalah empat sub blok yang dihasilkan pada langkah 11, 12, 13 dan 14. Sub blok 12 dan 13 di-swap (kecuali untuk putaran terakhir) sehingga input dari putaran berikutnya adalah hasil kombinasi dari langkah 11 12 13 14.
Setelah 8 putaran, akan dilakukan tranformasi output berikut,
1)              Kalikan X1 dengan subkey K1 mod (216 + 1)
2)              Tambahkan X2 dengan subkey K2 mod 216
3)              Tambahkan X3 dengan subkey K3 mod 216
4)              Kalikan X4 dengan subkey K4 mod (216 + 1) Proses enkripsi algoritma IDEA dapat dilihat pada gambar 4.
c.  Dekripsi
Proses dekripsi sama persis dengan proses enkripsi. Perbedaannya hanya terletak pada aturan dari subkey-nya. Urutan subkey terbalik dengan proses enkripsi dan subkey-nya di-inverse-kan.
Subkey pada langkah transformasi output pada  proses enkripsi di-inverse-kan dan digunakan sebagai subkey pada putaran 1 pada proses dekripsi. Subkey pada putaran 8 di-inverse-kan dan digunakan sebagai subkey pada putaran 1 dan 2 pada proses dekripsi


ALGORITMA 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.
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. 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 128bit 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)




Tidak ada komentar:

Posting Komentar