BAB 2 LANDASAN TEORI
2.1
Kriptografi Pengertian Dasar Suatu pesan yang tidak disandikan disebut sebagai plaintext atau dapat disebut juga sebagai cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext disebut encryption atau encipherment. Sedangkan proses untuk mengubah ciphertext kembali ke plaintext disebut decryption atau decipherment. Cryptography adalah suatu ilmu atau seni mengamankan pesan, dan dilakukan oleh cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst. Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan transformasi pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan. Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut : EK(M)=C (Proses Enkripsi) DK(C)=M (Proses Dekripsi) Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan
8 dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya. Keamanan suatu pesan tergantung pada kunci atau kunci-kunci yang digunakan, dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma yang digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk yang menggunakan algoritma tersebut dapat diproduksi massal. Tidak menjadi masalah apabila seseorang mengetahui algoritma yang digunakan. Selama ia tidak mengetahui kunci yang dipakai, ia tetap tidak dapat membaca pesan.
2.2
Algoritma Enkripsi RSA RSA adalah salah satu dari public key criptosystem yang sangat sering dipakai. Enkripsi dan dekripsi data model ini terletak pada kesulitan untuk memfaktorkan modulus n yang sangat besar. Besarnya bilangan yang digunakan mengakibatkan lambatnya digunakan untuk memberikan privasi terhadap keaslian suatu data digital. Keamanan operasi yang melibatkan algoritma RSA ini. Dibandingkan dengan algoritma private key data encription standard (DES), RSA lebih lambat pada saat implementasi terhadap hardware. Di tahun 1978, Rivest, Shamir dan Adleman membuat sebuah algoritma untuk teori penomoran pada sebuah public key cryptosystem, algoritma ini dikenal dengan RSA criptosystem. Pada perkembangannya RSA banyak digunakan karena kemudahannya.
9 a. Contoh Permasalahan
Gambar 2.1 Contoh kasus Dalam berkomunikasi menggunakan jaringan internet, lubang keamanan menjadi masalah serius karena perkembangan e-mail, e-banking, e-business dan jenis komunikasi lainnya makin pesat untuk mentransfer data penting. Sebagai contoh kasus Alice dan Bob yang ingin berkomunikasi dengan privasi tinggi, pada kenyataannya ada pihak ketiga yang dapat mengakses kemunikasi mereka, dalam hal ini Eve. 1. Enkripsi Simetrik Salah satu solusi untuk Alice dan Bob dalam kasus ini adalah tukarmenukar data disertai suatu kunci digital, di mana keduanya telah sama-sama mengetahui kunci rahasia tersebut. Alice menggunakan kunci ini untuk mengkodekan pesan yang dia kirimkan, dan Bob merekonstruksi pesan tersebut kembali dengan kunci yang sama. Pesan yang dienkrip (ciphertexts) tetap dapat diterima Eve tetapi tidak dapat membacanya karena tidak mempunyai kunci yang sama untuk mendekripsi kode pesan tersebut.
10 2. Enkripsi Kunci Publik
Gambar 2.2 Contoh kasus dengan key Dalam penggunaan model enkripsi ini, kunci publik yang digunakan berbeda untuk enkripsi dan dekripsi. Digambarkan dalam diagram di atas, Key generator akan menghasilkan dua buah kunci publik, di mana setiap orang dapat mengetahui dan menggunakan kunci publik ini, tetapi hanya Bob yang mengetahui kunci privatnya untuk melakukan dekripsi pesan yang dikirim. Metoda ini memungkinkan Alice dan Bob tetap dapat berkomunikasi tanpa terganggu oleh pihak ke tiga.
11 b. Algoritma RSA Secara umum algoritma metode RSA ini adalah sebagai berikut : Key Generation 1. Dapatkan dua bilangan prima besar, p dan q
Encryption C = Pe % n
2. Dapatkan nilai n, di mana n= pq Decryption 3. Dapatkan nilai m, di mana m= ( p-1)(q-1)
P = Cd % n
4. Pilih sebuah angka kecil e, coprime untuk m 5. Cari nilai d,di mana d.e % m = 1
x % y maksudnya adalah
Publish e dan n sebagai kunci publik
suatu nilai sisa x dibagi y
Ambil d dan n sebagai kunci privat
(% = modulus)
Penjelasan metode ini selengkapnya adalah sebagai berikut : 1. Key Generation a) Dapatkan 2 bilangan prima, p dan q Besar kecilnya bilangan prima ini menentukan tingkat keamanan data, semakin besar bilangan semakin banyak faktornya yang mengakibatkan semakin sulit data dapat dipecahkan dalam waktu singkat, sebagai contoh : P=7 Q=19 b) Dapatkan nilai n, di mana n= pq n = 7 · 19 = 133 c) Dapatkan nilai m, di mana m= ( p-1)(q-1)
12 m = (7 - 1)(19 - 1) = 6 · 18 = 108 d) Pilih sebuah angka kecil e, coprime untuk m. e coprime untuk m, maksudnya adalah bilangan terbesar yang dapat membagi e dan m untuk menghasilkan nilai 1 (pembagi ini dinyatakan dengan gcd --greatest common divisor). Algoritma Euclid's digunakan untuk mencari gcd dua bilangan sebagai berikut : e = 2 => gcd(e, 108) = 2 (no) e = 3 => gcd(e, 108) = 3 (no) e = 4 => gcd(e, 108) = 4 (no) e = 5 => gcd(e, 108) = 1 (yes!) e) Cari nilai d, di mana d.e % m = 1 Ini sama dengan seperti mencari nilai d memenuhi d.e = 1 + m.n, di mana n adalah bilangan integer, kita dapat menuliskan kembali pernyataan tersebut dengan d = (1+m.n)/e sehingga nilai-nilai n dapat diselesaikan sampai didapat sebuah nilai yang integer seperti di bawah ini : n = 0 => d = 1 / 5 (no) n = 1 => d = 109 / 5 (no) n = 2 => d = 217 / 5 (no) n = 3 => d = 325 / 5 = 65 (yes!)
13 Setelah langkah ini selesai didapatkan kesimpulan : Public Key
Secret Key
n = 133
n = 133
E=5
d = 65
2. Komunikasi a) Enkripsi Pesan dalam proses enkripsi harus merupakan suatu bilangan lebih kecil dari nilai p dan q. Bagaimanapun, dalam posisi ini kita tidak mengetahui p atau q, tapi dalam prakteknya suatu lower bound/nilai yang lebih rendah pada p dan q harus dimunculkan. Contoh proses ini, kita gunakan nilai "6". C = Pe % n = 65 % 133 = 7776 % 133 = 62
b) Dekripsi Setelah proses enkripsi seperti di atas, maka dapat dilakukan proses dekripsi dalam beberapa langkah sebagai berikut : P = Cd % n = 6265 % 133 = 62 · 6264 % 133
14 = 62 · (622)32 % 133 = 62 · 384432 % 133 = 62 · (3844 % 133)32 % 133 = 62 · 12032 % 133 Selanjutnya mengulangi urutan operasi yang mengurangi 6265 sampai 12032 untuk mengurangi eksponen operasi tersebut hingga menjadi 1. = 62 · 3616 % 133 = 62 · 998 % 133 = 62 · 924 % 133 = 62 · 852 % 133 = 62 · 43 % 133 = 2666 % 133 =6 Dengan melakukan langkah di atas, dapat dilihat bahwa pesan/data telah sama dengan data asli sebelum enkripsi yaitu “6”.
2.3 Algoritma Montgomery a. Pendahuluan Montgomery multiplication sekarang ini digunakan sebagai inti algoritma berbasis crypto system dalam aritmatik modular. Munculnya kelas baru pada pemecahan masalah/attack (timing attack dan power attack), implementasi algoritma ini menjadi lebih mudah dipelajari.
15 Selama ini IEEE menggunakan algoritma dari Colin D.Walker sebagai standar kecepatan RSA, di mana ini dapat ditingkatkan dengan penambahan metode perkalian montgomery. Selain RSA berbasis kriptosistem, eksponen modular sering dihitung dengan montgomery multiplication. Beberapa implementasi algoritma ini telah banyak diterapkan dalam hardware dan software dengan tujuan utama untuk mempercepat proses enkripsi/dekripsi. Timing attack dan power attack yang berbasis pada informasi ‘sidechannel‘ merupakan cara mengantisipasi kebocoran akibat divais hardware. Berbagai cara lainnya digunakan dalam algoritma untuk menperkuat informasi side-channel ini, dan implementasi baru adalah mengurangi ancaman yang dapat mengganggu performa kecepatan. Dari sisi hardware masalah ini sangatlah komplek, karena masalah batasan penambahan kecepatan atau pengurangan ukuran sirkit yang diperlukan untuk menghasilkan implementasi sesuai analisis perhitungan montgomery. Jika ukuran modulus lebih kecil dari ukuran multiplier akan menghasilkan implementasi yang tidak cocok.
b. Perkalian Montgomery Montgomery Multiplication adalah algoritma untuk operasi hitung yang menghasilkan 2 integer modulo A dan B integer N. Karena A dan B mempunyai komposisi yang besar (dengan alasan keamanan RSA), maka dengan metoda Montgomery Multiplication ini data akan di tata ulang dalam blok-blok kecil. Panjang t ini akan ditata menjadi 8, 16, 32, 64 dan kelipatannya mengikuti perumusan :
16 di mana, p = blok-blok bilangan yang diperlukan untuk merepresentasikan semua bilangan yang digunakan dalam algoritma. Contoh algoritma metode perkalian montgomery dapat dilihat pada analisis berikut :
nilai
c.
dihitung juga
sehingga p harus memenuhi
Eksponensiasi Basis Montgomery Perkalian montgomery adalah komponen dasar yang digunakan untuk
mengimplementasikan sebuah kotak klasik dan algoritma perkalian yang menghitung sebuah eksponensial. Hasil perkalian montgomery sdss
tetapi
Agar hasil operasi menjadi
benar di akhir eksponensial, maka kita perlu membuat : 1. Pre-multiplication 2. Post-multiplication
Asumsi :
bukan
17 C. Walker berpendapat bahwa ini adalah hasil akhir di mana eksponen (E) lebih kecil dari modulus N dan tidak memerlukan reduksi lanjutan, tetapi Quisquater berpendapat bahwa hasil perkalian adalah input untuk proses berikutnya di mana output ini harus mempunyai batasan seperti input.Pada 2 iterasi terakhir, Dengan asumsi akan menjamin
dan
sehingga di akhir iterasi didapat hasil :
Dan pada perkalian terakhir didapat eksponensial .
Post-multiplication
/perkalian dengan 1 akan mengembalikan kepada nilai terakhir yang memungkinkan sehingga hasil akhir :
Dan memenuhi :
Dihasilkan : S < N , S = integer Pada kasus S = N akan dihilangkan sebab ia harus memenuhi :
Ini menandakan bila A = 0 (tak ada reduksi) atau A = N (didalam kriptosistem klasik, A < N)
18 2.4 Metode Perancangan Program Aplikasi a. Bentuk program Suatu program dapat dibuat dengan dua cara yaitu secara OOP (Object Oriented Programming) atau secara procedural. Object Oriented Programming adalah sebuah paradigma pemrograman yang menggunakan “objek” dan interaksinya untuk mendesain aplikasi dan program komputer. Keunggulan yang membuat OOP semakin banyak digunakan adalah karena sifatnya yang reusable, sehingga sangat cocok untuk membuat aplikasi atau program yang besar. Untuk aplikasi dengan struktur yang sederhana, OOP akan mempersulit pembuatan program karena programmer harus merancang objek satu per satu. Sedangkan procedural programming atau yang juga dikenal dengan imperative programming adalah pemrograman berdasarkan konsep pemanggilan procedures atau yang sering dikenal sebagai routines, subroutines, methods, dan functions. Setiap procedure mengandung sederetan langkah perhitungan yang harus dijalankan. Procedures dapat dipanggil kapan saja dalam program, termasuk di dalam procedure itu sendiri. Jika dibandingkan dengan OOP, procedural programming
diperuntukkan bagi pembuatan program dengan
struktur yang sederhana dengan algoritma yang juga sederhana maupun yang rumit.
19 b. Rekayasa Piranti Lunak Rekayasa Piranti Lunak adalah penetapan dan pemakaian prinsipprinsip rekayasa dalam rangka mendapatkan piranti lunak yang ekonomis yaitu terpecaya dan bekerja efisien pada mesin (komputer). Rekayasa piranti lunak mencakup 3 elemen yang mampu mengontrol proses pengembangan piranti lunak,yaitu: 1. Metode-metode (methods), menyediakan cara-cara teknis untuk membangun piranti lunak 2. Alat-alat bantu (tools) mengadakan dukungan otomatis atau semi otomatis untuk metodemetode seperti CASE (Computer Aided Software Engineering) yang mengkombinasikan software, hardware, dan software engineering database. 3. Prosedur-prosedur (procedurs) merupakan pengembangan metode dan alat bantu. Dalam perancangan software dikenal istilah software life cycle yaitu serangkaian kegiatan yang dilakukan selama masa perancangan software. Pemakaian jenis software life cycle yang cocok salah satunya ditentukan oleh jenis bahasa pemrograman yang cocok. Contohnya, Waterfall Model merupakan model yang paling umum dan paling dasar pada software life cycle pada umumnya, Rapid Application Development (RAD) dan Joint Application Development (JAD) cocok untuk software berbasis objek (OOP), sedangkan
20 Sync+Stabilize dan Spiral Model yang merupakan pengembangan model waterfall dengan komponen prototyping cocok untuk sebuah aplikasi yang rumit dan cenderung mahal pembuatannya. Berikut adalah visualisasi dari kegiatan pada software life cycle model waterfall: 1. Spesifikasi kebutuhan (Requirement specification) Pada
tahap
ini,
pihak
pengembang
dan
konsumen
mengidentifikasi apa saja fungsi-fungsi yang diharapkan dari sistem dan bagaimana sistem memberikan layanan yang diminta. Pengembang berusaha mengumpulkan berbagai informasi dari konsumen. 2. Perancangan arsitektur (Architectural design) Pada tahap ini, terjadi pemisahan komponen-komponen sistem sesuai dengan fungsinya masing-masing. 3. Detailed design Setelah memasuki tahap ini, pengembang memperbaiki deskripsi dari komponen-komponen dari sistem yang telah dipisah-pisah pada tahap sebelumnya. 4. Coding and unit testing Pada tahap ini, disain diterjemahkan ke dalam bahasa pemrograman untuk dieksekusi. Setelah itu komponen-komponen dites apakah sesuai dengan fungsinya masing-masing. 5. Integration and testing
21 Setelah tiap-tiap komponen dites dan telah sesuai dengan fungsinya, komponen-komponen tersebut disatukan lagi. Lalu sistem dites untuk memastikan sistem telah sesuai dengan kriteria yang diminta konsumen. 6. Pemeliharaan (maintenance) Setelah sistem diimplementasikan, maka perlu dilakukannya perawatan terhadap sistem itu sendiri. Perawatan yang dimaksud adalah perbaikan error yang ditemkan setelah sistem diimplementasikan.
c. Delapan aturan emas (Eight Golden Rules) Untuk merancang sistem interaksi manusia dan komputer yang baik, harus memperhatikan delapan aturan emas dalam perancangan antarmuka, seperti: 1. strive for consistency (konsisten dalam merancang tampilan) 2. enable frequent user to use shorcuts (memungkinkan pengguna menggunakan shortcuts secara berkala) 3. offer informative feed back (memberikan umpan balik yang informatif) 4.
design
dialogs
to
yield
closure
(merancang
dialog
untuk
menghasilkan keadaan akhir) 5. offer simple error handling (memberikan penanganan kesalahan) 6.
permit easy reversal of actions (mengijinkan pembalikan aksi dengan mudah)
22 7.
support internal locus of control (mendukung pengguna menguasai sistem), dan
8. reduce short-term memory load (mengurangi beban jangka pendek pada pengguna).