9
HAD: Algoritma Block Cipher dengan Struktur Feistel dan Prinsip Confusion dan Diffusion dari Shannon Yohanes Jhouma Parulian Napitu 1 Nur Alam Hasabie 2 Nando Rusrin Pratama 3 Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia 1 E-mail: [email protected] 2 E-mail: [email protected] 3 E-mail: [email protected] Abstraksi. Teknologi komputer berkembang dengan sangat cepat, dan terdapat kebutuhan yang besar untuk layanan kriptografi. Pada makalah ini, diusulkan sebuah sistem enkripsi simetrik baru dengan nama HAD. HAD berangkat dari prinsip konfusi dan difusi, beroperasi dalam mode ECB menggunakan jaringan Feistel dan tranposisi- substitusi blok dinamis yang tergantung dengan kunci dan berusaha menciptakan ketergantungan siklik. Hasil pengujian menunjukkan avalanche rate hingga 99,6 % terhadap perbedaan satu bit pada kunci , dan enkripsi mengaburkan statistik frekuesi kemunculan karakter tertentu menjadi mendekati uniform dengan distribusi frekuensi mendekati normal. Kata-kata kunci. Kriptografi, Enkripsi, Dekripsi, Cipher, Kunci Publik, Kunci Privat, Block Cipher, Struktur Feistel, Substitusi, Transposisi 1. Pendahuluan Pada era informasi ini, teknologi komputer berkembang dengan sangat cepat. Komunikasi digital pun menjadi penting khususnya perihal pengiriman pengiriman pesan rahasia yang tidak boleh diketahui pihak lain. Hal ini berseberangan dengan jaringan internet yang merupakan saluran publik yang digunakan oleh jutaan pengguna. Perkembangan teknologi ini pun memberikan dampak buruk, karena pesan rahasia dapat diketahui oleh semua orang sehingga memungkinkan terjadinya serangan. Serangan yang dimaksud di sini berupa pengumpulan data-data penting hingga melakukan perubahan pesan. Untuk mencegah pesan rahasia dibaca atau dimanfaatkan orang lain kita dapat menggunakan algoritma kriptografi. Dengan kriptografi, pesan yang akan dikirim akan dilakukan enkripsi terlebih dahulu. Enkripsi pesan pada awalnya menggunakan sebuah kunci yang simetris yang hanya diketahui oleh pengirim dan penerima pesan. Kunci diperlukan oleh penerima pesan agar dapat melakukan dekripsi pada pesan yang diterima sehingga pesan kembali menjadi pesan asli. Selain kriptografi, terdapat opsi untuk menyembunyikan pesan yaitu dengan steganografi, namun tidak dibahas dalam makalah ini.

HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

  • Upload
    others

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

HAD: Algoritma Block Cipher dengan Struktur Feistel dan Prinsip Confusion dan Diffusion dari Shannon

Yohanes Jhouma Parulian Napitu1 Nur Alam Hasabie2 Nando Rusrin Pratama3

Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika, InstitutTeknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia1 E-mail: [email protected] E-mail: [email protected] E-mail: [email protected]

Abstraksi. Teknologi komputer berkembang dengan sangat cepat, dan terdapatkebutuhan yang besar untuk layanan kriptografi. Pada makalah ini, diusulkan sebuahsistem enkripsi simetrik baru dengan nama HAD. HAD berangkat dari prinsip konfusidan difusi, beroperasi dalam mode ECB menggunakan jaringan Feistel dan tranposisi-substitusi blok dinamis yang tergantung dengan kunci dan berusaha menciptakanketergantungan siklik. Hasil pengujian menunjukkan avalanche rate hingga 99,6 %terhadap perbedaan satu bit pada kunci , dan enkripsi mengaburkan statistik frekuesikemunculan karakter tertentu menjadi mendekati uniform dengan distribusi frekuensimendekati normal.

Kata-kata kunci. Kriptografi, Enkripsi, Dekripsi, Cipher, Kunci Publik, Kunci Privat,Block Cipher, Struktur Feistel, Substitusi, Transposisi

1. Pendahuluan

Pada era informasi ini, teknologi komputer berkembang dengan sangat cepat. Komunikasi digital punmenjadi penting khususnya perihal pengiriman pengiriman pesan rahasia yang tidak boleh diketahuipihak lain. Hal ini berseberangan dengan jaringan internet yang merupakan saluran publik yangdigunakan oleh jutaan pengguna. Perkembangan teknologi ini pun memberikan dampak buruk, karenapesan rahasia dapat diketahui oleh semua orang sehingga memungkinkan terjadinya serangan.Serangan yang dimaksud di sini berupa pengumpulan data-data penting hingga melakukan perubahanpesan.

