Algoritma Superincreasing Knapsack adalah algoritma yang lemah, karena ciphertext
dapat didekripsi menjadi plaintext secara mudah dalam waktu polinomial. Algoritma non-superincreasing knapsack atau normal knapsack
adalah kelompok algoritma 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 privat untuk dekripsi. Kunci publik merupakan barisan non-
Superincreasing sedangkan kunci privat tetap merupakan barisan superincreasing.
Hasil modifikasi tersebut dinamakan algoritma Merkle-Helman karena modifikasi ini ditemukan oleh Martin Hellman dan Ralph Merkle. Modifikasi dilakukan
dengan perhitungan aritmatika modulo Munir, 2006.
2.5.2 Penggunaan Teori Bilangan Bulat Pada Sistem Kriptografi Merkle- Hellman
2.5.2.1 Penggunaan Arimatika Modulo Dan relatif Prima Pada Pembangkitan Kunci Merkle-Hellman
Untuk mengenkripsikan n-bit pesan, caranya adalah sebagai berikut: a. Tentukan barisan Superincreasing. w = w
1
, w
2
, ..., w
n
dari bilangan bukan nol b. Pilih salah satu bilangan integer q sehingga memenuhi
dan salah satu angka integer r secara acak sehingga PBBr,q =1 r relatif prima dengan
q . Bilangan q dipilih dengan cara di atas untuk memastikan keunikan dari
ciphertext . Jika bilangan yang digunakan lebih kecil, lebih dari satu plaintext
akan dienkripsi menjadi ciphertext yang sama. Sedangkan r harus tidak memiliki persekutuan dengan q karena jika tidak, maka balikan modulo dari
r mod q tidak dapat ditemukan. Bilangan yang merupakan balikan modulo dari
r mod q adalah penting agar memungkinkan dekripsi.
c. Kemudian hitung barisan yang memenuhi
d. Kunci publik adalah , sedangkan kunci privat adalah w barisan superincreasing
semula Munir, 2006.
Universitas Sumatera Utara
2.5.2.2 Penggunaan Balikan Modulo Pada Dekripsi Enkripsi Knapsack
Terdapat n-bit pesan α = α1, α2, ..., α
n
dengan αi adalah bit ke-i dari pesan dan α
i
∈{0, 1}.
i Teknik Enkripsi Knapsack
Cara untuk mengenkripsi pesan tersebut adalah sebagai berikut: a. Pilih himpunan bagian dari normal Knapsack kunci publik yang
berkorespondensi dengan 1 pada plainteks dan mengabaikan bagian yang berkorespondensi dengan 0 pada plainteks.
b. Elemen dari himpunan bagian yang telah dipilih dijumlahkan dan hasilnya menjadi ciphertext Marta, 2006
..................................................17
ii Teknik Dekripsi Knapsack
Untuk mendekripsi ciphertext c, penerima harus menemukan pesan dalam bentuk sehingga memenuhi
Nilai βi dipilih sehingga dekripsi mudah dilakukan jika kunci privat w, q, r
diketahui. Hal yang penting dari dekripsi adalah menemukan suatu bilangan integer n
-1
yang merupakan balikan modulo modular inverse dari r modulo q. Ini berarti n
-1
memenuhi persamaan n
-1
.r mod q = 1 atau n
-1
.r ≡ 1 mod q atau
terdapat bilangan integer k sehingga n
-1
.r = kq + 1. Karena r dipilih sehingga memenuhi persamaan PBBr,q = 1, maka s dan k mungkin ditemukan dengan
menggunakan perhitungan balikan modulo yang memenuhi sr ≡ 1 mod q.
Kekongruenan ini dapat dihitung dengan cara yang sederhana sebagai berikut:
n
-1
= 1 + kqr.............................................18
dimana k merupakan sembarang bilangan bulat.
Universitas Sumatera Utara
Kalikan setiap kriptogram dengan n
-1
mod m , lalu nyatakan hasil kalinya
sebagai penjumlahan elemen-elemen kunci privat untuk memperoleh plainteks dengan menggunakan algoritma pencarian solusi superincreasing knapsack
Marta, 2006.
Bentuk persamaan dekripsi algoritma Knapsack adalah sebagai berikut :
.............................................19
Keterangan : plainkey pada sistem disebut session key
= balikan modulo = cipherkey
2.6 File