Ternyata keputusan saya untuk ambil kuliah kriptografi
semester ini memang baik adanya. Selain
kuliahnya menarik , tugas2nya pun seru dan up to date. Setelah pada postingan
sebelumnya saya sempat mengatakan ingin melakukan studi kemungkinan file XAML dijadikan
cover object untuk steganografi, tugas berikutnya keluar untuk merancang dan
implementasi algoritma blok cipher. Tentu saya saya memilih .NET untuk kakas
perancangan.
Bagi yang belum mendengar apa itu blok cipher mungkin bisa
saya informasikan secara singkat. Blok cipher adalah suatu teknik
enkripsi/dekripsi data pada mode operasi
bit dengan ukuran blok tertentu. Dalam hal ini saya implemen 64 bit, setara 8
byte. Spesifikasi soal, blok cipher harus dapat menghilangkan hubungan
statistik dari plainteks dengan cipherteks, menggunaka cipher berulang dan
jaringan feistel (agar fungsi enkripsi =
fungsi dekripsi).
Terima kasih juga untuk bung irwansyah dan bung ronal yang udah
memberikan inspirasi dalam hal penggunaan kelas BitArray. Keyakinan saya bahwa
.NET bener2 memudahkan developer adalah benar adanya :p .
Oke, algoritma yang saya dan kelompok pilih tidak begitu
sulit. Alurnya seperti ini : Ambil file yang ingin dienkripsi, baca dalam byte,
ubah menjadi BitArray, enkripsi dan simpan menjadi file lain. Fungsi enkripsi
yang kita pilih tidak berdasarkan fungsi matematis tertentu, semuanya dirancang
berdasarkan intuisi, agar prisnsip penyamaran yang diinginkan tercapai. Kita
menggunakan operasi shift rows sejauh 7 bit, Rjindael Transposition S-Box,
Snakey Permutation Order dan operasi XOR dengan kunci masukan user. Fungsi
diulang 7x dalam jaringan feistel agar memperkuat keamanannya.
Masalah baru muncul ketika spek soal mengharuskan isi file
yang mau dienkripsi harus dapat ditampilkan pada text area. Saya gunakan text
box pada mode multi line. Namun terdapat permasalah dimana pada saat membaca
file dan menuliskannya, pada saat develop sering terjadi context switch
deadlock. Jujur sampai sekarang saya tidak tahu permasahannya ada dimana. Namun
pada akhirnya saya coba atasi dengan membatasi jumlah byte yang dibaca tiap
waktu dan menuliskannya pada text box. Meski berhasil namun ternyata prosesnya
cukup lambat. Berbeda dari teman saya yang menggunakan library hex editor .NET
yang diunduhnya dalam salah satu situs. File berukuran 1 GB dapati ditampilkan
dengan sangat cepat.
Beranjak dari soal wajib, saya langsung beralik ke soal
bonus. Algoritma yang dirancang boleh dipasang sebagai plug in notepad++,
messenger atau Microsoft Office. Tidak begitu sulit untuk memutuskan Microsoft
Office sebagai target karena dengan adanya VSTO, hal ini menjadi tidak sulit
dilakukan. Apalagi, kode yang sudah dibuat untuk soal pertama dapat direuse
karena berapa pada platform yang sama.
Add-Ins saya impelementasikan sebagai elemen pada Ribbon
class agar lebih menarik . Hasilnya seperti ini :

Untuk mengambil konten dari file saya gunakan method Document.Content.Range.Text lalu diubah
menjadi BitArray dan idem dengan algoritma diatas. Akan tetapi setelah saya
coba2 untuk file yang ada elemen tabel, chart dan gambar jadi tidak bisa.
Sepertinya return value dari method yang saya gunakan adalah tipe string.
Karena waktu yang memang sudah terbatas, (biasanya mahasiswa suka deadliner kan
ya), akhirnya saya putuskan begitu saja. Mau bertanya juga bingung karena rata2
temen belum ada yang oprek VSTO juga.
Pesan moralnya, .NET bener2 powerful. Akibat beberapa tugas
lainnya, saya dan kelompok hanya punya efektif 2 hari untuk implemen algoritma
ini dan untungnya berhasil. Beda banget waktu jaman kuliah programming dimana
harus bikin converter sendiri, container sendiri dan macam-macam lainnya yang
bikin masa develop aplikasi jadi begitu lama.
Bagi yang mau coba pakai, mangga di unduh . Hehe.. tapi gak
jamin yah , Add-Insnya.