Slide 1

Slide 1 text

Alice & Bob PFCongres - Utrecht - NLD 15 september, 2012 Public key cryptography 101

Slide 2

Slide 2 text

Joshua Thijssen Freelance consultant, developer en trainer @ NoxLogic / Techademy Ontwikkeling in PHP, Python, Perl, C, Java. Lead developer van saffire. Blog: http://adayinthelifeof.nl Email: [email protected] Twitter: @jaytaph 2

Slide 3

Slide 3 text

Een introductie in public key cryptografie 3

Slide 4

Slide 4 text

4 Zonder cryptografie zou er geen internet bestaan zoals we dat vandaag kennen. (echt waar)

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

Maak kennis met Alice, en Bob. 5 Hey Bob! ‘lo Alice!

Slide 7

Slide 7 text

“slechte” encryptie algoritmes 6 http://www.flickr.com/photos/dpwk/1714014449/in/pool-1621478@N23/

Slide 8

Slide 8 text

“algoritme”: A = 1, B = 2, C = 3, ...., Z = 26 7

Slide 9

Slide 9 text

ciphertext: 12, 1, 13, 5 “algoritme”: A = 1, B = 2, C = 3, ...., Z = 26 7

Slide 10

Slide 10 text

ciphertext: 12, 1, 13, 5 “algoritme”: A = 1, B = 2, C = 3, ...., Z = 26 = L A M E 7

Slide 11

Slide 11 text

8

Slide 12

Slide 12 text

8 ciphertext:         

Slide 13

Slide 13 text

8 ciphertext:          = W I N G D I N G S

Slide 14

Slide 14 text

“algoritme”: c = m + k mod 26 9 http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 15

Slide 15 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 16

Slide 16 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E Ciphertext (k=1): D P E F http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 17

Slide 17 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E Ciphertext (k=1): D P E F Ciphertext (k=2): E Q F G http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 18

Slide 18 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E Ciphertext (k=1): D P E F Ciphertext (k=2): E Q F G Ciphertext (k=-1): B M C D http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 19

Slide 19 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E Ciphertext (k=1): D P E F Ciphertext (k=2): E Q F G Ciphertext (k=-1): B M C D Ciphertext (k=0): C O D E http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 20

Slide 20 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E Ciphertext (k=1): D P E F Ciphertext (k=2): E Q F G Ciphertext (k=-1): B M C D Ciphertext (k=0): C O D E Ciphertext (k=26): C O D E http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 21

Slide 21 text

“algoritme”: c = m + k mod 26 9 Bericht: C O D E Ciphertext (k=1): D P E F Ciphertext (k=2): E Q F G Ciphertext (k=-1): B M C D Ciphertext (k=0): C O D E Ciphertext (k=26): C O D E Ciphertext (k=52): C O D E http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg

Slide 22

Slide 22 text

10

Slide 23

Slide 23 text

➡ Sleutel is makkelijk te raden 10

Slide 24

Slide 24 text

➡ Sleutel is makkelijk te raden ➡ Sleutel moet naar Bob worden verzonden. 10

Slide 25

Slide 25 text

➡ Sleutel is makkelijk te raden ➡ Sleutel moet naar Bob worden verzonden. ➡ Deterministic. 10

Slide 26

Slide 26 text

➡ Sleutel is makkelijk te raden ➡ Sleutel moet naar Bob worden verzonden. ➡ Deterministic. ➡ Gevoelig voor frequentie analyse. 10

Slide 27

Slide 27 text

11

Slide 28

Slide 28 text

➡ De frequentie van iedere letter in het Nederlands kan worden gezet als een percentage. 11

Slide 29

Slide 29 text

➡ De frequentie van iedere letter in het Nederlands kan worden gezet als een percentage. ➡ ‘E’ is 18.9%. de ‘Q’ maar 0.009%. 11

Slide 30

Slide 30 text

➡ De frequentie van iedere letter in het Nederlands kan worden gezet als een percentage. ➡ ‘E’ is 18.9%. de ‘Q’ maar 0.009%. ➡ In het engels: ‘E’ = 12.7%, ‘Z’ = 0.074%. 11

Slide 31

Slide 31 text

Wilhelmus van Nassouwe ben ik, van Duitsen bloed, den vaderland getrouwe blijf ik tot in den dood. Een Prinse van Oranje ben ik, vrij onverveerd, den Koning van Hispanje heb ik altijd geëerd. 12

Slide 32

Slide 32 text

13

