Kriptografi adalah
ilmu yang mempelajari teknik-teknik matematis yang berhubungan dengan aspek
keamanan informasi seperti keabsahan, integritas data, serta autentifikasi
data. Kriptografi tidak berarti hanya memberikan keamanan informasi saja, namun
lebih ke arah teknik-tekniknya. Ada empat tujuan dari ilmu kriptografi, yaitu :
1. Kerahasiaan, adalah
layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali
yang memiliki otoritas.
2. Integritas
data, adalah berhubungan dengan penjagaan dari
perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus
memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak
berhak, antara lain menyangkut penyisipan, penghapusan, dan pensubtitusian data
lain ke dalam data yang sebenarnya.
3. Autentikasi, adalah
berhubungan dengan identifikasi, baik secara kesatuan sistem maupun informasi
itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan
diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi
datanya, waktu pengiriman, dan lain-lain.
4.Non-repudiasi, yang
berarti begitu pesan terkirim, maka tidak akan dapat dibatalkan.
Enkripsi dan Deskripsi
1. Enkripsi
Proses
utama dalam suatu algoritma kriptografi adalah enkripsi dan dekripsi. Enkripsi
merubah sebuah plaintext ke dalam bentuk ciphertext. Pada mode ECB (Elekctronic
Codebook), sebuah blok pada plaintext dienkripsi ke dalam sebuah blok
ciphertext dengan panjang blok yang sama. Blok cipher memiliki sifat bahwa
setiap blok harus memiliki panjang yang sama (misalnya 128 bit). Namun apabila
pesan yang dienkripsi memiliki panjang blok terakhir tidak tepat 128 bit, maka
diperlukan mekanisme padding, yaitu penambahan bit-bit dummies untuk menggenapi
menjadi panjang blok yang sesuai, biasanya padding dilakukan pada blok terakhir
plaintext.
Padding bada blok terakhir bisa dilakukan dengan berbagai macam cara, misalnya
dengan penambahan bit-bit tertentu. Salah satu contoh penerapan padding dengan
cara menambahkan jumlah total padding sebagai byte terakhir pada blok terakhir
plaintext. Misalnya panjang blok adalah 128 bit (16 byte) dan pada blok
terakhir terdiri dari 88 bit (11 byte) sehingga jumlah padding yang diperlukan
adalah 5 byte, yaitu dengan menambahkan angka nol sebanyak 4 byte, kemudian
menambahkan angka 5 sebanyak satu byte. Cara lain dapat juga menggunakan
penambahan karakter end-of-file pada byte terakhir lalu diberi padding
setelahnya.
2.
Deskripsi
Dekripsi merupakan proses
kebalikan dari proses enkripsi, merubah ciphertext kembali ke dalam bentuk
plaintext. Untuk menghilangkan padding yang diberikan pada saat proses
enkripsi, dilakukan berdasarkan informasi jumlah padding yaitu angka pada byte
terakhir.
v
Dasar Matematis
Dasar matematis yang mendasari proses enkripsi dan
deskripsi adalah relasi antara dua himpunan yaitu yang berisi elemen plaintext
dan yang berisi elemen cipertext. Enkripsi dan dekripsi merupakan fungsi
transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen plaintext
dinotasikan dengan P, elemen-elemen ciphertext dinotasikan dengan C, sedang
untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D, maka
secara matematis proses kriptografi dapat dinyatakan sebagai berikut :
Enkripsi
: E(P)=C
Dekripsi
: D(C)=P atau D(E(P))=P
Pada
skema enkripsi konvensional atau kunci simetrik digunakan sebuah kunci untuk
melakukan proses enkripsi dan dekripsinya. Kunci tersebut dinotasikan dengan K,
sehingga proses kriptografinya adalah :
Enkripsi
: EK(P)=C
Dekripsi
: DK(C)=P atau DK(EK(P))=P
Sedangkan
pada sistem asymmetric-key digunakan kunci umum (public key) untuk enkripsi dan
kunci pribadi (private key) untuk proses dekripsinya sehingga kedua proses
tersebut dapat dinyatakan sebagai berikut :
Enkripsi
: EPK(P)=C
Dekripsi
: DSK(C)=P atau DSK(EPK(P))=P
v
Teknik Kriptografi
Pada
umumnya terdapat dua teknik yang digunakan dalam kriptografi, yakni kunci
simetrik dan kunci asimetrik (public-key).
o Kunci
Simetrik
Skema enkripsi akan disebut
symmetric-key apabila pasangan kunci untuk proses enkripsi dan dekripsinya
sama. Pada skema enkripsi kunci simetrik dibedakan lagi menjadi dua kelas,
yaitu block-cipher dan stream-cipher. Block-cipher adalah skema enkripsi yang
akan membagi-bagi plaintext yang akan dikirimkan menjadi sting-string (disebut
blok) dengan panjang t, dan mengenkripsinya per-blok. Pada umumnya block-cipher
memproses plaintext dengan blok yang relatif panjang lebih dari 64 bit dengan
tujuan untuk mempersulit penggunaan pola-pola serangan yang ada untuk
membongkar kunci. Sedangkan skema stream cipher pada dasarnya juga
block-cipher, hanya dengan panjang bloknya adalah satu bit.
o Kunci
Asimetrik
Skema ini adalah algoritma yang menggunakan kunci yang
berbeda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai
sistem kriptografi Public-key karena kunci untuk enkripsi dibuat secara umum
(public-key) atau dapat diketahui oleh siapa saja, tetapi untuk proses
dekripsinya yang dibuat satu saja, yakni hanya oleh yang berwenang untuk
mendekripsinya (disebut private-key). Keuntungan skema model ini, untuk
berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci
rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci (disebut
public-key) bagi para koresponden untuk mengenkripsi pesan, dan private-key
untuk mendekripsi pesan. Berbeda dengan skema kunci simetrik yang jumlah kunci
yang dibuah adalah harus sebanyak jumlah pihak yang berkorespondensi.
v
Kriptografi Block Chipher
Block cipher merupakan sebuah fungsi yang memetakan
n-bit blok plaintext ke n-bit blok ciphertext, dengan n adalah panjang blok.
Blok cipher umumnya memproses plaintext ke dalam blok-blok yang cukup besar (≥
64).
v
Cipher Berulang
Pada teknik cipher berulang (iterated cipher), blok
plaintext mengalami pengulangan fungsi transformasi beberapa kali untuk
mendapatkan blok ciphertext. Fungsi transformasi pada umumnya merupakan
gabungan proses subtitusi, permutasi, kompresi, atau ekspansi terhadap blok
plaintext. Sebuah kunci pada setiap putaran akan dikombinasikan dengan
plaintext. Parameter dalam cipher ini adalah jumlah putaran r, besar blok n dan
besar kunci k. Sub-kunci Ki pada setiap putaran diperoleh dari penurunan kunci
input K.
v Feistel
Cipher
Feistel
cipher beroperasi terhadap panjang blok data tetap sepanjang n (genap),
kemudian membagi 2 blok tersebut dengan panjang masing-masing n/2, yang
dinotasikan dengan L dan R. Feistel cipher menerapkan metode cipher berulang
dengan masukan pada putaran ke-I yang didapat dari keluaran sebelumnya, yang
secara matematis dapat dinyatakan sebagai berikut :
Li=Ri-1
Ri=Li-1
f(Ri-1,Ki); i=1,2,3,…,r
Ki adalah kunci untuk
putaran ke-i dan f adalah fungsi transformasi.
Blok plaintext adalah
gabungan L dan R awal atau secara formal plaintext dinyatakan dengan (Lo, Ro).
Sedangkan blok ciphertext didapatkan dari L dan R hasil putaran terakhir
setelah terlebih dahulu dipertukarkan atau dinyatakan dengan (Rr, Lr).
v
Avalanche
Pada blok cipher perubahan satu buah bit dapat
menghasilkan perubahan lebih dari satu bit setelah satu putaran, lebih banyak
lagi bit berubah untuk putaran berikutnya. Hasil perubahan tersebut dinamakan
sebagai avalanche effect. Sebuah algoritma kriptografi memenuhi kriteria
avalanche effect apabila satu buah bit input mengalami perubahan, maka
probabilitas semua bit berubah adalah setengahnya. Avalanche effect merupakan
salah satu karakteristik yang menjadi acuan untuk menentukan baik atau tidaknya
sebuah algoritma kriptografi.
v
Mode Operasi
Ada
beberapa mode operasi yang digunakan dalam kriptografi, seperti :
o
Electronic Codebook (ECB)
Pada
mode ini blok-blok plaintext (x) yang identik (yang menggunakan kunci sama)
akan menghasilkan ciphertext (c) yang identik pula, yang secara matematis dapat
dinyatakan :
Enkripsi : cj EK(xj);
1 j t
Dekripsi : xj
EK-1(cj); 1 j t
o
Cipher Block Chaining (CBC)
Pada
prosesnya, kode ini melibatkan penggunaan initializing vector (IV) yang
menyebabkan blok-blok ciphertext yang identik apabila dienkripsi menggunakan
kunci dan IV yang sama. Berubahnya IV, kunci atau blok plaintext pertama akan
menghasilkan ciphertext yang berbeda. Secara matematis dapat dinyatakan :
Enkripsi
: co IV, untuk 1 j t, cj EK(cj-1 xj)
o Cipher
Feedback (CFB)
Jika pada mode CBC, plaintext
sebesar n bit diproses dalam sekali waktu (menggunakan sebuah n bit cipher
blok), beberapa aplikasi mengharuskan r bit plaintext untuk dienkripsi terlebih
dahulu dan ditransmisikan bebas delay, untuk r < n (biasanya r = 1 atau r =
8); dalam kasus ini CBF digunakan. Dalam mode ini juga melibatkan penggunaan
initializing vector (IV).
o Output
Feedback (OFB)
Mode operasi ini digunakan apabila kesalahan propagasi
sama sekali harus dihindari. Hampir mirip dengan CFB, dan juga memungkinkan
enkripsi menggunakan besar blok yang berfariasi.
v
Kunci Lemah dan Kunci Setengah Lemah
Dalam kriptografi dikenal istilah kunci lemah
(weak-key) dan kunci setengah lemah (semi weak-key). Kunci lemah adalah kunci
yang apabila mengenkripsi suatu plaintext kemudian dienkripsi lagi menggunakna
kunci yang sama, maka ciphertextnya adalah plaintext itu sendiri. Sedangkan
yang disebut dengan kunci setengah lemah adalah sepasang kunci yang memiliki
sifat jika sebuah plaintext dienkripsi dengan suatu kunci, akan dapat
dienkripsi dengan kunci yang lain.