Minggu, Agustus 04, 2013

Kriptografi

kriptografi caesar
     Kalian tau kisah cinta Julius Caesar dengan Cleopatra? Kita tidak akan membahas kisah cintanya disini. Ada hal menarik dalam surat cinta yang ditulis Caesar ke Cleopatra. Agar suratnya tidak dapat dibaca orang lain, ia menuliskan setiap huruf dengan pergeseran ketiga-nya. Contoh, ia mengganti huruf A dengan huruf D, huruf B dengan E, dan seterusnya hingga huruf Z dengan C. Jadi jika ingin menuliskan KITA KETEMU DITAMAN BESOK akan berubah menjadi NLWD NHWHPX GLWDPDQ EHVRN. Kegiatan menyamarkan pesan ini dikenal sebagai kriptografi Caesar atau disebut juga monoalphabetic substitution cipher.

Steganography
Steganography
     Kriptografi, diambil dari bahasa yunani cryptos yang artinya rahasia dan graphein yang artinya tulisan jadi secara kasar dapat diartikan sebagai ilmu atau seni untuk merahasiakan tulisan. Dalam perkembangannya, seni merahasiakan pesan ini menjadi semakin beragam, diantaranya:
- Kriptografi di "tomb incription" 1900 SM
- Steganography dari Mesopotamia 1500 SM
- Skytale oleh bangsa Spartan 475 SM
- Kriptografi Caesar 50 SM
- Chiper disc tahun 1400
- On time pad tahun 1917
- Enigma oleh Jerman di tahun 1920
- Enkripsi Lucifer oleh IBM di tahun 1971.
dan masih banyak lagi ...

Sky Tale
Sky Tale
    Kriptografi modern menggunakan teknik matematika (khususnya teori bilangan) dalam mengamankan informasi yang dikirimkan oleh seseorang agar tidak bocor ke pihak lain. Saat ini penggunaan kriptografi meliputi penggunaan login password, persandian pesan untuk perang, pengamanan transaksi ATM dan e-banking, serta kerahasiaan dalam jaringan komunikasi. Kriptografi menjamin keamanan pertukaran data, otentifikasi dan validasi data, serta integritas data. Kedepannya kriptografi akan menjadi standar dalam keamanan sistem informasi. Untuk lebih mengerti tentang kriptografi coba baca novel The Da Vinci Code atau Digital Fortress karya Dan Brown.
cipher disk
Cipher Disk

     Dalam Kriptografi dikenal istilah enkripsi dan dekripsi, enkripsi adalah proses penyandian pesan agar tidak dapat dibaca pihak lain, sedangkan dekripsi adalah kebalikan dari enkripsi yaitu mengembalikan pesan hasil penyandian menjadi pesan awal. kedua proses tersebut memerlukan informasi rahasia yang disebut kunci. Terdapat 2 jenis kriptografi, yaitu menggunakan algoritma kunci Simetris (kunci enkripsi dan dekripsi sama) serta algoritma kunci Asimetris (kunci enkripsi dan dekripsi berbeda).

     Dalam algoritma kunci Asimetris, kunci untuk meng-enkripsi pesan adalah kunci publik (dapat diketahui siapa saja), namun kunci dekripsi adalah kunci rahasia. Kelebihan dari algoritma kunci Asimetris yaitu pengguna dapat berkomunikasi dengan banyak pihak tanpa membuat banyak kunci. Berbeda dengan algoritma kunci Simetris yang setiap kuncinya hanya untuk komunikasi 2 pihak. Algoritma kunci Asimetris dianalogikan seperti kotak amal di masjid. Setiap orang bisa memasukkan uang kedalamnya (enkripsi), tapi hanya pemegang kunci saja yang bisa membuka kotaknya (dekripsi).

     Salah satu algoritma kunci Asimetris yang terkenal adalah algoritma RSA. Algoritma ini ditemukan tahun 1977 oleh Ron Rivest, Adi Shamir dan Len Adleman dari Massachusetts Institute of Technology. Dasar dari algoritma ini adalah Teorema Fundamental Aritmatika tentang Bilangan Prima yang telah ditemukan 200 SM. Dalam teorema tersebut dijelaskan bahwa setiap bilangan bulat yang lebih dari 1 dapat dinyatakan sebagai perkalian bilangan prima secara unik. Nah kekuatan dari algoritma RSA terletak pada proses eksponensial dalam memfaktorkan sebuah bilangan menjadi 2 bilangan prima. Untuk lebih jelasnya langsung saja kita lihat prosesnya.