Slide 33

Slide 33 text

14

Slide 34

Slide 34 text

15

Slide 35

Slide 35 text

16

Slide 36

Slide 36 text

17

Slide 37

Slide 37 text

18

Slide 38

Slide 38 text

Determinisme en de toepassing van frequency analyse kunnen gezien worden als “een slechte zaak” 18

Slide 39

Slide 39 text

19

Slide 40

Slide 40 text

➡ Voorgaande voorbeelden waren symmetrische encrypties. 19

Slide 41

Slide 41 text

➡ Voorgaande voorbeelden waren symmetrische encrypties. ➡ Dezelfde sleutel wordt gebruikt voor zowel encrypt als decryptie. 19

Slide 42

Slide 42 text

➡ Voorgaande voorbeelden waren symmetrische encrypties. ➡ Dezelfde sleutel wordt gebruikt voor zowel encrypt als decryptie. ➡ Goede symmetrische encrypties: AES, Blowfish, (3)DES, IDEA. 19

Slide 43

Slide 43 text

➡ Voorgaande voorbeelden waren symmetrische encrypties. ➡ Dezelfde sleutel wordt gebruikt voor zowel encrypt als decryptie. ➡ Goede symmetrische encrypties: AES, Blowfish, (3)DES, IDEA. ➡ Ze zijn over het algemeen snel en veilig. 19

Slide 44

Slide 44 text

20

Slide 45

Slide 45 text

Vraag: 20

Slide 46

Slide 46 text

Vraag: Hoe zend Alice de sleutel op een veilige manier over naar Bob als iedereen meeluisterd? 20

Slide 47

Slide 47 text

Een ander encryptie systeem: Asymmetrische encryptie of “public key encryption”. 21

Slide 48

Slide 48 text

Twee sleutels: public key - beschikbaar voor iedereen. Voor op je blog, als signature in je emails etc.. private key - Alleen voor jou! 22

Slide 49

Slide 49 text

http://upload.wikimedia.org/wikipedia/commons/f/f9/Public_key_encryption.svg 23

Slide 50

Slide 50 text

Het is NIET mogelijk om het bericht de DEcrypten met dezelfde sleutel die gebruikt is om het bericht te ENcrypten. 24

Slide 51

Slide 51 text

Encryptie met de publieke sleutel: - alleen de prive sleutel (en dus Alice) kan decrypten. - bericht is alleen voor Alice bestemd. 25

Slide 52

Slide 52 text

Encryptie met de publieke sleutel: - alleen de prive sleutel (en dus Alice) kan decrypten. - bericht is alleen voor Alice bestemd. 25 Encryptie met de prive sleutel: - alleen de publieke sleutel (en dus iedereen) kan decrypten. - Het bericht is gegarandeerd afkomstig van Alice.

Slide 53

Slide 53 text

Symmetrisch ✓ snel. ✓ niet reken intensief. ✓ voor kleine en grote berichten. ✗ sleutel moet worden verzonden naar Bob. Asymmetrisch ✓ sleutel hoeft niet overgezonden te worden. ✓ kan gebruikt worden voor encryptie en signen. ✗ reken intensief. ✗ alleen geschikt voor kleine berichten. 26

Slide 54

Slide 54 text

A: Gebruik een symmetrisch encryptie voor het (grote) bericht en versleutel de sleutel met een asymetrische encryptie. 27 Q: Hoe zend Alice de sleutel op een veilige manier over naar Bob?

Slide 55

Slide 55 text

Hybride ✓ snel ✓ niet reken intensief ✓ geschikt voor grote en kleine berichten. ✓ veilige uitwissingen van sleutels 28

Slide 56

Slide 56 text

Hybride ✓ snel ✓ niet reken intensief ✓ geschikt voor grote en kleine berichten. ✓ veilige uitwissingen van sleutels 28

Slide 57

Slide 57 text

+ Hybride ✓ snel ✓ niet reken intensief ✓ geschikt voor grote en kleine berichten. ✓ veilige uitwissingen van sleutels 28

Slide 58

Slide 58 text

+ http://www.zastavki.com/pictures/1152x864/2008/Animals_Cats_Small_cat_005241_.jpg Hybride ✓ snel ✓ niet reken intensief ✓ geschikt voor grote en kleine berichten. ✓ veilige uitwissingen van sleutels 28 =

Slide 59

Slide 59 text

MAAR HOE WERKT HET? 29

Slide 60

Slide 60 text

RSA 30

Slide 61

