2. Algoritma Asimetris Kunci Publik
Kriptografi asimetris asymmetric cryptography adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi. Kunci
enkripsi dapat disebarkan kepada umum yang dinamakan sebagai kunci publik public key, sedangkan kunci dekripsi disimpan untuk digunakan sendiri dan
dinamakan sebagai kunci pribadi private key. Oleh karena itulah, kriptografi ini dikenal pula dengan nama kriptografi kunci publik public key cryptography. Pada
kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci, yaitu kunci private dan kunci publik. Prosesnya, pengirim sender mengenkripsi
pesan dengan menggunakan kunci publik sipenerima pesan receiver dan hanya si penerima pesanlah yang dapat mendekripsi pesan karena hanya ia yang mengetahui
kunci private itu sendiri. Contoh algoritma yang termasuk algoritma kriptografi kunci publik diantaranya adalah RSA, Elgamal, DSA, Knapsack, dll Namira,
2013. Proses enkripsi dan dekripsi algoritma kunci asimetris dapat dilihat pada gambar 2.3 dibawah ini :
Kunci Private,K1 Kunci Private,K2
Plaintext P Ciphertext C
Plaintext P
Gambar 2.3 Skema Kriptografi Asimetris
2.2 Algoritma Knapsack
Knapsack merupakan optimasi pengangkutan barang atau disebut juga optimasi kombinatoriol. Knapsack problem adalah salah satu masalah bagaimana cara
menentukan pemilihan barang dari sekumpulan barang di mana setiap barang tersebut menmpunyai berat dan profit masing-masing, sehingga dari pemilihan barang tersebut
didapatkan profit yang maksimum. Timothy, 2014 Tujuan Knapsack problem adalah agar dapat mendapatkan keuntungan yang
maksimum dari pemilihan barang tanpa melebihi kapasitas daya tampung media
Dekripsi
�
C = P Enkripsi
�
P = C
Universitas Sumatera Utara
transportasi tersebut. Dalam teori algoritma, persoalan Knapsack termasuk kedalam kelompok NP-complete. Persoalan yang termasuk NP-complete tidak dapat
dipecahkan dalam orde waktu polynomial. Timothy, 2014
Jenis-jenis Knapsack adalah: 1.
01 Knapsack Problem Setiap barang hanya terdiri satu unit dan boleh diambil atau tidak sama sekali.
2. 0n Knapsack Problem
Setiap barang terdiri dari n buat unit dan boleh diambil atau tidak sama sekali 3.
Bounded Knapsack Problem Setiap barang tersedia n buah unit dan jumlahnya terbatas
4. Unbounded Knapsack Problem
Setiap barang tersedia lebih dari satu unit dan jumlahnya tidak terbatas 5.
Fractional Knapsack Problem Barang boleh diambil dalam bentuk pecahan atau sebahagian. Contohnya gula,
garam, tepung dan lain-lain. Namira, 2013
Knapsack Problem: Diberikan bobot knapsack adalah M. Diketahui n buah objek yang masing-masing
bobotnya adalah w1, w2, …, wn. Tentukan nilai bi sedemikian sehingga M = b1w1 + b2w2 + … + bnwn yang dalam hal ini, bi bernilai 0 atau 1. Jika bi = 1, berarti
objek i dimasukkan kedalam knapsack, sebaliknya jika bi = 0, objek i tidak dimasukkan. Dalam teori algoritma, persoalan knapsack termasuk ke dalam
kelompok NP-complete. Persoalan yang termasuk NP-complete tidak dapat dipecahkan dalam orde waktu polynomial.
Algoritma Knapsack Sederhana Ide dasar dari algoritma kriptografi knapsack adalah mengkodekan pesan sebagai
rangkaian solusi dari dari persoalan knapsack. Setiap bobot wi di dalam persoalan knapsack merupakan kunci private, sedangkan bit-bit plaintext menyatakan bi.
Sayangnya, algoritma knapsack sederhana ini hanya dapat digunakan untuk enkripsi, tetapi tidak dirancang untuk dekripsi. Algoritma superincreasing
Universitas Sumatera Utara
Knapsack adalah algoritma yang lemah, karena ciphertext dapat didekripsi menjadi plainteksnya secara mudah dalam waktu lancar.
Algoritma non-superincreasing Knapsack atau normal Knapsack adalah kelompok algoritma Knapsack yang sulit dari segi komputasi karena
membutuhkan waktu dalam orde eksponensial untuk memecahkannya. Namun, superincreasing Knapsack dapat dimodifikasi menjadi non-superincreasing
Knapsack dengan menggunakan kunci publik untuk enkripsi dan kunci rahasia untuk dekripsi. Kunci publik merupakan barisan non-superincreasing sedangkan
kunci rahasia tetap merupakan barisan superincreasing. Modifikasi ini ditemukan oleh Martin Hellman dan Ralph Merkle.
a. Cara membuat kunci publik dan kunci rahasia:
1. Tentukan barisan superincreasing.
2. Kalikan setiap elemen di dalam barisan tersebut dengan n modulo m.
Modulus m seharusnya angka yang lebih besar daripada jumlah semua elemen di dalam barisan, sedangkan pengali n seharusnya tidak mempunyai
faktor persekutuan dengan m. 3.
Hasil perkalian akan menjadi kunci publik sedangkan barisan superincreasing semula menjadi kunci rahasia Namira, 2013.
b. Enkripsi Algoritma Knapsack
1. Menggunakan kunci publik untuk melakukan enkripsi.
2. Plaintext dipecah menjadi blok bit yang panjangnya sama dengan
kardinalitas barisan kunci publik. 3.
Kalikan setiap bit didalam blok dengan elemen yang berkoresponden di dalam kunci publik.
c. Dekripsi Algoritma Knapsack
1. Menggunakan kunci rahasia untuk melakukan dekripsi.
2. Menghitung nilai n
-1
, yaitu kebalikan n modulo m, sedemikian sehingga n n
-1
≡ 1 mod m.
Universitas Sumatera Utara
3. Mengalikan setiap kriptogram dengan n
-1
mod m, lalu nyatakan hasil kalinya sebagai penjumlahan elemen-elemen kunci rahasia untuk
memperoleh plaintext dengan menggunakan algoritma pencarian solusi superincreasing Timothy, 2014.
Contoh :
Misalkan barisan superincreasing adalah {2, 5, 9, 17, 25, 50}, m = 103, dan n = 31. Barisan non-superincreasing atau normal Knapsack dihitung sbb:
2 . 31 mod 103 = 62 5 . 31 mod 103 = 52
9 . 31 mod 103 = 73 17 . 31 mod 103 = 12
25 . 31 mod 103 = 54 50 . 31 mod 103 = 5
Jadi, kunci publik adalah {62, 52, 73, 12, 54, 5}, sedangkan kunci rahasia adalah {2,5, 9, 17, 25, 50}.
Enkripsi dilakukan dengan cara yang sama seperti algoritma Knapsack sebelumnya. Mula-mula plaintext dipecah menjadi blok bit yang panjangnya sama dengan
kardinalitas barisan kunci publik. Kemudian kalikan setiap bit di dalam blok dengan elemen yang berkoresponden di dalam kunci publik.
Contoh :
Misalkan Plaintext: 011001100000110110 dan kunci publik yang digunakan seperti pada Contoh sebelumnya. Plaintext dibagi menjadi blok yang panjangnya 6, kemudian
setiap bit di dalam blok dikalikan dengan elemen yang berkorepsonden di dalam kunci publik:
Blok plaintext ke-1 : 011001 Kunci publik
: 62, 52, 73, 12, 54, 5 Kriptogram
: 1 × 52 + 1 × 73+ 1 × 5 = 130 Blok plaintext ke-2 : 100000
Kunci publik : 62, 52, 73, 12, 54, 5
Kriptogram : 1 × 62 = 62
Universitas Sumatera Utara
Blok plaintext ke-3 : 110110 Kunci publik
: 62, 52, 73, 12, 54, 5 Kriptogram
: 1 × 62 + 1 × 52 + 1 × 54 + 1 × 5 = 173 Jadi, ciphertext yang dihasilkan : 130, 62, 173
Dekripsi dilakukan dengan menggunakan kunci rahasia. Mula-mula penerima pesan menghitung n
–1
, yaitu balikan n modulo m, sedemikian sehingga n . n
–1
≡ 1 mod m. Kekongruenan ini dapat dihitung dengan cara yang sederhana sebagai berikut
disamping dengan cara yang sudah pernah diberikan pada Teori Bilangan Bulat: n . n
–1
≡ 1 mod m n . n
–1
= 1 + km n
–1
= 1 + kmn , k sembarang bilangan bulat Kalikan setiap kriptogram dengan n
–1
mod m, lalu nyatakan hasil kalinya sebagai penjumlahan elemen-elemen kunci rahasia untuk memperoleh plaintext dengan
menggunakan algoritma pencarian solusi superincreasing Knapsack.
Contoh :
Ciphertext dari 130, 62, 173 akan dideskripsikan dengan menggunakan kunci rahasia {2, 5, 9, 17, 25, 50}. Di sini, n = 31 dan m = 103. Nilai n
–1
diperoleh sbb: n
–1
= 1 + 103k31 Dengan mencoba k = 0, 1, 2, …, maka untuk k = 3 diperoleh n
–1
bilangan bulat, yaitu: n
–1
= 1 + 103 . 331 = 10
Ciphertext dari Contoh sebelumnya adalah 130, 62, 173 . Plaintext yang berkoresponden diperoleh kembali sebagai berikut:
130. 10 mod 103 = 64 = 5+ 9 + 50 , berkoresponden dengan 011001 62 . 10 mod 103 = 2 = 2 berkoresponden dengan 100000
173 . 10 mod 103 = 82 = 2 + 5 + 25 + 50 , berkoresponden dengan 110110 Jadi, plaintext yang dihasilkan kembali adalah: 011001 100000 110110
Universitas Sumatera Utara
2.3. Kompresi Data