1. 1 Latar belakang
Berkat perkembangan teknologi yang
begitu pesat memungkinkan manusia dapat berkomunikasi dan saling bertukar
informasi/data secara jarak jauh. Antar kota antar wilayah antar negara bahkan
antar benua bukan merupakan suatu kendala lagi dalam melakukan komunikasi dan
pertukaran data. Seiring dengan itu tuntutan akan sekuritas (keamanan) terhadap
kerahasiaan informasi yang saling dipertukarkan tersebut semakin meningkat.
Begitu banyak pengguna seperti departemen pertahanan, suatu perusahaan atau
bahkan individu-individu tidak ingin informasi yang disampaikannya diketahui
oleh orang lain atau kompetitornya atau negara lain. Oleh karena itu
dikembangkanlah cabang ilmu yang mempelajari tentang cara-cara pengamanan data
atau dikenal dengan istilah Kriptografi.
Dalam kriptografi terdapat dua konsep
utama yakni enkripsi dan dekripsi. Enkripsi adalah proses dimana informasi/data
yang hendak dikirim diubah menjadi bentuk yang hampir tidak dikenali sebagai
informasi awalnya dengan menggunakan algoritma tertentu. Dekripsi adalah
kebalikan dari enkripsi yaitu mengubah kembali bentuk tersamar tersebut menjadi
informasi awal.
Algoritma kriptografi berdasarkan jenis
kunci yang digunakan dapat dibedakan menjadi dua jenis yaitu :
· Algoritma simetris
Dimana kunci yang digunakan untuk proses enkripsi dan
dekripsi adalah kunci yang sama
· Algoritma asimetris
Dimana kunci yang digunakan untuk proses enkripsi dan dekripsi
menggunakan kunci yang berbeda.
Sedangkan berdasarkan besar data yang
diolah dalam satu kali proses, maka algoritma kriptografi dapat dibedakan
menjadi dua jenis yaitu :
· Algoritma block cipher
Informasi/data yang hendak dikirim dalam bentuk blok-blok
besar (misal 64-bit) dimana blok-blok ini dioperasikan dengan fungsi enkripsi
yang sama dan akan menghasilkan informasi rahasia dalam blok-blok yang
berukuran sama.
· Algoritma stream cipher
Informasi/data yang hendak dikirim dioperasikan dalam bentuk
blok-blok yang lebih kecil (byte atau bit), biasanya satu karakter persatuan
persatuan waktu proses, menggunakan tranformasi enkripsi yang berubah setiap
waktu.
Camellia merupakan algoritma
kriptografi simetris blok cipher. Dalam Camellia proses enkripsi dan
dekripsi dilakukan pada blok data berukuran 128-bit dengan kunci yang dapat
berukuran 128-bit, 192-bit, 256-bit. Algoritma Camellia dikembangkan oleh :
· Kazumaro Aoki (NTT - Nippon Telegraph
and Telephone Corp.)
· Tetsuya Ichikawa (Mitsubishi electric
Corp.)
· Masayuki Kanda (NTT – Nippon Telegraph
and Telephone Corp.)
· Mitsuru Matsui (Mitsubishi electric
Corp.)
· Shiho Moriai (NTT – Nippon Telegraph
and Telephone Corp.)
· Junko Nakajima (Mitsubishi electric
Corp.)
· Toshio Tokita (Mitsubishi electric
Corp.)
Dimana versi 1.0 pada bulan Juli 2000, versi 2.0 pada
September 2001 dan versi 2.1 pada Febuari 2002.
II Kriptografi
2. 1 Dasar Kriptografi
2. 1. 1 Teori Kriptografi
Kriptografi
adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data
atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce
Scheiner dalam bukunya "Applied
Cryptography", kriptografi adalah ilmu pengetahuan dan seni menjaga message-message agar tetap
aman (secure).
Konsep kriptografi sendiri telah lama
digunakan oleh manusia misalnya pada peradaban Mesir dan Romawi walau masih
sangat sederhana. Prinsip-prinsip yang mendasari
kriptografi yakni:
· Confidelity (kerahasiaan)
yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain
(kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat
suatu algoritma matematis yang mampu
mengubah data hingga menjadi sulit untuk dibaca dan dipahami.
· Data integrity (keutuhan data) yaitu
layanan yang mampu mengenali/mendeteksi
adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain).
·
Authentication (keotentikan)
yaitu layanan yang berhubungan
dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman
data maupun otentikasi keaslian data/informasi.
·
Non-repudiation (anti-penyangkalan)
yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang
dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).
Berbeda dengan
kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma
yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui
maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa
saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan
pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya)
sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa
takut kehilangan kerahasiaan bagi para pemakainya.
Berikut
adalah istilah-istilah yang digunakan dalam bidang kriptografi :
·
Plaintext (M) adalah pesan yang hendak
dikirimkan (berisi data asli).
·
Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang
merupakan hasil enkripsi.
·
Enkripsi (fungsi E) adalah proses pengubahan plaintext
menjadi ciphertext.
·
Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni
mengubah ciphertext menjadi plaintext, sehingga berupa data
awal/asli.
·
Kunci adalah suatu bilangan yang dirahasiakan yang
digunakan dalam proses enkripsi dan dekripsi.
Kriptografi itu sendiri terdiri dari dua proses utama yakni proses
enkripsi dan proses dekripsi. Seperti yang telah dijelaskan di atas, proses
enkripsi mengubah plaintext menjadi ciphertext (dengan
menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar
dimengerti.
Gambar 2.1 Diagram proses enkripsi dan
dekripsi
Peranan kunci sangatlah penting dalam
proses enkripsi dan dekripsi (disamping pula algoritma yang digunakan) sehingga
kerahasiaannya sangatlah penting, apabila
kerahasiaannya terbongkar, maka isi dari pesan dapat diketahui.
Secara matematis, proses enkripsi merupakan pengoperasian
fungsi E (enkripsi) menggunakan e (kunci
enkripsi) pada M (plaintext) sehingga dihasilkan C (ciphertext), notasinya :
Ee(M)
– C
Sedangkan untuk proses dekripsi,
merupakan pengoperasian fungsi D (dekripsi) menggunakan d (kunci dekripsi) pada C (ciphertext)
sehingga dihasilkan M (plaintext), notasinya :
Dd(C)
= M
Sehingga dari dua hubungan diatas berlaku :
Dd(Ee(M))
= M
2. 1. 2 Algoritma Simetris dan Asimetris
2. 1. 2. 1 Algoritma Simetris
Algoritma
simetris (symmetric algorithm) adalah suatu algoritma dimana kunci
enkripsi yang digunakan sama dengan kunci dekripsi sehingga algoritma ini disebut
juga sebagai single-key algorithm.
Gambar 2.2 Diagram proses enkripsi dan dekripsi algoritma
simetris
Sebelum melakukan pengiriman pesan,
pengirim dan penerima harus memilih suatu
suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah
rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci rahasia (secret-key
algorithm).
Kelebihan :
· Kecepatan
operasi lebih tinggi bila dibandingkan dengan algoritma asimetrik.
· Karena
kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem real-time
Kelemahan :
· Untuk tiap pengiriman
pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga
akan terjadi kesulitan dalam manajemen kunci
tersebut.
· Permasalahan
dalam pengiriman kunci itu sendiri yang disebut “key distribution problem”
Contoh algoritma : TwoFish, Rijndael, Camellia
2. 1. 2. 2 Algoritma Asimetris
Algoritma asimetris (asymmetric algorithm) adalah
suatu algoritma dimana kunci enkripsi yang digunakan tidak sama dengan kunci
dekripsi. Pada algoritma ini menggunakan
dua kunci yakni kunci publik (public key) dan kunci privat (private
key). Kunci publik disebarkan secara umum sedangkan kunci privat disimpan
secara rahasia oleh si pengguna. Walau kunci publik telah diketahui namun akan sangat sukar mengetahui kunci
privat yang digunakan.
Gambar 2.3 Diagram proses enkripsi dan dekripsi
algoritma asimetris
Pada umumnya kunci publik (public key) digunakan
sebagai kunci enkripsi sementara kunci
privat (private key) digunakan sebagai kunci dekripsi.
Kelebihan :
· Masalah
keamanan pada distribusi kunci dapat lebih baik
· Masalah manajemen
kunci yang lebih baik karena jumlah kunci yang lebih sedikit
Kelemahan :
· Kecepatan
yang lebih rendah bila dibandingkan dengan algoritma simetris
· Untuk
tingkat keamanan sama, kunci
yang digunakan lebih panjang dibandingkan dengan algoritma simetris.
Contoh algoritma : RSA, DSA, ElGamal
2. 1. 3 Block Cipher dan Stream Cipher
Jika kita melihat berdasarkan ukuran
serta format data yang akan diproses, maka
algoritma kriptografi dapat dibagi menjadi dua bagian yang utama yaitu:
· Block
Cipher, algoritma kriptografi ini bekerja pada suatu data yang berbentuk blok/kelompok data dengan panjang data
tertentu (dalam beberapa byte), jadi dalam sekali proses enkripsi atau
dekripsi data yang masuk mempunyai ukuran
yang sama.
· Stream
cipher, algoritma yang dalam operasinya bekerja dalam suatu pesan berupa bit tunggal atau terkadang dalam
suatu byte, jadi format data berupa aliran dari bit untuk kemudian
mengalami proses enkripsi dan dekripsi.
Pada algoritma penyandian blok (block
cipher), plainteks yang masuk akan diproses dengan panjang blok yang tetap
yaitu n, namun terkadang jika ukuran data ini terlalu panjang maka dilakukan
pemecahan dalam bentuk blok yang lebih kecil. Jika dalam pemecahan
dihasilkan blok data yang kurang dari jumlah
data dalam blok maka akan dilakukan proses pading (penambahan beberapa bit).
2. 2 Mode Operasi dalam Block
Cipher
\2. 2. 1 Electronic Codebook (ECB)
Pada mode operasi
ECB sebuah blok input plaintext dipetakan secara statis ke sebuah
blok output ciphertext. Sehingga tiap plaintext yang sama akan menghasilkan
ciphertext yang selalu sama pula. Sifat- sifat dari
mode operasi ECB :
· Sederhana
dan efisien
· Memungkinkan
implementasi parallel
· Tidak
menyembunyikan pola plaintext
·
Dimungkinkan terjadi adanya active attack.
Skema
dari mode operasi ECB dapat digambarkan sebagai berikut :
Gambar 2.4 Skema Mode Operasi ECB
Cipher Block Chaining (CBC)
Pada mode oparasi
ini hasil enkripsi dari blok sebelumnya mempengaruhi hasil
enkripsi selanjutnya, atau enkripsi sebeluimnya menjadi feedback
pada enkripsi blok saat itu., jadi tiap blok ciphertext bergantung bukan hanya
pada blok plaintext-nya tapi bergantung pula pada blok-blok plaintext sebelumnya.
Sehingga untuk plaintext yang sama, belum tentu menghasilkan ciphertext yang sama pula.
Skema dari mode operasi CBC dapat digambarkan sebagai
berikut :
Gambar 2.5 Skema Mode Operasi CBC.
Mula-mula sebelum
si pengirim hendak mengirimkan pesannya kepada si penerima, dia
terlebih dahulu harus meng-XOR plaintext dengan IV (initialization vector) baru kemudian
dienkripsi, setelah itu baru dikirimkan ciphertext
pertamanya kepada si penerima. Plaintext ke-2 pun demikian, harus di-XOR terlebih dahulu dengan ciphertext sebelumnya
sebelum mengalami proses enkripsi baru kemudian dikirimkan ke si
penerima sebagai ciphertext 2 dan seterusnya.
Sifat-sifat dari mode operasi CBC :
·
Lebih
aman dari active attacks dibandingkan mode operasi ECB
·
Error
pada satu ciphertext dapat berakibat parah
·
Menutupi
pola plaintext
·
Implementasi
parallel belum diketahui.