Slide 61 text

RSA Ron Rivest, Adi Shamir, Leonard Adleman 30

Slide 62

Slide 62 text

RSA Ron Rivest, Adi Shamir, Leonard Adleman 30 1978

Slide 63

Slide 63 text

RSA Ron Rivest, Adi Shamir, Leonard Adleman 30 1978 Pierre de Fermat, Leonard Euler 17e - 18e eeuw

Slide 64

Slide 64 text

Public key encryptie is gebaseerd op het feit dat het praktisch onmogelijk is om een groot getal (van 2 priemgetallen) terug te refactoren naar diezelfde twee priemgetallen. 31

Slide 65

Slide 65 text

Public key encryptie is gebaseerd op het feit dat het praktisch onmogelijk is om een groot getal (van 2 priemgetallen) terug te refactoren naar diezelfde twee priemgetallen. Priemgetal is een nummer deelbaar door 1 en zichzelf: 2, 3, 5, 7, 11, 13, 17, 19 etc... 31

Slide 66

Slide 66 text

32

Slide 67

Slide 67 text

“groot” getal: P * Q = 221 32

Slide 68

Slide 68 text

“groot” getal: P * Q = 221 maar we kunnen P en Q niet teruggekeken dmv een formule. 32

Slide 69

Slide 69 text

“groot” getal: P * Q = 221 maar we kunnen P en Q niet teruggekeken dmv een formule. (13 en 17) 32

Slide 70

Slide 70 text

33

Slide 71

Slide 71 text

➡ Er is geen bewijs dat het kan, maar er is ook geen bewijs dat het omgelijk is. 33

Slide 72

Slide 72 text

➡ Er is geen bewijs dat het kan, maar er is ook geen bewijs dat het omgelijk is. ➡ Brute-force decryptie is altijd mogelijk (snellere machines, betere algoritmes etc) 33

Slide 73

Slide 73 text

34 This is mathness! No, this is RSAAAA!

Slide 74

Slide 74 text

35

Slide 75

Slide 75 text

35 ➡ p = (groot) priem getal

Slide 76

Slide 76 text

35 ➡ p = (groot) priem getal ➡ q = (groot) priem getal (maar niet te dicht bij p)

Slide 77

Slide 77 text

35 ➡ p = (groot) priem getal ➡ q = (groot) priem getal (maar niet te dicht bij p) ➡ n = p . q (bit lengte van de RSA sleutel)

Slide 78

Slide 78 text

35 ➡ p = (groot) priem getal ➡ q = (groot) priem getal (maar niet te dicht bij p) ➡ n = p . q (bit lengte van de RSA sleutel) ➡ φ = (p-1) . (q-1) (het φ dingetje heet phi (faai))

Slide 79

Slide 79 text

35 ➡ p = (groot) priem getal ➡ q = (groot) priem getal (maar niet te dicht bij p) ➡ n = p . q (bit lengte van de RSA sleutel) ➡ φ = (p-1) . (q-1) (het φ dingetje heet phi (faai)) ➡ e = ggd(e, φ) = 1

Slide 80

Slide 80 text

35 ➡ p = (groot) priem getal ➡ q = (groot) priem getal (maar niet te dicht bij p) ➡ n = p . q (bit lengte van de RSA sleutel) ➡ φ = (p-1) . (q-1) (het φ dingetje heet phi (faai)) ➡ e = ggd(e, φ) = 1 ➡ d = (d . e) mod φ = 1

Slide 81

Slide 81 text

35 ➡ p = (groot) priem getal ➡ q = (groot) priem getal (maar niet te dicht bij p) ➡ n = p . q (bit lengte van de RSA sleutel) ➡ φ = (p-1) . (q-1) (het φ dingetje heet phi (faai)) ➡ e = ggd(e, φ) = 1 ➡ d = (d . e) mod φ = 1

Slide 82

Slide 82 text

Stap 1: kies de getallen P and Q ‣ P = ? | Q = ? | N = ? | Phi = ? | e = ? | d = ? 36

Slide 83

Slide 83 text

Stap 1: kies de getallen P and Q ‣ P = 11 ‣ P = ? | Q = ? | N = ? | Phi = ? | e = ? | d = ? 36

Slide 84

Slide 84 text

Stap 1: kies de getallen P and Q ‣ P = 11 ‣ Q = 3 ‣ P = ? | Q = ? | N = ? | Phi = ? | e = ? | d = ? 36

Slide 85

Slide 85 text

