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 :

Gambar 2.1 Contoh Confidentiality

  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:

Gambar 2.2 Contoh Data Integrity

  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:

Gambar 2.3 Contoh Authentication

  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:

Gambar 2.4 Contoh Non – repudiation

  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 simetris

  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).

  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 Angka

  Algoritma 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 LCG

  21

  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.