kriptográfia és információbiztonság 3. eloadásmgyongyi/crypto/3_folyam.pdf · 2020-03-03 ·...

29

Upload: others

Post on 28-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Kriptográ�a és Információbiztonság3. el®adás

MÁRTON Gyöngyvér

Sapientia Egyetem, Matematika-Informatika Tanszék

Marosvásárhely, Románia

[email protected]

2020

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 2: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Mir®l volt szó az elmúlt el®adáson?

Klasszikus kriptográ�ai rendszerek

Helyettesítéses rejtjelezés: a�n-titkosítóMátrixos rejtjelezés: Hill módszerematematikai modell

titkos-kulcsú rendszerek: matematikai modell

az OTP titkosítási rendszer

tökéletes biztonság

biztonság-értelmezések, osztályozások

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 3: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Mir®l lesz szó?

titkos-kulcsú rendszerek: matematikai modell, osztályozások

folyam-titkosító rendszerek: OTP, RC4, linear feedback shift register,A5/1, Salsa20

az NTL könyvtárcsomag

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 4: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

A titkos-kulcsú rendszerek matematikai modellje

megnevezések: titkos-kulcsú rendszerek, szimmetrikus rendszerek(private-key, symmetric crypto),

jelölés: SKE -vel, a (K ,M,C) halmaz-hármas felett értelmezzük.

3 algoritmus:

Gen, a kulcs-generáló algoritmus, polinom idej¶, véletlenszer¶:

keyR←− Gen(1k), ahol key ∈ K , k ∈ Z≥0 a rendszer biztonsági

paramétere (legtöbb esetben a generált kulcs bit-hossza),Enckey a rejtjelez® algoritmus, polinom idej¶, véletlenszer¶:

cR←− Enckey (m),

a Deckey a visszafejt® algoritmus, polinom idej¶, determinisztikus:m← Deckey (c).Helyesség: Deckey (Enckey (m)) = m, minden m ∈ M esetében.

gyakorlatban a polinom futásidej¶ algoritmus hatékony algoritmust jelent,például elvárjuk, hogy 1 gigabájtnyi adat titkosítását 1 perc alatt végezzeel a rendszer

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 5: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

A titkos-kulcsú rendszerek osztályozása

nagy adathalmaz titkosítására alkalmasak

nincs megoldva a felek közötti kulcs-csere, ezt a nyilvános kulcsúkriptográ�a végzi,

két nagy csoportra oszthatóak:

folyam-titkosító rendszerek,blokk-titkosító rendszerek.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 6: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Folyam-titkosító rendszerek

véletlenszer¶en generálnak egy bitsort, a kulcsfolyamot, amelyetlegtöbbször a ⊕ m¶velettel hozzáadnak a nyílt szöveghez,

a kulcsfolyamot egyetlenegyszer használják,

a rendszer biztonságát a kulcsfolyamot generáló algoritmus határozzameg ⇒ álvéletlen-szám generáló algoritmusok (pseudo-random numbergenerators)

nem minden ál-véletlenszám generátor alkalmas a kriptográ�ában,

pl: az xn = a · xn−1 + b (mod p) lineáris kongruenciával értelmezettgenerátor sem alkalmas.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 7: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Folyam-titkosító rendszerek

implementációjuk általában könny¶

hardver-be építve nagyon gyorsak, ezért legtöbbször hardver szintjénimplementálják ®ket

szoftver szintjén nem mindig érik el a megfelel® gyorsaságot

leginkább akkor használják, amikor nem lehet tudni, hogy milyen hosszú anyílt szöveg, pl wireless kommunikáció

katonai környezetben gyakran használják: a kulcsfolyam el®állítást különeszköz végzi, ez jól védett, a XOR m¶veletek elvégzésére pedig máseszközt használnak, amelynek biztonsága már nem olyan fontos

biztonságuk vitatott, pl. az RC4, A5/1 kezdetben titkosak voltak, miutánpublikussá váltak számos gyengeséget fedeztek fel bennük

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 8: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az RC4

1987-ben tervezte Ron Rivest, kezdetben nem volt publikus,