Stap 2: bereken N and Phi ‣ P = 11 | Q = 3 | N = ? | Phi = ? | e = ? | d = ? 37

Slide 86

Slide 86 text

➡ N = P . Q = 11 . 3 = 33 Stap 2: bereken N and Phi ‣ P = 11 | Q = 3 | N = ? | Phi = ? | e = ? | d = ? 37

Slide 87

Slide 87 text

➡ N = P . Q = 11 . 3 = 33 ➡ φ = (11-1) . (3-1) = 10 . 2 = 20 Stap 2: bereken N and Phi ‣ P = 11 | Q = 3 | N = ? | Phi = ? | e = ? | d = ? 37

Slide 88

Slide 88 text

➡ N = P . Q = 11 . 3 = 33 ➡ φ = (11-1) . (3-1) = 10 . 2 = 20 Stap 2: bereken N and Phi ‣ P = 11 | Q = 3 | N = ? | Phi = ? | e = ? | d = ? 37 33 decimaal is 100001 in binair == 6 bit sleutel

Slide 89

Slide 89 text

Stap 3: zoek een ‘e’ ‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = ? | d = ? 38

Slide 90

Slide 90 text

Stap 3: zoek een ‘e’ ‣ e = 3 ‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = ? | d = ? 38

Slide 91

Slide 91 text

Stap 3: zoek een ‘e’ ‣ e = 3 ‣ ggd(e, φ) = 1 ==> ggd(3, 20) = 1 ‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = ? | d = ? 38

Slide 92

Slide 92 text

Stap 3: zoek een ‘e’ ‣ e = 3 ‣ ggd(e, φ) = 1 ==> ggd(3, 20) = 1 ‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = ? | d = ? 38 Fermat nummer: 2 + 1 2 n

Slide 93

Slide 93 text

Stap 3: zoek een ‘e’ ‣ e = 3 ‣ ggd(e, φ) = 1 ==> ggd(3, 20) = 1 ‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = ? | d = ? 38 Fermat nummer: 2 + 1 2 n Fermat priemgetal: Fermat nummer dat ook een priemgetal is: 3, 5, 17, 257, 65537 Uit studie blijkt dat 98.5% van de RSA sleutels het getal 65537 voor ‘e’ kiezen.

Slide 94

Slide 94 text

‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = 3 | d = ? Stap 4: zoek een ‘d’ 39

Slide 95

Slide 95 text

‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = 3 | d = ? Stap 4: zoek een ‘d’ ‣ Extended Euclidean Algorithm geeft 7 39

Slide 96

Slide 96 text

‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = 3 | d = ? Stap 4: zoek een ‘d’ ‣ Extended Euclidean Algorithm geeft 7 ‣ brute force: (e.d mod φ = 1) 39

Slide 97

Slide 97 text

‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = 3 | d = ? Stap 4: zoek een ‘d’ ‣ Extended Euclidean Algorithm geeft 7 ‣ brute force: (e.d mod φ = 1) 3 . 1 = 3 mod 20 = 3 3 . 2 = 6 mod 20 = 6 3 . 3 = 9 mod 20 = 9 3 . 4 = 12 mod 20 = 12 3 . 5 = 15 mod 20 = 15 3 . 6 = 18 mod 20 = 18 3 . 7 = 21 mod 20 = 1 3 . 8 = 24 mod 20 = 4 3 . 9 = 27 mod 20 = 7 3.10 = 30 mod 20 = 10 39

Slide 98

Slide 98 text

‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = 3 | d = 7 40

Slide 99

Slide 99 text

Klaar! ➡ public key = (n, e) = (33, 3) ➡ private key = (n, d) = (33, 7) ‣ P = 11 | Q = 3 | N = 33 | Phi = 20 | e = 3 | d = 7 40

Slide 100

Slide 100 text

41 jthijssen@debian-jth:~$ openssl rsa -text -noout -in server.key

Slide 101

Slide 101 text

