BAB II. STUDI LITERATUR - Perpustakaan Digital · PDF filePada subbab ini, akan dibahas...
Transcript of BAB II. STUDI LITERATUR - Perpustakaan Digital · PDF filePada subbab ini, akan dibahas...
II-1
BAB II.
STUDI LITERATUR
Pada bab ini, akan dipaparkan teori-teori yang mendasari pengerjaan tugas akhir ini.
Secara umum, teori yang dibahas adalah mengenai kriptografi, XXTEA, dan format
penulisan surat elektronik.
II.1 Kriptografi
Kriptografi adalah ilmu menganalisis dan menguraikan kode dan sandi rahasia dan
kriptogram (sebuah potongan tulisan dalam kode atau sandi rahasia) [PRI08]. Tujuan
utama kriptografi adalah memungkinkan 2 (dua) orang, direpresentasikan sebagai
Alice dan Bob, untuk berkomunikasi melalui saluran tidak aman dalam sebuah cara
sehingga lawannya, Oscar, tidak mampu mengerti isi percakapan mereka. Saluran
tidak aman yang dimaksud dapat berupa jalur telepon atau jaringan komputer.
Informasi yang Alice ingin kirim ke Bob, disebut sebagai plaintext, dapat berupa teks
berbagai bahasa, data numerik atau lainnya—strukturnya dibebaskan kombinasinya.
Alice mengenkripsi plaintext, menggunakan sebuah kunci, dan mengirimkan
ciphertext hasil melalui saluran komunikasi. Oscar yang mencuri dengar ciphertext
dalam saluran komunikasi tidak bisa menentukan plaintext-nya, tetapi jika Bob
mengetahui kunci enkripsinya, Bob dapat mendekripsi ciphertext dan merekonstruksi
plaintext yang bersesuaian.
Konsep di atas dideskripsikan secara formal menggunakan notasi matematis berikut
[STI95]:
Sebuah kriptosistem adalah sebuah tuple berukuran 5 (lima), yaitu (P,C,κ,ε,D), dimana
kondisi berikut dipenuhi:
1. P adalah kumpulan terbatas dari plaintext yang mungkin.
2. C adalah kumpulan terbatas dari ciphertext yang mungkin.
3. κ, ruang kunci, adalah kumpulan terbatas dari kunci yang mungkin.
II-2
4. Untuk setiap K є κ, terdapat sebuah aturan enkripsi eK є ε dan sebuah aturan dekripsi
yang bersesuaian dK є D. Masing-masing eK : P → C dan dK : C → P adalah fungsi-
fungsi sehingga dK (eK (x)) = x untuk setiap plaintext x є P
Properti utama dari notasi di atas adalah properti 4. Disebutkan bahwa jika sebuah
plaintext x dienkripsi menggunakan eK dan ciphertext yang dihasilkan lalu didekripsi
menggunakan dK, plaintext awal x akan dihasilkan.
Alice dan Bob akan menggunakan protokol berikut dalam menjalankan sebuah
kriptosistem spesifik:
1. Alice dan Bob memilih sebuah kunci random K є κ. Hal ini dilakukan ketika
mereka berada di tempat yang sama dan tidak sedang diamati oleh Oscar, atau
ketika mereka mempunyai akses ke saluran komunikasi yang aman, dimana
mereka dapat berada di tempat yang berbeda.
2. Suatu saat, Alice ingin mengirimkan pesan pada Bob melalui saluran tidak
aman. Pesan dimisalkan sebagai sebuah string berbentuk
x = x1x2…xn
untuk sebuah integer n ≥ 1, dimana masing-masing simbol plaintext xi є P, 1 ≤
i ≤ n.
3. Masing-masing xi dienkripsi menggunakan aturan enkripsi eK yang spesifik
menggunakan kunci yang telah ditentukan sebelumnya, yaitu K. Lalu, Alice
menghitung yi = eK (xi), 1 ≤ i ≤ n, dan string ciphertext yang dihasilkan
berbentuk
y = y1y2…yn
dikirimkan melalui saluran tidak aman.
4. Ketika Bob menerima ciphertext y1y2…yn, dia mendekripsi ciphertext tersebut
menggunakan aturan dekripsi dK, menghasilkan string plaintext awal, x1x2…xn.
Lihat Gambar II-1 sebagai ilustrasi dari saluran komunikasi yang digunakan.
II-3
Gambar II-1 Ilustrasi Saluran Komunikasi
Keterangan Gambar II-1:
1. X : plaintext, pesan yang akan dikirimkan.
2. Y : ciphertext, pesan yang telah terenkripsi.
3. K : kata kunci yang digunakan untuk enkripsi X.
4. Alice : pengirim pesan.
5. Bob : penerima pesan.
6. Oscar : kriptanalis, orang yang berusaha memecahkan ciphertext.
7. Encrypter : program enkripsi plaintext dengan kata kunci enkripsi.
8. Decrypter : program dekripsi ciphertext dengan kata kunci dekripsi.
9. Key source : sumber generasi kata kunci yang random.
10. Secure channel: saluran komunikasi aman yang digunakan untuk mengirimkan
kata kunci.
Jelas terlihat bahwa fungsi enkripsi eK adalah fungsi injektif (contoh, satu-ke-satu),
jika tidak, dekripsi tidak dapat dilakukan. Sebagai contoh, jika y = eK (x1) = eK (x2)
dimana x1 ≠ x2, maka Bob tidak dapat mengetahui apakah y harus didekripsi menjadi
x1 atau x2.
II-4
II.2 Block Cipher
Block cipher adalah sebuah tipe algoritma enkripsi kunci simetris yang
mentransformasikan sebuah blok plaintext berukuran tetap (teks yang tidak
terenkripsi) menjadi blok ciphertext (teks yang terenkripsi) dengan ukuran yang sama
[RSA09]. Transformasi ini berlangsung dengan menggunakan kunci rahasia masukan
dari user. Proses dekripsi dilakukan dengan menjalankan transformasi kebalikan ke
blok ciphertext dengan menggunakan kunci rahasia yang sama. Ukuran 1 (satu) blok
yang selalu tetap dinamakan block size dan untuk sebagian besar block cipher, block
size sebesar 64 bits. Sebagai contoh, misalkan terdapat sebuah plaintext x. Plaintext
tersebut dapat dilihat sebagai kumpulan blok: x = x1x2…xn
dimana xm, 1≤m≤n, merupakan satuan blok dari ciphertext yang berukuran 64 bits.
Ketika user mengenkripsi x, proses enkripsi dilakukan per blok sehingga
menghasilkan ciphertext y yang dapat dilihat sebagai berikut: y = y1y2…yn = eK(x1) eK(x2)… eK(xn)
Gambar II-2 Skema Enkripsi dan Dekripsi Block Cipher di bawah menampilkan
proses enkripsi dan dekripsi block cipher secara umum [MUN06].
Gambar II-2 Skema Enkripsi dan Dekripsi Block Cipher [ MUN06]
II-5
Keterangan Gambar II-2:
1. Diagram kiri menggambarkan proses enkripsi, sedangkan diagram kanan
proses dekripsi.
2. E : proses enkripsi dengan masukan plaintext X dan kunci K yang
menghasilkan ciphertext Y.
3. D : proses dekripsi dengan masukan ciphertext Y dan kunci K yang
menghasilkan plaintext X.
II.3 Jaringan Feistel
Horst Feistel (1915-1990) adalah seorang peneliti non-militer pertama dalam bidang
kriptografi dan dapat dinilai sebagai pendiri dari dasar block cipher modern [EXH09].
Pada 1973, dia mempublikasikan sebuah artikel dengan judul “Cryptography and
Computer Privacy” dalam sebuah majalah bernama “Scientific American”1, yang di
dalamnya dia berusaha untuk mencakup aspek terpenting mesin enkripsi dan
memperkenalkan sesuatu yang sekarang dikenal dengan nama jaringan Feistel.
Pemodelan dengan Jaringan Feistel kemudian menjadi terkenal digunakan sebagai
basis untuk banyak skema algoritma enkripsi.
Gambar II-3 Skema Penyandian dari Feistel Cipher
1 Isi dari majalah “Scientific American” dapat dibaca di http://www.prism.net/user/dcowley/docs.html
II-6
Keterangan Gambar II-3:
1. Ln : bagian kiri dari blok plaintext yang akan dienkripsi.
2. Rn : bagian kanan dari blok plaintext yang akan dienkripsi.
3. Kn : kata kunci yang digunakan untuk enkripsi pada putaran ke-n.
4. F : fungsi transformasi, yang tidak perlu memiliki kebalikan sehingga
dapat berupa fungsi yang rumit.
Model jaringan Feistel pada Gambar II-3 adalah sebagai berikut [MUN06]:
1. Bagi blok yang panjangnya n bit menjadi dua bagian, kiri (L) dan kanan (R),
yang masing-masing panjangnya n/2 (hal ini mensyaratkan n harus genap).
2. Definisikan cipher blok berulang dimana hasil dari putaran ke-i ditentukan
dari hasil putaran sebelumnya, yaitu:
Li = Ri+1
Ri = Li – 1 ⊕ f(Ri – 1, Ki)
yang dalam hal ini,
i = 1, 2,… r (r adalah jumlah putaran).
Ki = upa-kunci (subkey) pada putaran ke-i
f = fungsi transformasi (di dalamnya terdapat fungsi substitusi,
permutasi, dan/atau ekspansi, kompresi).
II.4 Fungsi Hash SHA
Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya
sembarang, lalu mentransformasikannya menjadi string keluran yang panjangnya
tetap (umumnya berukuran jauh lebih kecil daripada ukuran string semula) [MUN06].
Tujuan dari fungsi hash [MUN06], yaitu:
1. Menjaga integritas data, dimana fungsi hash sangat peka terhadap perubahan
pesan.
2. Menghemat waktu pengiriman ketika melakukan pengecekan validitas sebuah
file dengan melakukan perbandingan message digest antara file salinan dengan
file asli.
II-7
3. Menormalkan panjang data yang beraneka ragam, misalkan penyimpanan
password. Password masukan user dapat beragam ukurannya, tetapi dengan
menggunakan fungsi hash, panjang message digest-nya akan selalu sama.
Terdapat beberapa fungsi hash yang ada [MUN06], yaitu:
1. MD2, MD4, MD5.
2. Secure Hash Function (SHA), yang terdiri dari SHA0, SHA1, dan SHA2
(memiliki varian berupa SHA224, SHA256, SHA384, dan SHA512).
3. Snefru.
4. N-hash.
5. RIPE-MD, dan lain-lain.
Fungsi hash SHA1 dikembangkan oleh National Institute of Standards and
Technology (NIST) dan National Security Agency (NSA) melalui publikasi Federal
Information Processing Standards (FIPS) 180: Secure Hash Standard (SHS) pada
Mei 1993. SHA1 digunakan untuk menghitung representasi singkat dari sebuah pesan
atau file [FAQ09]. Ketika sebuah pesan dengan panjang lebih kecil dari 264 bits
sebagai input, SHA1 menghasilkan sebuah keluaran yang dinamakan message digest
yang berukuran 160 bit. Setiap perubahan pada input akan menghasilkan perubahan
message digest dengan probabilitas tinggi. SHA1 dikatakan aman karena fungsi hash
ini secara penghitungan tidak dapat dicari sebuah pesan yang bersesuaian dengan
message digest yang diberikan.
II.5 Corrected Block Tiny Encryption Algorithm
Pada subbab ini, akan dibahas definisi, algoritma penyandian, dan detail sandi yang
akan digunakan dalam tugas akhir ini. Secara umum, algoritma yang digunakan
adalah block cipher.
II.5.1 Definisi
Corrected Block Tiny Encryption Algorithm, untuk selanjutnya disebut sebagai
XXTEA, adalah sebuah algoritma penyandian yang sederhana, tapi kuat yang berbasis
II-8
iterasi Feistel dan menggunakan banyak ronde untuk mendapatkan keamanan
[MOV08]. XXTEA dirancang berupa program kecil yang dapat berjalan pada banyak
mesin dan mengenkripsi dengan aman. Algoritma ini menggunakan banyak iterasi
dibandingkan program yang rumit sehingga algoritma ini dapat diterjemahkan ke
dalam banyak bahasa pemrograman dengan mudah.
XXTEA juga merupakan sebuah algoritma enkripsi efektif yang mirip dengan DES2
yang dapat digunakan untuk aplikasi web yang membutuhkan keamanan. Ketika
menggunakan algoritma ini, sebuah perubahan dari teks asal akan mengubah sekitar
setengah dari teks hasil tanpa meninggalkan jejak dimana perubahan berasal.
XXTEA beroperasi pada blok yang berukuran tetap yang merupakan kelipatan 32 bits
dengan ukuran minimal 64 bits. Jumlah dari putaran lengkap bergantung pada ukuran
blok, tetapi terdapat minimal 6 (bertambah terus hingga 32 untuk ukuran blok yang
lebih kecil). Algoritma ini menggunakan lebih banyak fungsi pengacakan yang
menggunakan kedua blok tetangganya dalam pemrosesan setiap kata dalam blok.
Untuk kemudahan penggunaan dan keamanan secara umum, XXTEA lebih tepat
digunakan ketika dapat dipakai untuk kondisi berikut:
1. Perubahan satu bit pada plaintext akan mengubah sekitar setengah dari total
bits dari seluruh blok tanpa meninggalkan jejak dimana perubahan dimulai.
2. Walaupun terdapat perubahan yang teratur pada plaintext (misalkan nomor
pesan), hanya pesan yang sama yang akan memberikan ciphertext yang sama
dan kebocoran informasi minimal.
3. Jika tidak memungkinkan untuk memasukkan pesan yang panjang, pesan
tersebut dapat dipecah menjadi beberapa bagian yang masing-masing
berukuran 60 kata.
2 Keterangan lebih lengkap mengenai DES dapat dibaca di http://csrc.nist.gov/publications/fips/fips46-
3/fips46-3.pdf
II-9
II.5.2 Algoritma Penyandian
Gambar II-4 Satu Iterasi dalam XXTEA
Keterangan simbol:
1. Xr, Xr-1, Xr+1 : blok plaintext, dimana r adalah urutan blok yang sedang
diacak.
2. q : jumlah iterasi yang sedang dilakukan.
3. DELTA : q dikalikan dengan konstanta yang bernilai 0x9E3779B.
4. Kr : blok kata kunci ke-r, dimana r sama dengan keterangan di
atas.
5. <<n : pergeseran bit ke kiri sebanyak n kali.
6. >>n : pergeseran bit ke kanan sebanyak n kali.
7. : operasi XOR.
8. : operasi penambahan.
II-10
Keterangan warna:
1. Kotak berwarna merah : input user.
2. Kotak berwarna hijau : output program.
Gambar II-4 Satu Iterasi dalam XXTEA menampilkan proses pengacakan yang
dilakukan pada satu iterasinya. Proses iterasi dalam XXTEA dilakukan dalam 2 kali
iterasi yang dilakukan secara bersarang. Pada iterasi teratas, iterasi dilakukan
sebanyak q, dimana q = 6 + 52/n
dengan n ≥ 1 dimana n adalah jumlah blok dari plaintext. Lalu, pada iterasi
selanjutnya, iterasi dilakukan sebanyak n kali.
Proses pengacakan yang dilakukan dalam satu iterasi XXTEA adalah sebagai berikut:
1. Algoritma akan mengacak blok ke-r dari plaintext.
2. Proses akan mengambil xr-1, xr+1, DELTA, dan kata kunci sebagai input.
3. Pengacakan pertama: xr-1<<2 di-XOR-kan dengan xr+1>>5.
4. Pengacakan kedua: xr-1>>3 di-XOR-kan dengan xr+1<<4.
5. Hasil yang didapat dari tahap 4 dan 5 ditambahkan.
6. Pengacakan ketiga: xr-1 di-XOR-kan dengan D yang merupakan perkalian
antara konstanta DELTA yang bernilai 0x9E3779B dengan jumlah iterasi
pertama yang telah dilakukan.
7. Pengacakan keempat: xr+1 di-XOR-kan dengan salah satu blok kata kunci,
yaitu blok ke-(r XOR D>>2).
8. Hasil yang didapat dari tahap ke 6 dan 7 ditambahkan.
9. Hasil yang didapat dari tahap 5 dan 8 di-XOR-kan.
10. Hasil yang didapat pada tahap 9 ditambahkan ke blok plaintext ke-r.
II.5.3 Detail Sandi
Tabel II-1 menjelaskan detail algoritma XXTEA secara singkat mengenai panjang
kata kunci, ukuran masing-masing blok, struktur algoritma, dan banyaknya ronde
dalam satu proses pengacakan.
II-11
Tabel II-1 Detail Sandi
No Variabel Keterangan
1 Panjang kunci 128 bits
2 Ukuran blok Tidak tetap, bergantung pada panjang teks asal
3 Struktur Jaringan Feistel
4 Ronde Tidak tetap, 6-32 ronde Feistel (sekitar 3-16
putaran) bergantung pada panjang blok.
II.6 Kata Kunci
Pada subbab ini, akan dibahas definisi kata kunci, kekuatan kata kunci, dan cara
pengukurannya. Semakin kuat kata kunci yang digunakan dalam enkripsi sebuah
plaintext, semakin sulit sebuah ciphertext untuk dipecahkan. Selain kerumitan
algoritma enkripsi yang digunakan, kerumitan kata kunci juga menentukan keamanan
ciphertext yang didapatkan.
II.6.1 Definisi
Kata kunci adalah sekumpulan karakter yang dimasukkan seorang pengguna untuk
mendapatkan akses ke sumber informasi yang diproteksi [MIC08]. Terdapat sebuah
dilema dalam pemilihan dan penggunaan kata kunci, dimana pengguna tidak mudah,
atau bahkan tidak mampu mengingat kata kunci yang kuat dan kata kunci yang
diingat justru kata kunci yang mudah ditebak.
Kata kunci yang baik harus mengandung karakter campuran atau karakter khusus, dan
tidak boleh mengandung kata-kata yang dapat ditemukan dalam kamus [LAW08].
Kata kunci dapat berupa gabungan huruf kapital atau huruf kecil. Sebuah teknik yang
bagus untuk memilih kata kunci adalah dengan menggunakan huruf pertama dari
sebuah frase, tapi jangan mengambil frase yang umum diketahui, seperti “An apple a
day keeps the doctor away” (Aaadktda). Contoh: ambil frase yang bersifat pribadi dan
tidak umum digunakan, seperti “My dog’s first name is Rex” (MdfniR). Selain itu,
kata kunci yang baik memiliki panjang minimal 8 (delapan) karakter dan harus
II-12
mengandung sedikitnya 2 (dua) karakter bukan huruf. Disarankan agar kata kunci
selalu diganti minimal sekali sebulan.
II.6.2 Pengukuran Kekuatan Kata Kunci
Melihat adanya sejumlah saran yang dapat digunakan dalam membangun kata kunci
yang baik, kata kunci dapat diukur derajat kekuatannya. Pengukuran kekuatan kata
kunci dilakukan dengan melakukan penilaian terhadap kata kunci masukan.
Terdapat sejumlah faktor penilaian yang dapat digunakan [GEE08], yaitu:
1. Panjang karakter kata kunci minimal 8.
2. Gunakan campuran huruf kapital atau huruf kecil.
3. Gunakan minimal 1 angka.
4. Gunakan karakter khusus (!,@,#,$,%,^,&,*,?,_,~).
5. Gunakan prinsip Leet, yaitu penggunaan karakter non-alfabet untuk
menggantikan huruf yang memiliki kemiripan yang dekat atau perubahan
pengucapan, seperti penggantian huruf “s” yang terakhir dengan “z” atau
“(c)ks” untuk “x” [NAT08].
Untuk masing-masing faktor penilaian di atas, diberikan sebuah nilai tambahan jika
faktor tersebut dipenuhi. Dengan menggunakan faktor-faktor penilaian di atas, sebuah
kata kunci masukan akan dinilai derajat kekuatannya.
II.7 Surat Elektronik
Surat elektronik adalah sebuah sistem komunikasi elektronik dunia yang di dalamnya
sebuah pengguna komputer dapat membuat pesan pada sebuah terminal yang nantinya
dapat diregenerasi di terminal penerima ketika penerima login [PRI09]. Sistem
pengiriman surat elektronik modern didasarkan pada model store-and-forward yang
di dalamnya server surat elektronik menerima, meneruskan, atau menyimpan pesan
atas nama pengguna yang hanya terkoneksi ke infrastruktur surat elektronik dengan
menggunakan komputer pribadinya.
II-13
Gambar II-5 Proses Pengiriman Surat Elektronik menjelaskan skema sederhana
proses pengiriman surat elektronik dari Alice sebagai pengirim sampai Bob sebagai
penerima.
Gambar II-5 Proses Pengiriman Surat Elektronik
Ketika Alice menekan tombol “Send” pada mail user agent (MUA)-nya, terjadi
tahapan berikut:
1. MUA memformat pesan menggunakan protokol berkaitan untuk dikirimkan ke
mail transfer agent (MTA) lokal, yang dimiliki oleh Internet Service Provider
(ISP) Alice.
2. MTA melihat alamat tujuan dalam surat elektronik, yang pada contoh di atas
adalah [email protected].
3. DNS server untuk domain b.org, yaitu ns.b.org, merespon dengan
memberikan daftar MX yang menampilkan server mail untuk domain tersebut,
yaitu mx.b.org, yang dimiliki oleh ISP Bob.
4. smtp.a.org mengirimkan pesan ke mx.b.org menggunakan protokol surat
elektronik yang akan dimasukan ke mailbox Bob.
5. Ketika Bob menekan tombol “Read”, MUA akan mengambil pesan tersebut.
II-14
II.8 MIME
MIME adalah format standar internet yang memperluas format surat elektronik untuk
mendukung [MHO09]:
1. Teks dalam set karakter selain ASCII, biasanya dalam format encoding
Base643.
2. Non-text attachments.
3. Badan pesan dalam banyak bagian.
4. Informasi header dalam non-ASCII set karakter.
Contoh surat elektronik dalam format MIME: MIME-version: 1.0 Content-type: multipart/mixed; boundary="frontier" This is a message with multiple parts in MIME format. --frontier Content-type: text/plain This is the body of the message. --frontier Content-type: application/octet-stream Content-transfer-encoding: base64 PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg== --frontier—
Keterangan:
1. Sebuah surat elektronik dapat dibangun dalam beberapa bagian yang
dinyatakan oleh “Content-type: multipart/mixed;” dan masing-
masing bagian dibatasi oleh sebuah boundary yang dinyatakan oleh
“boundary="frontier"”.
2. Bagian Content-type: text/plain This is the body of the message. --frontier
3 Keterangan mengenai Base64 dapat dibaca di referensi [AAR09].
II-15
menyatakan bagian body dari surat elektronik yang dibangun dalam tipe
text/plain.
3. Bagian selanjutnya “Content-type: application/octet-stream”
menyatakan attachment dari surat elektronik dalam bentuk binary file.
II.9 Mekanisme Add-on pada Mozilla Thunderbird
Pada subbab I.1 telah dijelaskan sebelumnya, add-on adalah sebuah fitur yang
disediakan pada Mozilla Thunderbird untuk memungkinkan developer menambah
fungsionalitas Thunderbird. Dalam pembangunannya, add-on dibagi menjadi 2 (dua)
bagian penting, yaitu modul antarmuka dan modul controller. Pertama, developer
membangun antarmuka add-on. Pembangunan antarmuka menggunakan bahasa XUL.
XUL adalah Extensible Markup Language (XML) grammar yang menyediakan
komponen dasar antarmuka, seperti button, menu, toolbar, tree, dan lain-lain. Aksi
user yang dikaitkan dengan fungsionalitas dibangun dengan menggunakan Javascript.
Untuk mengembangkan Thunderbird, pengembang memodifikasi antarmuka
Thunderbird dengan menambahkan atau memodifikasi komponen dasarnya.
Pengembang menambahkan komponen dasar dengan memasukan elemen DOM XUL
ke window Thunderbird dan memodifikasinya dengan menggunakan scripts dan event
handlers yang sesuai [DEV09]. Scripts dan event handlers dapat dibangun dengan
menggunakan bahasa C dan Javascript. Pada tugas akhir ini, scripts dan event
handlers dibangun dengan Javascript.