1994-ben ismeretlenül felkerült a Cyberpunk levelez®-listájára,

a HTTPS, WEP és számos más protokollban használták,

ma már nem biztonságos, több sikeres támadás érte,

új projekteknél nem ajánlatos használni

a Internet Engineering Task Force (IETF) 2015-t®l tiltja a használatát

Elvi m¶ködése:

egy 128 bites kezdeti érték alapján, a 256 fajta bájtértéket összekeverve,el®állít egy 256 elem¶ bájt-tömböt, amely a generátor alap állapotánakfog megfelelni,

a kulcsfolyam egy bájtja, a 256 elem¶ bájttömb, egy, "véletlenszer¶en"kiválasztott bájtja lesz,

a kulcsfolyam bájtjait ciklikusan állítja el®, amit ⊕ m¶velettel ad hozzá anyílt szöveghez.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 9: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az RC4

Gyengeségek:

annak a valószín¶sége, hogy a második bájt 0 lesz1

256kellene legyen, de

ez nem így van, mert ez2

256lesz; hasonló a helyzet az els® 256 bájttal is

megoldás: a kulcs-folyam els® 256 bájtját nem használjuk fel atitkosításban

a 00 szekvencia gyakrabban fordul el®, mint a 01, 10, 11 szekvencia,

ha két olyan kezdeti kulcsértéket használok, amelyek "közel állnakegymáshoz" további feltörési stratégia válik lehetségessé: related keysattack

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 10: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

RC4, inicializálási szakasz

void rc4_init(unsigned char *key, unsigned int key_length) {

for (i = 0; i < 256; i++)

S[i] = i;

for (i = j = 0; i < 256; i++) {

j = (j + key[i % key_length] + S[i]) & 255;

swap(S, i, j);

}

i = j = 0;

}

a key tömb a kulcs bájtjait tartalmazza

az i, j értékek és az S tömb globális, kezdetben megegyezik az identitáspermutációval

a swap függvény felcseréli a megfelel® index¶ elemeket az S tömbb®l

A 256-al történ® maradékos osztás 255-tel való & (AND) m¶velettelhelyettesíthet®

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 11: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

RC4, kulcsfolyam-generálás

unsigned char rc4_output() {

i = (i + 1) & 255;

j = (j + S[i]) & 255;

swap(S, i, j);

return S[(S[i] + S[j]) & 255];

}

minden lépésben sor kerül a megfelel® elemek felcserélésére éskiválasztására

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 12: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

RC4, string titkosítás/visszafejtés

int main() {int k, output_length;string key = "myKey in 2020";int l = key.length();

//encryptionstring plainText = "Cryptography labor 2020";int pL = plainText.length();string cryptText = "";rc4_init((unsigned char*)key.c_str(), l);for (int i = 0; i < pL; ++i)

cryptText += plainText[i] ^ rc4_output();cout << "encrypted text: " << cryptText << endl << endl;

cout << "encrypted text in HEX: ";for (i = 0; i < pL; ++i)

cout << hex << (0xFF & cryptText[i]) << " ";cout << endl << endl;

//decryptionint cL = cryptText.length();string decryptText = "";rc4_init((unsigned char*)key.c_str(), l);for (int i = 0; i < cL; ++i)

decryptText += cryptText[i] ^ rc4_output();cout << "decrypted text: " << decryptText << endl << endl;

}

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 13: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Visszacsatolt, léptet® regiszteres titkosítás, linear feedbackshift register - LFSR

Számos rendszer esetében használták, használják pl.:

DVD titkosítása esetén a rendszer neve CSS (content scramblingsystem)GSM titkosítás esetén a rendszer neve A5/1, A5/2Blutooth titkosítás esetén a rendszer neve E0

hardvare szintjén könnyedén és hatékonyan implementálható

a kulcsfolyamot egy lineáris összefüggés alapján számolják, kiindulva akey = (z1, z2, . . . , zm) értékekb®l:

zi+m = c0zi + c1zi+1 + . . . cm−1zi+m−1 (mod 2),

ahol i ≥ 1 és c0, c1, . . . , cm−1 rögzített konstansok

