SlideShare une entreprise Scribd logo
1  sur  27
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 van cryptografie in 5 stappen
• Samenvattend advies
• Vragen
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
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
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
De 4 hoofdfuncties van cryptografie
• Vertrouwelijkheid
• Integriteit
• Authenticatie
• Onweerlegbaarheid (non-repudiation)
Cryptografische primitieven
Symmetrisch
• encryptie
• message authentication codes (MACs)
Random number generation
Asymmetrisch
• public key encryptie
• digitale handtekening
• public key authenticatie &
sleuteluitwisseling
Hash functies
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)
• 5 stappen:
1. Eisen opstellen
2. Ontwerpen
3. Implementeren
4. Controleren
5. Onderhouden
• Requirements traceability!
(volgens waterval-methode)
Stappenplan
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
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
Stap 1: Eisen opstellen
• Bepaal het
beschermingsniveau
• Bepaal de vereiste
veiligheid in
Bits of Security
Let op:
sleutellengte
≠
security level
ImplementationRequirements Design MaintenanceVerification
Bronnen
• Sleutellengtes: www.keylength.com
• Beschermingsniveaus en bijpassende cryptografische primitieven:
ECRYPT II Report 2012 ENISA Report 2013 NIST SP 800-131A
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
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
Stap 2: Ontwerpen
• Dwing in het ontwerp het correct gebruiken van de crypto-
maatregelen af
ImplementationRequirements Design MaintenanceVerification
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
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
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
Stap 3: Implementeren
• Implementeer sleutelbeheer:
• Technisch
• Organisatorisch
ImplementationRequirements Design MaintenanceVerification
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
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
Stap 3: Implementeren
• Algemene software security
• Maatregelen tegen side-channel attacks
• Maatregelen buiten de applicatie
ImplementationRequirements Design MaintenanceVerification
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
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
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
Vragen?
Luuk Danes Advies www.luukdanes.nl
bron: xkcd.com/257

Contenu connexe

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

Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleHoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleJeroen Reijn
 
Good practices in pentesting - Bas de Heer
Good practices in pentesting - Bas de HeerGood practices in pentesting - Bas de Heer
Good practices in pentesting - Bas de HeerSogeti Nederland B.V.
 
De wereld van cybersecurity & ethisch hacken
De wereld van cybersecurity & ethisch hackenDe wereld van cybersecurity & ethisch hacken
De wereld van cybersecurity & ethisch hackenSijmen Ruwhof
 
20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling
20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling
20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkelingGGZ Oost Brabant
 
Robot framework en ci v2
Robot framework en ci v2Robot framework en ci v2
Robot framework en ci v2christiantester
 
2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?
2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?
2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?Jaap van Ekris
 
2016 11-15 - nvrb - software betrouwbaarheid
2016 11-15 - nvrb - software betrouwbaarheid2016 11-15 - nvrb - software betrouwbaarheid
2016 11-15 - nvrb - software betrouwbaarheidJaap van Ekris
 
Loggingenmonitoringpresentatiemetpenetratietesten
LoggingenmonitoringpresentatiemetpenetratietestenLoggingenmonitoringpresentatiemetpenetratietesten
LoggingenmonitoringpresentatiemetpenetratietestenFerdinand_u
 
Techdays 2012 - Better code through reviews and tools
Techdays 2012 - Better code through reviews and toolsTechdays 2012 - Better code through reviews and tools
Techdays 2012 - Better code through reviews and toolsJesse Houwing
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changesArjen van Vliet
 
Safeshops ? Nadenken over veiligheidsaspecten van E-shops/Commerce
Safeshops ?  Nadenken over veiligheidsaspecten van E-shops/CommerceSafeshops ?  Nadenken over veiligheidsaspecten van E-shops/Commerce
Safeshops ? Nadenken over veiligheidsaspecten van E-shops/CommerceB.A.
 
BPUG Seminar 2014 Rik Marselis - effectief testen in agile
BPUG Seminar 2014 Rik Marselis - effectief testen in agileBPUG Seminar 2014 Rik Marselis - effectief testen in agile
BPUG Seminar 2014 Rik Marselis - effectief testen in agileRik Marselis
 
INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...
INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...
INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...B.A.
 
http://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificering
http://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificeringhttp://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificering
http://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificeringRob Blaauboer
 
Nearshore softwareontwikkeling - Technosoft
Nearshore softwareontwikkeling - TechnosoftNearshore softwareontwikkeling - Technosoft
Nearshore softwareontwikkeling - TechnosoftBart Zwager
 
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en ScrumSYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en ScrumSYSQA BV
 
Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?
Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?
Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?Digipolis Antwerpen
 
SCRUM essentials voor PRINCE2 project managagers
SCRUM essentials voor PRINCE2 project managagersSCRUM essentials voor PRINCE2 project managagers
SCRUM essentials voor PRINCE2 project managagersTricode (part of Dept)
 
Webinar de balans tussen security en gebruiksvriendelijkheid
Webinar de balans tussen security en gebruiksvriendelijkheidWebinar de balans tussen security en gebruiksvriendelijkheid
Webinar de balans tussen security en gebruiksvriendelijkheidDelta-N
 
Load En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalLoad En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalPlutonIT
 

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

Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleHoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
 
