Knapsack Problem Dan Algoritma LLL
Knapsack Problem Dan Algoritma LLL
Kasus special yang terjadi dengan problem ini ialah ketika nilai dari
masing-masing perhiasan sama dan menemukan subset perhiasan yang
sesuai dengan kapasitasnya. Ini biasa disebut “subset sum problem” atau
“knapsack problem” di dalam kriptografi. Ini memungkinkan nantinya tidak
ada subset atau jumlah perhiasannya terlalu banyak sehingga scenario
terburuk sekalipun tidak dapat diselesaikan, sehingga masalahnya pun
menjadi NP-complete. Masalah ini menjelaskan masalah NP-complete yang
lain, yaitu Traveling Salesman Problem (TSP).
Bob ingin mengirimkan pesan ke Alice, dan kunci public alice ialah a =
(a1, a2, ..., an). Untuk meng-encipherkan pesan x = (x1, x2, ..., xn) dari n bits, Bob
membuat sum-nya :
(1)
Merkle-Hellman Trapdoor
masing i dengan ,
Super increasing sequence ialah ketika tiap-tiap term lebih besar dari
jumlah term sebelumnya. Contohnya, (1, 2, 4, 8, ..., 2n-1) merupakan super
increasing sequence yang mudah dan (1, 2, 3, 4, 5,...,9) bukan merupakan super
increasing sequence. Untuk mengetahui apakan suatu sequence merupakan
super increasing, maka computer hanya akan membuat 1 pass over untuk
semua sequence dalam waktu O(h). Jadi, untuk menentukan apakah suatu
subset sum T merupakan bagian dari super increasing atau bukan, komputer
harus menentukan apakah angka terbesar dalam himpunan tersebut kurang
dari atau sama dengan T dan mensubstraksinya untuk memperoleh T’.
Proses ini terus berulang. Jika T’ = 0, maka subset sum terdiri dari semua
angka yang disubstraksi dari T.
(2)
(3)
and , (4)
or and ,
dan (5)
• Posets
Posets atau partially ordered set ialah himpunan yang diambil bersamaan
secara partial order di dalamnya. Untuk mengilustrasikannya, anggap A
dan B merupakan dua buah himpunan, A ialah subset dari B, sehingga
himpunan-himpunan tersebut secara parsial diurutkan (partially ordered)
oleh masing-masing himpunan. Jika A bukan subset dari B dan B bukan
merupakan subset A, maka mereka tidak partially ordered.
• Latice
Latice didefinisikan oleh pada himpunan memenuhi beberapa syarat
untuk lattice, yaitu :
Definisi dari Least Upper (lub) Greatest Lower (glb) Bounds ialah :
Algoritma LLL
Algoritma LLL pertama kali ditemukan pada tahun 1980 oleh Lenstra,
Lenstra, dan Lovasz. Sebenarnya tujuan dari algoritma LLL bukan untuk
membobol kripto sistem manapun, tetapi untuk mencari factor polynomial
dengan keofisien rasional. Hal ini juga berkembang untuk algoritma
pengurangan Latice yang digunakan untuk menyelesaikan pemrograman
integer linier.
Teorema
(v1,...vn) adalah baris dari lattice L dan v'i adalah poin untuk
, seperti yang
(6)
(7)
dimana * menandakan hasil linier scalar. Pada algoritma yang lain v1,v2...,vn
akan diubah beberapa kali, tetapi akan selalu menyisakan basis L. Setelah
semua perubahan, v'i dan mij diperbaharui dengan menggunakan persamaan
(6) dan (7). Subscript k saat itu digunakan selama algoritma LLL dimulai
dengan k = 2. Jika k = n +1, maka algoritma tersebut akan dijalankan.
Misalnya saat ini k <= n, maka pertama-tama kita ingin mkk-1| <= ½ jika k > 1 .
Jika hal ini tidak terjadi, r adalah integer terdekat ke mkk-1 dan menggantikan vk
dengan vk - rvk-1 (jangan lupa update). Selanjutnya kita membedakan dua
kasus. Misalnya k >= 2 dan |v'k + mkk-1v'k-1| < (3/4) |v'k-1|2 ,maka ganti vk-1 dan vk
(jangan lupa update), kemudian ganti k dengan k-1 dan restart. Dalam kasus
ini kita ingin :
untuk (8)
Jika kondisi pada persamaan (8) tidak terjadi, kemudian L akan menjadi
indeks terbesar <k dengan mlk > ½ , r menjadi yang terdekat ke mlk dan
mengganti bk dengan bk - rbl (jangan lupa update), ulangi sampai kondisi pada
persamaan (8) terpenuhi, kemudian gantikan k dengan k+1 dan restart.
Catatan, jika kasus k = 1 terjadi, gantikan dengan k = 2.
Contoh aplikasi
• S = [2, 5, 9, 21, 45, 103, 215, 450, 946] adalah kunci public kita
• p = 2003;
• m = 1289; dimana m-1 = 317.
Knapsack public :
• kunci publik T = [575, 436, 1586, 1030, 1921, 569, 721, 1183, 1570]
• dan ciphertext 6665
____________________________________@_________________
Kolom yang ditandai dengan “@” mirip seperti solusi 101100111
dimana itu adalah jawaban yang benar.
Kesimpulan
NPM : 50407039
Sumber :
http://www.math.ucsd.edu/~crypto/Projects/JenniferBakker/Math187/index.html