41 jthijssen@debian-jth:~$ openssl rsa -text -noout -in server.key Private-Key: (256 bit) modulus: 00:c2:d0:c4:1f:6f:78:16:82:d1:0c:dd:5a:af:de:f2:ff:31:c6: 9b:3b:9f:e8:24:2a:5c:06:56:ea:d7:7c:c6:19 publicExponent: 65537 (0x10001) privateExponent: 22:8f:fd:2b:82:90:30:96:36:d6:6c:73:09:5e:a9:87:73:6e: 2d:d4:d5:78:fc:3b:20:ea:0d:02:e5:2b:cb:3d prime1: 00:f0:49:fd:91:18:01:53:92:8f:87:d7:2b:c8:19:7d:17 prime2: 00:cf:8d:a1:3b:93:af:61:77:8f:c9:8f:1d:aa:8d:b4:4f exponent1: 00:e1:d8:c9:89:bc:84:52:a6:a8:5d:47:32:91:6a:d3:95 exponent2: 5a:88:b1:fa:d5:d9:db:8f:16:a6:5a:0a:1b:ba:42:1b coefficient: 00:99:fa:de:80:d4:ee:f3:69:59:e5:8a:72:ad:e5:30:3d

Slide 102

Slide 102 text

41 jthijssen@debian-jth:~$ openssl rsa -text -noout -in server.key n e d p q d mod (p-1) e mod (q-1) (inverse q) mod p Private-Key: (256 bit) modulus: 00:c2:d0:c4:1f:6f:78:16:82:d1:0c:dd:5a:af:de:f2:ff:31:c6: 9b:3b:9f:e8:24:2a:5c:06:56:ea:d7:7c:c6:19 publicExponent: 65537 (0x10001) privateExponent: 22:8f:fd:2b:82:90:30:96:36:d6:6c:73:09:5e:a9:87:73:6e: 2d:d4:d5:78:fc:3b:20:ea:0d:02:e5:2b:cb:3d prime1: 00:f0:49:fd:91:18:01:53:92:8f:87:d7:2b:c8:19:7d:17 prime2: 00:cf:8d:a1:3b:93:af:61:77:8f:c9:8f:1d:aa:8d:b4:4f exponent1: 00:e1:d8:c9:89:bc:84:52:a6:a8:5d:47:32:91:6a:d3:95 exponent2: 5a:88:b1:fa:d5:d9:db:8f:16:a6:5a:0a:1b:ba:42:1b coefficient: 00:99:fa:de:80:d4:ee:f3:69:59:e5:8a:72:ad:e5:30:3d

Slide 103

Slide 103 text

Versleutelen van een bericht: c = me mod n ontcijferen van een bericht: m = cd mod n 42

Slide 104

Slide 104 text

private key = (n,d) = (33, 7): public key = (n,e) = (33, 3): m = 13, 20, 15, 5 13^7 mod 33 = 7 20^7 mod 33 = 26 15^7 mod 33 = 27 5^7 mod 33 = 14 c = 7, 26, 27,14 43

Slide 105

Slide 105 text

private key = (n,d) = (33, 7): public key = (n,e) = (33, 3): m = 13, 20, 15, 5 13^7 mod 33 = 7 20^7 mod 33 = 26 15^7 mod 33 = 27 5^7 mod 33 = 14 c = 7, 26, 27,14 43 c = 7, 26, 27,14 7^3 mod 33 = 13 26^3 mod 33 = 20 27^3 mod 33 = 15 14^3 mod 33 =5 m = 13, 20, 15, 5

Slide 106

Slide 106 text

44

Slide 107

Slide 107 text

➡ Een bericht is een “nummer” 44

Slide 108

Slide 108 text

➡ Een bericht is een “nummer” ➡ Een bericht moet tussen 2 en n-1 liggen. 44

Slide 109

Slide 109 text

➡ Een bericht is een “nummer” ➡ Een bericht moet tussen 2 en n-1 liggen. ➡ Deterministisch, dus we moeten een (random) padding schema gebruiken om het non- deterministisch te maken. 44

Slide 110

Slide 110 text

45

Slide 111

Slide 111 text

➡ Public Key Cryptography Standard #1 45

Slide 112

Slide 112 text

➡ Public Key Cryptography Standard #1 ➡ Pads data met (random) bytes tot n bits in lengte (v1.5 or OAEP/v2.x). 45

Slide 113

Slide 113 text

➡ Public Key Cryptography Standard #1 ➡ Pads data met (random) bytes tot n bits in lengte (v1.5 or OAEP/v2.x). ➡ Gebruik altijd de laatste versie! (v2.1) 45

Slide 114

Slide 114 text

