Merkle-Hellman Knapsack Cryptosystem

advertisement
Merkle-Hellman
Knapsack
Cryptosystem
AKIK HIDAYAT
MATEMATIKA FMIPA UNPAD
Kriptosistem Merkle Hellman
Knapsack
• Merkle Hellman Knapsack pertama kali
dideskripsikan oleh Merkle dan Hellman
pada tahun 1978
• Didasarkan pada masalah NP complete
(Non Deterministic Polynomial)
• Knapsack problem
CRYPTOGRAPHY
j 1
sj   si
i 1
Bentuk umum
• Ambil s = (s1,s2,…,sn) sembarang bilangan integer
n
superincreasing, ambil
p 
s
i
i 1
n
p   si
i 1
• bilangan prima, dan ambil 1 a  P
• untuk 1 i  n.
• Didefinisikan ti = asi mod P, dan dinyatakan dalam t = ( t1,
t2, t3, ... tn ). Ambil P = {0,1)n , C = {0,1,...,n(P-1)}dan
ambil K = {(s,P,a,t)}, dimana s,P,a,t dikontruksi seperti
diatas, t sebagai Public, dan P,a dan s adalah
secret(rahasia). Untuk K = {(s,P,a,t)}, didefinisikan
• eK (x1, x2, x3, …., xn) = . x t
n
i i
i 1
• Untuk 0  y  n(P-1), Definisikan Z = a-1y mod P, dK (y) =
(x1, x2, x3, …., xn )
n
x s
i i
i 1
T
Knapsack Problem
Problem Instance
I = 1(s,…, snn,/ 2 T), dimana s1,…,sn dan T adalah
bilangan
S 1 bulat
{  xpositif.
ja j : x j  S
{ i0 ,adalah
1} for allsizes
j } dan T
adalah Targetj  1Sum.
Question
Apakah 0-1 vektor x = (x1,…,xn) merupakan
n
x s
i i
i 1
T
?
j 1
sj   si
i 1
Algoritma Merkle-Hellman Knapsack
What we need
• S = (s1,…,sn) bilangan integer superincreasing
j 1
s j   si
i 1
n
p   si
i 1
n
•
p 
 s bilangan prima
i
i 1
• a, 1 ≤ a ≤ p-1
• t = a si mod p
Public Key: t
Private Key: si, p, a,
Algoritma Merkle-Hellman Knapsack
Encode:
es(x1,…,xn) =
n

x iti
i 1
Decode:
z = a-1 y mod p
• penyelesaian masalah subset (s1,…,sn,Z)
diberlakukan untuk dK(y) = (x1,…,xn).
Contoh Merkle-Hellman Knapsack
Private key :
s = (1,2,5,11,32,87,141)
a = 200
p = 307
Plaintext (x) :SYANE MARANNU THANA
Chipertext : ?????
Perhitungan Public Key (t) :
ti = a* si mod p
Didapatkan
t = (200,93,79,51,260,208,263)
Plaintext :
syane marannu thana
Dimasukkan dalam kode ASCII
x = 83 89 65 78 69 77 65 82 65 78 78 85 84 72 65 78 65
Masing – masing kode ASCII tersebut dikonversi ke biner
s  83 : 1010011
y  89 : 1011001
20
a  65 : 1000001
n  78 : 1001110
11
e 8 69 : 1000101 dst…
6
5
4
Subset-sum Problem
Plaintext di bagi dalam block sesuai dengan banyaknya s,
pada contoh ini banyaknya s adalah 7 digit.
1010011 y = 200 + 79 + 208 + 263 = 750
1011001 y = 200 + 79 + 51 + 263 = 593
dst…
Ciphertext :
750 593 dst…
Dekripsi :
Hitung Z
Z = a-1y mod p
200-1=????  dengan algoritma extended euclidian
200-1= 1171
Untuk y = 750:
Z = 241*750 mod 307
= 180750 mod 307
= 234
234 = 1*1 + 0*2 + 1*5 + 0*11 + 0*32 + 1*87 + 1*141
Plaintext  1010011
Bob
Alice
Creates
Cryptosystem
Private Key
s = (1,2,5,11,32,87,141)
a = 200
p = 307
Decrypts
Ciphertext
Plaintext:
P= 1010011
Public Key
t = (200,93,79,51,
260,208,263)
Encryption:
Using Public Key
y = 200 + 79 + 208 + 263 = 750
Decryption:
Z = 241*750mod 307
= 234
234 = 1*1 + 0*2 + 1*5 + 0*11 + 0*32 + 1*87 + 1*141
Plaintext:
P= 1010011
Ciphertext:
750
Download