Metoda IDEA



Sejarah

Metoda IDEA diperkenalkan pertama kali oleh Xuejia Lai dan James Massey pada tahun 1990 dengan nama PES (Proposed Encryption Standard). Tahun berikutnya, setelah Biham dan Shamir mendemonstrasikan cryptanalysis yang berbeda, sang penemu memperkuat algoritma mereka dari serangan dan algoritma hasil pengubahan tersebut diberi nama IPES (Improved Proposed Encryption Algorithm). Kemudian pada tahun 1992, IPES diganti namanya menjadi IDEA (International Data Encryption Algorithm). IDEA dirancang untuk menggantikan DES (Data Encryption Standard).

Algoritma

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 diffusion, IDEA 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 bilangan-bilangan 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.

Pembentukan Kunci

Proses pembentukan ini dimulai dengan membagi 128 bit key menjadi 8 buah 16 bit subkey. Ini merupakan delapan subkey pertama untuk algoritma dengan perincian enam subkey pertama untuk putaran (round) 1 dan dua subkey terakhir untuk putaran 2. Key dirotasikan 25 bit ke kiri dan dibagi menjadi 8 subkey lagi. Ini merupakan delapan subkey kedua untuk algoritma dengan perincian empat subkey pertama untuk putaran 2 dan empat subkey terakhir untuk putaran 3. Algoritma hanya menggunakan 52 buah subkey dengan perincian 6 buah subkey untuk 8 putaran ditambah 4 buah subkey untuk transformasi output.

Proses pembentukan kunci dapat dilihat pada gambar 2.10 di bawah ini :

gmbr1

Gambar 2.10 Proses Pembentukan Kunci untuk IDEA

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 13 12 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 berikut ini,

gmbr2

Gambar 2.11 Proses Enkripsi Algoritma IDEA

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. Demikian seterusnya.

Agar lebih jelas, lihatlah tabel berikut ini.

Tabel 2.2 Subkey enkripsi dan dekripsi algoritma IDEA

Round Subkey Enkripsi Subkey Dekripsi
1 K1(1) K2(1) K3(1) K4(1) K5(1) K6(1) K1(9)- 1 -K2(9) -K3(9) K4(9)-1 K5(8) K6(8)
2 K1(2) K2(2) K3(2) K4(2) K5(2) K6(2) K1(8)- 1 -K3(8) -K2(8) K4(8)-1 K5(7) K6(7)
3 K1(3) K2(3) K3(3) K4(3) K5(3) K6(3) K1(7)- 1 -K3(7) -K2(7) K4(7)-1 K5(6) K6(6)
4 K1(4) K2(4) K3(4) K4(4) K5(4) K6(4) K1(6)- 1 -K3(6) -K2(6) K4(6)-1 K5(5) K6(5)
5 K1(5) K2(5) K3(5) K4(5) K5(5) K6(5) K1(5)- 1 -K3(5) -K2(5) K4(5)-1 K5(4) K6(4)
6 K1(6) K2(6) K3(6) K4(6) K5(6) K6(6) K1(4)- 1 -K3(4) -K2(4) K4(4)-1 K5(3) K6(3)
7 K1(7) K2(7) K3(7) K4(7) K5(7) K6(7) K1(3)- 1 -K3(3) -K2(3) K4(3)-1 K5(2) K6(2)
8 K1(8) K2(8) K3(8) K4(8) K5(8) K6(8) K1(2)- 1 -K3(2) -K2(2) K4(2)-1 K5(1) K6(1)
Transformasi output K1(9) K2(9) K3(9) K4(9) K1(1)- 1 -K2(1) -K3(1) K4(1)-1