criptographi


Sekilas Tentang Enkripsi Blowfish

Anjar Syafari
Clasicboy_no8@yahoo.com
http://ansitea.blogspot.com

Dalam kemajuan teknologi komputer pada saat ini berkembang dengan pesatnya seiring dengan makin kompleknya sistem komputer dan kemampuan komputer untuk berkomunikasi dengan komputer lain dengan adanya jaringan.Hal ini disatu sisi menguntungkan dalam idistribusi sumber daya yang ada tetapi disatu sisi menjadi masalah apabila ada file yang bersifat rahasia dapat dilihat oleh pihak yang tidak berkompenten. Salah satu cara untuk melindungi file adalah dengan enkripsi mengunakan algoritma blowfish.

Pengertian Dasar

Kriptografi dalam sejarahnya tercatat dipergunakan secara terbatas oleh bangsa Mesir 4000 tahun lalu. Kriptografi (Cryptography) berasal dari dua kata yaitu “Crypto & graphy” yang dalam sudut bahasa “Crypto” dapat diartikan rahasia (secret) dan “graphy” dapat diartikan tulisan (writing) jadi Kriptografi (Cryptography) dapat diartikan sebagai suatu ilmu atau seni untuk mengamankan pesan agar aman dan dilakukan oleh “Cryptographer”. Orang yang melakukan enkripsi terhadap suatu pesan atau praktisi kriptogragi disebut “Cryptographer”.Sebuah pesan yang tidak disandikan atau dienkripsi disebut sebagai plaintext atau disebut juga sebagai cleartext. Sedangkan pesan yang telah disandikan dengan sebuah algoritma kriptografi disebut sebagai ciphertext.Proses untuk mengubah plaintext ke chipertext disebut encryption atau encipherment. Sedang proses mengubah chipertext ke plaintext disebut decryption atau decipherment. Secara sederhana proses tersebut digambarkan sebagai berikut :

Fasilitas untuk mengkonversikan sebuah plaintext ke ciphertext atau sebaliknya disebut Cryptographic system atau Cryptosystem dimana sistem tesebut terdiri dari algoritma–algorima tertentu yang tergantung pada sistem yang digunakan. Algoritma kriptografi (cryptographic algorithm) disebut cipher yang merupakan persamaan matematik yang digunakan dalam proses enkripsi dan deskripsi dimana proses tersebut diatur oleh satu atau lebih kunci kriptografi. Kunci-kunci tersebut secara umum digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung sistem yang digunakan.

Proses enkrisi dan deskrisi secara matematis diterangkan sebagai berikut :

EK (M) = C (Proses Enkripsi)
DK (C) = M (Proses Deskripsi)

Keterangan :

EK : Enkripsi.
DK : Deskripsi.
M : Message (Pesan sebelum dienkripsi).
C : Cipher (Pesan setelah dienkrisi).

Secara umum algoritma kriptografi diciptakan oleh orang yang berpengalaman dalam bidang keamanan data dan mungkin pernah membuka sebuah algoritma kriptografi tanpa bantuan kunci. Pelaku yang melakukan tindakan memecahkan ciphertext tanpa bantuan kunci disebut Crytpanalyst. Sedangkan Ilmu dan seni membuka (breaking) ciphertext tanpa bantuan kunci disebut Cryptanalysis.

Tipe-tipe Cipher :

Tujuan dari adanya enkripsi adalah untuk meningkatkan keamanan data tetapi juga berfungsi untuk :

1. Melindungi data agar tidak dapat dibaca oleh orang-orang yang tidak berhak.
2. Mencegah agar orang-orang yang tidak berhak, menyisipkan atau mengahapus data.

Sedangkan tujuan dari sistem kriptografi adalah sebagai berikut :

1. Confidentiality
Memberikan kerahasiahan pesan dan menyimpan data dengan menyembunyikan informasi lewat teknik-teknik enkripsi.

2. Message Integrity
Memberikan jaminan untuk tiap bagian bahwa pesan tidak akan mengalami perubahan dari saat ia dibuat sampai saat ia dibuka.

3. Non-repudiation
Memberikan cara untuk membuktikan bahwa suatu dokumen datang dari seseorang apabila ia mencoba menyangkal memiliki dokumen tersebut.

4. Authentication
Memberikan dua layanan. Pertama mengidentitifikasi keaslian suatu pesan dan memberikan jaminan keontentikannya. Kedua untuk menguji identitas seseorang apabila ia akan memasuki sebuah sistem.

Terdapat tiga kategori enkripsi yaitu :