Data = 4E636AF98E40F3ADCFCCB698F4E80B9F 0002257F48FD1F1793B7E5E02306F2D3228F5C95ADF5F31566729F132AA12009 E3FC9B2B475CD6944EF191E3F59545E671E474B555799FE3756099F044964038 B16B2148E9A2F9C6F44BB5C52E3C6C8061CF694145FAFDB24402AD1819EACEDF 4A36C6E4D2CD8FC1D62E5A1268F496004E636AF98E40F3ADCFCCB698F4E80B9F 3D2AB25B1EB667A40F504CC4D778EC399A899C8790EDECEF062CD739492C9CE5 8B92B9ECF32AF4AAC7A61EAEC346449891F49A722378E008EFF0B0A8DBC6E621 EDC90CEC64CF34C640F5B36C48EE9322808AF8F4A0212B28715C76F3CB99AC7E 609787ADCE055839829E0142C44B676D218111FFE69F9D41424E177CBA3A435B http://www.di-mgt.com.au/rsa_alg.html#pkcs1schemes 46

Slide 115

Slide 115 text

47 Praktische applicaties met PKE

Slide 116

Slide 116 text

HTTPS 48

Slide 117

Slide 117 text

➡HTTP over TLS (previously SSL). HTTPS 48

Slide 118

Slide 118 text

➡HTTP over TLS (previously SSL). ➡Zeg maar: een encryptie laag over http. HTTPS 48

Slide 119

Slide 119 text

➡HTTP over TLS (previously SSL). ➡Zeg maar: een encryptie laag over http. ➡Hybride encryptie. HTTPS 48

Slide 120

Slide 120 text

HTTPS 49

Slide 121

Slide 121 text

➡Daadwerkelijke encryptie methodiek wordt besloten tussen de browser en de server. HTTPS 49

Slide 122

Slide 122 text

➡Daadwerkelijke encryptie methodiek wordt besloten tussen de browser en de server. ➡Symmetrische encryptie (AES-256 etc) HTTPS 49

Slide 123

Slide 123 text

➡Daadwerkelijke encryptie methodiek wordt besloten tussen de browser en de server. ➡Symmetrische encryptie (AES-256 etc) ➡Maar beide zijden hebben dezelfde sleutel nodig. Hoe zenden we deze sleutel over? HTTPS 49

Slide 124

Slide 124 text

HTTPS 50

Slide 125

Slide 125 text

➡Sleutel wordt verzonden in een public key ge- encrypt bericht. HTTPS 50

Slide 126

Slide 126 text

➡Sleutel wordt verzonden in een public key ge- encrypt bericht. ➡Maar welke publieke sleutel? HTTPS 50

Slide 127

Slide 127 text

➡Sleutel wordt verzonden in een public key ge- encrypt bericht. ➡Maar welke publieke sleutel? ➡Deze is opgeslagen in de server’s SSL certificaat. HTTPS 50

Slide 128

Slide 128 text

51 jthijssen@debian-jth:~$ openssl x509 -text -noout -in github.pem Certificate: Data: Version: 3 (0x2) Serial Number: 0e:77:76:8a:5d:07:f0:e5:79:59:ca:2a:9d:50:82:b5 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV CA-1 Validity Not Before: May 27 00:00:00 2011 GMT Not After : Jul 29 12:00:00 2013 GMT Subject: businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/ 1.3.6.1.4.1.311.60.2.1.2=California/serialNumber=C3268102, C=US, ST=California, L=San Francisco, O=GitHub, Inc., CN=github.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:ed:d3:89:c3:5d:70:72:09:f3:33:4f:1a:72:74: d9:b6:5a:95:50:bb:68:61:9f:f7:fb:1f:19:e1:da: 04:31:af:15:7c:1a:7f:f9:73:af:1d:e5:43:2b:56: 09:00:45:69:4a:e8:c4:5b:df:c2:77:52:51:19:5b: d1:2b:d9:39:65:36:a0:32:19:1c:41:73:fb:32:b2: 3d:9f:98:ec:82:5b:0b:37:64:39:2c:b7:10:83:72: cd:f0:ea:24:4b:fa:d9:94:2e:c3:85:15:39:a9:3a: f6:88:da:f4:27:89:a6:95:4f:84:a2:37:4e:7c:25: 78:3a:c9:83:6d:02:17:95:78:7d:47:a8:55:83:ee: 13:c8:19:1a:b3:3c:f1:5f:fe:3b:02:e1:85:fb:11: 66:ab:09:5d:9f:4c:43:f0:c7:24:5e:29:72:28:ce: d4:75:68:4f:24:72:29:ae:39:28:fc:df:8d:4f:4d: 83:73:74:0c:6f:11:9b:a7:dd:62:de:ff:e2:eb:17: e6:ff:0c:bf:c0:2d:31:3b:d6:59:a2:f2:dd:87:4a: 48:7b:6d:33:11:14:4d:34:9f:32:38:f6:c8:19:9d: f1:b6:3d:c5:46:ef:51:0b:8a:c6:33:ed:48:61:c4: 1d:17:1b:bd:7c:b6:67:e9:39:cf:a5:52:80:0a:f4: ea:cd Exponent: 65537 (0x10001)

