Kamis, 09 Juli 2009

DESAIN ALGORIMA BLOCK CIPHER (NdSaYF-2 Algorithm,,.)

NdSayf-2 Block Cipher

Indra Adi Putra (1), M. Nur Fajri H (2) Sayekti Budiani (3)
Tingkat II Teknik Rancang Bangun Peralatan Sandi dan Manajemen Persandian
Sekolah Tinggi Sandi Negara
Email: indraadiputra@ymail.com. http://indraadiputra.co.cc (1), (2)

Abstraksi
Kriptografi atau yang sering dikenal dengan sebutan ilmu penyandian data adalah suatu bidang ilmu dan seni (art and science) yang bertujuan untuk menjaga kerahasiaan suatu pesan. Di dasarkan atas konsep tersebut, kami akan memperkenalkan algoritma Block Cipher NdSayf-2. Algoritma ini pada dasarnya menggunakan konsep dasar dari Feistel Network dan pengembangan dari algoritma block cipher GOST. GOST merupakan block cipher yang tingkat kekuatannya sudah teruji dan sangat aman Algoritma NdSayf-2 menggunakan ukuran kunci 128 bit dengan nilai input plain teks 64 bit. Dalam proses penyandiannya kami menggunakan operasi Swap, exclusive-OR, dan register. Meskipun dengan operasi sederhana yang ada NdSayf-2Cipher didesain untuk memenuhi sifat yang sangat simple, fleksibel (software oriented), cepat dan kuat.

Keyword : NdSayf-2, GOST algorithm

