BAB 2 LANDASAN TEORI 2.1 Pengantar Kriptografi 2.1.1 Definisi dan Terminologi A. Definisi Kriptografi Kriptografi (cryptography) berasal dari BahasaYunani: “cryptós” artinya “secret” (rahasia), sedangkan “gráphein” artinya “writing” (tulisan). Jadi, kriptografi berarti “secret writing” (tulisan rahasia). Ada beberapa definisi kriptografi yang telah dikemukakan di dalam berbagai literatur. Schneier, Bruce dalam bukunya yang berjudul Applied Cryptography yang diterjemahkan oleh Munir, Rinaldi (2006) mendefinisikan Kriptografi sebagai “ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and sciene of keeping messages secure).” Sebagai perbandingan, selain definisi diatas terdapat pula definisi yang dikemukakan oleh Alfred, Paul dan Scott dalam bukunya Handbook of Applied Cryptography yang diterjemahkan oleh Rinaldi,Munir (2006) mendefinisikan Kriptografi sebagai “ilmu yang mempelajari teknik – teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, intergritas data, serta otentifikasi.” Kata “seni” di dalam definisi di atas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda - beda pada setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan mempunyai nilai estetika tersendiri sehingga kriptografi 9 berkembang menjadi sebuah seni merahasiakan pesan (kata “graphy” di dalam “cryptography” itu sendiri sudah menyiratkan sebuah seni). B. Terminologi Kriptografi Di dalam kriptografi kita akan sering menemukan berbagai istilah atau terminologi. Beberapa istilah yang penting untuk diketahui deberikan dibawah ini : 1. Pesan, Plainteks, dan Cipherteks Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext). Agar pesan tidak bisa dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut chiperteks (chipertext). 2. Pengirim dan penerima Pengirim adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima adalah entitas yang menerima pesan. Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit dan sebagainya. 3. Enkripsi dan dekripsi Proses menyandikan plainteks menjadi chiperteks disebut enkripsi. Sedangkan proses mengembalikan chiperteks menjadi plainteks semula dinamakan dekripsi. Plainteks Enkripsi Kunci Chipherteks Dekripsi Plainteks Kunci Gambar 2.1 Skema Enkripsi dan Dekripsi 10 4. Chiper dan kunci Algoritma kriptografi disebut juga chiper yaitu aturan untuk enciphering dan dechipering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yaitu himpunan yang berisi elemen – elemen plainteks dan himpunan yang berisi cipherteks. Enkripsi dan dekripsi adalah fungsi yang memetakan elemen – elemen antara kedua himpunan tersebut. 5. Sistem kriptografi Sistem kriptografi merupakan kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin dan kunci. 6. Penyadap Penyadap adalah orang yang berusaha mencoba menangkap pesan selama ditransmisikan dengan tujuan mendapatkan informasi sebanyak – banyaknya mengenai sistem kriptografi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan cipherteks. 7. Kriptanalisis dan kriptologi Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. Kriptologi adalah studi mengenai kriptanalisis dan kriptanalis. 2.1.2 Tujuan Kriptografi Ada tiga tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu : 11 1. Kerahasiaan (confidentiality), adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi. 2. Integritas data (data integrity), 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 penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya. 3. Autentikasi (authentication), adalah berhubungan dengan identifikasi/pengenalan, 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. 2.1.3 Sejarah Kriptografi Kriptografi sudah digunakan sekitar 40 abad yang lalu oleh orang – orang Mesir untuk mengirim pesan ke pasukan yang berada di medan perang dan agar pesan tersebut tidak terbaca oleh pihak musuh walaupun pembawa pesan tersebut tertangkap oleh musuh. Sekitar 400 SM, kriptografi digunakan oleh bangsa Spartan dalam bentuk sepotong papirius atau perkamen yang dibungkus dengan batang kayu. Pada zaman Romawi, Julius Caesar telah menggunakan teknik kriptografi yang sekarang dianggap kuno dan sangat 12 mudah dibobol untuk keperluan militernya. Metode yang digunakan oleh Julius Caesar ini sering dianggap awal dari kriptografi. Informasi lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi mulai dari penggunaan kriptografi oleh bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph yang tidak standard pada piramid) hingga penggunaan kriptografi pada abad ke-20. Sampai pada akhir Perang Dunia I, kriptografi merupakan disiplin ilmu matematika yang hanya dipelajari oleh orang-orang tertentu saja. Penelitian bidang ini tidak pernah sampai kepada umum. Kriptografi juga digunakan di kalangan militer. Pada perang dunia ke 2, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan Enigma. Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit. Namun Enigma cipher berhasil dipecahkan oleh pihak sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek Perang Dunia II. Perkembangan komputer dan sistem komunikasi pada tahun 60-an berdampak pada permintaan dari sektor-sektor privat sebagai sarana untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamanan. Dimulai dari usaha Feistel pada IBM di awal tahun 70-an dan mencapai puncaknya pada 1977 dengan pengangkatan DES (Data Encryption Standard) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. 13 Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Whitfield Diffie dan Martin Hellman mempublikasikan New Directions in Cryptography. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru dan jenius untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskret. Walaupun penulis tesis tersebut tidak mempunyai praktek yang nyata akan bentuk skema enkripsi kunci publik pada saat itu, tetapi ide tersebut memicu minat dan aktivitas yang besar dalam komunitas kriptografi. Pada tahun 1978, Rivest, Shamir, dan Adleman menemukan enkripsi kunci publik yang pertama dan sekarang ini dikenal dengan nama RSA (Rivest, Shamir, and Adleman). Skema RSA didasarkan pada permasalahan matematika sulit yang terdiri dari pemfaktoran terhadap bilangan besar. Skema kunci publik lainnya yang kuat dan praktis ditemukan oleh El Gamal. Skema ini juga didasarkan masalah logaritma diskrit. 2.1.4 Kriptografi Kunci Simetri dan Asimetri Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi dapat dibedakan menjadi kriptografi kunci simetri (symmetric – key cryptography) dan kriptografi kunci asimetri (asymmetric – key cryptography). Pada sistem kriptografi kunci – simetri, kunci enkripsi sama dengan kunci untuk dekripsi, oleh karena itu dinamakan kriptografi simetri. Sistem kriptografi kunci – simetri (atau disingkat menjadi “kriptografi simetri” saja), mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kuncinya. Kriptografi simetri merupakan satu – satunya jenis kriptografi yang dikenal dalam catatan sejarah hingga 14 tahun 1976. Ada puluhan algoritma kriptografi yang termasuk ke dalam sistem kriptografi simetri, diantaranya adalah Data Encryption Standard (DES), RC2, RC4, RC5, RC6, International Data Encrytion Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), dan lain – lain. Plainteks, P Enkripsi Chiperteks, C Dekripsi Ek (P) = C Dk (C) = P Kunci Privat, K Kunci Privat, K Plainteks,P Gambar 2.2 Skema proses enkripsi dan dekripsi kriptografi simetri Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih 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). Jika kunci untuk enkripsi tidak sama dengan kunci untuk dekripsi, maka kriptografinya dinamakan sistem kriptografi asimetri. Nama lainnya adalah kriptografi kunci publik (public – key cryptography), sebab kunci untuk enkripsi tidak rahasia dan dapat diketahui oleh siapa pun (diumumkan ke publik), sementara kunci untuk dekripsi hanya diketahui oleh si penerima pesan (karena itu rahasia). Bahasan mengenai kriptografi kunci publik akan dibahas pada bagian selanjutnya. 15 2.2 Kriptografi Kunci Publik 2.2.1 Konsep Kriptografi Kunci Publik Konsep kriptografi kunci publik sederhana dan elegan. Pada kriptografi kunci publik, setiap pengguna memiliki sepasang kunci, satu kunci untuk enkripsi dan satu kunci untuk dekripsi. Kunci untuk enkripsi diumunkan kepada publik oleh karena itu tidak rahasia sehingga dinamakan kunci publik (public key), disimbolkan dengan e. Kunci untuk dekripsi bersifat rahasia sehingga dinamakan kunci privat (private key), disimbolkan dengan d. Karena kunci enkripsi ≠ kunci dekripsi itulah maka kriptografi kunci publik disebut juga kriptografi asimetri. Enkripsi Plainteks, m Ee (m) = c Kunci publik,e Dekripsi Cipherteks, c Plainteks,m Dd (c) = m Kunci privat, d Gambar 2.3 Skema kriptografi Asimetri Misalkan E adalah fungsi enkripsi dan D adalah fungsi dekripsi. Misalkan (e,d) adalah pasangan kunci untuk enkripsi dan dekripsi sedemikian sehingga: dan (2.1) Untuk suatu plainteks m dan cipherteks c. Kedua persamaan ini menyiratkan bahwa dengan mengetahui e dan c, maka secara komputasi hampir tidak mungkin menemukan m. Asumsi lainnya, dengan mengetahui e, secara komputasi hampir tidak mungkin menurunkan d. digambarkan sebagai 16 fungsi pintu kolong (trapdoor) satu arah dengan d adalah informasi trapdoor yang diperlukan untuk menghitung fungsi inversnya, D, yang dalam hal ini membuat proses dekripsi dapat dilakukan. 2.2.2 Sejarah Kriptografi Kunci Publik Sebenarnya penemu pertama kriptografi asimetri adalah James H Ellis, Clifford Cocks, dan Malcolm Williamson di Inggris pada awal 1970. Mereka menemukan mekanisme pertukaran kunci, yang kemudian dikenal dengan nama algoritma pertukaran kunci Diffie – Hellman. Sayangnya algoritma mereka tersebut dirahasiakan dan tidak pernah dipublikasikan hingga tahun 1997. Sistem kriptografi asimetri dipublikasikan pertama kali pada tahun 1976 oleh Whitfield Diffie dan Martin Hellman, dua orang ilmuan dari Stanford University melalui makalah pertamanya di jurnal IEEE yang berjudul “New Directions in Cryptography”. Makalah mereka membahas distribusi kunci rahasia pada saluran komunikasi publik (yang tidak aman) dengan metode pertukaran kunci yang belakangan dikenal dengan nama algoritma pertukaran kunci Diffie – Hellman. Pada tahun 1977, generalisasi dari ide Cocks ditemukan kembali oleh tiga orang ilmuwan dari MIT, yaitu Rivest, Shamir, dan Adleman. Algoritma enkripsi yang mereka buat dikenal dengan nama RSA. Akhirnya pada tahun 1976 berbagai algoritma enkripsi, tanda tangan digital, pertukaran kunci, dan teknik lain dikembangkan dalam bidang kriptografi kunci publik, misalnya algoritma ElGamal untuk enkripsi dan tanda tangan digital dan algritma DSA untuk tanda tangan digital. Pada tahun 1980 Neal Koblitz memperkenalkan 17 elliptic – curve cryprtography sebagai keluarga baru yang analog dengan algorita kriptografi kunci publik. Hingga saat ini kriptografi kunci publik terus berkembang pesat seiring dengan aplikasinya yang begitu luas. 2.3 Teori Bilangan 2.3.1 Pembagi Bersama Terbesar Misalkan a dan b adalah dua buah bilangan bulat tidak nol. Pembagi bersama terbesar (PBB-Greatest Common Divisor atau gcd) dari a dan b adalah bilangan bulat terbesar d sedemikian sehingga d|a dan d|b. Dalam hal ini kita nyatakan bahwa PBB(a,b)=d. 2.3.2 Relatif Prima Dua buah bilangan bulat a dan b dikatakan relatif prima jika PBB(a,b)=1. Jika a dan b relatif prima, maka terdapat bilangan bulat m dan n sedemikian sehingga 1 (2.2) 2.3.3 Aritmatika Modulo Misalkan a adalah bilangan bulat dan m adalah bilangan bulat>0. Operasi a mod m (dibaca “a modulo m”) memberikan sisa jika a dibagi dengan m. Bilangan m disebut modulus atau modulo, dan hasil aritmetika modulo m terletak di dalam himpunan 0,1,2, … , 1. 2.3.4 Kekongkruenan Definisi kekonkruenan adalah sebagai berikut : misalkan a dan b adalah bilangan bulat dan m adalah bilangan > 0, maka jika m 18 habis membagi maka ditulis . Jika a tidak konkruen dengan b dalam modulus m, / . Kekonkruenan dapat pula dituliskan dalam hubungan (2.3) yang dalam hal ini k adalah bilangan bulat. 2.3.5 Fungsi Totient Euler Fungsi Totient Euler mendefinisikan untuk 1 yang menyatakan jumlah bilangan bulat positif < n yang relatif prima dengan n . jika n prima, maka setiap bilangan bulat yang lebih kecil dari n realtif prima terhadap n. Dengan kata lain, 1 hanya jika n prima. 2.4 Metode RSA Dari sekian banyak algoritma kriptografi kunci publik yang pernah dibuat, algoritma yang paling populer adalah RSA. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron (R)ivest, Adi (S)hamiir dan Leonard (A)dleman. Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor – faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan menjadi faktor – faktor prima belum ditemukan algoritma yang manjur, maka selama itu pula keamanan algoritma RSA tetap terjamin. Algoritma RSA memiliki besaran – besaran sebagai berikut : 1. p dan q bilangan prima 2. 3. . (rahasia) (tidak rahasia) 1 1 (rahasia) 19 4. (kunci enkripsi) (tidak rahasia) 5. (kunci dekripsi) (rahasia) 6. (plainteks) (rahasia) 7. (cipherteks) (tidak rahasia) 2.4.1 Perumusan Algoritma RSA Algoritma RSA didasarkan pada teorema Euler yang menyatakan bahwa : 1 (2.4) Dengan syarat : 1. a adalah bilangan bulat yang harus relatif prima terhadap n. 1 2. , ,…, 1 1 1 1 2 … 1 adalah faktor prima dari . , yang dalam hal ini adalah fungsi yang menentukan berapa banyak dari bilangan – bilangan 1,2,3....,n yang relatif prima terhadap n Berdasarkan sifat untuk k bilangan bulat 1, maka persamaan (2.4) dapat ditulis menjadi 1 Atau 1 (2.5) Bila a diganti dengan m, maka persamaan (2.5) dapat ditulis menjadi 1 (2.6) 20 Berdasarkan sifat , maka persamaan (2.6) dikali dengan m menjadi: (2.7) yang dalam hal ini m menjadi relatif prima terhadap n. Misalkan e dan d dipilih sedemikian sehingga : . 1 (2.8) Atau . 1 (2.9) gantikan (2.9) ke dalam persamaan (2.7) menjadi : . (2.10) Persamaan (2.9) dapat ditulis kembali menjadi: (2.11) Yang artinya, perpangkatan m dengan e diikuti dengan perpangkatan dengan d mengkasilkan kembali m semula. Berdasarkan persamaan (2.11), maka enkripsi dan dekripsi dirumuskan sebagai berikut: (2.12) (2.13) Karena . . , maka enkripsi diikuti dengan dekripsi ekivalen dengan dekripsi diikuti enkripsi : (2.14) 21 Oleh karena untuk sembarang bilangan bulat ,maka tiap plainteks m, m+n, m+2n,..., menghasilkan cipherteks yang sama. Dengan kata lain, transformasinya dari banyak ke satu. Agar informasinya satu ke satu, maka m harus dibatasi dalam himpunan 0,1,2, … , 1 sehingga enkripsi dan dekripsi tetap benar seperti persamaan (2.12) dan (2.13). 2.4.2 Algoritma Membangkitkan Pasangan Kunci 1. Pilih dua buah bilangan prima sembarangan, p dan q. . 2. Hitung (sebaiknya p ≠ q, sebab jika p=q maka sehingga p dapat diperoleh dengan menarik akar pangkat dari n). 1 3. Hitung 1 . 4. Pilih kunci publik, e, yang relatif prima terhadap . 5. Bangkitkan kunci privat dengan menggunakan persamaan (2.8), yaitu . 1 . Perhatikan ekivalen dengan . bahwa . 1 1, sehingga secara sederhana d dapat dihitung dengan (2.15) Hasil dari algoritma diatas : Kunci publik adalah pasangan (e,n) Kunci privat adalah pasangan (d,n) Catatan : n tidak bersifat rahasia, sebab ia diperlukan pada perhitungan enkripsi/ dekripsi. 22 2.4.3 Algoritma Enkripsi/ Dekripsi a. Enkripsi 1. Ambil kunci publik penerima pesan, e, dan modulus n. 2. Nyatakan plainteks m menjadi blok – blok , , …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam selang 0, 1. 3. Setiap blok m, dienkripsi menjadi blok dengan rumus . b. Dekripsi Setiap blok ciperteks didekripsikan kembali menjadi blok dengan menggunakan . 2.5 Fungsi Hash Fungsi Hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan mengonversinya menjadi string keluaran yang panjangnya tetap (fixed) (umumnya berukuran jauh lebih kecil daripada ukuran string semula). Jika string menyatakan pesan (message), maka sembarang pesan M berukuran sembarang dikompresi oleh fungsi Hash H melalui persamaan : (2.16) Keluaran fungsi Hash disebut juga nilai Hash (Hash-value) atau pesan-ringkas (message digest). Pada persamaan diatas, h adalah nilai Hash atau message digest dari fungsi H untuk pesan M. Fungsi Hash satu-arah adalah fungsi Hash yang bekerja dalam satu arah: pesan yang sudah diubah menjadi pesan-ringkas tidak dapat dikembalikan lagi 23 menjadi pesan semula. Contoh fungsi Hash satu-arah adalah MD5 dan SHA. MD5 menghasilkan pesan-ringkas yang berukuran 128 bit, sedangkan SHA menghasilkan pesan-ringkas yang berukuran 160 bit. 2.5.1 Sifat – sifat Fungsi Hash Sifat – sifat fungsi Hash satu arah adalah sebagai berikut : 1. Fungsi H dapat diterapkan pada blok data berukuran berapa saja. 2. H menghasilkan nilai (h) dengan panjang tetap (fixed-length output). 3. H(x) mudah dihitung untuk setiap nilai x yang diberikan. 4. Untuk setiap h yang dihasilkan, tidak mungkin dikembalikan nilai x sedemikian sehingga H(x)=h. Itulah sebabnya fungsi H dikatakan fungsi Hash satu – arah (one-way Hash function). 5. Untuk setiap x yang diberikan, tidak mungkin mencari y≠x sedemkian sehingga H(y)=H(x). 6. Tidak mungkin mencari pasangan x dan y sedemikian sehingga H(x) = H(y). Masukan fungsi Hash adalah blok pesan (M) dan keluaran dari Hashing blok pesan sebelumnya, , Mi Fungsi Hash satu arah (2.17) hi hi-1 Gambar 2.4 Skema Fungsi Hash satu arah 24 2.5.2 Secure Hash Algorithm (SHA) NIST (National Institute of Standard and Technology) bersama NSA (National Security Agency) mendesain SHA untuk digunakan sebagai komponen Digital Signature Standard (DSS). Standar Hash adalah Secure Hash Standard (SHS) dengan SHA sebagai algoritma yang digunakan. Dapat disimpulkan SHS adalah standar sedangkan SHA adalah algoritma. Standar menetapkan SHA yang diperlukan untuk menjamin keamanan DSA. Ketika pesan dengan sembarang panjang < 264 bit dimasukkan, SHA menghasilkan 160 bit keluaran yang disebut message digest (MD). MD ini kemudian dimasukkan ke dalam DSA, yang menghitung tanda tangan digital untuk pesan tersebut. Penandantanganan MD (dan bukannya penandatanganan secara langsung) sering kali meningkatkan efisiensi proses karena MD biasanya jauh lebih kecil dibanding pesan aslinya. MD pesan yang sama seharusnya dapat diperoleh oleh pemeriksa tanda tangan ketika menerima pesan dari pengirim dengan cara memasukkan pesan tersebut ke fungsi Hash SHA. SHA dikatakan aman karena didesain supaya secara matematis tidak dimungkinkan untuk mendapatkan pesan aslinya bila diberikan Hashnya atau tidak mungkin mendapatkan dua pesan yang berbeda yang menghasilkan MD yang sama. SHA dibuat berdasarkan rancangan yang serupa dengan MD4 yang dibuat oleh Prof. Ronald L. Rivest dari MIT. SHA menghasilkan keluaran sidik jari 160-bit, lebih panjang dari MD5. Ketiga algoritma RSA adalah struktur yang berbeda dan unggul seperti SHA-0, SHA-1, dan SHA-2. SHA-2 menggunakan algoritma identik dengan variable 25 digest ukuran yang terkenal sebagai SHA-224, SHA-256, SHA-384 dan SHA-512. 2.5.2.1 Cara Kerja SHA Cara kerja SHA (Secure Hash Algorithm) dijelaskan sebagai berikut : 1. Mula – mula pesan diberi tambahan untuk membuat panjangnya menjadi kelipatan 512 bit (L x 512). 2. Jumlah bit data asal adalah K bit. Tambahkan bit ‘1’ kemudian tambahkan bit ‘0’ secukupnya sampai sampai 64 bit kurangnya dari kelipatan 512 (512-64=448), yang disebut juga sebagai kongruen dengan 448 ( mod 512 ). 3. Tambahkan 64 bit yang menyatakan panjang pesan sebelum diberi tambahan. 4. Pesan dibagi – bagi menjadi blok – blok berukuran 512 bit dan setiap bit diolah. Keluaran setiap blok digabungkan dengan keluaran blok berikutnya, sehingga diperoleh digest. 2.6 Tanda Tangan Digital 2.6.1 Konsep Tanda Tangan Digital Fungsi tanda tangan pada dokumen kertas juga diterapkan untuk otentikasi pada data digital seperti pesan yang dikirm melalui saluran komunikasi dan dokumen elektronis yang disimpan di dalam memori komputer. Tanda tangan pada data digital disebut tanda-tangan digital (digital signature). Yang dimaksud dengan tanda-tangan digital di sini bukanlah tanda tangan yang di-dijitasi dengan alat scanner, tetapi suatu nilai 26 kriptografis yang bergantung pada pesan dan pengirim pesan (hal ini kontras dengan tanda tangan pada dokumen kertas yang bergantung hanya pada pengirim dan selalu sama untuk semua dokumen). Dengan tanda tangan digital, maka integritas data dapat dijamin. Menandatangani pesan dapat dilakukan dengan salah satu dari dua cara, yaitu enkripsi pesan dimana pengenkripsian pesan dengan sendirinya juga menyediakan ukuran otentikasi, pesan yang terenkripsi sudah menyatakan bahwa pesan tersebut telah ditandatangani. Cara yang lainnya adalah tanda tangan dengan fungsi Hash. Tanda tangan dibangkitkan dari Hash terhadap pesan. Nilai Hash adalah kode ringkas dari pesan. Signer Verifier Message Message Message Signature Signature Message Fungsi Hash Fungsi Signature Message Digest (MD) Secret key Enkripsi Signature Dekripsi Message Digest (MD) Public key ? = Message Digest (MD’) Gambar 2.5 Proses Penandatanganan dan Verifikasi Teknik yang umum digunakan untuk membentuk tanda-tangan digital adalah dengan fungsi Hash dan melibatkan algoritma kriptografi kunci- 27 publik. Mula-mula pesan M ditransformasi oleh fungsi Hash H menjadi pesan ringkas h. Pesan ringkas tersebut dienkripsi dengan kunci privat (SK) pengirim pesan: (2.18) Hasil enkripsi (S) inilah yang disebut tanda tangan digital. Tanda-tangan digital dapat ditambahkan (append) pada pesan atau terpisah dari pesan dan dikirim secara bersamaan. 2.6.2 Tanda Tangan Digital dengan menggunakan RSA Langkah – langkah penandatanganan : 1. Pengirim menghitung nilai Hash dari pesan M yang akan dikirim, misalkan nilai Hash dari M adalah h. 2. Pengirim mengenkripsi h dengan kunci privatnya menggunakan persamaan enkripsi RSA : (2.19) yang dalam hal ini SK adalah kunci privat pengirim dan n adalah modulus ( , p dan q adalah dua buah bilangan prima). 3. Pengirim mentransmisikan ke penerima. Langkah – langkah pemverifikasian : 1. Penerima menghitung nilai Hash dari pesan M yang akan dikirim, misalkan nilai Hash dari M adalah h’. 2. Penerima melakukan dekripsi terhadap tanda tangan S dengan kunci publik si pengirim menggunakan persamaan dekripsi RSA: 28 (2.20) 3. Penerima membandingkan h dengan h’. Jika maka tanda tangan digital adalah otentik. Jika tidak sama, maka tanda tangan tidak otentik sehingga pesan dianggap tidak asli lagi atau pengirimnya bukan orang sebenarnya. 2.7 World Wide Web (WWW) Menurut Shalahuddin & Rosa dalam bukunya yang berjudul Java di Web [p:4-7], World Wide Web biasa disebut dengan web merupakan suatu sistem yang iterlinked (kumpulan link atau saluran yang saling terhubung), akses dokumen hypertext melalui internet. 2.7.1 Hypertext Transfer Protocol (HTTP) HTTP (Hypertext Transfer Protocol) merupakan aturan pengiriman informasi berupa hypertext (teks pada komputer yang memungkinkan user saling mengirimkan informasi (request-respon)). HTTP (Hypertext Transfer Protocol) adalah protokol atau aturan standar untuk mengakses dokumen HTML (Hypertext Markup Language) pada web. HTTP dijalankan dengan cara klien mengirimkan permintaan (request) kepada server dan server membahas pemintaan klien dengan respon yang diminta klien. Request in HTTP Origin Server (HTML) Response in HTTP 2 29 Gambaar 2.6 Ilustraasi Client - Server URL atauu Universal Resource Locator L adallah alamat lookasi dari fiile yangg ingin diaksses. Pengakssesan web dii internet meenggunakann URL dengaan mengggunakan prrotokol HTT TP misalnya http://www..google.com. Port standdar dari protokol p HT TTP adalah 880, jika portt yang digunnakan bukan n port standaar, makaa port akan ditulis pada URL misalnya http:// //localhost:8080/. Dengaan mengggunakan URL U kita dappat mengaksses file yangg menghasillkan tampilaan web pada p kompu uter klien denngan menggunakan web browser. Gambar 2..7 Ilustrasi C Client – Servver via HTTP P [www3.ntu u.edu.sg] URL L berbeda dengan domainn (domain-nname). Pada URL, protokol http haruus disebbutkan sedan ngkan pada domain tidaak disebutkann misalnya jika j URL-nyya adalaah http://ww ww.google.coo.id maka domainnya d adalah www w.google.co.id dan sebenarnya s y yang terdafttar adalah go oogle.co.id. Oleh karenaa itu, kita bisa mem mbuka halam man google hanya dengann menggetikan www.gooogle.co.id ataau hanyya google.co..id. 30 2.7.2 Aplikasi Web Aplikasi web merupakan halaman dinamis yang mengizinkan interaksi dengan user (user melakukan sesuatu). Interaksi user dengan aplikasi web misalnya user mengeklik sebuah tombol dan warna latar belakang web berubah. Aplikasi web biasanya dibuat dengan menggunkan JavaScript, aplikasi flash, atau applet pada Java. Salah satu diantara sekian banyak aplikasi web yang ada antara lain adalah Webmail. Dengan adanya aplikasi Webmail maka perpindahan informasi semakin lebih mudah dan cepat. 2.7.2.1 Webmail Menurut Sanjaya, Budi dalam artikelnya yang berjudul Webmail yang dinamakan dengan Webmail adalah klien email yang menggunakan halaman Web sebagai media untuk mengelola email di sisi klien. Sesuai dengan sifat Aplikasi Web, pemakai Webmail tidak perlu melakukan instalasi perangkat lunak dan cukup mengisi sangat sedikit konfigurasi. Dengan kemudahan akses halaman Web dari banyak tempat, Webmail menjadi lebih disukai lagi terutama bagi mereka yang sering berganti-ganti komputer untuk akses Internet. Selanjutnya dengan menginstall aplikasi tanda tangan digital maka webmail tersebut akan memiliki suatu fasilitas untuk pembubuhan tanda tangan digital. Dengan adanya aplikasi tanda tangan digital maka perpindahan informasi dari Webmail dapat dijaga keamanan dan integritas datanya. 31 2.7.3 Web Client (Browser) Web client atau biasa disebut web browser merupakan suatu perangkat lunak yang dijalankan pada komputer pemakai (user) yang menampilkan dokumen atau informasi web yang diambil dari web server. Contoh dari web browser adalah internet explorer, Mozilla Firefox, dan Opera. 2.7.4 Web Server Web server merupakan suatu perangkat lunak yang dijalankan pada komputer server dan berfungsi agar dokumen web yang disimpan di server dapat diakses oleh pemakai (user) internet seperti misalnya xampp. 2.7.5 Situs Web / Homepage Web site adalah informasi di world wide web yang disimpan dalam file yang berbeda – beda sebagai halaman web. Homepage merupakan halaman awal dari sebuah situs web. 2.7.6 Web Service Web service merupakan suatu sistem yang menyediakan pelayanan yang dibutuhkan oleh klien. Klien dari web service tidak hanya berupa aplikasi web, tapi juga bisa sebuah aplikasi enterprise. Jadi web service tidak sama dengan web server, bahkan sebuah aplikasi web pada web server dapat menjadi klien dari web service. Pelayanan yang diberikan web service bisa berupa XML yang berisi data yang dibutuhkan klien. Web service tidak menampilkan sebuah halaman web, tapi hanya memberikan pelayanan permintaan klien yang memiliki izin akses terhadap pelayanan yang diminta. 32 2.7.7 Web Hosting Layanan web hosting mengizinkan perorangan atau organisasi membuat sebuah website yang dapat diakses melalui world wide web. Web hosts merupakan organisasi yang menyediakan tempat server-nya untuk perorangan atau organisasi meletakkan semua file website-nya dan menyediakan konektivitas dengan internet agar dapat diakses dengan menggunakan domain yang telah didaftarkan dan nama sebuah domain tidak boleh sama persis seperti halnya alamat rumah, walaupun sama – sama beralamat di jalan Jendral Sudirman nomor 3, tapi jika kotanya beda maka rumah yang dimaksud juga berbeda. Jika pada domain misalnya example.com akan berbeda dengan example.net 2.8 Pengenalan Java Java menurut definisi dari Sun adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada komputer standalone ataupun pada lingkungan jaringan. Java 2 adalah generasi kedua dari Java Platform. Java berdiri diatas sebuah mesin interpreter yang diberi nama Java Virtual Machine (JVM). JVM inilah yang akan membaca bytecode dalam file .class dari suatu program sebagai representasi langsung program yang berisi bahasa mesin. Oleh karena itu, bahasa Java disebut sebagai bahasa pemrogram yang portable karena dapat dijalankan pada berbagai sistem operasi, asalkan pada sistem operasi tersebut terdapat JVM. Agar sebuah program Java dapat dijalankan, maka file dengan ekstensi .Java harus dikompilasi menjadi file bytecode. Untuk menjalankan bytecode tersebut dibutuhkan JRE (Java Runtime Environment) yang memungkinkan pemakai untuk 33 menjalankan program Java, hanya menjalankan, tidak untuk membuat kode baru lagi. JRE berisi JVM dan library Java yang digunakan. Java memiliki bebrapa versi library atau teknologi yang disebut juga sebagai edisi dari bahasa pemrograman Java. Tiga edisi utama dari library tersebut adalah Micro, Standard, dan Enterprise. J2ME (Java2 Micro Edition) digunakan pada device tertentu sperti pagers dan mobile phone. J2SE (Java2 Standard Edition) merupakan edisi library yang dirancang untuk membuat aplikasi dekstop atau applet pada web browser. J2EE (Java2 Enterprise Edition) merupakan edisi library yang dirancang untuk membuat sebuh aplikasi enterprise yang memerlukan atarmuka dengan sumber data (data source) atau dapat pula dikatakan bahwa J2EE adalah kelompok yang lebih besar dengan J2SE didalamnya. 2.8.1 Sekilas Java di Web Java baik untuk digunakan di web karena Java merupakan bahasa pemrograman yang sedang berkembang pada saat ini dan memiliki prospek mengenai perkembangannya ke depan. Di samping itu, Java menyediakan user intrface toolkit (Swing) yang lengkap, fasilitas penggunaan grafik (API Java 2D), pengaksesan layanan pada desktop seperti mencetak dokumen dan pengontrolan browser, dan solusi deployment klien (Java Web Start). Teknologi Java yang dapat digunakan untuk web adalah applet, servlet dan JavaServer Pages (JSP). Applet digunakan untuk membuat sebuah aplikasi seperti halnya aplikasi desktop yang dijalankan di web. Servlet merupakan bagian dari J2Eeyang memang didedikasikan untuk Java di web. Servlet dapat menampilkan halaman web menggunakan HTML namun pemrosesan aksi pada web menggunakan bahasa pemrograman Java. Servlet 3 34 mengggunakan seeluruh pustakka pengembbangannya, SSun mengeluuarkan sebuaah teknoologi yang dibuat d di atas servlet yaiitu teknologii JSP untuk memudahkaan progrramer yang tidak terbiaasa dengan Java J membuuat halamann web dengaan Java. Java meruupakan teknoologi yang memerlukan m n sebuah virrtual machinne. Olehh karena itu dibutuhkan d sspesifikasi server yang ccukup memaadai jika inggin mengggunakan Jaava di web. 2.8.22 Komponen n Web Komponeen web di JJ2EE dapat berupa b servlet atau jsp. Servlet ialaah kelass – kelas baahasa pemroograman Javva yang seccara dinamiss memperoses perm mintaan (reqquest) dan membangkiitkan responns. JSP iallah dokumeen berbaasis teks yan ng dieksekussi sebagai seervlet, tetapi mengizinkaan pendekataan lebih h alami untukk membuat isi i statis. Gambar 2.8 J2EE Servver dan kontaainer [www..emeraldinsight.com] 2.8.33 Keunggulaan Java Dengan menggunaka m an bahasa pemrograman p n Java, Sun n Microsysteem mem mbangun sebbuah bahasaa pemrogram man yang bagus untu uk digunakaan, karenna mempunyyai keunggullan – keungggulan sebagaai berikut : 35 • Java dan Powerful. Para desainer program Java membuat bahasa program Java dan API-nya untuk bisa dengan mudah dipelajari dan digunakan, dibandingkan dengan bahasa seperti C dan C++. Sintaks dari bahsa Java berdasarkan pada sintaks dari bahasa C. • Network – savvy. Keunggulan lain dari Java yaitu fitur penyedia layanan networking dan pendistribusian objek dalam suatu environment. Package yang disebut Java.net membantu dalam pemrograman jaringan. Dengan demikian, pembuatan program yang menggunakan network akan menjadi lebih mudah. • Secure. Menggunakan browser yang kompatibel dengan Java. Seseorang dapat dengan mudah men-download applet Java, tanpa harus mencemaskan serangan virus dan malicious intent. Java menggunakan proteksi ini dengan cara confining sebuah program Java. • Interpreted. Java platform compiler menerjemahkan Java source code menjadi bytecode. Java interpreter akan memproses bytecode, bukan source code sewaktu program running. • Distributed. Java sangat berdaya guna untuk membangun aplikasi terdistribusi seperti cluster dan Grid computing. • Platform Independent. Program Java yang Anda jalankan di Windows dapat dijalankan/ kompilasi di sistem operasi Linux atau hardware yang berbeda.