Slide 129

Slide 129 text

HTTPS 52

Slide 130

Slide 130 text

➡Browser zend lijst met encryptie methodieken. HTTPS 52

Slide 131

Slide 131 text

➡Browser zend lijst met encryptie methodieken. ➡Server beslist welke er wordt gebruikt. HTTPS 52

Slide 132

Slide 132 text

➡Browser zend lijst met encryptie methodieken. ➡Server beslist welke er wordt gebruikt. ➡Server zend certificaten. HTTPS 52

Slide 133

Slide 133 text

➡Browser zend lijst met encryptie methodieken. ➡Server beslist welke er wordt gebruikt. ➡Server zend certificaten. ➡Client zend een “session key” ge-encrypt door de PKE sleutel uit het certificaat. HTTPS 52

Slide 134

Slide 134 text

➡Browser zend lijst met encryptie methodieken. ➡Server beslist welke er wordt gebruikt. ➡Server zend certificaten. ➡Client zend een “session key” ge-encrypt door de PKE sleutel uit het certificaat. ➡Server en client gebruiken de “session key” voor symmetrische encryptie. HTTPS 52

Slide 135

Slide 135 text

HTTPS 53

Slide 136

Slide 136 text

➡Dus: Public/private encryptie wordt gebruikt om een tweede (betere!?) encryptie op te zetten. HTTPS 53

Slide 137

Slide 137 text

➡Dus: Public/private encryptie wordt gebruikt om een tweede (betere!?) encryptie op te zetten. ➡SSL/TLS is een aparte presentatie (en is iets complexer) HTTPS 53

Slide 138

Slide 138 text

➡Dus: Public/private encryptie wordt gebruikt om een tweede (betere!?) encryptie op te zetten. ➡SSL/TLS is een aparte presentatie (en is iets complexer) ➡http://www.moserware.com/2009/06/first-few- milliseconds-of-https.html HTTPS 53

Slide 139

Slide 139 text

http://torontoemerg.files.wordpress.com/2010/09/spam.gif http://change-your-ip.com/wp-content/uploads/image/nigerian_419_scam.jpg 54

Slide 140

Slide 140 text

55

Slide 141

Slide 141 text

Vragen: 56

Slide 142

Slide 142 text

➡ Heeft Bill deze email echt verzonden? Vragen: 56

Slide 143

Slide 143 text

➡ Heeft Bill deze email echt verzonden? ➡ Hoe weten we of iemand anders dit bericht voor ons heeft gelezen (postbode?) Vragen: 56

Slide 144

Slide 144 text

➡ Heeft Bill deze email echt verzonden? ➡ Hoe weten we of iemand anders dit bericht voor ons heeft gelezen (postbode?) ➡ Hoe weten we zeker dat de inhoud authentiek is? Vragen: 56

Slide 145

Slide 145 text

➡ Heeft Bill deze email echt verzonden? ➡ Hoe weten we of iemand anders dit bericht voor ons heeft gelezen (postbode?) ➡ Hoe weten we zeker dat de inhoud authentiek is? ➡ We gebruiken signing! Vragen: 56

Slide 146

Slide 146 text

57

Slide 147

Slide 147 text

➡ Signing van een bericht betekend het toevoegen van een signature (“digitale handtekening”) dat de authenticiteit van het bericht waarborgt. 57

Slide 148

Slide 148 text

➡ Signing van een bericht betekend het toevoegen van een signature (“digitale handtekening”) dat de authenticiteit van het bericht waarborgt. ➡ Zoals md5 or sha1, wanneer het bericht veranderd, veranderd de handtekening. 57

Slide 149

Slide 149 text

➡ Signing van een bericht betekend het toevoegen van een signature (“digitale handtekening”) dat de authenticiteit van het bericht waarborgt. ➡ Zoals md5 or sha1, wanneer het bericht veranderd, veranderd de handtekening. ➡ Dit werkt omdat Alice en alleen Alice de private key heeft om de signature te maken. 57

Slide 150

Slide 150 text

http://en.wikipedia.org/wiki/File:Digital_Signature_diagram.svg 58

