BAB II LANDASAN TEORI
II.1
Pengenalan Kriptografi
II.1.1 Sejarah Kriptografi Kriptografi mempunyai sejarah yang panjang. Informasi yang lengkap mengenai sejarah kriptografi dapat di temukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi mulai dari penggunakaan kriptografi oleh bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph yang tidak standar pada piramid) hingga penggunaan kriptografi pada abat ke-20.secara historis ada empat kelompok orang yang berkontribusi
terhadap
perkembangan
kriptografi,
dimana
mereka
menggunakan kriptografi untuk menjamin kerahasiaan dalam komunikasi pesan penting, yaitu kalangan militer (termasuk intelejen dan mata-mata), kalangan diplomatic, penulis buku harian, dan pencinta (lovers). Diantara keempat kelompok ini, kalangan militer yang memberikan kontribusi paling penting karena pengiriman pesan didalam suasana perang membutuhkan teknik enkripsi dan deskripsi yang rumit. Kriptografi juga digunakan Untuk tujuan keamanan. Kalangan gereja pada masa awal agama Kristen menggunakan kriptografi untuk menjaga tulisan religious dan gangguan otoritas politik atau budaya yang dominan saat itu. Mungkin yang sangat terkenal adalah “Angka si Buruk Rupa” (Number of the beast) di dalam kitab perjanjian baru. Angka “666” menyatakan cara kriptografi (yaitu dienskripsi) untuk menyembunyikan pesan berbahaya. Para ahli 15
16
percaya bahwa pesan tersebut mengacu pada kerajaan Romawi (Febriansyah; 2012).
II.2
Definisi Kriptografi Secara etimologi (ilmu asal usul kata), kata kriptografi berasal dari
gabungan dua kata dalam bahasa Yunani yaitu “kriptos” dan “graphia”. Kata kriptos digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata graphia berarti tulisan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturanaturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya (Rinaldi Munir; 2005). Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima
(receiver).
Setelah
sampai
di
penerima,
ciphertext
tersebut
ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali. Dalam arti lain, cryptography adalah seni dan ilmu dalam mengamankan pesan. Dalam dunia kriptografi, pesan disebut plaintext atau ciphertext. Proses untuk menyamarkan pesan dengan cara sedemikian rupa untuk menyembunyikan isi aslinya disebut enkripsi. Pesan yang telah dienkripsi disebut ciphertext. Proses pengembalian sebuah ciphertext ke plaintext disebut dekripsi.
17
II.3
Konsep Kriptografi Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya
pada peradaban Mesir dan Romawi walaupun masih sangat sederhana. Prinsip dasar kriptografi ketika suatu pesan dikirim dari suatu tempat ke tempat lain, isi pesan tersebut mungkin dapat disadap oleh pihak lain yang tidak berhak untuk mengetahui isi pesan tersebut. Untuk menjaga pesan, maka pesan tersebut dapat diubah menjadi suatu kode yang tidak dapat dimengerti oleh pihak lain. Enkripsi adalah sebuah proses penyandian yang melakukan perubahan sebuah kode atau pesan dari yang bisa dimengerti, disebut dengan plainteks, menjadi sebuah kode yang tidak bisa dimengerti, disebut dengan cipherteks. Sedangkan proses kebalikannya untuk mengubah cipherteks menjadi plainteks disebut dekripsi. Proses enkripsi dan dekripsi memerlukan suatu mekanisme dan kunci tertentu.
Gambar II.1 Konsep Dasar dari Enkripsi dan Dekripsi (Sumber : Dony Ariyus, 2006)
Kriptanalisis adalah kebalikan dari kriptografi, yaitu suatu ilmu untuk memecahkan mekanisme kriptografi dengan cara mendapatkan kunci dari cipherteks yang digunakan untuk mendapatkan plainteks. Kriptologi adalah ilmu yang mencakup kriptografi dan kriptanalisis.
18
Kriptografi dapat memenuhi kebutuhan umum suatu transaksi yaitu: 1. Kerahasiaan
(confidentiality)
dijamin
dengan
melakukan
enkripsi
(penyandian). 2. Keutuhan (integrity) atas data-data pembayaran dilakukan dengan fungsi hash satu arah. 3. Jaminan atas identitas dan keabsahan (authenticity) pihak-pihak yang melakukan transaksi dilakukan dengan menggunakan password atau sertifikat digital. Sedangkan keautentikan data transaksi dapat dilakukan dengan tanda tangan digital. 4. Transaksi dapat dijadikan barang bukti yang tidak bisa disangkal (nonrepudiation) dengan memanfaatkan tanda tangan digital dan sertifikat digital.(Muhamad Zaki Riyanto;2010)
II.3.1 Sistem Kriptografi Sistem kriptografi atau sering disebut dengan cipher adalah suatu sistem atau kumpulan aturan-aturan yang digunakan untuk melakukan enkripsi dan dekripsi. Ada dua macam sistem kriptografi, yaitu sistem kriptografi kunci rahasia atau sering disebut dengan sistem kriptografi simetris dan sistem kriptografi kunci publik atau sering disebut dengan sistem kriptografi asimetris.(Dony Ariyus;2006) II.3.2 Sistem Kriptografi Kunci Rahasia Sistem kriptografi kunci rahasia adalah sistem kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Sistem ini mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum
19
mereka saling berkomunikasi.Keamanan sistem ini tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, keberadaan kunci harus tetap dirahasiakan. Sifat kunci yang seperti ini membuat pengirim harus selalu memastikan bahwa jalur yang digunakan dalam pendistribusian kunci adalah jalur yang aman atau memastikan bahwa seseorang yang ditunjuk membawa kunci untuk dipertukarkan adalah orang yang dapat dipercaya. Masalah akan menjadi rumit apabila komunikasi dilakukan secara bersama-sama oleh sebanyak n pihak dan setiap dua pihak yang melakukan pertukaran kunci, maka akan terdapat sebanyak kunci rahasia yang harus dipertukarkan secara aman.
Gambar II.2 Sistem Kriptografi Kunci Rahasia Sumber: Muhamad Zaki Riyanto,2010
II.3.3 Sistem Kriptografi Kunci Publik Sistem kriptografi kunci publik, atau sering disebut dengan sistem kriptografi asimetris, menggunakan dua jenis kunci, yaitu kunci publik (public key) dan kunci rahasia (secret key). Kunci publik merupakan kunci yang digunakan untuk mengenkripsi pesan. Sedangkan kunci rahasia digunakan untuk
20
mendekripsi pesan. Kunci publik bersifat umum, artinya kunci ini tidak dirahasiakan sehingga dapat dilihat oleh siapapun, termasuk pihak penyerang. Sedangkan kunci rahasia adalah kunci yang dirahasiakan dan hanya orang-orang tertentu saja yang boleh mengetahuinya. Keuntungan utama dari sistem ini adalah memberikan jaminan keamanan kepada siapa saja yang melakukan pertukaran informasi meskipun di antara mereka tidak ada kesepakatan mengenai keamanan pesan terlebih dahulu maupun saling tidak mengenal satu sama lainnya.
Gambar II.3 Sistem Kriptografi Kunci Publik Sumber: Muhamad Zaki Riyanto,2010
Sebagai contoh yang sangat sederhana, misalkan ada dua pihak yang akan berkomunikasi, yaitu Alice dan Bob. Selain itu ada pihak ketiga sebagai penyerang, yaitu Eve. Alice dan Bob sepakat untuk menggunakan sistem kriptografi Dalam hal ini Alice ingin mengirimkan suatu pesan kepada Bob. Oleh karena itu, Bob harus membuat pasangan kunci, yaitu kunci publik dan kunci rahasia. Berikut ini adalah hal-hal yang dibutuhkan supaya keamanan enkripsi kunci publik tetap terjaga. 1.
Salah satu kunci harus dijaga kerahasiannya.
2.
Pesan tidak dapat di-dechipher jika tidak ada informasi ekstra.
21
3.
Kunci yang lain tidak bisa ditentukan walaupun dilengkapi dengan pengetahuan mengenai algoritma, salah satu kunci,dan contoh-contoh dari ciphertext. Misalkan {Ee/e K} adalah himpunan semua transformasi enkripsi dan
{Dd/d K} adalah himpunan semua transformasi dekripsi yang terkait, dimana K adalah ruang kunci. Pasangan transfromasi (Ee, Dd) mempunyai sifat bahwa diketahui Ee dan sembarang c C, secara perhitungan tidak layak dapat menentukan m M sehingga Ee(m) = c. Diasumsikan bahwa transformasi enkripsi Ee adalah fungsi satu arah pintu jebakan, sehingga kunci dekripsi d dapat dihitung dari e yang ditambahkan informasi ekstra.
Gambar II.4 Jalur Komunikasi Sumber: Muhamad Zaki Riyanto,2010
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut : EK(M)= C (Proses Enkripsi) DK(C) = M (Proses Dekripsi)
22
Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.
II.4
RSA
II.4.1 Sejarah Singkat RSA Algortima RSA dijabarkan pada tahun 1977 oleh tiga orang : Ron Rivest, Adi Shamir dan Len Adleman dari Massachusetts Institute of Technology. Huruf RSA itu sendiri berasal dari inisial nama mereka (Rivest-Shamir-Adleman). Clifford Cocks, seorang matematikawan Inggris yang bekerja untuk GCHQ, menjabarkan tentang sistem equivalen pada dokumen internal di tahun 1973. Penemuan Clifford Cocks tidak terungkap hingga tahun 1997 karena alasan top-secret classification. Algoritma tersebut dipatenkan oleh Massachusetts Institute of Technology pada tahun 1983 di Amerika Serikat sebagai U.S. Patent 4405829. Paten tersebut berlaku hingga 21 September 2000. Semenjak Algoritma RSA dipublikasikan sebagai aplikasi paten, regulasi di sebagian besar negara-negara lain tidak memungkinkan penggunaan paten. Hal ini menyebabkan hasil temuan Clifford Cocks dikenal secara umum.(Dony,2009)
II.5
Algoritma RSA RSA (Rivest-Shamir-Adleman) RSA
adalah
sebuah
algoritma pada
enkripsi kunci publik yang dikembangkan oleh Rivest-Shamir-Adleman.
23
Algoritma ini menggunakan kunci publik untuk enkripsi dan kunci pribadi untuk dekripsi. Keamanan metode ini terletak pada kesulitan untuk memfaktorkan modulus n yang sangat besar, tetapi kelebihan ini mengakibatkan lambatnya waktu untuk menyelesaikan proses.
Algoritma ini memberikan tujuan
kerahasiaan dan penandaan digital. Keamanan bertumpu kepada kompleksitas problem faktorisasi bilangan bulat. Metode ini didasarkan pada ide bahwa mengalikan dua bilangan dapat mudah dilakukan, khususnya dengan perangkat komputer. Tetapi memfaktorkan bilangan dapat jadi sulit dilakukan. Contohnya, mudah dilakukan untuk mengambil dua bilangan prima misalnya x dan y dan menghitung hasil operasi kalinya N = xy. Tetapi jika diberikan nilai N, akan sulit untuk menemukan faktor-faktornya yaitu x dan y, terutama untuk bilangan N yang besar Enkripsi menggunakan
nilai atau kunci publik (public key) yang
disebarluaskan dan diketahui semua orang yang ingin mengirim pesan. Sedangkan dekripsinya menggunakan sebuah kunci pribadi (private key) yang dijaga kerahasiannya oleh penerima dan tidak dapat dideduksi dari kunci publik. Sistem kriptografi dengan kunci publik seperti halnya algoritma RSA ini bekerja tanpa mengharuskan kedua pihak menjaga kerahasiaan, kunci pribadi tidak perlu diberitahu ke pengirim pesan. Keamanan enkripsi dan dekripsi data dari algoritma RSA terletak pada kesulitan untuk memfaktorkan modulus N yang sangat besar. Besarnya bilangan yang digunakan mengakibatkan lambatnya operasi yang melibatkan algoritma RSA ini. Tiga tahapan dari algoritma RSA adalah pembangkitan kunci, enkripsi, dan dekripsi. Enkripsi adalah proses mengubah pesan asli (plaintext) menjadi
24
pesan
yang
dikodekan
(ciphertext),
sedangkan
dekripsi
adalah
proses
mendapatkan plaintext dari ciphertext.(kamal mahmudi,2010) Pembangkitan kuncinya adalah sebagai berikut : 1. Pilih dua bilangan prima, p dan q secara acak dan terpisah untuk setiap p dan q. Hitung n = p x q. 2. Hitung (n) = (p-1) (q-1). 3. Pilih bilangan bulat antara satu dan (1<e<) yang juga merupakan coprime dari . Coprime yang dimaksud adalah bilangan terbesar yang dapat membagi
e dan
untuk menghasilkan nilai 1 (pembagi ini
dinyatakan dengan gcd (greatest common divisor). 4. Hitung d = d e-1 mod (n). Enkripsi pada RSA adalah sebagai berikut. 1. Plaintext : M < n. 2. Ciphertext : C = Me (mod n). Dekripsi pada RSA adalah sebagai berikut. 1. Ciphertext : C. 2.
II.6
Plaintext : M = Cd (mod n).(kamal mahmudi,2010)
Chinese Remainder Theorem Chinese remainder theorem adalah teorema mengenai kekongruenan lanjar
dalam teori bilangan bulat yaitu aritmetika modulo. Teorema ini pertama kali ditemukan oleh Sun Tze pada abad pertama.
25
Misalkan m1,m2, ...,m adalah bilangan bulat positif sedemikian sehingga FPB(mi,mj) = 1 untuk i ≠ j.Maka sistem kongruen lanjar x = ak(mod mk) mempunyaimsebuah solusi unik modulo m = m1.m2. ... .m n. Sebagai contoh, Sun Tze mengajukan pertanyaan sebagai berikut: Tentukan sebuah bilangan bulat yang bila dibagi dengan 5 menyisakan 3, bila dibagi 7 menyisakan 5, dan bila dibagi 11 menyisakan 7.(Putri, 2007) Kelebihan Chinese remainder Teoreme adalah sebagai berikut : a. Mempercepat operasi kunci pribadi ( decryption). b. Dua n/2-bit eksponensials mod P dan mod Q. sebagai ganti satu n-bit eksponensial mod N ( N=P*Q). c. Split n-bit multiplier hardware ke dalam dua n/2-bit pengali, melaksanakan n/2-bit eksponensials paralel. d. Kombinasi hasil menurut CRT. e. CRT meningkatkan decryption melewati suatu faktor approx. 3- 3.5. Kalkulasi penting di dalam rencana enkripsi RSA adalah eksponensial modular M= Ed ( Mod n). Ini dilakukan setiap kali bagian dari pesan dilakukan encrypted/decrypted. d dan n adalah bilangan bulat sangat besar oleh karena itu operasi ini sangat computationaly intensive. Kita harus temukan alternatif metoda biner untuk eksponensial modular. (Yuri Andri Gani,2009) Keuntungan dasar dengan menggunakan Chinese Remainder Theoreme (CRT) adalah memugkinkan kita untuk membagi modulo eksponensial yang besar ke dalam dua eksponensial yang jauh lebih kecil, satu di atas p dan satu di atas
26
q. Dua modulo ini adalah faktor utama n yang dikenali. Metoda ini pertama diusulkan oleh Quisquater dan Couvreur. Definisi CRT: Suatu residu sisa suatu divisi dari suatu jumlah yang disebut suatu modulus ( yaitu residu 5/7 adalah 2). Definisi CRT: Suatu penyajian residu suatu jumlah x yang diset pada suatu bentuk residu { r1, r2,…, rk} berkenaan dengan modulo { m1, m2,…, mk}. Jika kita menggunakan penyajian residu { r1,r2,…, rk} pada x, Chinese Remainder Theoreme (CRT) membuat ia mungkin untuk menentukan | x| yang disajikan faktor umum terbesar mengenai seluruh pembawa modulo 1 ( yaitu ( ri, rj ) = 1, i = j). modulo dikenal sebagai memasangkan prime secara relatif (M. Shahkarami Dan G.A. Jullien, 2002, Universitas Calgary). Hal penting di sini adalah bahwa jika kita membagi jumlah x ke dalam bentuk residunya, kita dapat melaksanakan operasi pada residu itu bebas menyelesaikan proses residu kita dapat
tiap satu dan lainnya. Ketika merekonstruksi
jawaban akhir
menggunakan CRT . Kita mengetahui bahwa residu x adalah jauh lebih kecil dari x dirinya sendiri, oleh karena itu operasi individu akan menjadi kompleksitas yang jauh lebih kecil. Membagi operasi modulo adalah dua kalkulasi mandiri. Sebagai ganti dilakukannya eksponensial ( mod n) kita membagi x ke dalam ( mod p) dan ( mod q). Karena kedua-duanya p dan q adalah utama mereka mencukupi kebutuhan untuk
rekonstruksi yang menggunakan
eksponensial keduanya sebagai berikut: Mp = Ed (mod p)
CRT. Kita kini tinggal melakukan
27
Mq = Ed (mod q) Kita kemudian bisa menerapkan CRT untuk merekonstruksi pesan akhir dari Mp dan Mq.
II.7
Implementasi CRT Pada RSA Biasanya kunci publik e dari RSA adalah nilai yang relatif rendah,
contohnya 216 + 1 (sebuah nilai yang standar). Sehingga, pada proses chiper (bukan pada proses pemberian tanda tangan digital) tidak akan diperoleh masalah dengan kecepatan chiper karena bilangan pangkat e akan relatif kecil. Pada saat bilangan n = p*q menjadi jauh lebih besar, dengan urutan 21.024 jika membicarakan tentang kunci dengan panjang 1.024 bit, kunci privat d biasanya akan jauh lebih besar daripada nilai e dan nilai ini akan jatuh sangat dekat dengan nilai dari 1.024 bit. Oleh karena itu, akan sangat mahal bagi penerima pesan untuk mendekripsi pesan dengan kunci privat yang dimilikinya atau untuk menandatangani suatu dokumen dengan kunci privat tertentu. Solusi yang ditawarkan adalah dengan menggunakan Chinese Remainder Theorem (CRT). Daripada bekerja dengan nilai n, akan lebih baik bekerja dengan nilai p dan q sehingga perpangkatan modular akan dapat dilakukan dengan p dan q, jauh lebih cepat daripada menggunakan n.(Yuri Andri Gani,2009)
II.7.1 Single-Radix Conversion (SRC) Implementasi CRT
untuk mempercepat kriptografi RSA
tidak hanya
dengan membagi kode pesan menjadi dua tetapi juga dapat menggunakan satu
28
langkah konversi dinamakan SRC. Berikut adalah langkah-langkah untuk SRC berlaku pula bagi RSA. Langkah 1: membagi eksponensial ke dalam bentuk ( mod p) dan ( mod q) Mp = Ed (mod p) Mq = Ed (mod q) Langkah 2: kurangi kompleksitas dengan menerapkan Teoreme Fermat's kepada eksponen, dengan menghitung: Mp = Ed¹ (mod p) Mq = Ed² (mod q) Dimana : d1 = d mod(p-1) d2 = d mod(q-1) Ukuran d1, dan d2 kini separuh d. Karena kompleksitas tumbuh bersifat exponent terhadap d, ini menghasilkan tabungan data sangat besar. Langkah 3: Gunakan CRT untuk merekonstruksi pesan kita M = Mp(q-1 mod p)q + Mq(p-1 mod q)p (mod n) II.7.2 Mixed-Radix Conversion (MRC) Decryption menggunakan MRC serupa dengan SRC Satu-Satunya perbedaan untuk aplikasi ini adalah di dalam perhitungan rekonstruksi akhir. Langkah 1: Bagi eksponensial ke dalam ( mod p) dan ( mod q). Juga menerapkan Teoreme Fermat's untuk mengurangi eksponen. Mp = Ed¹ (mod p) Mq = Ed² (mod q)
29
Langkah 2: Rekonstruksi pesan menggunakan cara sebagai berikut : M = Mp + [(Mq - Mp) × (p-1 mod q) mod q] × p atau lebih familiar menggunakan : M = Mq + [(Mp - Mq) × (q-1 mod p) mod p] × q Seperti
kunci
pribadi
sintaksis
PKCS#1
meliputi
kebalikan
yang
diperlukan.(Yuri Andri Gani,2009).
II.8
Visual Studio Visual Basic diturunkan dari bahasa BASIC. Visual Basic terkenal sebagai
bahasa pemograman yang mudah digunakan terutama untuk membuat aplikasi yang berjalan di atas platform Windows. Pada tahun 90an, Visual Basic menjadi bahasa pemograman yang paling popular dan menjadi pilihan utama untuk mengembangkan program berbasis Windows. Versi Visual Basic terakhir sebelum berjalan di atas .NET Framework adalah VB6 (Visual Studio 1998). Visual Basic .NET dirilis pada bulan Februari tahun 2002 bersamaan dengan platform .NET Framewor 1.0. Kini sudah ada beberapa versi dari Visual Basic yang berjalan pada platform .NET, yaitu VB 2002 (VB7), VB 2005(VB8), VB 2008 (VB9), dan yang terakhir adalah VB 2010 (VB10) yang dirilis bersamaan dengan Visual Studio 2010. Selain Visual Basic 2010, Visual Studio 2010 juga mendukung beberapa bahasa lain, yaitu C#, C++, F# (bahasa baru untuk functional programming), IronPhyton, dan IronRuby atau bahasa baru untuk dynamic programming.(Nurullah; 2012)