a c0, c1, . . . , cm−1 konstansok helyes választása esetén a kulcsfolyamperiódusa maximális lesz: 2m − 1.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 14: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az LFSR támadása, feltörhet®sége

Példa 16 bites LFSR:

zi+16 = zi + zi+2 + zi+3 + zi+5 (mod 2),

Ha key = (z1, z2, . . . , z16) = 1010 1100 1110 0001,

akkor a kulcsfolyam els® bitjei a pirossal kijelölt értékek lesznek, aholz17 = z1 + z3 + z4 + z6:

0101 1001 1100 0011 1+ 1+ 0+ 1 = 11011 0011 1000 0111 0+ 0+ 1+ 0 = 10110 0111 0000 1111 1+ 1+ 1+ 0 = 11100 1110 0001 1110 0+ 1+ 0+ 1 = 01001 1100 0011 1100 1+ 0+ 0+ 1 = 00011 1000 0111 1001 1+ 0+ 1+ 1 = 1

a kulcsfolyam: 1010 1100 1110 0001 1110 01

216 − 1 lesz a generátor periódusa

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 15: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az LFSR támadása, feltörhet®sége

A támadó, ha tudja, hogy a titkosító 5-bites LFSR-titkosítást alkalmazott ésrendelkezik a következ® titkosított bit-szekvenciával

0 1 1 0 1 1 0 1 1 1

és a bit-szekvencia titkosított értékével:

0 0 1 1 0 1 1 1 1 1

akkor a fenti két bitsorozat xor-olásával, megtudja határozni a kulcsfolyam els®bitjeit:

0 1 0 1 1 0 1 0 0 0

Ez alapján fel tudja írni a következ® lineáris egyenletet, és azt megoldva,megtudja határozni az alkalmazott lineáris összefüggést is, azaz megtudjahatározni a kulcsfolyamot:

(0, 1, 0, 0, 0) = (c0, c1, c2, c3, c4) ·

0 1 0 1 1

1 0 1 1 0

0 1 1 0 1

1 1 0 1 0

1 0 1 0 0

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 16: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az LFSR támadása, feltörhet®sége

Meghatározható:

0 1 0 1 1

1 0 1 1 0

0 1 1 0 1

1 1 0 1 0

1 0 1 0 0

−1

=

1 1 1 0 0

1 0 1 1 1

1 1 1 0 1

0 1 0 0 1

0 1 1 1 0

ahonnan:

(c0, c1, c2, c3, c4) = (0, 1, 0, 0, 0) ·

1 1 1 0 0

1 0 1 1 1

1 1 1 0 1

0 1 0 0 1

0 1 1 1 0

= (1, 0, 1, 1, 1)

Tehát a kulcsfolyam kigenerálásához alkalmazott lineáris összefüggés akövetkez®: zi+5 = (zi + zi+2 + zi+3 + zi+4) (mod 2).

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 17: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az LFSR támadása, feltörhet®sége

az alkalmazott m¶veletek lineárisak, ezért a rendszer feltörhet®,

ha ismerjük hogy a (x1, x2, . . . , xn) nyílt szövegnek (y1, y2, . . . , yn) arejtjele, illetve ismerjük az m értékét akkor meghatározható azalkalmazott lineáris összefüggés

meghatározzuk: (x1, x2, . . . , xn)⊕

(y1, y2, . . . , yn)⇒ (z1, z2, . . . , zn)

ha n ≥ 2m, akkor a támadó megtudja határozni a (c0, c1, . . . , cm−1)értékeket a következ® módon (következ® oldal):

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 18: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az LFSR támadása, feltörhet®sége

felírható:

(zm+1, zm+2, . . . , z2m) = (c0, c1, . . . , cm−1) ·

z1 z2 . . . zmz2 z3 . . . zm+1

.

.

....

.

.

.

zm zm+1 . . . z2m−1

és meghatározható:

(c0, c1, . . . , cm−1) = (zm+1, zm+2, . . . , z2m) ·

z1 z2 . . . zmz2 z3 . . . zm+1

.

.

....

.

.

.

zm zm+1 . . . z2m−1

−1

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 19: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az A5/1

a GSM technológiában használják,

hardware szinten szokták implementálni,

