Kripto-pagrindai - FMF serverio...

18
2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai Rolandas Griškevičius [email protected] MSN: [email protected] http://fmf.vgtu.lt/~rgriskevicius

Transcript of Kripto-pagrindai - FMF serverio...

Page 1: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1

Kripto-pagrindai

Rolandas Griškevičius

[email protected]

MSN: [email protected]

http://fmf.vgtu.lt/~rgriskevicius

Page 2: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 2

Terminai● Graikiškai - kryptos

● κρυπτός, (“kryptos” - slaptas) + γράφω (“grafo” - rašyti)

● Šifras ● (pranc. “shiffre”, viduramžių lot. “cifra”) - senosios Europos

ir Rytų kalbose reiškė nulį. Vėliau buvo įvestas terminas “šifravimas”, reiškiantis informacijos perkodavimą nuslepiant (bet išsaugant) turinį

● Dažnai painiojama su terminu “kodavimas” (encode)● Kodavimas – tai sutarto kodo panaudojimas keisti

duomenims įvairiems tikslams:

– Duomenų kompresijai (zip, mpeg4, mp3 etc)– Duomenų perdavimui (nebūtinai slaptam)– Identitikavimui (pvz, prekės kodas), etc …

Page 3: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 3

Kriptografijos panaudojimas● Šiuolaikinėje kompiuterijoje naudojami šie

kriptografijos elementai:● Šifravimas (crypt)

– RSA, PGP, DES(3), AES(128|256), etc– Saugus duomenų perdavimas– Mokėjimo kortelių PIN kodų slaptumo užtikrinimas

● Santrauka (digest) / maiša (hash)

– CRC, MD5, SHA-1, – Elektrininis parašas– Slaptažodžių saugojimas / patikra

Page 4: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 4

Kriptografijos panaudojimas (2)● Atsitiktinių skaičių generavimas

● Aparatūriniai, paremti fizikinių procesų matavimu● Programiniai, pseudo-atsitiktiniai, tam tikras algoritmas

● Panaudojimas:

– Http vartotojo sesijos – Kazino automatai– GSM pokalbio kodavimo raktai– CAPTCHA– Etc (pagalvokite kur daugiau ?)

Page 5: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 5

Šifravimo algorimai● Klasikiniai

● Raidžių arba raidžių grupių permutacijos

– Cezario šifras (rot13) http://www.personal-computer-tutor.com/abc3/v29/vic29.htm

– Edgar Poe “Golden bug”. http://etext.virginia.edu/toc/modeng/public/PoeGold.html

– Sir Arthur Conan Doyle “The Adventure of the Dancing Men” http://en.wikipedia.org/wiki/The_Adventure_of_the_Dancing_Men

● Permutacija su raktu

– Jules Verne “La Jangada” (english version: “Eight Hundred Leagues on the Amazon” ) http://www.gutenberg.org/files/3091/3091-h/3091-h.htm

