BAB II TINJAUAN PUSTAKA 2.1. Kriptografi Kriptografi adalah ilmu yang mempelajari bagaimana membuat suatu pesan yang dikirim pengirim dapat disampaikan kepada penerima dengan aman Schneier, (1996). Prinsip-prinsip yang mendasari kriptografi yakni: • Confi
BAB II TINJAUAN PUSTAKA
2.1. Kriptografi
Kriptografi adalah ilmu yang mempelajari bagaimana membuat suatu pesan yang dikirim pengirim dapat disampaikan kepada penerima dengan aman Schneier, (1996). Prinsip-prinsip yang mendasari kriptografi yakni:
- Confidentiality (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatualgoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami. Dapat dilihat pada gambar berikut :
Sumber :(1994)
- Data integrity (keutuhan data) yaitu layanan yang mampu mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan)data yang tidak sah (oleh pihak lain). Dapat dilihat pada gambar berikut:
Sumber :(1994)
- Authentication (keotentikan) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi. Dapat dilihat pada gambar berikut:
Sumber :(1994)
- Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya). Dapat dilihat pada gambar berikut:
Sumber :(1994) Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya. Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi : • Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli).
- Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi.
- Enkripsi (fungsi E) adalah proses pengubahan plaintext menjadi ciphertext.
- Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli.
- Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi. Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan , proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti. Dapat dilihat pada gambar 1.1.
2.1.1. Kriptografi Kunci Simetris dan Asimetris
Selain berdasarkan sejarah yang membagi kritografi menjadi kriptografi klasik dan kriptografi modern, maka berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi dapat dibedakan lagi menjadi kriptografi Kunci-Simetris (Symmetric-key Cryptography) dan kriptografi Kunci-Asimetris (Asymmetric-key Cryptography ).
a) Kriptografi Kunci-Simetris
Algoritma ini mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Algoritma simetris (symmetric
algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan sama
dengan kunci dekripsi, sehingga algoritma ini disebut juga sebagai single-key
algorithm. Algoritma ini sering juga disebut dengan algoritma klasik karena
memakai kunci yang sama untuk kegiatan enkripsi dan dekripsi. Algoritma ini sudah ada sejak lebih dari 4000 tahun yang lalu.Semua algoritma kriptografi klasik termasuk kedalam sistem kriptografi simetri.Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain maka orang tersebut akan dapat melakukan enkripsi dan dekripsi terhadap pesan. Mollin, (2007)
Algoritma yang memakai kunci simetris diantaranya adalah : 1.
Data Encryption Standard (DES) 2.
RC2, RC4, RC5, RC6 3.
International Data Encrytion Algorithm (IDEA) 4. Advanced Encryption Standard (AES) 5. One Time Pad (OTP) 6. Dan lain-lain
Berikut ilustrasi penggunaan algoritma simetris :
Kunci Dekripsi Kunci Dekripsi
Gambar 2.5 Diagram proses enkripsi dan dekripsi algoritma simetrisSebelum 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).
Kelebihan Algoritma Simetris:
- Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritmaasimetrik.
- Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem real-time
Kelemahan Algoritma Simetris :
- Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.
- Permasalahan dalam pengiriman kunci itu sendiri yang disebut “key
distribution problem”
b) Kriptografi Kunci-Asimetris
Kriptografi asimetris juga disebut dengan kriptografi kunci-publik.Dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsi adalah berbeda. Pada kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci yaitu:
1. Kunci umum (public key) : yaitu kunci yang boleh semua orang tahu.
Pengirim mengenkripsi pesan dengan menggunakan kunci publik si penerima pesan.
2. Kunci rahasia (private key) : yaitu kunci yang dirahasiakan atau diketahui oleh satu orang saja. Hanya penerima pesan yang dapat mendekripsi pesan, karena hanya ia yang mengetahui kunci privatenya sendiri
Kunci-kunci tersebut berhubungan satu sama lain. Walau kunci publik telah diketahui namun akan sangat sukar mengetahui kunci private yang digunakan. Contoh algoritma kriptografi kunci-publik diantaranya RSA, Elgamal, DSA dll. Berikut ilustrasi penggunaan algoritma Asimetris :
Kunci Dekripsi ( K1 ) Kunci Dekripsi ( K2 )
( Tidak Rahasia ) ( Rahasia ) Gambar 2.6 Diagram proses enkripsi dan dekripsi algoritma simetris Kelebihan Algoritma Asimetris:- Masalah keamanan pada distribusi kunci dapat lebih baik
- Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit
Kelemahan Algoritma Asimetris:
- Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris
- Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang dibandingkan dengan algoritma simetris.
Kriptografi kunci-publik mempunyai kontribusi yang luar biasa dibandingkan dengan sistem kriptografi simetri.Kontribusi yang paling penting adalah tandatangan digital pada pesan untuk memberikan aspek keamanan otentikasi, integritas data, dan nir-penyangkalan.Tandatangan digital adalah nilai kriptografis yang bergantung pada isi pesan dan kunci yang digunakan.Pengirim pesan mengenkripsi pesan (yang sudah diringkas) dengan kunci private nya, kemudian hasil enkripsi inilah yang dinamakan
tandatangan digital.Tandatangan digital dilekatkan pada pesan asli.Penerima pesan
memverifikasi tandatangan digital dengan menggunakan kunci publik.Kristanto, (2003)2.2. Algoritma RSA
Dari sekian banyak algoritma kunci publik yang pernah dibuat, algoritma yang paling populer adalah algoritma RSA. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachusetts Institute of Technology) pada tahun 1976, yaitu: Ron
(R)ivest, Adi (S)hamir, dan Leonard (A)dleman. Keamanan algoritma RSA
terletak pada sulitnya memfaktorkanbilangan yang besar menjadi faktor prima.Pemfaktoran dilakukan untuk memperoleh kunci privat.Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin. Schneier, (1996)
Algoritma RSA memiliki besaran-besaran sebagai berikut: 1. p dan q, bilangan prima (rahasia) 2. n = p . q (tidak rahasia)
3. (n) = (p-1)(q-1) (rahasia) Φ 4. e (kunci enkripsi ) (tidak rahasia) 5. d (kunci dekripsi) (rahasia) 6. m (plainteks) (rahasia) 7. c (cipherteks) (tidak rahasia)
Fungsi totient (n) , Juga disebut fungsi totient Euler, didefinisikan sebagai
Φ
jumlah untuk semua nomor. Karena jumlah kurang dari atau sama dengan da, fungsi totient
Φ(n)bisa
dengan sederhana didefinisikan sebagai jumlahri 24 (1, 5, 7, 11, 13, 17, 19, dan 23), sehingga
Φ(24) = 8.
Ada metode lain untuk menghitung invers modulo n, tapi mungkin tidak selalu bisa digunakan.Set mengurangi residu mod n adalah subset dari set lengkap residu yang relatifprima dengan n. Sebagaicontoh,himpunan mengurangi residu mod 12 adalah {1, 5, 7, 11}. Jika n adalah bilangan prima, maka dikurangi set residu mod n adalah himpunan semua bilangan dari 1 sampai n-1. 0 (nol)bukan bagian dari set pengurangan residu untuk setiap n tidak sama dengan 1.
Fungsi Euler totient, juga disebut fungsi Euler phi dan ditulis sebagai
Φ(n),
adalahjumlahelemen dalam set mengurangi residu modulo n. Dengan kata lain,
Φ(n)adalahjumlahpositifkurang dari n yang relatif prima terhadap n (untuk
n lebihbesardari1)bilanganbulat.(LeonhardEuler, menyebutkan "kapal tangki,"
adalah seorang ahli matematika Swiss yang hidup pada 1707-1783). Mollin, (2002).
Jika n adalah bilangan prima, maka (n) = n-1. Jika n = pq, dimana p dan q adalah prima, maka
Φ(n) = (p-1) (q-1). Inilah mengapa angka - angka muncul
- -1
- –1= 6. Jadi, kebalikan 5, modulo 7, adalah :
5 mod 7 = 3 ..………………………………………..
Pilih 2 buah bilangan prima p dan q.Untuk tujuan keamanan, bilanganinteger p dan q dipilihsecara random, dan harus memiliki panjang bityang sama. Biasanya panjang bit yang dipilih untukbilangan p dan q ukurannya besar, agar kunci semakinaman.
≠ 1, semua tidak hilang. secara umum,(a* x) mod n =b, dapat memiliki beberapa solusiatautidak.Schneier, ( 1996 ) Proses pembangkitan kunci RSA adalah sebagaiberikut: 1.
mod n)) mod n …………………………………………(2.6) Secara umum, algoritma Euclid 'slebih cepat darigeneralisasiEuleruntukmenghitunginvers, terutamauntuk digitdi kisaran500- bit. JikaFPB (a, n)
x = (b * (a
) mod n ……………………………………………(2.5) Menggunakan algoritma Euclid, Schneier, ( 1996 ) :
x = (b * a Φ(n) -1)
Menggunakan generalisasi Euler, Schneier, ( 1996 ) :
(2.3)Kedua metode untuk menghitung invers dapat diperpanjang untuk menyelesaikan x dalam masalah umum (jika FPB(a, n) = 1)Schneier, ( 1996 ) : (a*x) mod n = b………………………………………………………(2.4)
mod 7 = 5
6-1
5
Φ(7) = 7
(2.2)Misalnya, apa kebalikan 5, modulo 7? jika 7 adalah bilangan prima,
Φ(n)-1 modn……………………………………………………..
mod n Schneier, ( 1996 ) : x = a
mod n = 1 …………………………………………………….. (2.1) saat ini mudah untuk menghitunga
a Φ(n)
dalam beberapa algoritma kunci publik.Menurut generalisasi dari teorema Euler kecil Fermat, jika FPB (a, n) = 1, makaSchneier, ( 1996 ) :
- -1
2. Hitung n, yaitu n = pq.Bilangan nakan digunakan sebagai modulus untukkunci publik dan kunci privat.
Hitung Φ
3. (n) = (p – 1)(q – 1), dimana Φ adalah fungsitotient Euler.
(n), (n) ) 4.
fpb(e, = 1, e dan
Φ
Pilih bilangan integer e, dimana 1 <e <Φ
(n) (n) ).
adalah coprime (e relatif primaterhadap Bilangan e adalah
Φ Φ bilangan yang menjadikunci publik.
5. Hitung kunci dekripsi d, dengan persamaanMollin, ( 2007 ) :
- 1
ed= 1 (mod (n) ) atau d = e mod ( (n) )… ………………………..( 2.7 Φ Φ ) Dari perhitungan di atas didapatkan kunci publik dankunci privat:
Kunci publik adalah pasangan (e, n)
- Kunci privat adalah pasangan (d, n)
- Proses enkripsi dan dekripsi algoritma RSA: 1.
1 , m 2 , m 3 , ..., m n , dengan
Nyatakan pesan menjadi blok-blok plainteks m syarat 0 <m < n-1.
i
2. i untuk blok plainteks p i dengan persamaan Hitung blok chiperteks c
e c i = m i mod n .
………………………………………………………..(2.8)Proses dekripsi dilakukan dengan menggunakan persamaan
d p i = c i mod n. ………………………………………………………..(2.9)
Contoh: Pilih dua bilangan prima yang berbeda, seperti p = 13 dan q = 5.
1. Hitung n = p.q memberikan n = 13 · 5 = 65 .
(n) 2.
= (p - 1) (q - 1) memberikan Hitunglri produk sebagai Φ (n) = (13-1) (5-1) = 48.
Φ 3.
(n) prima dengan 28.
Ambil bilangan bulat e dengan syarat 1 <e<Φ Yang memiliki FPB = 1 dengan 28.
Misalkan e = 17.
Kunci publik adalah (n= 65, e= 17 )
4. encode pesan ke ASCII misalkanplaintext yang dikirim adalah “ POT“ plainchar (1) = “P”
1 )
→ P1 = 80………………. (P plainchar (2) = “O”
2 )
→ P2 = 79………………. (P plainchar (3) = “T”
3 )
→ P3 = 84……………….(P 5. Enkripsi pesan dengan rumus (Mollin, 2007):
e c = p (mod n)
17
80 mod 65 =45 ……………….(C
1 )
17
79 mod65 = 14 ……………….(C
2 )
17
84 mod65 = 54 ……………….(C )
3 6.
Hitunglah kunci privat d, dengan rumus berikut (Mollin, 2007):
(n) d = 1 + k mod Φ
e Untuk mencari nilai k Dapat dicari dengan menggunakan Microsoft Excel. Dengan syarat k dan d adalah bilangan bulat positif. Menghasilkand = 113.
Kunci Privat adalah ( n = 65, d = 113 ) 7.
Deskripsikan pesan terenkripsi dengan rumus :
d P = c (mod n)
113
P = 45 mod 65 = 80
1 113
P
2 = 14 mod 65 = 79 113
P
1 = 54 mod 65 = 84 8.
Hasil Dekripsi adalah ( “80”, “79”, “84” ) = (“POT ’’).
Penemu algoritma RSA menyarankan untuk nilai p dan q agar panjangnya lebih dari 100 digit. Dengan demikian hasil kali dari n = p x q akan berukuran lebih dari 200 digit. Maka waktu yang dibutuhkan untuk mencari faktor prima dari bilangan 200 digit adalah selama 4 milayar tahun, sedangkan untuk bilangan 500
25
digit membutuhkan waktu 10 tahun. Dengan asumsi algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik.Mollin, ( 2007 )
Secara umum dapat disimpulkan bahwa RSA hanya aman jika n cukup besar. Jika panjang n hanya 256 bit atau kurang, maka ia dapat difaktorkan dalam beberapa jam saja dengan sebuah komputer PC dan program yang tersedia secara bebas.
Jika sebuah bilangan prima acak yang memiliki nilai kecil bukanlah sebuah masalah untuk membentuk sebuah kunci, akan tetapi menentukan sebuah bilangan yang sudah terlalu besar prima atau tidak, maka perlu dilakukan pengujian berulang-ulang kali (sebanyak t kali). Maka untuk melakukan pengujian tersebut, penulis mencoba menggunakan pengujian bilangan prima menggunakan algoritma The Sieve of Eratosthenes.
2.3. Pembangkit Bilangan Prima
Ada berbagai metode yang dapat digunakan untuk menghasilkan sebuah bilangan prima.Untuk menghasilkan bilangan prima yang besar dengan menggunakan ruang memori dan waktu.
Secara umum pembangkitan bilangan prima dapat dikelompokkan menjadi dua, yaitu dengan membangkitkan bilangan prima dari bilangan prima terkecil dengan pengujian yang menghasilkan 100% bilangan prima atau dengan membangkitkan bilangan acak dan menguji kemungkinan bilangan tersebut prima.
2.3.1 Algoritma The Sieve of Eratosthenes
Eratosthenes (276-194 S.M) adalah seorang petugas perpustakaanketiga dari
perpustakaan terkenal di Alexandria dan adalahseorang sarjana yang sangat hebat.Eratosthenes dikenangdengan pengukurannya terhadap keliling dari dari
bumi,memperkirakan jarak antara bumi dengan matahari dan bulan,dalam matematika, untuk penemuan dari sebuah algoritmauntuk mencari bilangan- bilangan prima, yang dikenal sebagaiAlgoritma Sieve of Eratosthenes.
Sieve of Eratosthenes adalah sebuah algoritma klasikuntuk menemukan
seluruh bilangan prima sampai ke sebuah n yang ditentukan. Mulai dengan array
of integer yang belumdicoret dari 2 ke n. Integer pertama yang belum dicoret yaitu 2,adalah bilangan prima pertama. Coret seluruh kelipatan daribilangan prima ini. Ulangi pada integer selanjutnya yang belumdicoret.
Sebagai contoh, berikut adalah array pada awalnya: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27 Karena 2 belum dicoret, maka 2 adalah bilangan pertama.Coret seluruh kelipatan 2, yaitu 4, 6, 8, 10, 12,dst.
23
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Integer selanjutnya yang belum dicoret adalah 3, maka 3adalah prima dan coret seluruh kelipatan 3, seperti 6, 9. 12,dst.
2 3
4
5
6
7 8910
11
12
13 141516
17
18
19 202122
23
24
25 2627 5 adalah bilangan prima selanjutnya dan coretseluruh kelipatan 5. Satu-satunya bilangan yang dicoret dalamrangeini adalah 25.
2 3
5
7
11
13
17
19
23
4 6 8910 12 141516
18 202122 24252627
Maka bilangan prima setelah 2,3 dan 5 yaitu7, 11, 13, 17, 19, dan 23.Metode Sieve of Eratosthenes sangat cepat, sehingga tidak ada alasan untuk menyimpan daftar bilangan prima yangbesar pada komputer, karena implementasi yang efisien darialgoritma ini dapat mendapatkan bilangan-bilangan tersebutlebih cepat daripada komputer harus membacanya dari mediapenyimpanan. Pada faktanya permasalahan dengan algoritmaseperti yang disajikan di atas tidaklah selalu tentang kecepatan,tetapi lebih ke penggunaan tempat.Mollin, ( 2007 )
2.4. Bilangan Acak
Bilangan acak adalah deretan nilai yang acak dan tidak dapat diprediksi secara keseluruhan. Untuk menghasilkan bilangan acak merupakan hal yang sulit, kebanyakan pembangkit bilangan acak semu yang aman untuk kriptografi
(Cryptographically-secure Pseudo-Random Number Generator = CPRNG) mempunyai beberapa bagian yang dapat diprediksi dan berhubungan.
Kebanyakan CPRNG mengulang string yang sama setelah melakukan n putaran. Sedangkan ada beberapa CPRNG lainnya menghasilkan nilai acak dengan berfokus pada suatu area tertentu dan mendistribusikannya secara seragam.
2.4.1. Pembangkit Bilangan Acak (Cryptographically-secure Pseudo-Random
Number Generator) Cryptographically-secure Pseudo-Random Number Generator (CPRNG) adalah
suatu peralatan komputasional yang dirancang untuk menghasilkan suatu urutan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak (random).
CPRNG ini tidak dapat diterapkan dalam prakteknya.Bilangan acak yang
dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan bilangan acak yang diterapkan dalam kriptografi juga tidak benar-benar acak, tetapi hanya berupa acak semu.Ini berarti bahwa bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan nilainya.Dalam kriptografi, bilangan acak sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu (Cryptographically-secure Pseudo-Random Number Generator).
Suatu Cryptographically-secure Pseudo-Random Number
Generator (CPRNG) merupakan suatu algoritma yang menghasilkan suatu urutan
nilai dimana elemen-elemennya bergantung pada setiap nilai yang dihasilkan.Output dari CPRNG tidak betul-betul acak, tetapi hanya mirip dengan properti dari nilai acak.Kebanyakan algoritma dari Cryptographically-secure
Pseudo-Random Number Generator ditujukan untuk menghasilkan suatu sampel
yang secara seragam terdistribusi.CPRNG ini sering digunakan dalam kriptografi pada proses pembentukan kunci dari metoda kriptografi. Tingkat kerumitan dari
CPRNG ini menentukan tingkat keamanan dari metoda kriptografi.Semakin rumit
(kompleks) CPRNG yang digunakan maka semakin tinggi tingkat keamanan dari metoda kriptografi.
2.4.2. Algoritma Pembangkit Bilangan Acak Semu
Semua deretan bilangan acak yang dibangkitkan dari rumus matematika, serumit apapun, dianggap sebagai deret acak semu, karena dapat diulang pembangkitannya Sementara itu, banyak produk software yang dinyatakan sebagai produk yang aman karena menggunakan bilangan acak semacam OTP (One Time Programmable). Namun karena OTP ini dibangkitkan dari bilangan acak semu, maka keamanan yang diperoleh juga semu.
Pembangkit bilangan acak yang sering diimplementasikan adalah Linier Congruential Generator (LCG) dan Linear Feedback Shift Register (LFSR). Beberapa algoritma lainnya yang dapat digunakan untuk membangkitkan deretan bilangan acak semu selain Linier Congruential Generator (LCG) adalah sebagai berikut : 1. Non Linear Feedback Shift Register (NLFSR).
2. Indirection, Shift, Accumulate, Add and Count (ISAAC).
3. Lagged Fibonacci Generator (LFG).
4. Mersenne - Twister.
5. Fortuna.
6. Blum-Blum Shub.
2.5 Probabilistic Encryption
Probabilistic encryption adalah penggunaan keadaan acak pada sebuah algoritma
kriptografi, sehingga ketika mengenkripsi pesan yang sama beberapa kali, secara umum, akan menghasilkan ciphertext yang berbeda. Bentuk ‘probabilistic
encryption ’ secara khusus digunakan pada algoritma kriptografi kunci publik, ide
dari probabilistic encryption pertama kali ditemukan oleh Shafi Goldwasser dan Silvio Micali .
Inti dari metode probabilistic encryption adalah untuk mengeliminasi kebocoran informasi dengan kriptografi kunci publik, karena metode ini menerapkan konsep acak dalam proses enkripsinya sehingga setiap kali proses enkripsi terhadap pesan yang sama akan menghasilkan nilai ciphertext yang berbeda. Hal ini menyebabkan seorang cryptanalyst tidak dapat menerka bentuk pesan dari ciphertext yang diperolehnya, karena setiap kali proses percobaan akan selalu menghasilkan nilai yang berbeda-beda.
Algoritma enkripsi kunci publik probabilistic yang ditemukan oleh Shafi
Goldwasser dan Silvio Micali ini memiliki teori yang membuatnya menjadi
kriptosistem yang paling aman, yaitu berdasarkan pada kesulitan dari problema
kuadratik residu dan memiliki sebuah faktor ekspansi pesan yang sama dengan
ukuran kunci publik. Problema ini adalah untuk menemukan apakah x merupakan
kuadrat modulo sebuah bilangan integer n. Problema ini dapat diselesaikan jika
faktor dari n diketahui, tetapi tidak dapat diselesaikan jika tidak diketahui.Micali, (1984 ).
Algoritma probabilistic encryption memiliki proses kerja yang sama dengan algoritma kriptografi lainnya, dimana dapat dibagi menjadi tiga bagian besar, yaitu:
1. Proses pembentukan kunci, yang berfungsi untuk menghasilkan kunci yang akan digunakan pada proses enkripsi dan dekripsi.
2. Proses enkripsi, yang berfungsi untuk menghasilkan ciphertext dari pesan dengan menggunakan kunci publik.
3. Proses dekripsi, yang berfungsi untuk mengubah ciphertext menjadi pesan semula dengan menggunakan kunci private.
2.6. Pembangkit Bilangan Acak Linear Congruential Generator (LCG)
Bilangan acak adalah bilangan yang tidak dapat diprediksi kemunculannya. Tidak ada komputasi yang benar – benar menghasilkan deret bilangan acak secara sempurna. Banyak algoritma atau metode yang dapat digunakan untuk membangkitkan bilangan acak salah satunya adalah pembangkit bilangan acak
Linear Congruential Generator (LCG).LCG adalah salah satu pembangkit
bilangan acak tertua dan sangat terkenal.LCG didefinisikan dalam relasi rekurens yaituSchneier, (1996) :
xn = (ax - n 1 + b) mod m…………………………………………………….. (2.10)
Yang dalam hal ini:
xn = bilangan acak ke-n dari deretnya
xn = bilangan acak sebelumnya a = faktor pengali b = penambah (increment) m = modulus
- 1
( a, b , dan m semuanya konstanta) Sebagaimana yang telah dilakukan Oni (2011) Jika dilihat dari sisi kecepatan, Linear Congruential Generator (LCG) mempunyai waktu yang lebih cepat dibandingkan dengan algoritma SIMD- Oriented Fast Mersenne
Twister(SFMT) dan Well Equidistributed Long-Period Linear (WELL) dapat dilihat pada tabel 2.1.
Tabel 2.1. Perbandingan Kecepatan Waktu Penghasilan AngkaAlgoritma LCG SFMT WELL Waktu Penghasilan Angka 0,527 1.017 1.970
Jika dilihat dari angka yang dihasilkan, algoritma Linear Congruential Generator (LCG) memiliki kelemahan.Sebab angka (bilangan acak) yang dihasilkan dapat diprediksi urutan kemunculannya. Dapat dilihat pada contoh berikut : Misalkan : a = 5 b = 13 m = 19 Maka rangkaian bilangan acak yang dibangkitkan adalah :
Tabel 2.2. Contoh bilangan acak yang dihasilkan dari persamaan LCG21
10
16
6
17
5
18
19
13
20
2
4
7
22
14
23
7
24
10
25
6
26
5
keunggulan LCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. Sebenarnya, LCG tidak dapat digunakan untuk kriptografi karena bilangan acaknya dapat diprediksi urutan kemunculannya dapat dilihat pada (tabel 2.2). Meskipun secara teoritis LCG mampu menghasilkan bilagan acak yang lumayan, namun ia sangat sensitif terhadap pemilihan nilai a, b, dan m. Pemilihan
15
14
n xn
10
1
13
2
2
3
4
4
14
5
7
6
7
14
6
8
5
9
10
13
11
2
12
4
13
27 Dari hasil contoh pada tabel 2.1 dan tabel 2.2 dapat diketahui bahwa
nilai – nilai yang buruk dapat mengarah pada implementasi LCG yang tidak bagus.Oleh karena itu pada penelitian ini, penulis ingin melakukan pengujian dan analisa dengan menggunakan algoritma LCGdalam perancangan aplikasi kriptografi RSA.