Untuk mencegah pesan rahasia dibaca atau dimanfaatkan orang lain kita dapat menggunakanalgoritma kriptografi. Dengan kriptografi, pesan yang akan dikirim akan dilakukan enkripsi terlebihdahulu. Enkripsi pesan pada awalnya menggunakan sebuah kunci yang simetris yang hanya diketahuioleh pengirim dan penerima pesan. Kunci diperlukan oleh penerima pesan agar dapat melakukandekripsi pada pesan yang diterima sehingga pesan kembali menjadi pesan asli. Selain kriptografi,terdapat opsi untuk menyembunyikan pesan yaitu dengan steganografi, namun tidak dibahas dalammakalah ini.

Page 2: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Seiring dengan perkembangan zaman, algoritma kriptografi pun semakin berkembang. Kriptografiklasik yang berjalan pada huruf dan angka saja, sekarang menggunakan komputasi komputer dandikenal sebagai kriptografi modern. Algoritma kriptografi modern ini memanfaatkan teknologikomputasi komputer dengan mengoperasikan pesan-pesan dalam mode bit atau biner dan banyakmenggunakan operasi XOR.

Aplikasi dari kriptografi modern ini sangat banyak, mulai dari keamanan komunikasi perbankanhingga broadcast sinyal siaran. Kriptografi modern terdiri atas 2 kategori yaitu Stream Cipher danBlock Cipher. Stream cipher beroperasi pada bit tunggal, bit per bit sedangkan Block Cipherberoperasi pada blok bit, blok per blok. Dalam makalah ini, akan dibahas mengenai perancangan,desain dan implementasi block cipher baru berdasarkan prinsip-prinsip perancangan block cipher yaituprinsip Confusion dan Diffusion dari Shannon, cipher berulang serta struktur Feistel. Cipher tersebutkami namakan sebagai sistem enkripsi HAD.

2. Dasar Teori

2.1. Block Cipher

Block Cipher merupakan algoritma kriptografi modern yang beroperasi pada mode blok bit,dimana panjang blok pada umumnya sama dengan panjang kunci enkripsi. Enkripsi dilakukanterhadap blok bit plainteks menggunakan bit-bit kunci. Algoritma enkripsi nantinya menghasilkanblok cipherteks yang panjangnya sama dengan blok plainteks.

Gambar 2.1.1 Skema enkripsi dan deskripsi pada cipher blok, sumber:https://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2018­2019/Kriptografi­Modern­(2019).pdf, diakses pada 10 Maret 2020

2.2. Mode Operasi Block Cipher

Terdapat 4 mode operasi block cipher antara lain:a. Electronic Code Book (ECB)

Blok plainteks berukuran n bit: P = (p1 , p2 , …, pn ), pi  {0, 1} 

Blok cipherteks (C) berukuran n bit: C = (c1 , c2 , …, cn ), ci  {0, 1}

Page 3: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Setiap   blok   plainteks   Pi  dienkripsi   secara   individual   dan   independen   menjadi   blokcipherteks Ci. Dengan rumus Enkripsi: Ci = EK(Pi) dan Dekripsi: Pi = DK(Ci) yang dalam halini, Pi dan Ci masing­masing blok plainteks dan cipherteks ke­i. 

Pada mode ECB, blok plainteks yang sama selalu dienkripsi menjadi blok cipherteks yangsama. Karena setiap blok plainteks yang sama selalu dienkripsi menjadi blok cipherteks yangsama, maka secara teoritis dimungkinkan membuat buku kode plainteks dan cipherteks yangberkoresponden (asal kata “code book” di dalam ECB)

Gambar 2.2.1 Skema enkripsi dan deskripsi pada mode ECB, sumber:https://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/  2018­2019/Kriptografi­Modern­(2019).pdf, diakses pada 10 Maret2020

b. Cipher Block Chaining (CBC)Pada mode ini, bertujuan untuk membuat   ketergantungan   antar   blok.   Setiap   blok