– Enigma (Google pilna, http://rtn.elektronika.lt/rtn/0401/enigma.html)

Page 6: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 6

Širavimo algoritmai (2)● Modernūs

● Asimetriniai (viešo ir privataus rakto) – RSA● Simetriniai

– Srautiniai RC4, A5/1– Blokiniai DES, AES, Blowfish

Page 7: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 7

RSA● Principai:

1. Generate two large random primes, p and q, of approximately equal size such that their product n = pq is of the required bit length, e.g. 1024 bits.

2. Compute n = pq and (φ) phi = (p-1)(q-1).

3. Choose an integer e, 1 < e < phi, such that gcd(e, phi) = 1.

Most frequently, 3 (F0), 17(F1) and 65537(F4) used

4. Compute the secret exponent d, 1 < d < phi, such that ed ≡ 1 (mod phi).

Extended Euclidean Algorithm

5. The public key is (n, e) and the private key is (n, d). Keep all the values d, p, q and phi secret.

Page 8: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 8

RSA (2)

1.Šifravimas:

Recipient A:

1. Obtains the recipient B's public key (n, e).

2. Represents the plaintext message as a positive integer m. Some random padding involved to secure message additionally

3. Computes the ciphertext c = me mod n.

4. Sends the ciphertext c to B.

2.Dešifravimas:

Recipient B:

1. Uses his private key (n, d) to compute m = cd mod n.

2. Extracts the plaintext from the message representative m.

Page 9: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 9

RSA (3)● GCD – greatest common divisor, bendras didžiausias

daliklis. Algoritmas - Euklidas, “Elementai”, 1 ir 2 skyrius

● Kaip paskaičiuojamas pakankamai didelis pirminis skaičius ?● Maža paskaičiuoti p ir q, reikia, kad skirtumas tarp jų būtų

gana didelis – kitaip pasinaudojus Ferma algoritmu juos galima išskaičiuoti

● Įvairių įrodytų teoremų pagalba – Ferma skaičiai, Merseno skaičiai, etc. “Grubiai” tikrinti, ar pasirinktas skaičius pirminis, būtų sunkoka

● Kadangi n turimas, (jis yra rakto dalis), norint “nulaužti” agoritmą reikia paskaičiuoti phi, o tai reiškia, kad reikia surasti p ir q

Page 10: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 10

RC4● Vienas iš lengviausiai suprogramuojamų algoritmų

● C kalboje - ~20 – 30 eilučių

● Sudaro 2 žingsniai● Inicializacija

– Kintamo ilgio raktui atliekama permutacija naudojant KSA (key sheduling)

● PRNG – pseudo randominės sekos generavimas

● http://en.wikipedia.org/wiki/RC4

● WEP – viena iš nesėkmingiausių RC4 implementacijos pavyzdžių

Page 11: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 11

DES● Rakto ilgis – 64 bitai, bet 1 bitas kiekviename baite

yra naudojamas kaip patikra (parity), todėl lieka 56

● Šifrvimas vyksta blokais po 8 baitus, t.y. į DES automato įėjimą duomenys patenka gabalais po 8 baitus.

● Prieš šifravimą įvykdoma pirminė bitų permutacija, o baigus šifruoti galutinė permitacija, atvirkštinė pirminei

● Toliau vykdoma 16-kos analogiškų žingsnių seka, kai specialia Feistelio (vienas iš kūrėjų) funkcija permutuojamos įėjimo dalys (2 po 32 bitus), parenkant 48 bitų permutaciją iš rakto reikšmės

Page 12: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 12

DES (2)● f – Feistelio funkcija

● Ln,R

n – į 32 bitus

padalintas įėjimas

● Kn – 48 bitų rakto dalis

Iš http://www.itl.nist.gov/fipspubs/fip46-2.htm

Page 13: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 13

DES saugumas ir realizacija● DES yra gana nesunkiai realizuojamas procesoriaus

pagalba

● Siekiant greitaveikos, permutacijos dalys, taip pat L,R porų keitimasis gali būti atliekami asembleriu

● DES, kaip ir kiti bitų permutacijos algoritmai yra labai patogūs realizuoti eletroninių programuojamų masyvų pagalba (FPGA).

● Copacobana mašina yra

sukonstruota iš 120 FPGA

Pilnai “perrenka” DES per

9 dienas

Page 14: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 14

3DES

● 3DES (“tripple DES”) - 3 kartus nuosekliai sujungtas DES algoritmas

● Rakto ilgis – 192 bitai

Page 15: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 15

CRC32● Vienas iš maždaug 30 CRC[x] variantų:

x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

● Pentium, SSE4.2, Application targeter acceletor istruction set, viena iš 7 → CRC32

● http://www.algorithm-code.com/wiki/CRC32_Algorithm

Page 16: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 16

Maišos funkcijos● Egzistuoja labai daug variantų

● Viena iš seniausių – djb2 :

djb2

unsigned long hash(unsigned char *str) { unsigned long hash = 5381; int c;

while (c = *str++) hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

return hash; }

Page 17: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 17

Santrauka. MD5● Skirtingai nuo

(absoliučiai kalbant) maišos funkcijų, santrauka yra (turi būti) visada unikali.

● Naudojamos 4 F funkcijos:

● F(X,Y,Z) = (X Y) ( X Z)∧ ∨ ┐ ∧

● G(X,Y,Z) = (X Z) (Y Z)∧ ∨ ∧┐

● H(X,Y,Z) = X Y Z⊕ ⊕

● I(X,Y,Z) = Y (X Z) ⊕ ∨┐

Page 18: Kripto-pagrindai - FMF serverio paslaugosfmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture5.pdf · 2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 1 Kripto-pagrindai

2010-10-15 R. Griškevičius, Saugus programavimas, VGTU, 2010 18

Kombinuotas CRC + MD5● MD5 yra gana “brangus” algoritmas, todėl kai

kuriuose projektuose naudojamas CRC32 + MD5 sprendimas

● Paaiškinkite kaip ?