1. Kunci enkripsi rahasia, dalam hal ini terdapat sebuah kunci yang digunakan untuk mengikrisi dan juga sekaligus mendeskripsikan informasi.
2. Kunci enkripsi public, dalam hal ini terdapat dua kunci yang digunakan, satu untuk proses enkripsi, satu lagi untuk proses deskripsi.
3. Fungsi one-way, dimana informasi dienkripsi untuk menciptakan “signature” dari informasi asli yang bisa digunakan untuk keperluan autentifikasi.

Dalam Cryptosystem menurut teknik enkripsinya dapat digolongkan menjadi dua buah, yaitu :

1. Symmetric Cryptosystem ( Enkripsi Konvensional)
Dalam symmetric cryptosystem,kunci yang digunakan dalam proses enkripsi dan dekripsi adalah sama atau pada prinsipnya identik. Kunci ini pun bisa diturunkan dari kunci lainnya. Oleh karena itu sistem ini sering disebut secret-key ciphersystem.

Jumlah kunci yang dibutuhkan umumnya adalah :

nC2= n.(n-1)
——–
2
Dimana n adalah bnyaknya pengguna.
Kunci yang menggunakan teknik enkripsi ini harus betul-betul dirahasiakan.

Gambaran proses enkripsi konvensional :

2. Assymmetric Cryptosystem (Enkripsi public-key)
Dalam Assymmetric cryptosystem,kunci yang digunakan terdapat dua buah. Satu kunci yang dapat dipublikasikan deisebut kunci publik (public key), satu lagi kunci yang harus dirahasiakan disebut kunci privat (private key). Secara sedehana proses tersebut diterangkan sebagai berikut :
– A mengirimkan pesan kepada B.
– A menyandikan pesannya dengan menggunakan kunci publik B.
– Bila B ingin membaca pesan dari A, ia harus menggunakan kunci privatnya
untuk mendekripsikan pesan yang tersandikan itu.

Gambaran proses enkripsi public-key :

Dalam Cryptosystem yang baik harus memiliki karekteristik sebagai berikut :

• Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma yang dipergunakan.
• Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.
• Cryptosystem yang baik akan menghasilakn ciphertext yang terlihat acak dalam seluruh tes statistik yang dilakukan terhadapnya.
• Cryptosystem yang baik mampu menahan seluruh serangan yang dikenal sebelumnya.

Bila salah satu hal diatas tidak dimiliki oleh sebuah Cryptosystem maka kemungkinan besar pesan yang di enkripsi oleh Cryptosystem dapat dibongkar sehingga isi dari pesan tersebut dapat dibaca oleh orang yang tidak berkepentingan. Salah satu Cryptosystem yang dapat dibongkar (broken) adalah LOKI 97, salah satu kandidat Advanced Encryption Standard (AES). LOKI 97 mempunyai kelemahan dalam persamaan matematika dan dalam f-functinnya.

Pengenalan Blowfish

Blowfish alias “OpenPGP.Cipher.4” merupakan enkripsi yang termasuk dalam golongan Symmetric Cryptosystem , metoda enkripsinya mirip dengan DES (DES-like Cipher) diciptakan oleh seorang Cryptanalyst bernama Bruce Schneier Presiden perusahaan Counterpane Internet Security, Inc (Perusahaan konsultan tentang kriptografi dan keamanan Komputer) dan dipublikasikan tahun 1994. Dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32-bit keatas dengan cache data yang besar).

Blowfish dikembangkan untuk memenuhi kriteria desain yang cepat dalam implementasinya dimana pada keadaan optimal dapat mencapai 26 clock cycle per byte, kompak dimana dapat berjalan pada memori kurang dari 5 KB, sederhana dalam algoritmanya sehingga mudah diketahui kesalahannya, dan keamanan yang variabel dimana panjang kunci bervariasi (minimum 32 bit, maksimum 448 bit, Multiple 8 bit, default 128 bit).Blowfish dioptimasikan untuk berbagai aplikasi dimana kunci tidak sering berubah, seperti pada jaringan komunikasi atau enkripsi file secara otomatis. Dalam pengimplementasiannya dalam komputer bermicroprosesor 32-bit dengan cache data yang besar (Pentium dan Power PC) Blowfish terbukti jauh lebih cepat dari DES. Tetapi Blowfish tidak cocok dengan aplikasi dengan perubahan kunci yang sering atau sebagai fungsi hast satu arah seperti pada aplikasi packet switching. Blowfish pun tidak dapat digunakan pada aplikasi kartu pintar (smart card) karena memerlukan memori yang besar.

Blowfish termasuk dalam enkripsi block Cipher 64-bit dangan panjang kunci yang bervariasi antara 32-bit sampai 448-bit.Algoritma Blowfish terdiri atas dua bagian :