Penentuan public key dan private key.

- Pilih dua bilangan Prima. Misalkan p=13 dan q=17.
- Hitung n = p*q = 13*17 = 221
- Hitung Φ(n) = (p-1)(q-1) = 12*16 = 192
- Pilih e yang relatif prima dengan Φ(n) dan kurang dari Φ(n).
  misalkan e=5   ----> karena FPB(5,192)=1 ---> arti dari relatif prima.
- Cari d sehingga e*d mod Φ(n) = 1
  maka d=77   ---> karena 5*77 mod 192 = 1 ---> artinya 5*77 = 192*2 + 1
  (nilai d dapat dicari menggunakan extended euclidean algorithm)

Dengan demikian didapatkan public key  = (n,e) = (221,5)
                           private key = (n,d) = (221,77)

Proses Enkripsi

Sekarang waktunya kita enkripsi pesan. Misalkan kita ingin mengenkripsi pesan TAMAN, maka pertama ubah setiap huruf menjadi bilangan bulat (A=01, B=02 .... Z=26). Maka diperoleh:

T A M A N = 20 01 13 01 14

lalu gunakan teknik block cipher (membagi pesan menjadi blok-blok dengan panjang sama). Misalkan
menggunakan blok dengan panjang 3 digit.

200-113-011-4

lalu dimulailah proses penyandian menggunakan public key (n,e) = (221,5):
(kode)e mod n
 (200)5 mod 221 = 200
 (113)5 mod 221 = 146
  (11)5 mod 221 = 163
   (4)5 mod 221 = 140

Dengan demikian pesan hasil enkripsi adalah: 200-146-163-140.
Pesan rahasia siap dikirim.

Proses Dekripsi

Proses dekripsi membutuhkan private key (n,d) = (221,77). Prosesnya:
(kode)d mod n
(200)77 mod 221 = 200
(146)77 mod 221 = 113
(163)77 mod 221 = 11 = 011
(140)77 mod 221 = 4

didapatkan pesan hasil dekripsi   200-113-011-4
lalu ubah menjadi blok dua digit  20 01 13 01 14
lalu kembalikan ke bentuk huruf   T  A  M  A  N                   *Tadaa...!!*


   Oke, balik lagi ke teorinya. Bagi si pembuat kunci, dengan memilih p dan q maka dengan mudah diperoleh nilai n. Namun bagi orang lain yang ingin mendekripnya, ia harus mencari p dan q dari kunci publik n. Nah, kekuatan algoritma RSA terletak pada kesulitannya dalam memfaktorkan bilangan n menjadi p dan q. Sekali n berhasil difaktorkan, p dan q telah diketahui pihak lain dan e juga diketahui (memang kunci publik), maka tidak sulit mencari nilai d. Karena n dan d diketahui, maka semua pesan yang kita enkripsi dengan kunci publik (n,e) akan dapat di dekripsi oleh pihak lain.

     Umumnya untuk menjamin keamanan algoritma RSA, nilai p dan q minimal panjangnya 100 digit. Rivest, Shamir dan Adleman  telah mencoba mengenkripsi pesan menggunakan bilangan bulat n = 129 digit pada tahun 1977 dan pesan tersebut baru berhasil dipecahkan orang 17 tahun kemudian dengan menggunakan 87 unit komputer dual processor dan 30 unit komputer 4 processor. Rekor terakhir dalam pemfaktoran dua bilangan prima dipecahkan tanggal 12 Desember 2009 dengan n = 232 digit setara dengan komputasi selama 2000 tahun. Ada hadiah 200.000 dollar buat yang bisa memfaktorkan RSA dengan n = 617 digit. Waaa. Mau tau gimana susahnya? coba faktorkan bilangan 943 (n = 3 digit) menjadi pekalian 2 bilangan prima. Butuh waktu berapa lama memfaktorkannya?
Kekurangan dari algoritma RSA adalah kunci privatnya yang sangat panjang sehingga berimbas pada lambatnya proses dekripsi. Sehingga algoritma ini lebih umum digunakan dalam enkripsi pesan pendek.

"In the real world if your cryptography fails, you lose a million dollars or your secret agent gets killed. In academia, if you write about a cryptosystem and then a few months later find a way to break it, you’ve got two new papers to add to your résumé!"
(Neil Koblitz: The Uneasy Relationship Between Mathematics and Cryptography)

Sumber: J. J. Siang BILANGAN PRIMA : PERKEMBANGAN DAN APLIKASINYA

7 komentar: