a h atizs ak probl ema alkalmaz asa a kriptogr a...
TRANSCRIPT
Eotvos Lorand Tudomanyegyetem
Termeszettudomanyi Kar
A hatizsak problemaalkalmazasa a kriptografiaban
BSc szakdolgozat
Horvath AkosMatematika BSc
Matematikai elemzo szakirany
Temavezeto: Lukacs Andras
Szamıtogeptudomanyi Tanszek
Budapest
2016
Tartalomjegyzek
1. Bevezetes 2
2. A hatizsak problema es megoldasa 4
2.1. Pelda a dinamikus programozassal valo megoldasra . . . . . . 5
3. 0-1 hatizsak problema 8
3.1. NP-teljesseg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4. Merkle-Hellman hatizsak titkosıtas 12
4.1. Modularis hatizsak problema . . . . . . . . . . . . . . . . . . . 12
4.2. Kodolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3. Dekodolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4. Pelda a Merkle-Hellman titkosıtasra . . . . . . . . . . . . . . . 16
4.5. Biztonsag, feltorhetoseg . . . . . . . . . . . . . . . . . . . . . 19
4.5.1. Racsredukcio . . . . . . . . . . . . . . . . . . . . . . . 19
4.5.2. Valos szamok diofantikus becslese . . . . . . . . . . . . 22
4.6. Feltores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.6.1. Szokatlanul jo szimultan diofantikus becsles . . . . . . 23
4.6.2. Alacsony surusegu hatizsak problemak . . . . . . . . . 25
5. Chor-Rivest hatizsak titkosıtas 29
5.1. Biztonsag, feltorhetoseg . . . . . . . . . . . . . . . . . . . . . 30
Hivatkozasok 31
1
1. Bevezetes
A hatizsak problema eseten adott egy sulykapacitas, ami az adott hatizsakot
jellemzi, valamint kulonbozo elemek sokasaga, sajat sulyokkal es ertekekkel.
A feladat az, hogy a kapacitason belul maradva valasszuk ki az elemek olyan
reszhalmazat, hogy minel nagyobb legyen az ertekeik osszege. Emiatt ne-
vezzuk hatizsak problemanak, hiszen olyan ez, mint amikor nyaralas elott
merlegelunk, mit pakoljunk be a korlatos teherbırasu taskankba, mi az, ami
fontos.
Meg kell hatarozni tehat, hogy mely elemeket rakjuk be a hatizsakba, es
melyeket ne. Ez a feladat altalanos esetben bizonyıtottan NP-nehez, viszont
leteznek olyan feltetelek, amelyek mellett polinomialis idoben megoldhato. E
ket tulajdonsag miatt Ralph Merkle es Martin Hellman [1] szamara lehetseges
alternatıvanak tunt nyılt kulcsu titkosıtasra az RSA algoritmus helyett. Nem
sokkal az RSA kifejlesztese utan, 1978-ban mutattak be a hatizsak problema
alapu titkosıtasi algoritmusukat. Az RSA-hoz hasonloan nyilvanos kulcson
alapszik, de Merkle es Hellman alapotlete egyszerubb. Hat evvel kesobb,
1984-ben Adi Shamir [2] mutatta meg, hogy a titkosıtas nehany esetben
polinomialis idoben feltorheto, emiatt ma nem ezt hasznaljuk adataink tit-
kosıtasara.
A tovabbiakban a hatizsak problema kriptigrafiai szerepet targyaljuk. Be-
mutatjuk az LLL-algoritmust, valamint, hogy az eredetileg polinomok fakto-
rizaciojara ırt racsredukcios eljarast hogyan hasznalhatjuk a Merkle-Hellman
titkosıtas feltoresere. Tovabba bemutatjuk a Chor-Rivest titkosıtast, amire
szinte egyedulallo modon nem alkalmazhato hatekonyan a racsredukcio.
A dolgozat elso reszeben szo lesz a hatizsak problemarol, es egy pelda meg-
oldasan keresztul bemutatasra kerul a dinamikus programozas.
2
A masodik reszben a hatizsak problema legfontosabb specialis esetevel, a 0-1
hatizsak problemaval foglalkozunk, valamint megmutatjuk rola, hogy NP-
teljes.
A harmadik reszben a Merkle-Hellman titkosıtast mutatjuk be, aminek az
alapja a maradekosztalyokon ertelmezett 0-1 hatizsak problema, itt beszelunk
a kodolasrol es a dekodolasrol, tovabba alkalmazzuk a titkosıtast egy pelda-
ban. Ezutan megnezzuk, hogyan lehet feltorni ezt a titkosıtast, amihez
targyaljuk a Lovasz-fele racsredukciot, es nehany szamelmeleti fogalmat.
Vegul a negyedik resz a Chor-Rivest titkosıtas, amely azon ritka, hatizsak
alapu titkosıtasok egyike, amelyeket meg nem sikerult feltorni.
3
2. A hatizsak problema es megoldasa
Lassuk tehat, hogyan is nez ki a hatizsak problema.
2.1. Definıcio. Legyenek a sulyok s1, s2, . . . , sn, az ertekek e1, e2, . . . , en,
a sulykapacitas C, pozitıv szamok. A hatizsak problema megoldasa, az-
az a kimeneti adat azon elemek halmaza lesz, amelyeket a hatizsakba rak-
va maximalis lesz az ertekosszeg, es a sulyosszeguk nem nagyobb, mint a
sulykapacitas.
A feladat megoldasara dinamikus programozast fogunk hasznalni, mivel ez a
legszemleletesebb.
2.2. Definıcio. Minden c < C-re definialjuk ugy az m[c] erteket, hogy az a
maximalis ertekosszeg legyen, amit c kapacitas mellett bele tudunk tenni a
zsakunkba, es ekkor a feladat megoldasa m[C] lesz.
m[c]-re legyen tehat:
• m[0] = 0, mivel nulla kapacitasu hatizsakba nem tudunk semmit pa-
kolni
• m[c] = maxci≤c
(ei +m[c− ci]), az adott ertek, es egy, mar korabban meg-
oldott, kisebb kapacitasu hatizsakban rejlo elemek ertekosszege
Az m[c] bevezetesevel rekurzıvan kapjuk meg a hatizsak problema meg-
oldasat, c-vel a 0 es C kozotti termeszetes szamokat novekvo sorrendben
bejarva. Az
m[c] = maxci≤c
(ei +m[c− ci])
formula mukodese:
Minden i-re az aktualis ci sulyu es ei erteku elemet beletesszuk a hatizsakba,
hogyha az m[c− ci] sulykapacitasu (mar megoldott) hatizsak, plusz ei erteke
4
maximalis. Ez garantalja, hogy nem lehet tobb suly a zsakban, mint a kapa-
citas (hiszen az i. elem sulya ci).
2.1. Pelda a dinamikus programozassal valo megoldasra
A bemeneti adatok a kovetkezoek lesznek:
A kapacitas pedig legyen C = 6. Kezdetnek toltsuk fel ıgy a kovetkezo tablazatot:
a nulladik sor es oszlop legyen csupa nulla, a sorok jelentsek, hogy hanyadik elemig
nezzuk az osszes elemet, az oszlopok pedig, hogy mekkora kapacitasra szorıtjuk meg
a feladatot.
A feltoltes soronkent tortenik, balrol jobbra, az elobb definialt m[c]-t felhasznalva.
Mivel a 2. sorban mar a 2. elemet is felhasznalhatjuk, ezert c = 2 kapacitas eseten
az elso ket elem mindegyiket bele tudjuk rakni a zsakba.
5
Ha a 4. elemet is hasznalhatjuk, akkor c = 4 kapacitasnal az optimalis megoldas az,
ha az 1., 2. 3. elem benne van a zsakban. Am c = 5 eseten kivesszuk az 1.-t, es
berakjuk helyette a 4. elemet.
Kitoltjuk az utolso sort is.
Megkaptuk a vegeredmenyt, 12 az ertekek osszege, ami a 6 kapacitasu hatizsakba
belefer. A tablazatbol vissza is tudjuk keresni, hogy mely elemeket hasznaltuk fel:
6
ha egy sorban valtozas van az ertekekben a felette levo sorhoz kepest, akkor az adott
sorhoz tartozo elemet felhasznaltuk. Alulrol felfele vizsgalva a tablazatot ıgy meg-
kaphatjuk, mely elemek vannak a hatizsakban. Az 5. sorban van valtozas a 4.-hez
kepest, ıgy az 5. elem benne van. Az o sulya 3 volt, nezzuk meg, hogy a 6 − 3
kapacitasu taskaban mi van (a 4. sorban). Ugyanugy 5 az erteke, mint a 3. sorban,
ezert ugrunk is oda. A 2. sorban megint kevesebb a hatizsak erteke c = 3 mellett, ıgy
a 3. elem is benne van a zsakban. 2 volt az erteke, nezzuk a 3− 2 kapacitasu zsakot
a 2. sorban. Ez 2, nagyobb, mint az 1. sorban levo, es 1 volt a sulya. 1 − 1 = 0,
elerkeztunk a 0. oszlophoz, vegeztunk. A zsakunkban tehat a 2., 3., 5. elemek vannak
benne. Ellenorzeskent ezek erteke 2 + 3 + 7 = 12, sulyuk 1 + 2 + 3 = 6
7
3. 0-1 hatizsak problema
Az alapfeladatot tehat mar meg tudjuk oldani. De mennyi ido alatt? A
hatizsak problema alapvetoen NP-teljes [3], nem varhato ra polinomialis
idoben megoldas, a megoldasi ido pszeudopolinomialis (exponencialisan fugg
attol, hogy hany biten tudjuk eltarolni a bemeneti adatokat).
3.1. Definıcio. A 0-1 hatizsak problemat a kovetkezokeppen definialjuk:
adottak pozitıv egeszek, s1, s2, . . . , sn, es c. Keressuk meg x1, x2 . . . , xn ∈{0, 1} pozitıv egeszeket, hogy
n∑i=1
xisi = c. Itt az si-k a sulyok, es a c a cel.
Tehat nem maradhat ”kitoltetlen” hely a zsakban. Dolgozhatunk vektorokkal
is az egyszerubb jeloles erdekeben, ıgy s = (s1, s2, . . . , sn) ∈ Nn, c ∈ N mellett
keressuk x = (x1, x2 . . . , xn) ∈ {0, 1}n megoldast, amire c = x ∗ a, ahol ∗ a
vektorok skalaris szorzasat jeloli.
A kovetkezo fogalmat vezetjuk be a kesobbiekhez.
3.2. Definıcio. Egy szamsorozat szupernovekvo, ha minden elem szigoruan
nagyobb, mint az ot megelozoek osszege.
Nezzunk egy 0-1 hatizsak problemat szupernovekvo sulyokkal. Ezt na-
gyon egyszeru es gyors megoldani, az xi-k egyertelmuen meghatarozhatoak
xn-tol haladva x1-ig.
xi = 1 ⇐⇒ c−n∑
j=i+1
xjsj ≥ si,
hiszen xi-t elhagyva a tole kisebb indexu elemek sulya osszesen nincs annyi,
mint az ove, ıgy azokkal nem lehetne elerni a celt.
8
3.1. NP-teljesseg
A hatizsak problemara sokan kerestek polinomialis ideju megoldast, de nem
talaltak. Am a megoldasa polinomialis idoben leellenorizheto: ha meg-
oldaskent adottak az xi-k, akkor an∑i=1
xisi osszegrol el tudjuk donteni, hogy
jo-e, vagy sem. Az NP-beliseg definıcioja miatt tehat a hatizsak problema
NP-beli, tovabba bebizonyıtjuk, hogy NP-teljes is. A bizonyıtast az NP-teljes
3-Sat problemara [4] visszavezetve adjuk meg.
1. Tetel. A 0-1 hatizsak problema NP-teljes [5]
Bizonyıtas. A 3-Sat problemat alakıtjuk at a 0-1 hatizsak problemara.
Tegyuk fel, hogy van n db xi valtozonk es m db klozunk.
Minden xi-re hozzunk letre ti es fi vektorokat n+m hosszusaggal.
A ti es fi vektorok i. helyen 1.
n+ 1 ≤ j ≤ n+m-re legyen ti j. eleme 1, ha xi benne van a cj−n. klozban.
n+ 1 ≤ j ≤ n+m-re legyen fi j. eleme 1, ha xi benne van a cj−n. klozban.
Minden egyeb helyen alljon 0.
Pelda:
(x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3)
9
Most minden cj-re keszıtsuk el az xi es yi n+m hosszu vektorokat:
xi es yi n+ j. eleme legyen 1, minden mas 0.
Vegul legyen s egy n+m hosszu osszegvektor:
1 ≤ j ≤ n-re si = 1.
n+ 1 ≤ j ≤ n+m-re si = 3.
Ha a formula megoldas, a hatizsak megoldhato:
Ha xi igaz, vegyuk a ti-t, ha hamis, akkor fi-t.
Ha cj-ben legalabb ket igaz van, akkor vegyuk xj-t, ha csak 1, akkor yi-t.
Pelda:
(x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3)
Ennek a feladatnak a megoldasa az, ha minden valtozo igaz.
10
Ha a hatizsak problemanak van megoldasa, akkor a belole kapott formula
kielegıto:
• Az xi legyen igaz, ha ti benne van a hatizsakban, es xi legyen hamis,
ha fi benne van a hatizsakban.
• Minden valtozo, vagy a tagadasa van benne a hatizsakban, de semmi
esetre sem mindketto, kulonben s-ben az elso n hely valamelyiken nem
1, hanem 2 allna.
• Ha nem lenne benne a zsakban az egyik valtozo, es a tagadasa sem,
akkor viszont n es m kozott s erteke kisebb lenne, mint 3.
• A megfeleltetes konzisztens es minden kloz ki van elegıtve [6].
11
4. Merkle-Hellman hatizsak titkosıtas
A kriptografia targya a rejtjelezes es a kodolas. Adatok kodolasan a nyılt
szoveg egy masik szovegge valo atalakıtasat ertjuk, ami egy titkosıto eljarassal
tortenik. Ha a szoveget szamkent tekintjuk, vagy a kodolas elott szamma
alakıtjuk (peldaul minden karakterhez az ASCII kodjat rendeljuk), akkor a
titkosıto algoritmusunk egy matematikai fuggveny. Ha ez a fuggveny in-
jektıv, akkor az uzenetet az algoritmus ismereteben vissza tudjuk fejteni,
ekkor a titkosıtott szovegbol megkapjuk az eredeti szoveget. Ez a dekodolas.
A legtobb titkosıto fuggvenyhez kulcsot hasznalunk, ennek ismerete nelkul
hiaba ismeri valaki az algoritmust, nem tudja dekodolni az eredeti uzenetet.
Ilyen esetekben probalkoznak a titkosıtas feltoresevel. Feltores sokfelekeppen
lehetseges, de mi csak a matematikai reszevel fogunk foglalkozni.
Ha a specialis esetu, gyorsan megoldhato hatizsak problemat sikerulne vala-
hogy atalakıtanunk ugy, hogy egy nehez, lassan megoldhato problemat kap-
junk, akkor az talan alkalmazhato lenne titkosıtasra, mint az RSA. Ralph
Merkle es Martin Hellman az eredeti feladatot maradekosztalyokra oldottak
meg. Ez ugyebar megteheto, es minden feladatot at lehet ıgy alakıtani, a
kerdes csupan az, hogy mikor tudjuk ezt egyertelmuen visszafejteni, es mi-
lyen nehez masoknak visszafejteni, vagyis feltorheto-e a titkosıtas. Lassuk
tehat, hogyan is nez ki az 1978-ban bemutatott Merkle-Hellman Knapsack
Cryptosystem [1].
4.1. Modularis hatizsak problema
2. Tetel. [7] Legyenek w = (w1, w2, . . . , wn) ∈ Nn szupernovekvo sorozat
tagjai a hatizsak problema sulyai, Q es R egeszeket pedig ugy valasszuk meg,
hogy Q >n∑i=1
wi es lnko(Q,R) = 1, tehat R relatıv prım legyen Q-val. Ha
12
ezek megvannak, akkor elkeszıtjuk a b = (b1, b2, . . . , bn) ∈ Nn transzformalt
sulyokat a kovetkezokeppen:
bi = wi ∗R mod Q.
4.2. Kodolas
A nyilvanos kulcsunk a b lesz, a privat kulcsok pedig a w, a Q, es az R.
A titkosıtando n-bites binaris uzenet az x = (x1, x2, . . . , xn) ∈ {0, 1}n. Ez
tehat egy n hosszu szamsorozat, amelynek minden tagja 0 vagy 1. Kepezzuk
ebbol a c szamot ıgy:
c =n∑i=1
xibi,
avagy roviden c = x ∗ b.Ez a c szam a rejtjelezett adat. Titkosıtottuk az x binaris uzenetet, de hogyan
lehet c-bol visszakapni az x-et? Ismerjuk ugyan a c-t es a b-t, de az xi-ket
visszafejteni NP-nehez, hiszen ez egy altalanos 0-1 hatizsak problema. Itt
hasznaljuk fel a privat kulcsot.
4.3. Dekodolas
A privat kulcs ismerete mellett nem kell megoldanunk a nehez, bi sulyos 0-1
hatizsak problemat, hanem visszavezethetjuk a szupernovekvo wi sulyokkal
rendelkezo 0-1 hatizsak problemara, ami egyszeruen megoldhato.
A legfontosabb lepes, hogy keressunk egy olyan S egeszt, hogy S∗R = 1 mod
Q, vagyis S az R Q-ra nezett modularis inverze. Mivel R-t ugy valasztottuk,
hogy relatıv prım legyen Q-val, ezert S-t egyszeruen kiszamoljuk kiterjesztett
Euklideszi algoritmussal. Eloszor a c szamot transzformaljuk:
13
c′ ≡ c ∗ S mod Q,
amibol:
c′ ≡ c ∗ S ≡
n∑i=1
xibi ∗ S mod Q.
Mivel S ∗R = 1 mod Q es bi = wi ∗R mod Q :
bi ∗ S ≡ wi ∗R ∗ S ≡ wi mod Q.
Ezekbol
c′ ≡
n∑i=1
xiwi mod Q.
A Q megvalasztasabol, miszerint Q >n∑i=1
wi, es mivel xi ∈ {0, 1} kovetkezik,
hogy:
Q >n∑i=1
xiwi.
Abbol, hogy an∑i=1
xiwi a [0, Q − 1] intervallumba esik bele, az kovetkezik,
hogy nem kongruencia all fent, hanem egyenloseg. Tehat:
c′=
n∑i=1
xiwi.
14
Ez a 0-1 hatizsak problema viszont nagyon egyszeruen megoldhato a kovet-
kezokeppen, hiszen a wi-k szupernovekvo sulyok.
• Vegyuk w legnagyobb elemet, wj-t.
• Ha wj > c′, akkor xj = 0, ha viszont wj ≤ c
′, akkor xj = 1.
• Vonjuk ki c′-bol a wj-t.
• Ismeteljuk ezeket a lepeseket, ameddig c′> 0.
Igy polinomialis ido alatt megkapjuk a keresett x = (x1, x2, . . . , xn) ∈ {0, 1}n
binaris uzenetet.
A Merkle-Hellman algoritmus egy aszimmetrikus kulcsu titkosıtasi eljaras,
vagyis ket kulcs kell az uzenethez, a nyilvanos es a privat kulcs. Elobbivel
titkosıtjuk az uzenetet, mıg az utobbival visszafejtjuk. Ez egy eleg nagy
kulonbseg az RSA-val szemben, es pontosan emiatt sajnos nem is lehet
hasznalni peldaul digitalis alaırashoz. Mint lathattuk, ket hatizsak problemat
tartalmaz az algoritmus, a nyilvanos kulcshoz tartozo nehez, NP-teljes felada-
tot, es a privat kulcshoz tartozo feladatot, amit Q es R segıtsegevel tudunk
konnyu, szupernovekvo sulyu feladatta alakıtani. Ugyanıgy visszafele a Q es
R segıtsegevel tudunk a konnyu feladatbol nehezet csinalni. Az algoritmusbol
latszik, hogy egy uzenethez nem tartozhat ket kod, a Q megvalasztasa pe-
dig biztosıtja, hogy nem tartozhat ket kulonbozo uzenethez ugyanaz a kod.
R-nek azert kell relatıv prımnek lennie Q-hoz, hogy letezzen S, ami elenged-
hetetlen a visszafejteshez.
15
4.4. Pelda a Merkle-Hellman titkosıtasra
Nezzunk egy peldat a titkosıtasi es a visszafejtesi eljarasra. Ehhez eloszor kell egy w
szupernovekvo szamsorozat. Legyen ez:
w = ( 1, 3, 5, 12, 24, 51, 123, 301 )
Ezeknek az osszege 520. A Q ennel nagyobb kell, hogy legyen, ıgy valasszuk mondjuk
Q = 599-nek.
R ehhez kepest relatıv prım, peldaul
R = 476.
Ezzel meg is van a privat kulcsunk, szamoljuk hat ki a nyilvanos kulcsot, ami
bi = wi ∗R mod Q.
1 ∗ 476 mod 599 = 476
3 ∗ 476 mod 599 = 230
5 ∗ 476 mod 599 = 583
12 ∗ 476 mod 599 = 321
24 ∗ 476 mod 599 = 43
51 ∗ 476 mod 599 = 316
123 ∗ 476 mod 599 = 445
301 ∗ 476 mod 599 = 115
b = ( 476, 230, 583, 321, 43, 316, 445, 115 )
Most mar rendelkezunk a nyilvanos kulccsal is. Tegyuk fel, hogy titkosıtani akarjuk a
”Szia!” uzenetet. ASCII kodok a karakterekhez, es atırasuk binaris szamrendszerbe:
”S” → 8310 = 10100112
”z” → 12210 = 11110102
”i” → 10510 = 11010012
”a” → 9710 = 11000012
”!” → 3310 = 1000012
16
Dolgozzunk 8-bites karakterabrazolo rendszerben az egyszeruseg kedveert. Abrazoljuk
8 biten a fenti adatokat:
”S” → 010100112
”z” → 011110102
”i” → 011010012
”a” → 011000012
”!” → 001000012
A titkosıtando binaris uzenet tehat
x = 01010011 01111010 01101001 01100001 00100001
Mi itt nem omlesztettuk az uzenetet, hanem 8-as csoportokban szokozokkel elvalasztva
ırtuk egymas melle. A szamıtogepen ez viszont osszefuggo 40 karakter, amit a
szamıtogep el tud valasztani, hiszen tudja, hogy 8 bites karakterekkel dolgozunk.
Szamoljuk most ki a c erteket.
x1 = 01010011, c1 = x1 ∗ b = 1111 (= 230 + 321 + 445 + 115)
x2 = 01111010, c2 = x2 ∗ b = 1622 (= 230 + 583 + 321 + 43 + 445)
x3 = 01101001, c3 = x3 ∗ b = 971 (= 230 + 583 + 43 + 115)
x4 = 01100001, c4 = x4 ∗ b = 928 (= 230 + 583 + 115)
x5 = 00100001, c5 = x5 ∗ b = 698 (= 583 + 115)
Ezt elkuldhetjuk a cımzettnek (ismeri a privat kulcsot), akinek vissza kell fejtenie az
uzenetet. Ehhez ki kell szamolnia S-t, R modularis inverzet.
Ez S = 112. Ebbol
c′
1 = c1 ∗ S mod Q = 1111 ∗ 112 mod 599 = 439
c′
2 = c2 ∗ S mod Q = 1622 ∗ 112 mod 599 = 167
c′
3 = c3 ∗ S mod Q = 971 ∗ 112 mod 599 = 333
c′
4 = c4 ∗ S mod Q = 928 ∗ 112 mod 599 = 309
c′
5 = c5 ∗ S mod Q = 698 ∗ 112 mod 599 = 306
17
Vegyuk w legnagyobb elemet, ami kisebb, mint a c′
1.
439− 301 = 138→ w8 = 1
138− 123 = 15→ w7 = 1
15− 12 = 3→ w4 = 1
3− 3 = 0→ w2 = 1
w1, w3, w5, w6 = 0, amibol a visszanyert uzenet 01010011. Ez 10-es szamrendszerben
83, 83 pedig az ”S” karakter ASCII kodja.
Csinaljuk meg ugyanezt a tobbivel is.
167− 123 = 44→ w7 = 1
44− 24 = 20→ w5 = 1
20− 12 = 8→ w4 = 1
8− 5 = 3→ w3 = 1
3− 3 = 0→ w2 = 1
Ez 01111010, ami a ”z” kodja.
333− 301 = 32→ w8 = 1
32− 24 = 8→ w5 = 1
8− 5 = 3→ w3 = 1
3− 3 = 0→ w2 = 1
Ez 01101001, ami az ”i” kodja.
309− 301 = 8→ w8 = 1
8− 5 = 3→ w3 = 1
3− 3 = 0→ w2 = 1
Ez 01100001, ami az ”a” kodja.
306− 301 = 5→ w8 = 1
5− 5 = 0→ w3 = 1
Ez 00100001, ami a ”!” kodja.
Igy egyszeruen megkaptuk az eredeti uzenetet.
18
4.5. Biztonsag, feltorhetoseg
A hatizsak probleman alapulo titkosıtas feltoresehez, vagyis a privat kulcs
ismerete nelkul az uzenet visszafejtesehez szukseges targyalni nehany tulaj-
donsagot es algoritmust. Kezdjuk a Lenstra-Lenstra-Lovasz-fele racsredukcios
algoritmussal.
4.1. Definıcio. A v1, v2, . . . , vn tobbdimenzios vektorok altal meghatarozott
racs az olyan a1v1 + a2v2 + . . .+ anvn alaku vektorok halmaza, ahol minden
ai egesz szam.
Ilyen racsban megkeresni a legrovidebb nemnulla vektort nem egyszeru 4
dimenzio feletti terekben. A feladat bonyolultsaga nem ismert, am az a sejtes,
hogy nem varhato polinomialis ideju algoritmus a megoldasra. Lovaszek arra
jottek ra, hogy sok alkalmazasban nem kell a legrovidebb vektort megtalalni,
az is jo, ha egy hosszabb vektort talalunk, ami meg mindig eleg rovid. Erre
meg is adtak gyors, polinom ideju algoritmust. Az LLL-algoritmus, vagyis
maga a racsredukcio, olyan bi vektorokat ad vissza, amelyek szinten a vi
vektorok altal kifeszıtett racsot feszıtik ki a terben, viszont a bi-k rovidek, es
kozel merolegesek egymasra.
4.5.1. Racsredukcio
Az algoritmust 1982-ben talalta ki Lovasz Laszlo, mikor Arjen Lenstra es
Hendrik Lenstra polinomok faktorizaciojara keresett megoldast. Vegul az
eljarast publikaltak harman, de a polinomok faktorizaciojarol ebben nem
esik szo. Szamos mas teruleten bizonyult hasznosnak a felfedezesuk, de leg-
inkabb a kriptografiaban [8, 9, 10]. Az algoritmus bemutatasa elott celszeru
a kovetkezo teteleket felelevenıteni.
19
3. Tetel. Skalarszorzatos terben a v∗ nemnulla vektor alterebe a
projv∗(v) =< v∗, v >
< v, v >v
lekepezes merolegesen vetıt.
4. Tetel. Gram–Schmidt-eljaras:
A Gram–Schmidt-eljaras egy skalarszorzatos ter veges, linearisan fuggetlen
vi vektorait atalakıtja olyan paronkent meroleges v∗i vektorokka, amelyek
ugyanazt az alteret feszıtik ki. Ez az eljaras megadja az alter egy ortonormalt
bazisat, am az LLL-algoritmushoz nem fontos ortonormalt bazis, eleg, hogyha
ortogonalt, ezert csak ezzel foglalkozunk.
Maga az eljaras a kovetkezokeppen nez ki:
v∗1 := v1
v∗2 := v2 − projv∗1 (v2)
v∗3 := v3 − projv∗1 (v3)− projv∗2 (v3)...
v∗k := vk −k−1∑j=1
projv∗j (vk)
5. Tetel. LLL-algoritmus:
Adott
v = (v1, v2, . . . , vn)
vektorrendszer, melybol a Gram–Schmidt-eljarassal letrehozzuk a vi-k altal
kifeszıtett alter ortogonalis bazisat. Legyen ez
v∗ = (v∗1, v∗2, . . . , v
∗n),
es kiszamoljuk a Gram-Schmidt egyutthatokat
µi,j =< vi, v
∗i >
< v∗i , v∗i >
20
minden 1 ≤ j ≤ i ≤ n-re.
A v bazis akkor LLL-redukalt, ha letezik olyan δ ∈ (0.25, 1], amire:
• |µi,j| ≤ 0.5 minden 1 ≤ j ≤ i ≤ n-re. Ez a tulajdonsag garantalja a
vektorok rovidseget.
• δ||v∗k−1||2 ≤ ||v∗k||2 + µ2k,k−1||v∗k−1||2 minden 1 ≤ k ≤ n-re. Ez a Lovasz-
feltetel.
A δ ertekebol kiderul, mennyire jol redukalt a bazis. Minel nagyobb ez az
ertek, annal rovidebbek a bazisvektorok. Lovasz Laszlo eredetileg δ = 0.75-
tel dolgozott, de az algoritmus δ ∈ (0.25, 1) eseten polinomialis idoben fut
le. Nagyobb δ-ra redukaltabb vektorokat kapunk, am δ = 1-re mar nem
garantalt a polinomialis futasido.
Az algoritmus reszei a kovetkezok:
bemeneti adatok : v1, . . . , vn ∈ Zn
kimeneti adatok : v∗1, . . . , v∗n LLL-redukalt bazis
redukcios lepes:
1. ciklus i = 2-tol n-ig
2. ciklus j = i− 1-tol 1-ig
3. vi := vi − <vi,v∗i>
<v∗i ,v∗i>vj
csere lepes
1. ha ∃i, hogy δ||v∗i ||2 > ||µi+1,iv∗i + v∗i+1||2, akkor
2. csere vi, vi+1
3. kezdjuk elolrol az algoritmust
kimenet : v∗1, . . . , v∗n redukalt vektorok
21
Az LLL-algoritmus nem a legrovidebb vektorokat adja vissza, amelyek az
adott racsot feszıtik ki, hanem olyan rovid vektorokat, amikkel mar erdemes
dolgozni. Altalanossagban, ha δ = 3/4 akkor az LLL-redukalt bazis legrovi-
debb vektora 2(n−1)/2-rendu kozelıtes a legrovidebb vektor problemara [11].
4.5.2. Valos szamok diofantikus becslese
A kovetkezo szukseges eredmeny a valos szamok diofantikus becslese [12].
6. Tetel. Tetszoleges α1, . . . , αn irracionalis szamokhoz vegtelen sok olyan
r1isi,r2isi, . . . ,
rkisi
kozos nevezoju racionalis szam k-as (i = 1, 2, . . .) letezik, amelyre∣∣∣∣αj − rjisi
∣∣∣∣ < 1
s1+ 1
ki
j = 1, 2, . . . , k; i = 1, 2, . . .
4.6. Feltores
Ezek ismereteben megprobalhatjuk feltorni a Merkle-Hellman titkosıtast.
Mivel bi ≡ wiR mod Q, definialjuk a ki-kat ugy, hogy:
bi ∗ S − ki ∗Q = wi
∀i = 1, . . . , n-re. A masodik lepes eszrevenni, hogy a bi sulyokkal es c ka-
pacitassal adott hatizsak problema atalakıthato vegtelenul sok kulonbozo,
konnyu hatizsak problemava. Erre Eier es Lagger [13], tovabba Desmedt,
Vanderwalle es Govaerts [14] egymastol fuggetlenul jottek ra.
22
1. Lemma. Letezik ε > 0, hogy haS′
Q′racionalis es
∣∣∣∣S ′Q′ − S
Q
∣∣∣∣ < ε,
akkor a w′= (w
′1, w
′2, . . . , w
′n) sulyok szupernovekvoek i = 1-tol n-ig, ahol
w′
i = bi ∗ S′ − ki ∗Q
′.
Alakıtsuk at az elobbi egyenleteket i = 1, . . . , n-ig
bi ∗ S − ki ∗Q = wi ⇐⇒S
Q− kibi
=wibiQ
vagyis mindenkibi
jo kozelıtesS
Q-ra. Tovabba, ha barmelyik ki ismert len-
ne, akkorkibi
-t hasznalhatnank S′es Q
′meghatarozasara a fenti lemmahoz.
Shamir [2] az alabbi egyenlotlenseggel allt elo:∣∣∣∣ bib1 − kik1
∣∣∣∣ ≤ Q
2n−i|b1k1|
amibol kovetkezik, hogy mindegyikkik1
jo becsles bib1-ra. Ez a szimultan
diofantikus becsles problemaja, hogy
(k2k1, . . . ,
knk1
)jo becsles legyen(
b2b1, . . . ,
bnb1
)-re.
4.6.1. Szokatlanul jo szimultan diofantikus becsles
4.2. Definıcio. Szokatlanul jo szimultan diofantikus becsles (UGSDA, Unu-
sually good simultaneous Diophantine approximation):
max2≤i≤n
{bib1k1 − ki
}≤ b
−1/ni .
23
Az esetek tobbsegeben nem letezik ilyen becsles barmelyik bi-re, innen
ered a nev. Nehany t ≤ n-re megprobalunk ilyen becslest talalni(b2b1, . . . ,
btb1
)-re,
ahonnan kifejezhetjuk k1-et, am eloszor vizsgaljuk meg a t-dimenzios teljes
rangu L racsot, melyet a bazismatrix sorai feszıtenek ki.
M =
b2 b3 . . . bt bb1/t1 c−b1
−b1. . .
−b1
L minden eleme a
h =(h1b2 − h2b1, . . . , h1bt − htb1, h1bb1/t1 c
)alakban van, ahol hi ∈ Z. Ha h a legkisebb vektor, amit az LLL-algoritmus
talalt, akkor
||h|| ≤ 2(t−1)
4 d(L)1t = 2
(t−1)4 b
(t−1)t
1 bb1t1 c
1t ≤ 2
(t−1)4 b
(t2−t−1)
t2
1 .
h elso t− 1 komponensere (i = 1, . . . , t− 1)∣∣∣∣ bib1h1 − hi∣∣∣∣ ≤ 2
(t−1)4 b
−(t+1)
t2
1 ≤ b−1
(t−1)
1 ,
amibol az utolso egyenlotlenseg akkor all fenn, ha t ≥ 2√log2b1. Vagyis
elegendoen nagy t-re az LLL-algoritmus talal olyan vektort, amely jol becsuli(b2b1, . . . ,
btb1
)-t. Mivel a jo becslesek nagyon ritkak, altalanossagban hi = ki
i = 1, . . . , n-re. Ezeket a ki-ket felhasznalva az S′
es Q′
relatıv prımek
24
kiszamıhatoakkiai
becslesevel. A bi sulyu, c kapacitasu hatizsak problema
ezutan atalakıthato szupernovekvo b′i sulyu es c
′kapacitasu konnyu hatizsak
problemava.
b′i = biS
′mod Q
′i = 1, . . . , n c
′= cS
′mod Q
′.
Elobbi egy gyors modja a titkosıtas feltoresenek, de csak keves esetben alkal-
mazhato.
4.6.2. Alacsony surusegu hatizsak problemak
4.3. Definıcio. Legyen B az elofordulo maximalis suly
B = max1≤i≤n
bi,
ekkor a hatizsak problema sulyainak surusege d:
d =n
log2B.
Lagarias es Odlyzko modszere: Ha a d suruseg eleg alacsony, akkor
probalkozhatunk egy masik fajta feltoressel. Lagarias es Odlyzko [15] meg-
mutattak, hogy az alacsony surusegu problemak feltorhetoek nagy n-re, fel-
teve, hogy ismerjuk a racs legrovidebb vektorat. Ajtai Miklos mutatta meg,
hogy a legrovidebb vektort megtalalni NP-nehez [16], de gyakorlatban jol
mukodik az LLL-algoritmussal redukalt vektorokkal is. Ezaltal nagyjabol
minden d < 0.6463 surusegu sulyokra mukodik a kovetkezo modszer.
25
Legyen L0 az alabbi matrix sorai altal kifeszıtett racs.
M0 =
1 Nb1
1 Nb2. . .
...
1 Nbn
NT
ahol N >
√n ∈ Z. Legyen x = (x1, x2 . . . , xn) ∈ {0, 1}n a bi sulyu es T celu
0-1 hatizsak problema megoldasa. A c0 = (x1, x2 . . . , xn,−1) ∈ Zn+1 vektor
generalja az x0 = c0M0 racsbeli vektort
x0 = c0M0 = (x1, . . . , xn, N(x1b1 + . . .+ xnbn − T )) = (x, 0),
amibol, hogyha megkapjuk x0-t, akkor megvan az x is. Tegyuk fel, hogy az
xi-k legalabb fele nemnulla. Ekkor
||x0||2 ≤n
2.
Tovabba nagy n-re annak az eselye, hogy van x0-nal kisebb vektor az L0
racsban
P (@xj, ||xj||2 < ||x0||2) ≤ n(2n√n/2 + 1)
2e0n
B,
ahol e0 = 1.5472. B = 2cn, e > e0 valasztassal a valoszınuseg 0-hoz tart n
novelesevel.
Ebbol kovetkezik, hogy majdnem minden hatizsak problema feltorheto nagy
n es
d =n
log2B=
1
e< 0.6463
eseten, ha ismerjuk a racs legrovidebb vektorat, vagy az LLL-algoritmus
kelloen jo kozelıtest ad erre.
26
Coster, LaMacchia, Odlyzko es Schnorr modszere: 1991-ben [17]
jobb korlatot adtak a d-re, egeszen d < 0.9408-ig terjesztettek ki a sajat
algoritmusukat, ami termeszetesen Lagarias es Odlyzko modszeren alapszik.
M0 helyett dolgozzunk az alabbi M1 matrixxal. Legyen L1 az M1 matrix
sorai altal kifeszıtett racs.
M1 =
1 Nb1
1 Nb2. . .
...
1 Nbn
1/2 1/2 . . . 1/2 NT
c1 = (x1, x2, . . . , xn,−1) ∈ Zn+1 generalja az x1 racsbeli vektort
x1 = c1M1 = (x1 − 1/2, x2 − 1/2, . . . , xn − 1/2, 0),
amelynek minden eleme 0, vagy ±1/2, hiszen ∀xi ∈ {0, 1}. Emiatt
||x1||2 =n
4,
vagyis x1 egy rovid L1-beli vektor. Ebben a tovabbfejlesztett esetben annak
a valoszınusege, hogy x1 a legrovidebb vektor
P (@xj, ||xj||2 < ||x1||2) ≤ n(4n√n+ 1)
2e1n
B,
ahol e1 = 1.0628. B = 2en, e > e1 valasztassal a valoszınuseg itt is 0-hoz tart
n novelese eseten. Emiatt nagy n-re es
d <1
c= 0.9408
maximalis surusegre majdnem minden hatizsak problema visszafejtheto, szin-
ten a racs legrovidebb vektoranak, vagy a racsredukcio soran kapott legrovi-
debb vektornak ismereteben [18].
27
Ezek tudataban nem hasznaljuk a Merkle-Hellman rendszert titkosıtasra,
hiszen nem szeretnenk, hogy kodolt uzeneteink eredeti tartalma keretlen ke-
zekbe keruljon. 1978 ota tobb probalkozas is volt hatizsak alapu, hasznalhato
titkosıtas megalkotasara, am a legtobbet racsredukcioval, a Lagarias-Odlyzko
modszerrel es annak variansaival fel lehet torni. Nehany rendszer viszont ed-
dig hatekonyan ellenallt a feltoresi kıserleteknek, ilyen peldaul a Chor-Rivest
knapsack cryptosystem [19], [20].
28
5. Chor-Rivest hatizsak titkosıtas
Legyen GF (ph) veges test, hogy ph − 1-nek csak kozepesen nagy prımosztoi
legyenek, ıgy ph − 1 diszkret logaritmusai konnyen kiszamolhatoak GF (ph)-
ban. Chor es Rivest publikaciojaban p = 197 es h = 24 szerepel peldakent.
Ha f(x) h-adfoku irreducibilis fopolinom GF (p) folott, akkor GF (ph)-t felır-
hatjuk GF (p)[x]/f(x) alakban. Legyen t az a maradekosztalya x-nek mod
f(x), amire f(t) = 0 es t ∈ GF (ph). Legyen g a GF (ph) multiplikatıv
csoportjanak a generatora. α ∈ GF (p)-re legyen aα olyan egesz szam, melyre
gaα = t+ α,
es legyen π(x) injekcio {0, 1, . . . , p− 1}-bol GF (p)-be. Valasztunk egy d
egesz szamot, es definialjuk ci-t a kovetkezokeppen:
ci ≡ aπ(i) + d mod ph − 1 0 ≤ ci ≤ ph − 2
c0, c1, . . . , cp−1, p, es h a nyilvanos kulcs. A privat kulcs a t, g, π es a d. A
titkosıtashoz alakıtsuk at az uzenetet:
p−1∑i=0
mi = h.
A titkosıtott uzenet
s =
p−1∑i=0
mici
lesz.
Visszafejteshez szuksegunk van r-re
r ≡ s− hd mod ph − 1 0 ≤ r ≤ ph − 2
ezzel megkapjuk, hogy
gr =
p−1∏i=0
gmiaπ(i) .
29
G-vel jeloljuk a gr polinomot, es g definıcioja szerint gaπ(i) atırhato x+ π(i)
alakba.
Ekkorp−1∏i=0
gmiaπ(i) =
p−1∏i=0
(x+ π(i))mi ,
es ıgy
G+ f(x) =
p−1∏i=0
(x+ π(i))mi ,
amely egyenloseg jobb oldalan a polinom foegyutthatoja 1 es foka pontosan
h. Az mi-k erteke 0 vagy 1, es innentol kiszamıthatoak a G + f(x) fakto-
rizaciojaval, amelyre van hatekony algoritmus [21].
5.1. Biztonsag, feltorhetoseg
A Chor-Rivest cryptosystem egyik erdekes tulajdonsaga, hogy a feltores bo-
nyolultsaga nem fugg egyik jol ismert szamıtasi problema latszolagos nehezse-
getol sem. Peldaul, ha valaki a jelenleginel hatekonyabb algoritmust mutatna
a diszkret logaritmus problemara, az pont, hogy javıtana a titkosıtast, gyor-
sabba teve a kodolast-dekodolast, de egyaltalan nem lenne konnyebb feltorni.
A publikacioban egyebkent tobbfele tamadast is targyalnak, viszont eddig
nem ismert kozuluk olyan, amely kepes lenne visszafejteni az uzenetet, ha a
p es a h parameterek jol vannak megvalasztva.
30
Hivatkozasok
[1] Ralph C Merkle and Martin E Hellman. Hiding information and signa-
tures in trapdoor knapsacks. Information Theory, IEEE Transactions
on, 24(5):525–530, 1978.
[2] Adi Shamir. A polynomial time algorithm for breaking the basic Merkle-
Hellman cryptosystem. In Advances in Cryptology, pages 279–288.
Springer, 1983.
[3] Michael R Garey and David S Johnson. A guide to the theory of NP-
completeness. WH Freemann, New York, 1979.
[4] Stephen A Cook. The complexity of theorem-proving procedures. In
Proceedings of the third annual ACM symposium on Theory of comput-
ing, pages 151–158. ACM, 1971.
[5] Pierluigi Crescenzi, Emma Enstrom, and Viggo Kann. From theory to
practice: NP-completeness for every CS student. In Proceedings of the
18th ACM conference on Innovation and technology in computer science
education, pages 16–21. ACM, 2013.
[6] Pilu Crescenzi and Viggo Kann. The NP-completeness of
Subset Sum. http://cs.mcgill.ca/ lyepre/pdf/assignment2-
solutions/subsetSumNPCompleteness.pdf, 2011.
[7] M Jason Hinek. Lattice attacks in cryptography: A partial overview.
School of Computer Science, University of Waterloo, Canada, 2004.
[8] Oded Regev. Lattices in computer science. Lecture notes of a course
given in Tel Aviv University, 2004.
31
[9] Nicolas Gama and Phong Q Nguyen. Predicting lattice reduction. In Ad-
vances in Cryptology–EUROCRYPT 2008, pages 31–51. Springer, 2008.
[10] Daniele Micciancio and Oded Regev. Lattice-based cryptography. In
Post-quantum cryptography, pages 147–191. Springer, 2009.
[11] Miklos Ajtai. Optimal lower bounds for the Korkine-Zolotareff para-
meters of a lattice and for Schnorr’s algorithm for the shortest vector
problem. Theory of Computing, 4(1):21–51, 2008.
[12] Freud Robert and Gyarmati Edit. Szamelmelet. Nemzeti Tankonyvki-
ado, 2006.
[13] Richard Eier and Dipl-Ing H Lagger. Trapdoors in knapsack kryptosys-
tems. In Cryptography, pages 316–322. Springer, 1982.
[14] Yvo G Desmedt, Joos P Vandewalle, and Rene JM Govaerts. A critical
analysis of the security of knapsack public-key algorithms. Information
Theory, IEEE Transactions on, 30(4):601–611, 1984.
[15] Jeffrey C Lagarias and Andrew M Odlyzko. Solving low-density subset
sum problems. Journal of the ACM (JACM), 32(1):229–246, 1985.
[16] Miklos Ajtai. The shortest vector problem in L2 is NP-hard for randomi-
zed reductions. In Proceedings of the thirtieth annual ACM symposium
on Theory of computing, pages 10–19. ACM, 1998.
[17] Matthijs J Coster, Brian A LaMacchia, Andrew M Odlyzko, and Claus P
Schnorr. An improved low-density subset sum algorithm. In Advances
in Cryptology—EUROCRYPT’91, pages 54–67. Springer, 1991.
32
[18] Ernest F Brickell. Solving low density knapsacks. In Advances in Cryp-
tology, pages 25–37. Springer, 1984.
[19] Benny Chor and Ronald L Rivest. A knapsack-type public key cryp-
tosystem based on arithmetic in finite fields. Information Theory, IEEE
Transactions on, 34(5):901–909, 1988.
[20] Hendrik W Lenstra Jr. On the Chor—Rivest knapsack cryptosystem.
Journal of Cryptology, 3(3):149–155, 1991.
[21] Andrew M Odlyzko. The rise and fall of knapsack cryptosystems. Cryp-
tology and computational number theory, 42:75–88, 1990.
33