1. Key-Expansion
Berfungsi merubah kunci (Minimum 32-bit, Maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte.

2. Enkripsi Data
Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit. Operasi tambahan lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.

Algoritma Blowfish

Blowfish menggunakan subkunci yang besar. Kunci tersebut harus dihitung sebelum enkripsi atau dekripsi data.

Blowfish adalah algoritma yang menerapkan jaringan Feistel (Feistel Network) yang terdiri dari 16 putaran. Input adalah elemen 64-bit,X.Untuk alur algoritma enkripsi dengan metoda Blowfish dijelaskan sebagai berikut :

1. Bentuk inisial P-array sebanyak 18 buah (P1,P2,…………..P18) masing-msing bernilai 32-bit.
Array P terdiri dari delapan belas kunci 32-bit subkunci :

P1,P2,…….,P18

2. Bentuk S-box sebanyak 4 buah masing-masing bernilai 32-bit yang memiliki masukan 256.

Empat 32-bit S-box masing-masing mempunyai 256 entri :

S1,0,S1,1,………………..,S1,255

S2,0,S2,1,………………..,S2,255

S3,0,S3,1,………………..,S3,255

S4,0,S4,1,………………..,S4,255

3. Plaintext yang akan dienkripsi diasumsikan sebagai masukan, Plaintext tersebut diambil sebanyak 64-bit, dan apabila kurang dari 64-bit maka kita tambahkan bitnya, supaya dalam operasi nanti sesuai dengan datanya.

4. Hasil pengambilan tadi dibagi 2, 32-bit pertama disebut XL, 32-bit yang kedua disebut XR.

5. Selanjutnya lakukan operasi XL = XL xor Pi dan XR = F(XL) xor XR

6. Hasil dari operrasi diatas ditukar XL menjadi XR dan XR menjadi XL.

7. Lakukan sebanyak 16 kali, perulangan yang ke-16 lakukan lagi proses penukaran XL dan XR.

8. Pada proses ke-17 lakukan operasi untuk XR = XR xor P17 dan XL = XL xor P18.

9. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit kembali.

Untuk lebih jelas lagi dapat dilihat digambar dibawah ini :

Gambar Algoritma Blowfish

FlowChart Blowfish

Fungsi F adalah sebagai berikut :
Bagi XL, menjadi empat bagian 8-bit : a,b,c dan d.

F(XL)=((S1,a + S2,b mod 232)xor S3,c) + S4,c mod 232

Subkunci dihitung menggunakan algoritma Blowfish, metodanya adalah sebagai berikut :

1. Pertama-tama inilialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri atas digit hexadesimal dari Pi.

2. XOR P1 dengan 32-bit pertama kunci, XOR P2 dengan 32-bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18).Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci.

3. Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2).

4. Ganti P1 dan P2 dengan keluaran dari langkah (3).

5. Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi.

6. Ganti P3 dan P4 dengan keluaran dari langkah (5).

7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontiyu dari algoritma Blowfish.

Gambar fungsi F dalam Blowfish

FlowChart F Fungsi

Total yang diperlukan adalah 521 iterasi untuk menghasilkan semua subkunci yang dibutuhkan. Aplikasi kemudian dapat menyimpan subkunci ini dan tidak membutuhkan langkah-langkah proses penurunan berulang kali, kecuali kunci yang digunakan berubah.

Untuk deskripsi sama persis dengan enkripsi, kecuali pada P-array (P1,P2,……..,P18) digunakan dengan urutan terbalik atau di inverskan.

Keamanan Blowfish

Sampai saat ini algoritma Blowfish belum ditemukan kelemahan yang berarti hanya adanya weak key dimana dua entri dari S-box mempunyai nilai yang sama. Belum ada cara untuk mengecek weak key sebelum melakukan key expansion, tetapi hal ini tidak berpengaruh terhadap hasil enkripsi.

Hasil enkripsi dengan algoritma Blowfish sangat tidak mungkin dan tidak praktis untuk di terjemahkan tanpa bantuan kunci. Sampai kini belum ada Cryptanalysis yang dapat membongkar pesan tanpa kunci yang enkripsi oleh Blowfish. Agar aman dari pembongkaran pesan maka dalam algoritmanya harus menggunakan 16 putaran agar pesan tersebut tidak dapat dibongkar.

Algoritma Blowfish pun dapat digabungkan dengan algoritma-algoritma enkripsi yang lain dalam pengkripsian sebuah pesan untuk lebih menjamin isi dari pesan tersebut.

Aplikasi