cipherteks  bergantung   tidak  hanya  pada  blok  plainteksnya   tetapi   juga  pada   seluruh  blokplainteks sebelumnya. Hasil enkripsi blok sebelumnya di­umpanbalikkan ke dalam enkripsiblok   yang   current.   Enkripsi   blok  pertama  memerlukan  blok   semu   (C0)   yang  disebut   IV(initialization vector). IV dapat diberikan oleh pengguna atau dibangkitkan secara acak olehprogram.  Pada dekripsi,  blok plainteks  diperoleh dengan cara  meng­XOR­kan IV denganhasil dekripsi terhadap blok cipherteks pertama.

Page 4: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Gambar 2.2.2 Skema enkripsi dan deskripsi pada mode CBC, sumber:https://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/  2018­2019/Kriptografi­Modern­(2019).pdf, diakses pada 10 Maret2020

c. Cipher Feedback (CFB)Untuk   mengatasi   kelemahan   pada   mode   CBC   jika   diterapkan   pada   komunikasi   data

(ukuran blok yang belum lengkap). Data dienkripsikan dalam unit yang lebih kecil daripadaukuran blok. Unit yang dienkripsikan dapat berupa bit per bit (jadi seperti cipher aliran), 2bit,  3­bit,  dan seterusnya. Bila unit  yang dienkripsikan satu karakter setiap kalinya, makamode CFB­nya disebut CFB 8­bit.

Gambar 2.2.3 Skema enkripsi dan deskripsi pada mode CFB, sumber:https://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/  2018­2019/Kriptografi­Modern­(2019).pdf, diakses pada 10 Maret2020

d. Output Feedback (OFB)Mode OFB mirip dengan mode CFB, kecuali n bit dari hasil enkripsi terhadap antrian

disalin menjadi elemen posisi paling kanan di antrian. Dekripsi dilakukan sebagai kebalikandari   proses   enkripsi.   Kesalahan   1­bit   pada   blok   plainteks   hanya   mempengaruhi   blokcipherteks yang berkoresponden saja; begitu pula pada proses dekripsi, kesalahan 1­bit padablok cipherteks hanya mempengaruhi blok plainteks yang bersangkutan saja.

Page 5: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Gambar 2.2.4 Skema enkripsi dan deskripsi pada mode OFB, sumber:https://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/  2018­2019/Kriptografi­Modern­(2019).pdf, diakses pada 10 Maret2020

e. Counter ModeMode counter tidak melakukan perantaian (chaining) seperti pada CBC. Counter adalah

sebuah  nilai   berupa  blok   bit   yang   ukurannya   sama  dengan   ukuran  blok   plainteks.  Nilaicounter harus berbeda dari setiap blok yang dienkripsi. Pada mulanya, untuk enkripsi blokpertama,  counter  diinisialisasi  dengan sebuah nilai.  Selanjutnya,  untuk enkripsi  blok­blokberikutnya counter dinaikkan nilainya satu.

Gambar 2.2.4 Skema enkripsi dan deskripsi pada mode counter, sumber: https://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2018­2019/Kriptografi­Modern­(2019).pdf, diakses pada 10 Maret 2020

3. Proposed Block CipherIde sistem enkripsi berangkat dari konsep difusi dan konfusi[3]. Perubahan satu bit pada blok harusmenyebabkan penyebaran perubahan ke bit-bit lainnya. Dengan strict avalanche criterion, sebuah bitmemiliki probabilitas perubahan minimal 1/2. Kami menganggap bahwa perubahan bit dapat disebarbilamana tiap bit dapat berinteraksi dengan bit lainnya dalam satu blok. Adapun untuk melakukanconfusion secara statistik, ide berangkat dari prinsip transposisi-substitusi dan prinsip Kerchoff –keamanan sistem enkripsi hanya bergantung dari kerahasiaan kunci itu sendiri, bukan dari

Page 6: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

algoritmanya. Dari kedua prinsip tersebut, muncul ide untuk membuat transposisi sebagai fungsi darikunci. Akibatnya, diharapkan terjadi dependensi siklik : informasi kunci tersimpan pada operasi kuncidengan plainteks, yang harus ditransposisikan berdasarkan informasi dari kunci.Untuk memenuhi dua kebutuhan tersebut (interaksi bit dan transposisi sebagai fungsi dari kunci),diusulkan sebuah sistem enkripsi sebagai berikut :

a. Panjang blok left-right Feistel adalah 128 bit, sehingga panjang per blok adalah 64 bit. Kunci sepanjang 128 bit.b. Enkripsi menggunakan jaringan Feistel.c. Fungsi enkripsi antara blok-R dengan kunci iterasi ke-i adalah sebagai berikut:

