Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Correct toepassen
van cryptografie
Luuk Danes
dinsdag 10 juni 2014
(ISC)2 NL - Bilthoven
Luuk Danes Advies
Agenda
• Over Luuk Danes (Advies)
• Over het CISSP domein Cryptografie
• Basisbegrippen Cryptografie
• Correct toepassen v...
Luuk Danes Advies
• Wiskundige,
gespecialiseerd in cryptologie
• Ervaring opgedaan bij
de OV-chipkaart en een
security eva...
Over CISSP domein Cryptografie
• Veel technische ‘weetjes’
• Kennis voor cryptografen, niet voor decision makers
• Veel hi...
Samenvattend advies
• Bezint eer ge begint:
Cryptografie is moeilijk
• Volg de 5 stappen:
Eisen opstellen, ontwerpen, impl...
De 4 hoofdfuncties van cryptografie
• Vertrouwelijkheid
• Integriteit
• Authenticatie
• Onweerlegbaarheid (non-repudiation)
Cryptografische primitieven
Symmetrisch
• encryptie
• message authentication codes (MACs)
Random number generation
Asymmet...
Cryptografische primitieven
Symmetrisch
• encryptie
block ciphers
(3DES, AES, Blowfish)
modes of operation
(ECB, CBC, CTR)...
• 5 stappen:
1. Eisen opstellen
2. Ontwerpen
3. Implementeren
4. Controleren
5. Onderhouden
• Requirements traceability!
(...
Stap 1: Eisen opstellen
• Bepaal het doel
• Is vertrouwelijkheid, integriteit, authenticatie of onweerlegbaarheid vereist?...
Stap 1: Eisen opstellen
• Bepaal het beschermingsniveau
• Bepaal mogelijke typen aanvallers
• Bepaal de termijn waarop de ...
Stap 1: Eisen opstellen
• Bepaal het
beschermingsniveau
• Bepaal de vereiste
veiligheid in
Bits of Security
Let op:
sleute...
Bronnen
• Sleutellengtes: www.keylength.com
• Beschermingsniveaus en bijpassende cryptografische primitieven:
ECRYPT II Re...
Stap 2: Ontwerpen
• Kies de juiste type (categorie) crypto
• Op basis van het doel
• Kies de juiste algoritmes en protocol...
Stap 2: Ontwerpen
• Kies voor erkende oplossingen
Let op:
Ga niet zelf iets uitvinden! en Kies nooit voor een bekend zwak ...
Stap 2: Ontwerpen
• Dwing in het ontwerp het correct gebruiken van de crypto-
maatregelen af
ImplementationRequirements De...
Stap 3: Implementeren
• Implementeer de ontworpen oplossing
• Kies betrouwbare crypto libraries
• Gebruik die op de juiste...
Stap 3: Implementeren
• Kies een veilige random number generator
Niet goed: Ook niet goed:
ImplementationRequirements Desi...
Stap 3: Implementeren
• Kies een veilige random number generator:
• Veiligste* oplossing: True Random Number Generator (TR...
Stap 3: Implementeren
• Implementeer sleutelbeheer:
• Technisch
• Organisatorisch
ImplementationRequirements Design Mainte...
Stap 3: Implementeren
• Implementeer sleutelbeheer vanuit technisch oogpunt:
• Veiligste* oplossing: Hardware Security Mod...
Stap 3: Implementeren
• Implementeer sleutelbeheer vanuit organisatorisch oogpunt:
• Zorg voor processen rond sleuteluitgi...
Stap 3: Implementeren
• Algemene software security
• Maatregelen tegen side-channel attacks
• Maatregelen buiten de applic...
Stap 4: Controleren
• Controleer of eisen en ontwerp in overeenstemming zijn
Vaststelling van tweezijdige compleetheid is ...
Stap 5: Onderhouden
• Volg en onderhoud de processen rond sleutelbeheer
• Houd software up-to-date
en zorg voor een update...
Samenvattend advies
• Bezint eer ge begint:
Cryptografie is moeilijk
• Volg de 5 stappen:
Eisen opstellen, ontwerpen, impl...
Vragen?
Luuk Danes Advies www.luukdanes.nl
bron: xkcd.com/257
Upcoming SlideShare
Loading in …5
×

Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014

956 views

Published on

Om de vertrouwelijkheid en authenticiteit van gegevens te kunnen waarborgen wordt meestal gebruik gemaakt van cryptografie. Hoewel er goede, veilige cryptografische methoden beschikbaar zijn, worden vaak de verkeerde keuzes gemaakt of wordt de methode onjuist geïmplementeerd. Om u voor deze fouten in de toekomst te behoeden, vertelt Luuk Danes welk proces doorlopen moet worden en voor welke valkuilen u moet waken bij het gebruik van cryptografie.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014

  1. 1. Correct toepassen van cryptografie Luuk Danes dinsdag 10 juni 2014 (ISC)2 NL - Bilthoven Luuk Danes Advies
  2. 2. Agenda • Over Luuk Danes (Advies) • Over het CISSP domein Cryptografie • Basisbegrippen Cryptografie • Correct toepassen van cryptografie in 5 stappen • Samenvattend advies • Vragen
  3. 3. Luuk Danes Advies • Wiskundige, gespecialiseerd in cryptologie • Ervaring opgedaan bij de OV-chipkaart en een security evaluation lab • Werkzaam als freelance security-adviseur • Lid Normcommissie voor het Framework Secure Software
  4. 4. Over CISSP domein Cryptografie • Veel technische ‘weetjes’ • Kennis voor cryptografen, niet voor decision makers • Veel historische informatie over ‘onbekende’ algoritmes • Tussen de regels door wel tips voor toepassing, maar geen duidelijk advies of richting gegeven
  5. 5. Samenvattend advies • Bezint eer ge begint: Cryptografie is moeilijk • Volg de 5 stappen: Eisen opstellen, ontwerpen, implementeren, controleren, onderhouden • Kies voor erkende standaard oplossingen: Standaard algoritmes, protocollen, libraries en oplossingen • Schakel een expert in
  6. 6. De 4 hoofdfuncties van cryptografie • Vertrouwelijkheid • Integriteit • Authenticatie • Onweerlegbaarheid (non-repudiation)
  7. 7. Cryptografische primitieven Symmetrisch • encryptie • message authentication codes (MACs) Random number generation Asymmetrisch • public key encryptie • digitale handtekening • public key authenticatie & sleuteluitwisseling Hash functies
  8. 8. Cryptografische primitieven Symmetrisch • encryptie block ciphers (3DES, AES, Blowfish) modes of operation (ECB, CBC, CTR) stream ciphers (RC4, A5/1, SNOW 3G) • message authentication codes (MACs) (HMAC, CBC-MAC, CMAC) Random number generation Asymmetrisch • public key encryptie (RSA, Elliptic Curve) • digitale handtekening (RSA PKCS#1 v1.5, DSA, ECDSA) • public key authenticatie & sleuteluitwisseling (Diffie-Hellman, PKI, TLS, SSH) Hash functies (MD5, RIPE-MD160, SHA-2)
  9. 9. • 5 stappen: 1. Eisen opstellen 2. Ontwerpen 3. Implementeren 4. Controleren 5. Onderhouden • Requirements traceability! (volgens waterval-methode) Stappenplan
  10. 10. Stap 1: Eisen opstellen • Bepaal het doel • Is vertrouwelijkheid, integriteit, authenticatie of onweerlegbaarheid vereist? • Is er sprake van opslag, transport of enkel tijdelijk materiaal? • In geval van opslag, bepaal voor welke termijn • In geval van transport, bepaal de dataflow: beginlocatie, eindlocatie en tussenlocaties ImplementationRequirements Design MaintenanceVerification
  11. 11. Stap 1: Eisen opstellen • Bepaal het beschermingsniveau • Bepaal mogelijke typen aanvallers • Bepaal de termijn waarop de gegevens beschermd moeten blijven ImplementationRequirements Design MaintenanceVerification Very short-term < 5 years protection Short-term ≈ 10 years protection Medium-term ≈ 20 years protection Long-term ≈ 30 years protection Foreseeable future
  12. 12. Stap 1: Eisen opstellen • Bepaal het beschermingsniveau • Bepaal de vereiste veiligheid in Bits of Security Let op: sleutellengte ≠ security level ImplementationRequirements Design MaintenanceVerification
  13. 13. Bronnen • Sleutellengtes: www.keylength.com • Beschermingsniveaus en bijpassende cryptografische primitieven: ECRYPT II Report 2012 ENISA Report 2013 NIST SP 800-131A
  14. 14. Stap 2: Ontwerpen • Kies de juiste type (categorie) crypto • Op basis van het doel • Kies de juiste algoritmes en protocollen • Op basis van het doel • Op basis van de benodigde Bits of Security • Uit de lijst met ‘approved’ algoritmes en protocollen (ECRYPT / ENISA / NIST documenten) • Kies de juiste parameters • Op basis van toegestane parameters • Op basis van benodigde Bits of Security ImplementationRequirements Design MaintenanceVerification
  15. 15. Stap 2: Ontwerpen • Kies voor erkende oplossingen Let op: Ga niet zelf iets uitvinden! en Kies nooit voor een bekend zwak algoritme! • Zorg dat het ontwerp in overeenstemming is met de eisen Let op: Doe hierbij geen concessies aan projectleiders en business-owners! (Eventueel: laat de eindverantwoordelijke tekenen voor aanpassing van eisen) ImplementationRequirements Design MaintenanceVerification
  16. 16. Stap 2: Ontwerpen • Dwing in het ontwerp het correct gebruiken van de crypto- maatregelen af ImplementationRequirements Design MaintenanceVerification
  17. 17. Stap 3: Implementeren • Implementeer de ontworpen oplossing • Kies betrouwbare crypto libraries • Gebruik die op de juiste manier! • Gebruik de laatste versies • Voorbeelden: OpenSSL, Crypto++, BouncyCastle, NaCl, .NET Framework • Gebruik functies op de juiste manier • Correcte aanroep • Selecteer de juiste algoritmes en parameters • Pas het ‘Fail secure’-principe toe op cryptografische functies ImplementationRequirements Design MaintenanceVerification
  18. 18. Stap 3: Implementeren • Kies een veilige random number generator Niet goed: Ook niet goed: ImplementationRequirements Design MaintenanceVerification int main(void) { srand(time(NULL)); for(int i = 1; i <=10; i) { cout << rand() % 10; } return 0; } bron: xkcd.com/221
  19. 19. Stap 3: Implementeren • Kies een veilige random number generator: • Veiligste* oplossing: True Random Number Generator (TRNG) • Praktische oplossing: gebruik de random number generator van het platform of library Let op: controleer of de gekozen RNG cryptographically secure is! • Voorbeelden: • Java : java.security.SecureRandom • Linux : /dev/random of /dev/urandom • Windows : CryptGenRandom (CAPI) of BCryptGenRandom (CNG) • .Net : RNGCryptoServiceProvider.GetBytes ImplementationRequirements Design MaintenanceVerification
  20. 20. Stap 3: Implementeren • Implementeer sleutelbeheer: • Technisch • Organisatorisch ImplementationRequirements Design MaintenanceVerification
  21. 21. Stap 3: Implementeren • Implementeer sleutelbeheer vanuit technisch oogpunt: • Veiligste* oplossing: Hardware Security Module • Software-oplossing: gebruik de key management functies van het platform • Voorbeelden: • CNG Key Storage Functions • iOS/OS X Keychain Services • Android KeyStore ImplementationRequirements Design MaintenanceVerification
  22. 22. Stap 3: Implementeren • Implementeer sleutelbeheer vanuit organisatorisch oogpunt: • Zorg voor processen rond sleuteluitgifte, intrekking, etc. • Maak processen voor het veilig aanmaken van master/root keys • Houd een register bij (passief en actief!) van uitgegeven sleutels ImplementationRequirements Design MaintenanceVerification
  23. 23. Stap 3: Implementeren • Algemene software security • Maatregelen tegen side-channel attacks • Maatregelen buiten de applicatie ImplementationRequirements Design MaintenanceVerification
  24. 24. Stap 4: Controleren • Controleer of eisen en ontwerp in overeenstemming zijn Vaststelling van tweezijdige compleetheid is bij crypto nóg belangrijker dan bij ‘gewone’ software-verificatie • Controleer of ontwerp en implementatie in overeenstemming zijn • Controleer de security van de implementatie in het algemeen • Sterk aanbevolen: review/beoordeling door een externe partij ImplementationRequirements Design MaintenanceVerification
  25. 25. Stap 5: Onderhouden • Volg en onderhoud de processen rond sleutelbeheer • Houd software up-to-date en zorg voor een update-routine • Zowel technische als procedureel • Niet enkel voor de software, maar ook voor het crypto-algoritme of protocol • Zorg voor informatiebeveiliging in het algemeen: ImplementationRequirements Design MaintenanceVerification PROTECT RECOVERDETECTDETER RESPOND
  26. 26. Samenvattend advies • Bezint eer ge begint: Cryptografie is moeilijk • Volg de 5 stappen: Eisen opstellen, ontwerpen, implementeren, controleren, onderhouden • Kies voor erkende standaard oplossingen: Standaard algoritmes, protocollen, libraries en oplossingen • Schakel een expert in
  27. 27. Vragen? Luuk Danes Advies www.luukdanes.nl bron: xkcd.com/257

×