Dalam pengimplementasianya blowfish dapat menggunakan bermacam bahasa pemograman seperti Delphi, Visual Basic, Bahasa C,C++ ,dsb. Hal ini dikarenakan algoritma Blowfish dapat dilihat secara bebas sehingga mudah diimplentasikan dalam segala bahasa pemograman berbeda dengan algoritma enkripsi lain yang tidak bebas untuk dilihat sehingga sulit untuk diimplementasikan (contohnya adalah RC2 dan RC4 yang menjadi hak cipta perusahaan RSA).

Bahkan Blowfish dapat diimplentasikan dalam bahasa JavaScript dan Java, bahasa yang umum digunakan dalam sebuah web. Banyak aplikasi yang memerlukan keamanan data menggunakan algoritma blowfish sebagai peng-enkripsi datanya seperti aplikasi untuk e-mail, Text, Password, dsb. Untuk lebih jelas apliksi yang menggunakan algoritma blowfish dapat dilihat di website resminya di http://www.Counterpane.com .

Program Aplikasi Blowfish

Cryptosystem Blowfish yang ditampilkan menggunakan JavaScript sebagai bahasa Pemogramannya, Penulis hanya mengganti bahasa dalam tampilannya (bahasa aslinya ialah Jerman) untuk memudahkan dalam menjalankan programnya.

Tampilan Cryptosystem Blowfish :

Dalam tampilan, pesan yang akan dienkripsi cukup ditulis dalam kolom diatas yang bertuliskan Text…, sesudah pesan ditulis tinggal memesukan password sebagai kunci enkripsinya lalu tekan tombol bertuliskan Enkripsi.

Penulis menggunakan kata MATAHARI sebagai contoh pesan dengan password inovatif.

Setelah menekan tombol enkripsi maka akan muncul ciphertext di kolom bawah pesan yang terenkripsi terlihat sebagai “F51820120F889934” yang merupakan hasil dari pengenkripsian kata MATAHARI dengan password inovatif.

Untuk deskripsi cukup mengubah pesan yang terenkripsi di tuliskan dikolom atas, lalu masukan password yang sama dengan password sewaktu enkripsi, lalu tekan tombol bertuliskan Deskripsi.

Maka hasil pendeskripsian akan muncul dalam kolom dibawahnya, pesan yang muncul adalah MATAHARI bila password yang digunakan sama.

Program diatas diambil dari situs : http://aam.ugpl.de/node/1060

Penutup

Blowfish dapat dipergunakan dalam berbagai aplikasi yang sangat memerlukan keamanan sebagai prioritas utamanya, dengan algoritma yang sederhana blowfish dapat implementsikan dalam aplikasi dengan bebagai macam bahasa pemograman dan dapat bekerja dalam berbagai sistem operasi yang ada. Blowfish dapat diandalkan keamanannya karena belum dapat dibongkar (broken) oleh Cryptoanalyst manapun sampai saat ini karena tidak mempunyai kelemahan yang berarti untuk dapat dibongkar sehingga pesan yang ada dalam ciphertextnya sangat aman.

Referensi

1. Sukmawan, Budi, Metoda Enkripsi Blowfish, http://bdg.centrin.net.id/~budskman/artikel.htm, 2000.
2. Heriyanto, Tedi, Pengenalan Kriptografi, http://www.tedi-h.com, 1999.
3. http://en.wikipedia.org/wiki/Blowfish
4. http://aam.ugpl.de/
5. http://www.users.zetnet.co.uk/hopwood/crypto/scan/cs.html
6. http://www.ee.ualberta.ca/~elliott/ee552/studentAppNotes/1998f/blowfish_encryption/
7. http://www.counterpane.com/blowfish.html

Biografi Penulis

Anjar Syafari. Lahir di Bandung 24 tahun yang lalu. Masa SMU di lewati di SMUN 1 Sumedang (1-6, 2-8 “Peterpan”, 3IPA3 “Clasic”), lulus tahun 2002, menyelesaikan program studi S1 jurusan Manajemen Informatika (MI-7) di Universitas Komputer Indonesia (UNIKOM) tahun 2006. Walau mengenal dunia komputer baru pada bangku kuliah tetapi sangat menyenangi dunia yang baru dikenalnya. Sangat tertarik dengan perkembangn dunia IT terutama internet (karena itu, mengerti seluk-beluk internet dengan baik). Senang menulis dan membaca terutama mengenai IT sejak kuliah sampai saat ini. Selain internet bidang yang dipahami adalah mengenai software + Pemograman (VB, C++Builder dan terutama Delphi), Web (terutama CMS ‘Mambo’) dan hardware komputer. Ada keinginan juga untuk menjadi trainer IT atau IT Support. Informasi lebih lanjut tentang penulis dapat dihubungi lewat email di :

clasicboy_no8@yahoo.com
atau di blognya :

http://ansitea.blogspot.com

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s