1. Pendahuluan
Kriptografi adalah suatu ilmu ataupun seni mengamankan pesan. Orang yang melakukan kegiatan tersebut dinamakan kriptografer. Kriptografi digunakan pada pengamanan informasi dimana menckup masalah-masalah yang sangat penting seperti kerahasiaan suatu pesan (Convidentiality), keutuhan suatu pesan (Massage Integrity), penyangkalan suatu pesan (Non-repudiation0, dan keaslian suatu pesan (Authentication).
Pada kriptografi ada dua tipe algoritma yang digunakan apabila algoritma tersebut berdasarkan pada kuncinya yaitu algoritma simetris (simetric algorithm) dan algoritma kunci publik (public-key algorithm) atau sering disebut algoritma asimetric. Perbedaan utama antara Symetric dengan asimetric algorithm adalah pada kunci yang digunakan dimana pada simetric kunci untuk mengenkrip atau mendekrip sama namun pada asimetric kunci yang digunakan untuk menyandi dan membuka sandi berbeda. Selain itu juga terdapat perbedaan dalam kecepatan proses dan keamananya.
Dalam kriptografi proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext disebut enkripsi. Sedangkan proses untuk mengubah ciphertext kembali ke plaintext disebut dekripsi.

Gambar : Proses Enkripsi/Dekripsi Sederhana
Berdasarkan algoritma penyandiannya algoritma kriptografi dibagi menjadi blok cipher dan stream cipher. Pada blok cipher menggunakan kunci simetrik dimana setiap plain teks dibagi menjadi blok-blok tertentu yang kemudian dienkripsi menjadi blok-blok cipher teks. Pada proses penyandiannya menggunakan prinsip prinsip tertentu yaitu :
• Prinsip Confusion dan Diffusion dari Shannon.
Dalam mendesain sebuah cipher merupakan sesuatu yang principal yang harus dipenuhi oleh suatu sistem cipher yaitu sistem menjamin tersedianya efek confusi dan difusi yang baik. Massey[3] menafsirkan konsep Shannnon yaitu confusi dan difusi sebagai berikut; Confusi : “Statistik dari ciphertext sebaiknya bergantung pada statistic plaintext secara kompleks agar menyulitkan upaya kriptanalis dalam mengexploitasi”. Difusi : “Setiap digit dari plaintext dan setiap digit dari secret key sebaiknya mempengaruhi banyak digit pada ciphertext”. Dua konsep diatas merupakan sesuatu yang utama dan umum yang harus dipenuhi dalam mendesain sistem cipher.
• Cipher berulang (iterated cipher )‏
Merupakan fungsi transformasi sederhana yang mengubah plainteks menjadi cipherteks diulang sejumlah kali. Pada setiap putaran digunakan subkey atau kunci putaran (round key) yang dikombinasikan dengan plainteks. Cipher berulang dinyatakan sebagai
Ci = f(Ci – 1, Ki)
Ket :
i = 1, 2, …, r (r adalah jumlah putaran).
Ki = upa-kunci (subkey) pada putaran ke-i
f = fungsi transformasi (di dalamnya terdapat operasi substitusi, permutasi, dan/atau ekspansi, kompresi).
Plainteks dinyatakan dengan C0 dan cipherteks dinyatakan dengan Cr.
• Jaringan Feistel (Feistel Network )
Jaringan Feistel banyak dipakai pada algoritma kriptografi karena model ini bersifat reversible untuk proses enkripsi dan dekripsi. karena Sifat reversible tidak bergantung pada fungsi f sehingga fungsi f dapat dibuat serumit mungkin. Sehingga, kita tidak perlu membuat algoritma baru untuk mendekripsi cipherteks menjadi plainteks.

• Kunci lemah (weak key )‏
Kunci lemah adalah kunci yang menyebabkan tidak adanya perbedaan antara enkripsi dan dekripsi. Dekripsi terhadap cipherteks tetap menghasilkan plainteks semula, namun enkripsi dua kali berturut-turut terhadap plainteks akan menghasilkan kembali plainteksnya. Cipher blok yang bagus tidak mempunyai kunci lemah.
• Kotak-S (S-box )‏
Kotak-S adalah matriks yang berisi substitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain. Pada kebanyakan algoritma cipher blok, kotak-S memetakan m bit masukan menjadi n bit keluaran, sehingga kotak-S tersebut dinamakan kotak m × n S-box.

Orientasi kami membuat Algoritma ini karena didasarkan atas suatu perkembangan teknologi yang semakin maju, dimana sangat dibutuhkan suatu algoritma yang cepat, aman, handal dan sederhana. Oleh karena itu NdSayF-2 Cipher didesain untuk memenuhi beberapa syarat umum seperti yang telah disebutkan,diantaranya sangat simple, kecil, fleksibel (software oriented), cepat dan kuat. Desain NdSayf-2Cipher mengadopsi dari GOST block cipher. GOST merupakan block cipher yang tingkat kekuatannya sudah teruji dan sangat aman. Dengan pengkombinasian, penambahan dan pengurangan beberapa fungsi pada GOST, diharapkan algoritma NdSayf-2 semakin baik. Satu yang menarik dari algoritma ini adalah NdSayf-2 sangat simple sekali, namun kuat. Dibandingkan dengan DES yang rumit, algoritma NdSayf-2jauh lebih simple. Kekuatan algoritma NdSayf-2 ini terletak pada kunci, proses roundnya ditambah dengan kerahasiaan S-Box dan P-boxnya. Satu-satunya cara yang dapat dilakukan untuk memecahkan algoritma NdSayf-2 adalah dengan Brute Force attack.

2. Notasi
Dalam paper ini akan dijelaskan algoritma NdSayf-2 yang didalamnya terdapat operasi dasar aritmatika yang menyusunnya. Operasi dasar tersebut dapat dilambangkan dengan notasi sebagai berikut ;
• a + b , penjumlahan integer dengan mod 232
• a + b , bitwise XOR
• a b , bitwise exclusive-OR
• a <<< b , rotasi word a ke arah kiri sejumlah nilai yang diberikan pada least significant bit b

3. Deskripsi Algoritma
Pada dasarnya NdSayf-2 menggunakan input Plainteks sebesar 64 bit dan ukuran key 128 bit. Algoritma ini mengiterasi algoritma enkripsi sederhana sebanyak 4 putaran (round). Operasi yang digunakan dalam algoritma ini sederhana yaitu menggunakan opreasi penjumlahan modulo 232 dan mengunakan oprasi XOR.selain itu juga menggunakan oprasi pergeseran ke kiri sebanyak 4 bit, dan operasi-operasi ini digunakan dalam operasi sub blok 16 bit. Kami menggunakan konsep dari Feistel network dan mengkombinasikan dengan konsep dari GOST algorithm, dimana NdSayf-2 algorithm memecah bit plainteks menjadi 32 bit L1 dan 32 bit R1. Kemudian dari L1 dan R1 itu dipecah kembali menjadi 16 bit La, Lb, Ra, dan Rb. Untuk penjelasan lebih jelasnya akan dijelaskan dalam subbab ini.

3.1 Key Schedulling

Kunci yang digunakan pada Algoritma NdSayf-2 ini berukuran 128 bit yang dibagi menjadi 8 sub kunci yaitu k1, k2, k3, k4….k8. Masing-masing sub kunci berukuran 16 bit. Pembangkitan yang dilakukan secara manual agar kunci yang dihasilkan memenuhi perfect secrecy. Untuk Round pertama menggunakan sub kunci k1 dan k2 lalu untuk round berikutnya menggunakan masing-masing 2 sub kunci, untuk sub kunci yang ada akan melakukan perulangan sub kunci k1, k2, k3, k4,….k8 pada saat round kelima dan seterusnya

3.2 Enkripsi

Kami akan menjelaskan proses keseluruhan yang ada pada Algoritma NdSayf-2 ini. Teks terang yang berukuran 64 bit akan di enkripsi dengan menggunakan kunci berukuran 128 bit yang masing-masing sub kuncinya berukuran 16 bit. Keseluruhan kunci tersebut akan melakukan enkripsi sebanyak 32 round. Tiap round yang ada memiliki proses permutasi, substitusi, Swap, dan XOR. R1 dan L1 kemudian dipecah kembali menjadi masing-masing 16 bit menjadi La, Lb, Ra, dan Rb. Bit pada Rb kemudian di XOR dengan 16 bit K1 untuk satu putaran ke-i operasinya adalah sebagai berikut :

Li = (Ri-1<<13) xor k2
Ri = Li-1 xor f(Ri-1,K1)

Sedangkan pada fungsi f mula-mula bagian kanan data ditambah dengan subkunci ke-1 modulus 232. Hasilnya dipecah menjadi delapan bagian 4 bit dan setiap bagian menjadi input s-box yang berbeda. Di dalam NdSayf-2 terdapat 8 buah s-box mengambil dari algoritma gost, 4 bit pertama menjadi s-box pertama, 4 bit kedua menjadi s-box kedua, dan seterusnya. Output dari 8 s-box kemudian dikombinasikan menjadi bilangan



32 bit kemudian bilangan ini dipermutasi.
s-box yang digunakan yaitu :



















Permutasi yang digunakan,yaitu :






Yang kemudian hasil operasi ini di-xor dengan data bagian kiri yang kemudian menjadi bagian kanan dan bagian kanan menjadi bagian kiri (swap) yang kemudian digeser sebanyak 13 kekiri ditambah dengan sub kunci k-2 modulus 232. Proses ini berlaku untuk satu round untuk round selanjutnya menggunakan proses yang sama.
Skema Enkripsi:








Proses dekripsi
Proses Dekripsi sama dengan proses enkripsi dengan urutan ki dibalik dan algoritma yang digunakan juga dibalik. Dengan kata lain proses dekripsi adalah invers dari proses enkipsi.

4. Penutup

Algoritma NdSayf-2 merupakan block cipher yang dirancang dengan mengadopsi algoritma GOST dengan mempertimbangkannya pula dengan DES dan Khufu. Algoritma ini memerlukan plaintext sepanjang 64-bit dan kunci 256-bit, dengan K1,K2 …K8 masing-masing sepanjang 32-bit. Algoritma ini belum diuji, sehingga untuk keamannya sendiri masih belum dapat dipastikan. Adapun kelebihan dan kekurangannya :
Kelebihan :
• Algoritmanya sangat simpel dan sederhana
• fleksibel, mudah diimplementasikan,khususnya dalam software
• Efisien
• Kuat,terutama terhadap differensial dan linier attak

Kekurangan :
• Kunci yang dibutuhkan relatif panjang melebihi plaintext
• Masukan kunci secara manual
Daftar Pustaka


[1] Howard M. Heys and Stafford E. Tavares. On the Design of Secure Block Ciphers. Department of Electrical and Computer Engineering Queen’s University - Kingston, Ontario K7L 3N6

[2] J.L. Massey. Cryptography: Fundamentals and applications. Copies of transparencies, Advanced Technology Seminars, 1993.

[3] Menezes, Alfred J., Paul C. van Oorschot, Scott A. Vanstone. 1997. Handbook of Applied Cryptography. Boca Raton: CRC Press LLC.

[4] L.R. Knudsen. Practically Secure Feistel Cipher. Arhus University. Denmark.

[5] Schneier, Bruce. 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition. Neew York: John Wiley & Sons, Inc.


Lampiran Source Code NdSayF-2 dalam Kompiler C (minGW developer) :

Tidak ada komentar:

Posting Komentar

terima kasi yah
madridista89

Daftar Blog Saya

Entri Populer