1. Ubah 64 bit blok-R menjadi sebuah matriks persegi berukuran 8 x8.2. Bagi kunci menjadi kunci baris sebanyak 8 buah (dengan panjang masing-masing 8 bit) dan kunci kolom sebanyak 8 buah (masing-masing juga 8 bit). Kunci hanya dibagi kanan-kiri.3. Untuk setiap iterasi sampai iterasi ke-8 :- Lakukan operasi XOR bertingkat tiap baris. Baris[2] = baris[1] XOR baris[2], baris[3] = baris[2] XOR baris[3] , baris[4] = baris[3] XOR baris[4], hingga baris 8 = baris[7] XOR baris[8]. Nilai baris[k-1] yang digunakan baris[k] dalam operasi XOR adalah nilai baris[k-1]yang sudah di XOR.- Untuk setiap baris , baris[k] = (baris[k] + kunci_baris[k] % 256) << (kunci_baris[k]), pergeseran dilakukan secara wrapping- Untuk setiap kolom, kolom[k] = (kolom[k] + kunci_baris[k] % 256) << (kunci_baris[k]), pergeseran << berarti geser ke atas- Lakukan pergeseran baris. Baris[8] menjadi baris[7], baris[7] menjadi baris [6], dan seterusnya, hingga baris[2] menjadi baris[1], sedangkan baris[1] menjadi baris[7]

d. Lanjutkan struktur Feistel sampai 8 iterasi. Untuk tiap iterasi, kunci diganti denganmenggunakan S-Box Rijndael.

Beberapa hal yang dapat menjadi perhatian adalah :1. XOR bertingkat bertujuan untuk menyebarkan pengaruh perubahan satu bit dari satu baris ke

baris lainnya. Bit-bit yang berada pada satu kolom dengan bit yang berubah akan terpengaruh.2. Perubahan baris dilakukan untuk menyebarkan kolom bit yang terpengaruh oleh perubahan

pada satu bit di baris tertentu.3. Perubahan kolom dilakukan untuk menambah keteracakan bit. Selain itu, bilamana kunci barismemiliki panjang 16 bit, maka ruang pencarian kunci dapat menjadi lebih kecil (karena pergeseranmemiliki sifat modulo), oleh karenanya 8 bit dari 16 bit tersebut dijadikan kunci untuk kolom.

Page 7: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Gambar 3.1 . Ilustrasi proses enkripsi fungsi F dalam jaringan Feistel

4. Simulasi dan Analisis Keamanan

Untuk menguji keamanan sistem enkripsi HAD , terdapat 2 metrik yang digunakan. Metrik didasarkanpada konsep confusion dan diffusion oleh Shannon[3] :

1. Confusion : metrik yang digunakan adalah dengan membandingkan frekuensi kemunculan karakter tertentu sebelum dan sesudah enkripsi. Pengujian confusion dengan menggunakan teks buku Pride and Prejudice.

2. Diffusion : metrik yang digunakan adalah mengukur perbedaan per byte antara dua ciphertext dengan kunci yang berbeda hanya di salah satu bit.Kami juga menguji perbedaan bit dua blok dari dua buah blok plainteks yang berbeda hanya di salah satu byte, karena pengujian dijalankan dalam mode ECB.

Implementasi dilakukan dengan menggunakan Python3, dan encoding teks menggunakan encoding Unicode (16 bit).

Page 8: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Grafik 4.1 Grafik frekuensi byte pada teks sampel "Pride and Prejudice"

Grafik 4.2 Grafik frekuensi byte pada teks sampel “Pride and Prejudice” setelah dienkripsi

Untuk menguji tingkat confusion dari algoritma ini kami membandingkan distribusi byte padaplaintext dan ciphertext. Dapat dilihat dengan sampel sebanyak 799212 karakter unicode dengan total88 unique byte, setiap byte dipetakan ke 256 byte dengan total panjang 799216 (tambahan 4 bytesebagai padding) karakter. Selain itu distribusi yang terbentuk oleh ciphertext mendekati distribusiuniform, meskipun plaintext yang diberikan tidak memiliki distribusi yang uniform. Sehingga dapatdikatakan bahwa algoritma ini sudah cukup baik dalam memenuhi kriteria Confusion berdasarkanmetrik statistik frekuensi karakter.