Slide 151

Slide 151 text

59

Slide 152

Slide 152 text

➡ GPG / PGP: Applicatie voor signen en/of encrypten van data (of emails). 59

Slide 153

Slide 153 text

➡ GPG / PGP: Applicatie voor signen en/of encrypten van data (of emails). ➡ Probeer het zelf met b.v. Thunderbird’s Enigmail extensie. 59

Slide 154

Slide 154 text

➡ GPG / PGP: Applicatie voor signen en/of encrypten van data (of emails). ➡ Probeer het zelf met b.v. Thunderbird’s Enigmail extensie. ➡ Publieke sleutels kunnen verzonden/ gevonden worden op key-servers dus je hoeft niet elke keer je eigen publieke sleutel mee te sturen. 59

Slide 155

Slide 155 text

60

Slide 156

Slide 156 text

‣ Iedereen kan emails versturen die ALLEEN JIJ kunt lezen. 60

Slide 157

Slide 157 text

‣ Iedereen kan emails versturen die ALLEEN JIJ kunt lezen. ‣ Iedereen kan verifieren dat JIJ een email hebt gestuurd en dat het authentiek is. 60

Slide 158

Slide 158 text

‣ Iedereen kan emails versturen die ALLEEN JIJ kunt lezen. ‣ Iedereen kan verifieren dat JIJ een email hebt gestuurd en dat het authentiek is. ‣ Waarom is dit niet standaard? 60

Slide 159

Slide 159 text

61

Slide 160

Slide 160 text

SSH 62

Slide 161

Slide 161 text

➡ Public key authenticatie SSH 62

Slide 162

Slide 162 text

➡ Public key authenticatie ➡ Omdat jij geen wachtwoorden kunt onthouden en verzinnen. SSH 62

Slide 163

Slide 163 text

➡ ssh-keygen ➡ kopieeer id_rsa.pub naar de server’s ~/.ssh/ authorized_keys ➡ Makkelijk voor tools / scripts. ➡ Makkelijk voor jou (geen wachtwoorden te onthouden) ➡ Beter security model. 63

Slide 164

Slide 164 text

➡ Domain Key Identified Mail (spam protectie) ➡ BitCoin ➡ IPSEC / PKI ➡ DRM 64

Slide 165

Slide 165 text

65 Pro-tips: (gratis)

Slide 166

Slide 166 text

66

Slide 167

Slide 167 text

➡ Geen eigen encryptie “uitvinden”. Het gaat NIET veilig zijn en het ZAL falen. 66

Slide 168

Slide 168 text

➡ Geen eigen encryptie “uitvinden”. Het gaat NIET veilig zijn en het ZAL falen. ➡ Encryptie is zo sterk als de zwakste link, en 9 van de 10 keer bij jij die link. 66

Slide 169

Slide 169 text

➡ Geen eigen encryptie “uitvinden”. Het gaat NIET veilig zijn en het ZAL falen. ➡ Encryptie is zo sterk als de zwakste link, en 9 van de 10 keer bij jij die link. ➡ Encrypties evolueren. Gebruik vandaag niet wat je 10 jaar geleden gebruikt. 66

Slide 170

Slide 170 text

➡ Geen eigen encryptie “uitvinden”. Het gaat NIET veilig zijn en het ZAL falen. ➡ Encryptie is zo sterk als de zwakste link, en 9 van de 10 keer bij jij die link. ➡ Encrypties evolueren. Gebruik vandaag niet wat je 10 jaar geleden gebruikt. ➡ Alle encrypties zullen uiteindelijk gekraakt worden! 66

Slide 171

Slide 171 text

➡ Geen eigen encryptie “uitvinden”. Het gaat NIET veilig zijn en het ZAL falen. ➡ Encryptie is zo sterk als de zwakste link, en 9 van de 10 keer bij jij die link. ➡ Encrypties evolueren. Gebruik vandaag niet wat je 10 jaar geleden gebruikt. ➡ Alle encrypties zullen uiteindelijk gekraakt worden! ➡ Volg altijd de best practices. 66

Slide 172

Slide 172 text

http://farm1.static.flickr.com/73/163450213_18478d3aa6_d.jpg Vragen? 67

Slide 173

Slide 173 text

http://joind.in/7074 68 Vind me op twitter: @jaytaph Vind me voor development en training: www.noxlogic.nl Vind me op email: [email protected] Vind me op blogs: www.adayinthelifeof.nl