Good practices in pentesting - Bas de Heer
Good practices in pentesting - Bas de HeerGood practices in pentesting - Bas de Heer
Good practices in pentesting - Bas de Heer
 
De wereld van cybersecurity & ethisch hacken
De wereld van cybersecurity & ethisch hackenDe wereld van cybersecurity & ethisch hacken
De wereld van cybersecurity & ethisch hacken
 
20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling
20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling
20131203 pv ib_zalmtrijssenaar_auditenvanagilesoftwareontwikkeling
 
Robot framework en ci v2
Robot framework en ci v2Robot framework en ci v2
Robot framework en ci v2
 
2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?
2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?
2008-06-23 - SDN - Kwaliteit van software, wat is dat nu eigenlijk?
 
2016 11-15 - nvrb - software betrouwbaarheid
2016 11-15 - nvrb - software betrouwbaarheid2016 11-15 - nvrb - software betrouwbaarheid
2016 11-15 - nvrb - software betrouwbaarheid
 
Loggingenmonitoringpresentatiemetpenetratietesten
LoggingenmonitoringpresentatiemetpenetratietestenLoggingenmonitoringpresentatiemetpenetratietesten
Loggingenmonitoringpresentatiemetpenetratietesten
 
Techdays 2012 - Better code through reviews and tools
Techdays 2012 - Better code through reviews and toolsTechdays 2012 - Better code through reviews and tools
Techdays 2012 - Better code through reviews and tools
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changes
 
Safeshops ? Nadenken over veiligheidsaspecten van E-shops/Commerce
Safeshops ?  Nadenken over veiligheidsaspecten van E-shops/CommerceSafeshops ?  Nadenken over veiligheidsaspecten van E-shops/Commerce
Safeshops ? Nadenken over veiligheidsaspecten van E-shops/Commerce
 
BPUG Seminar 2014 Rik Marselis - effectief testen in agile
BPUG Seminar 2014 Rik Marselis - effectief testen in agileBPUG Seminar 2014 Rik Marselis - effectief testen in agile
BPUG Seminar 2014 Rik Marselis - effectief testen in agile
 
INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...
INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...
INFORUM - VEILIGHEIDSPROBLEMEN VOOR BIBLIOTHEEK EN ARCHIEF IN HET DIGITALE TI...
 
http://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificering
http://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificeringhttp://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificering
http://weekvanhetdigitaalerfgoed.nl/ 1 b1 keeswaterman certificering
 
Nearshore softwareontwikkeling - Technosoft
Nearshore softwareontwikkeling - TechnosoftNearshore softwareontwikkeling - Technosoft
Nearshore softwareontwikkeling - Technosoft
 
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en ScrumSYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
 
Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?
Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?
Meetup 19/12/2016 - Blockchain-as-a-service voor Antwerpen?
 
SCRUM essentials voor PRINCE2 project managagers
SCRUM essentials voor PRINCE2 project managagersSCRUM essentials voor PRINCE2 project managagers
SCRUM essentials voor PRINCE2 project managagers
 
Webinar de balans tussen security en gebruiksvriendelijkheid
Webinar de balans tussen security en gebruiksvriendelijkheidWebinar de balans tussen security en gebruiksvriendelijkheid
Webinar de balans tussen security en gebruiksvriendelijkheid
 
Load En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalLoad En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af Final
 

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

  • 1. Correct toepassen van cryptografie Luuk Danes dinsdag 10 juni 2014 (ISC)2 NL - Bilthoven Luuk Danes Advies
  • 2. Agenda • Over Luuk Danes (Advies) • Over het CISSP domein Cryptografie • Basisbegrippen Cryptografie • Correct toepassen van cryptografie in 5 stappen • Samenvattend advies • Vragen
  • 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. 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. 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. De 4 hoofdfuncties van cryptografie • Vertrouwelijkheid • Integriteit • Authenticatie • Onweerlegbaarheid (non-repudiation)
  • 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. 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. • 5 stappen: 1. Eisen opstellen 2. Ontwerpen 3. Implementeren 4. Controleren 5. Onderhouden • Requirements traceability! (volgens waterval-methode) Stappenplan
  • 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. 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. Stap 1: Eisen opstellen • Bepaal het beschermingsniveau • Bepaal de vereiste veiligheid in Bits of Security Let op: sleutellengte ≠ security level ImplementationRequirements Design MaintenanceVerification
  • 13. Bronnen • Sleutellengtes: www.keylength.com • Beschermingsniveaus en bijpassende cryptografische primitieven: ECRYPT II Report 2012 ENISA Report 2013 NIST SP 800-131A
  • 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. 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. Stap 2: Ontwerpen • Dwing in het ontwerp het correct gebruiken van de crypto- maatregelen af ImplementationRequirements Design MaintenanceVerification
  • 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. 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. 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. Stap 3: Implementeren • Implementeer sleutelbeheer: • Technisch • Organisatorisch ImplementationRequirements Design MaintenanceVerification
  • 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. 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. Stap 3: Implementeren • Algemene software security • Maatregelen tegen side-channel attacks • Maatregelen buiten de applicatie ImplementationRequirements Design MaintenanceVerification
  • 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. 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. 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. Vragen? Luuk Danes Advies www.luukdanes.nl bron: xkcd.com/257