Untuk menguji tingkat diffusion kami mengkripsi plaintext dua kali dengan dua key yang berbeda.Perbedaan masing-masing key yang digunakan hanya satu bit diujung key (LSB). Lalu ciphertext yangdidapatkan dibandingkan dan dihitung perbedaannya. Dari hasil perhitungan kami mendapatkan99.6% byte pada kedua ciphertext berbeda. Dari hasil ini didapatkan bahw sistem enkripsi memenuhikriteria diffusion, yaitu dengan batas bawah 50% perbedaaan.

Page 9: HAD: Algoritma Block Cipher dengan Struktur Feistel dan ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2019-2020/Makalah1/...d. Lanjutkan struktur Feistel sampai 8 iterasi

Selain melakukan hal tersebut kita juga melakukan uji menggunakan dua plaintext yang berbeda 1 bit,dengan panjang plaintext 16 byte dan menggunakan key yang sama. Selanjutnya ciphertext yangdidapatkan dibandingkan untuk dilihat perbedaan byte-bytenya, dan didapatkan seluruh byte yangdihasilkan berbeda.

Contoh Input:1. qwertyuiop ⇒ “ x97ù®à\x1cP\rLå\x9füU\x1aÊ@8”2. qwertyuioq ⇒ “æÂ#öR}w!Ï@î+\\\x9d\x08D”

Enkripsi juga masih aman dari brute force. Terdapat 2128 kombinasi yang mungkin dari kunci. Untuksebuah komputer yang dapat mencoba 1 miliar kunci per detik ( < 230 kunci/detik), maka dibutuhkanwaktu 298 detik untuk mencoba semua kemungkinan kunci. Sebagai gambaran , umur alam semestasampai saat ini berada di kisaran 4,26 x 1017 detik, atau sekitar < 280 detik. Keamanan kunci dapatditingkatkan dengan menambah ukuran blok dan kunci.

5. Kesimpulan dan Saran PengembanganKesimpulan yang kami dapatkan adalah sistem kriptografi HAD mampu mengacak frekuensi hurufpada plaintext , sehingga distribusi huruf random untuk semua kelas huruf dengan distribusi nyarisnormal. Perbedaan bit pada kunci HAD menyebabkan perubahan, dengan perubahan pada uji sampelmencapai 99.96 % dari keseluruhan byte. Perbedaan bit pada satu blok plaintext menyebabkanperubahan keseluruhan isi blok ,dengan perubahan pada sampel mencapai 100 % dari keseluruhanbyte pada blok. Waktu yang dibutuhkan untuk mencoba semua kombinasi kunci adalah 298 detik,diberikan sebuah komputer yang mampu mencoba 1 x 109 kunci per detik.

Untuk rekomendasi, berdasarkan uji sampel menunjukkan bahwa HAD memiliki nilai kekuatanconfusion dan diffusion yang tinggi. Akan tetapi, sampel pengujian tidak memiliki makna statistiktertentu, sehingga masih terdapat kemungkinan bahwa kekuatan confusion dan diffusion sebenarnyaberbeda. Metrik diffusion juga masih berada di level byte , dan pengujian diffusion akan lebih validterhadap strict avalanche criterion bilamana pengujian dilakukan dalam skala bit.

Selain itu, kami hanya mempertimbangkan serangan berdasarkan frekuensi (hubungan statistikplaintext-ciphertext). Kami belum mempertimbangkan jenis serangan lain, semisal linear ataupundifferential cryptanalysis [1]. Fungsi pada HAD dibuat non-linear, tetapi belum teruji kekuatan non-linearity HAD, ataupun belum dilakukan uji terhadap dua serangan yang telah tersebut.Dari dua pertimbangan tersebut, kami menyarankan adanya pengujian lebih lanjut mengenai kekuatanenkripsi HAD. Selain itu, HAD dapat dikembangkan untuk mode enkripsi selain ECB, misal CBC.

6. References

[1] Matsui M. (1994) Linear Cryptanalysis Method for DES Cipher. In: Helleseth T. (eds) Advances inCryptology — EUROCRYPT ’93. EUROCRYPT 1993. Lecture Notes in Computer Science, vol 765. Springer, Berlin, Heidelberg[2] https://www.gutenberg.org/ebooks/1342[3] Shannon, C. E. (1949). Communication theory of secrecy systems. Bell system technical journal,28(4), 656-715.[4] Slide Kuliah “Kriptografi Modern” oleh Dr. Rinaldi Munir