három léptet® regiszterrel dolgozik, X, Y, Z-vel amelyek összesen 64 bitet

kezelnek

az X 19 bites: (x0, x1, . . . , x18),az Y 22 bites: (y0, y1, . . . , y21),a Z 23 bites: (z0, z1, . . . , z22),

a kulcs 64 bites, amellyel feltöltik a három regisztert

a következ® bels® "majoráló/növel®" függvényt számoljuk ki mindenóraimpulzusban:

m = maj(x8, y10, z10) =

{0, ha a három bit között több a 0-ás

1, ha a három bit között több az 1-es

ha x8 = m, akkor X-et léptetjük

ha y10 = m, akkor az Y-t léptetjük

ha z10 = m, akkor az Z-t léptetjük

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 20: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az A5/1

A kulcsfolyam el®állítása a következ®képpen történik:

X léptetése:t = x13 ⊕ x16 ⊕ x17 ⊕ x18xi = xi−1, i = 18, 17, . . . 1− rex0 = t

Y léptetése:t = y20 ⊕ y21yi = yi−1, i = 21, 20, . . . , 1− rey0 = t

Z léptetése:t = z7 ⊕ z20 ⊕ z21 ⊕ z22zi = zi−1, i = 22, 21, . . . , 1− rez0 = t

a kulcsfolyam aktuális s bitje: s = x18 ⊕ y21 ⊕ z22

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 21: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

A Salsa20

a 2008-ban lezáruló eSTREAM projekthez beküldött folyam-titkosító,

tervez®je D.J.Bernstein; teljesen publikus:

http://cr.yp.to/djb.html,

úgy hardver, mint softver implementációja ismert,

feltörési módszerek: az eddigi leghatásosabb módszer az összes kulcskipróbálásának módszere,

hatékonysága: 643 Mb/sec, ∼ 6-szor gyorsabb mint az RC4.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 22: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

A Salsa20

a kulcs mérete: 128 vagy 256-bit hossz,

ha a kulcs mérete 128 bit, akkor a következ® a speci�káció:

a k kulcs mellett a bemenetnek meg kell adni egy 64 bites r nonce(number use at once) értéket, ahol a || összef¶zést jelent:

Salsa20 : {0, 1}128 × {0, 1}64 → {0, 1}nSalsa20(k, r) = H(k||r ||0))||H(k||r ||1)|| . . . ,

A H függvényt a k||r ||i bemeneten hajtjuk végre, ahol az i számlálóértékét 64 biten tároljuk,

A H függvény a 32 bájtból (256 bit) → 64 bájtot állít el®:

(k||r ||i)→ (t0||k||t1||r ||i ||t2||k||t3),

melyen 10-szer alkalmaz egy invertálható h : {0, 1}64 → {0, 1}64függvényt.

a H függvény kimenetét 4 bájtonként (mod 232) szerinti összeadástvégezve adjuk hozzá a nyílt szöveghez.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 23: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Valós rendszerek biztonsági problémái

Közvetett vagy közvetlen módon felmerül a kulcs többszöri felhasználása:

Venona projekt: célja az orosz titkosszolgálat üzeneteinek a megfejtésevolt, 1943-1980 között. Az amerikai hadsereg kb. 3000 üzenetet fejtettmeg ebben a periódusban mert többször birtokába került két-két olyantitkosított érték, ahol mindkét esetben ugyanazt a kulcsot használták atitkosítás során.

MS-PPTP (windows NT): szerver és kliensek közti kommunikáció esete,volt egy megosztott titkos kulcs, ahol a szerver és kliens oldalon isugyanazzal a kulcs-folyammal végezték a titkosítást ⇒ a kulcs többszörifelhasználása. Megoldás: kulcspár használata, amelyet a szerver és akliens is ismer, egyik érték a szerver, másik érték a kliens oldalititkosításhoz.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 24: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Valós rendszerek biztonsági problémái

Közvetett vagy közvetlen módon felmerül a kulcs többszöri felhasználása:

802.11b WEP, több probléma, az egyik: egy 24 bites inicializáló érték(IV) alkalmazása lehet®vé tette a WEP feltörését, mert túl kicsi volt az IVbithossza: 224 ∼ 16 millio IV érték után az IV-k ciklikusan ismétl®dtek.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 25: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az NTL könyvtárcsomag, létrehozás, Visual Studio

töltsük le http://www.shoup.net/ntl/download.html oldalról

csomagoljuk ki pl. a ...Projects\WinNTL mappába,

hozzunk létre egy új projektet: New → Project →Project From Existing Code,

adjunk egy nevet a projektnek, legyen ez NTLLib,

adjuk meg a projekt helyét: ...Projects\WinNTL\src

válasszuk ki a projekt típusát: Static Library (LIB) project

az Include search path-nál adjuk meg a header állományok elérési útvonalát:

...Projects\WinNTL\include

A projekt Properties/General pontnál cseréljük át az sdk verziót 8.1-r®l

10.0....-ra

A projekt Properties/Code Generation pontnál állítsuk

Disable Security Check-re a Security Check beállítást

a Bulid\Solution parancs megadásával létrejön a

...Projects\NTLLib\src\Debug mappában az NTLLib.lib állomány, amit a

további projekteknél kell használni.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 26: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az NTL könyvtárcsomag, használat, Visual Studio

Hozzunk létre egy új projektet: New → Project →Win32 ConsoleApplication,

adjunk egy nevet a projektnek, legyen ez Labor,

jelöljük be a Empty project opciót.

a Labor project-hez az Add Existing Item menüpont segítségével adjukhozzá a megfelel® Debug mappából az NTLLib.libállományt,

a Project/NTLLib/Properties menüpontnál azAdditional Include Directories-nél adjuk meg a header állományokelérési útvonalát: ...\WinNTL\include,

a Project Properties → C/C++ → Code Generation állítsuk be aDisable Security Check-et

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 27: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az NTL könyvtárcsomag, létrehozás, Code Blocks

töltsük le és csomagoljuk ki a, pl. a WinNTL mappába:http://www.shoup.net/ntl/download.html

hozzunk létre egy új projektet: New → Project → Static library,

adjunk egy nevet a projektnek, legyen ez NTLLib,

az Add Files-al adjuk hozzá a WinNTL\src mappából az összesállományt,

a Project/Build Options/search Directories menüpontnál adjukmeg a header állományok elérési útvonalát: ... \WinNTL\include

a Build\Bulid parancs megadásával létrejön a NTLLib mappábanlibNTLib.a állomány, ezt kell hozzáadni azokhoz a projektekhez, aholhasználni akarjuk a az NTL függvényeket.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 28: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az NTL könyvtárcsomag, használat, Code Blocks

Hozzunk létre egy új projektet: File → New → Console Application,

adjunk egy nevet a projektnek, legyen ez Labor,

a Project\Build Options\Linker settings menüpont segítségéveladjuk hozzá az NTLLib mappából a létrehozott *.a állományt,

a Project\Build Options\Serach directories-nál adjuk meg aheader állományok elérési útvonalát: ...\WinNTL\include.

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság

Page 29: Kriptográfia és Információbiztonság 3. eloadásmgyongyi/Crypto/3_Folyam.pdf · 2020-03-03 · 1987-ben tervezte Ron Rivest, kezdetben nem volt publikus, 1994-ben ismeretlenül

Az NTL könyvtárcsomag, használat

a forráskódba:

#ifndef _ZZ_

#define _ZZ_

#include <NTL/ZZ.h>

#include <NTL/matrix.h>

#include <NTL/mat_ZZ.h>

#endif

NTL_CLIENT

ZZ d; a nagy számok kezelésére szolgáló típus,

Mat<ZZ> A; mátrix kezelésére alkalmas típus,

A.SetDims(n, n); az A mátrix méretének a beállítása,

A.NumRows(); sorméret lekérdezés,

A.NumCols(); oszlopméret lekérdezés,

inv(d, invA, A, 0); meghatározza az A mátrix determinánsát, a d

változóba illetve azt az invA mátrixot, amelyre teljesül:(A * invA) / d = I

MÁRTON Gyöngyvér 2020, Kriptográ�a és Információbiztonság