utilisation du chiffrement sur la plateforme windows jean-yves poublan microsoft france

83
Utilisation du Utilisation du chiffrement sur chiffrement sur la plateforme la plateforme Windows Windows Jean-Yves Poublan Jean-Yves Poublan Microsoft France Microsoft France

Upload: ozanne-gomes

Post on 03-Apr-2015

143 views

Category:

Documents


18 download

TRANSCRIPT

Page 1: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

Utilisation du Utilisation du chiffrement sur la chiffrement sur la

plateforme plateforme WindowsWindows

Jean-Yves PoublanJean-Yves PoublanMicrosoft FranceMicrosoft France

Page 2: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

AgendaAgenda Crypto 101Crypto 101

Chiffrement/Condensé/MACChiffrement/Condensé/MAC Cryptographie à clé publiqueCryptographie à clé publique PKIXPKIX

APIs CryptoAPIs Crypto Classes .NetClasses .Net CAPICOMCAPICOM CryptoAPICryptoAPI

Nouveautés Windows VistaNouveautés Windows Vista CNGCNG

Meilleures pratiquesMeilleures pratiques

Page 3: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

3

ChiffrementChiffrement

SymétriqueSymétrique On chiffre et déchiffre avec la même cléOn chiffre et déchiffre avec la même clé En principe le moteur est aussi symétriqueEn principe le moteur est aussi symétrique

AsymétriqueAsymétrique On chiffre et déchiffre avec des clés différentesOn chiffre et déchiffre avec des clés différentes

Typiquement une clé publique et une clé privéeTypiquement une clé publique et une clé privée

Chiffrement DéchiffrementTexte en clair

Clef de chiffrement

Texte chiffré

Texte original

Clef de déchiffrement

Source d’entropie

Page 4: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

4

ICryptoTransform

Input Block

Output Block

CryptoStream (mode write)IC

ryp

toT

ran

sfo

rm

Buffer BufferN’importe quel

stream

Chiffrement symétriqueChiffrement symétriqueClasses .NetClasses .Net

L’application du chiffrement est L’application du chiffrement est fait par ICryptoTransform (ICT), fait par ICryptoTransform (ICT), une transformation bloc par blocune transformation bloc par bloc

La classe La classe CryptoStreamCryptoStream gère les gère les transformations au niveau des transformations au niveau des blocs pour offrir une blocs pour offrir une programmation de type streamprogrammation de type stream

Page 5: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

5

Chiffrement symétriqueChiffrement symétriqueClasses .NetClasses .Net

Page 6: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

6

Chiffrement symétriqueChiffrement symétriqueCAPICOMCAPICOM

Dans ce cas (AES), la longueur de clé par défaut Dans ce cas (AES), la longueur de clé par défaut est 256est 256 EncryptedData.Algorithm.KeyLengthEncryptedData.Algorithm.KeyLength

Page 7: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

7

Chiffrement symétriqueChiffrement symétriqueCryptoAPICryptoAPI

Page 8: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

8

Génération de clé aléatoireGénération de clé aléatoire Caractéristiques cryptographiquesCaractéristiques cryptographiques

Utiliser le moteur de cryptoUtiliser le moteur de crypto Classes .Net: Classes .Net: SymmetricAlgorithm.GenerateKeySymmetricAlgorithm.GenerateKey CryptoAPI: CryptoAPI: CryptGenRandom, CryptGenKeyCryptGenRandom, CryptGenKey CAPICOM: CAPICOM: Utilities.GetRandomUtilities.GetRandom Source d’entropie: timing des touches clavier et clics Source d’entropie: timing des touches clavier et clics

souris, timestamp démarrage du système, nombre de souris, timestamp démarrage du système, nombre de page swap, etc…page swap, etc…

Norme NIST FIPS186-2 issue de la norme Norme NIST FIPS186-2 issue de la norme X9.17X9.17 Ne jamais utiliser RAND (c-runtime)Ne jamais utiliser RAND (c-runtime)

AvantageAvantage Bonne source d’entropie, en provenance d’un espace Bonne source d’entropie, en provenance d’un espace

étenduétendu

DifficultéDifficulté Échange et stockage de la cléÉchange et stockage de la clé

Page 9: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

9

CondenséCondensé

Fonction de hachage à sens unique (one-way hash)Fonction de hachage à sens unique (one-way hash) Non-invertabilityNon-invertability: Il est difficile de retrouver le texte original : Il est difficile de retrouver le texte original

à partir du condenséà partir du condensé Collision-intractabilityCollision-intractability: Il est difficile de trouver deux textes : Il est difficile de trouver deux textes

qui donnent le même condensé qui donnent le même condensé Le condensé peut identifier un texte en clair à la manière Le condensé peut identifier un texte en clair à la manière

d’une empreinted’une empreinte Permet d’identifier un texte, sans en connaître le contenu…Permet d’identifier un texte, sans en connaître le contenu…

Caractéristiques d’une bonne fonction de hashCaractéristiques d’une bonne fonction de hash Absence de collisions connuesAbsence de collisions connues Divergence - Deux textes en clair peu différents produisent Divergence - Deux textes en clair peu différents produisent

des condensés très différentsdes condensés très différents

FonctionSens Unique

Texte (longueur arbitraire)

Empreinte ou condensé (longueur n octets,

typiquement 16 ou 20)

Page 10: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

10

CondenséCondenséClasses .NetClasses .Net

Page 11: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

11

CondenséCondenséClasses .NetClasses .Net

Page 12: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

12

CondenséCondenséCAPICOMCAPICOM

Algorithme par défaut SHA1Algorithme par défaut SHA1 Propriété HashedData.AlgorithmPropriété HashedData.Algorithm

Page 13: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

13

CondenséCondenséCryptoAPICryptoAPI

SHA1 – NIST – 160 bits/20 octetsSHA1 – NIST – 160 bits/20 octets

Page 14: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

14

Dérivation d’une cléDérivation d’une cléA partir d’un mot de passe ou d’un secret utilisateurA partir d’un mot de passe ou d’un secret utilisateur

Password Based Key DerivationPassword Based Key Derivation Standard pour dériver une clé à partir d’un mot de passeStandard pour dériver une clé à partir d’un mot de passe PKCS#5 – RFC 2898PKCS#5 – RFC 2898

Itérations, Salt, Algorithme de hashItérations, Salt, Algorithme de hash PBKDF1PBKDF1

Classe .Net Classe .Net PasswordDeriveBytesPasswordDeriveBytes PBKDF2PBKDF2

Classe .Net Classe .Net Rfc2898DeriveBytesRfc2898DeriveBytes (.Net Framework 2.0) (.Net Framework 2.0)

AvantageAvantage On ne stocke pas le secret (il est dans l’esprit de On ne stocke pas le secret (il est dans l’esprit de

l’utilisateur)l’utilisateur)

InconvénientInconvénient Source d’entropie en provenance d’un espace restreintSource d’entropie en provenance d’un espace restreint Celui des mots de passe en généralCelui des mots de passe en général

Page 15: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

15

SaltSalt

Valeur aléatoire, non secrète, qu’on inclut en entrée Valeur aléatoire, non secrète, qu’on inclut en entrée de l’algorithme de dérivation de mot de passede l’algorithme de dérivation de mot de passe Rend l’attaque de dictionnaire difficileRend l’attaque de dictionnaire difficile On ne peut facilement pré-calculer tous les dérivés On ne peut facilement pré-calculer tous les dérivés

possibles pour un dictionnairepossibles pour un dictionnaire

Dérivation de clé de chiffrement à partir d’un mot de Dérivation de clé de chiffrement à partir d’un mot de passepasse

Vérificateurs de mots de passeVérificateurs de mots de passe Le Le saltsalt est unique/aléatoire pour chaque mot de passe. Le est unique/aléatoire pour chaque mot de passe. Le

saltsalt et PBKDF(password, salt, iter) sont stockés dans la et PBKDF(password, salt, iter) sont stockés dans la basebase

On ne peut reconnaître le fait que deux utilisateurs ont le On ne peut reconnaître le fait que deux utilisateurs ont le même mot de passe en observant la base des comptesmême mot de passe en observant la base des comptes

Page 16: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

16

Dérivation de cléDérivation de clé

La valeur résultant de la dérivation n’est pas La valeur résultant de la dérivation n’est pas forcement d’une longueur égale à la clé de forcement d’une longueur égale à la clé de l’algorithmel’algorithme

CryptDeriveKey(CryptDeriveKey(HCRYPTPROVHCRYPTPROV, , ALG_IDALG_ID, , HCRYPTHASHHCRYPTHASH …) …) Si condensé plus long, on extrait les bits dont on a besoinSi condensé plus long, on extrait les bits dont on a besoin

Hash SHA1 – 160 bits, pour AES 128Hash SHA1 – 160 bits, pour AES 128

Si condensé moins long, on l’étire selon un algorithme Si condensé moins long, on l’étire selon un algorithme connuconnu Hash SHA1 – 160 bits, pour AES 256Hash SHA1 – 160 bits, pour AES 256

Rfc2898DeriveBytes.GetBytes(keysize)Rfc2898DeriveBytes.GetBytes(keysize)

Page 17: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

17

Dérivation d’une cléDérivation d’une cléClasses .NetClasses .Net

Page 18: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

18

Authenticité des messagesAuthenticité des messagesHash du texte original et d’un secret partagéHash du texte original et d’un secret partagé

Permet de d’assurer de l’authenticité et de l’intégrité Permet de d’assurer de l’authenticité et de l’intégrité du messagedu message

HMAC – keyed hashHMAC – keyed hash RFC 2104RFC 2104 MD5 ou SHA1MD5 ou SHA1 Soit M le message, K la clé de session, H la fonction de hash:Soit M le message, K la clé de session, H la fonction de hash:

opad (outer padding) constitué des octets 0x5Copad (outer padding) constitué des octets 0x5C ipad (inner padding) constitué des octets 0x36ipad (inner padding) constitué des octets 0x36 HMAC = H(K xor opad, H(K xor ipad, M))HMAC = H(K xor opad, H(K xor ipad, M))

Indispensable avec RC4Indispensable avec RC4 Meilleure pratique: utiliser deux secrets Meilleure pratique: utiliser deux secrets

indépendantsindépendants Un pour le chiffrement, et un pour le code d’authenticitéUn pour le chiffrement, et un pour le code d’authenticité

Page 19: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

19

CryptoStreamA

ES

Buffer Buffer

CS

HM

AC

-SH

A

Stream

Chainage transformations cryptoChainage transformations cryptoClasses .NetClasses .Net

On peut enchaîner les transformations cryptos en spécifiant un On peut enchaîner les transformations cryptos en spécifiant un CryptoStream en sortie d’un CryptoStreamCryptoStream en sortie d’un CryptoStream

Exemple:Exemple: Le premier CryptoStream effectue le chiffrementLe premier CryptoStream effectue le chiffrement Les données en sorties sont dirigées vers le deuxième Les données en sorties sont dirigées vers le deuxième

CryptoStream qui effectue le calcul du code MACCryptoStream qui effectue le calcul du code MAC

CryptoStream

Page 20: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

20

Authenticité des messagesAuthenticité des messagesClasses .NetClasses .Net

Page 21: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

21

Chiffrement clé publiqueChiffrement clé publiqueClasses .NetClasses .Net

Obtention de la clé publiqueObtention de la clé publique ExportParametersExportParameters, , ImportParametersImportParameters

Page 22: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

22

Signature RSASignature RSAClasses .NetClasses .Net

Page 23: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

23

Vérification de signature RSAVérification de signature RSAClasses .NetClasses .Net

Page 24: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

24

Chiffrement RSAChiffrement RSA

RSA résout le problème de l’échange des secrets RSA résout le problème de l’échange des secrets mais en introduit un autremais en introduit un autre Authenticité de la clé publiqueAuthenticité de la clé publique

Page 25: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

25

Certificats PKI X509Certificats PKI X509

La clé publique est liée à une La clé publique est liée à une entité (détenteur) par un certificatentité (détenteur) par un certificat

Le certificat est signé par une Le certificat est signé par une autorité de certification (CA)autorité de certification (CA) Contient la clé publiqueContient la clé publique Contient le nom de l’entité Contient le nom de l’entité

détentricedétentrice

Le certificat atteste que la clé Le certificat atteste que la clé publique appartient bien à l’entitépublique appartient bien à l’entité

L’utilisateur de la clé publique (qui L’utilisateur de la clé publique (qui n’est pas son détenteur) fait n’est pas son détenteur) fait confiance à l’autorité de confiance à l’autorité de certificationcertification L’autorité de certification a bien L’autorité de certification a bien

authentifié le détenteur et s’est authentifié le détenteur et s’est bien assuré qu’il/elle possédait la bien assuré qu’il/elle possédait la clé privée avant de délivrer le clé privée avant de délivrer le certificatcertificat

public

Name: “Jane Doe”

Valid From: 6/18/99

Valid To 6/18/01

Signed: CA

Certificate Serial #: 29483756

Public Key:

Page 26: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

26

Chiffrement PKIXChiffrement PKIX Standard PKCS#7 – RFC 2315 /CMS – RFC 2630Standard PKCS#7 – RFC 2315 /CMS – RFC 2630

Signature des messagesSignature des messages Signature attachéeSignature attachée Signature détachéeSignature détachée Multiples signatures et imbricationsMultiples signatures et imbrications

Confidentialité des messagesConfidentialité des messages Envelopped dataEnvelopped data

Classes .NetClasses .Net System.Security.Cryptography.X509CertificatesSystem.Security.Cryptography.X509Certificates

X509Certificate, X509Store, X509Chain, etc…X509Certificate, X509Store, X509Chain, etc… System.Security.Cryptography.PkcsSystem.Security.Cryptography.Pkcs Support de PKIX largement enrichi avec 2.0Support de PKIX largement enrichi avec 2.0 A défaut, WSE 3.0A défaut, WSE 3.0

CAPICOM - privilégie PKI X509CAPICOM - privilégie PKI X509 CryptoAPIv2CryptoAPIv2

CertOpenStore, CertFindCertificateInStore, etc…CertOpenStore, CertFindCertificateInStore, etc… CryptEncryptMessage/CryptSignMessage, etc…CryptEncryptMessage/CryptSignMessage, etc… Support de PKIX très étenduSupport de PKIX très étendu

Page 27: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

27

Chiffrement PKIXChiffrement PKIXClasses .NetClasses .Net

Page 28: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

28

Signature PKIXSignature PKIXClasses .NetClasses .Net

Page 29: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

29

System.Security.Cryptography.Pkcs System.Security.Cryptography.Pkcs

EnvelopedCMSEnvelopedCMS Message chiffré, ou chiffré/signé Message chiffré, ou chiffré/signé

SignedCMSSignedCMS Message signéMessage signé

ContentInfoContentInfo Contenu sur lequel s’applique le chiffrement/signatureContenu sur lequel s’applique le chiffrement/signature

RecipientInfoRecipientInfo Pour qui le message est chiffréPour qui le message est chiffré

CMSSignerCMSSigner Par qui le message est signéPar qui le message est signé

Page 30: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

30

Signature PKIXSignature PKIXCAPICOMCAPICOM

L’objet Signer n’a pas de certificatL’objet Signer n’a pas de certificat CAPICOM affiche la boîte de dialogue de choix d’un CAPICOM affiche la boîte de dialogue de choix d’un

certificat à partir du magasin personnelcertificat à partir du magasin personnel

Page 31: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

31

Signature PKIXSignature PKIXCAPICOMCAPICOM

Pour vérifierPour vérifier SignedData.VerifySignedData.Verify

Vérifie la validité de la signature et du certificatVérifie la validité de la signature et du certificat Validation de la chaîne et révocationValidation de la chaîne et révocation

Page 32: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

32

Choix de l’APIChoix de l’API Classes .NetClasses .Net

Environnement .Net Framework (Environnement .Net Framework (managedmanaged)) .Net Framework v2.0 enrichi et maintenant très complet.Net Framework v2.0 enrichi et maintenant très complet Signature XMLSignature XML Utiliser WSE si nécessaireUtiliser WSE si nécessaire

CAPICOMCAPICOM PKIX – signature/chiffrementPKIX – signature/chiffrement Administration, déploiement, scripts PKIXAdministration, déploiement, scripts PKIX Applications WebApplications Web

CryptoAPIv2CryptoAPIv2 PKIX, certificats, messages PKCS#7/CMSPKIX, certificats, messages PKCS#7/CMS

CryptoAPIv1/CNGCryptoAPIv1/CNG Contrôle très finContrôle très fin Mise en œuvre de protocoles/performanceMise en œuvre de protocoles/performance Programmation « bas niveau »Programmation « bas niveau » CSPs/algorithmes spécifiquesCSPs/algorithmes spécifiques

Page 33: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

33

Classes .NetClasses .Net

Algorithmes “dans la boite”Algorithmes “dans la boite” Hashes: Hashes: SHA-1, SHA-256/384/512, RIPEMD160SHA-1, SHA-256/384/512, RIPEMD160 (en C#), MD5 (en C#), MD5 Asymétrique: Asymétrique: RSARSA, DSA , DSA Symétrique: Symétrique: AESAES (en C#), TripleDES, DES, RC2 (en C#), TripleDES, DES, RC2 Keyed MACs: Keyed MACs: HMAC-SHA1, HMAC-SHA256HMAC-SHA1, HMAC-SHA256… … RNGs: RNG basé sur CryptoAPIRNGs: RNG basé sur CryptoAPI

Plusieurs classes d’implémentation encapsulent CryptoAPIPlusieurs classes d’implémentation encapsulent CryptoAPI Permet de bénéficier de la certification FIPS-140 des CSP du Permet de bénéficier de la certification FIPS-140 des CSP du

systèmesystème Modèle objet extensible – permet l’ajout d’algorithmesModèle objet extensible – permet l’ajout d’algorithmes Configuration système crypto définit les implémentations par Configuration système crypto définit les implémentations par

défaut pour chaque abstractiondéfaut pour chaque abstraction Par défaut, les instanciations utilisent des options fortesPar défaut, les instanciations utilisent des options fortes

Rijndael aes = Rijndael.Create()Rijndael aes = Rijndael.Create() Clé 256, mode CBC, IV aléatoireClé 256, mode CBC, IV aléatoire

Page 34: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

34

Classes .NetClasses .NetModèle objetModèle objet

SymmetricSymmetricAlgorithmAlgorithm

TripleDESTripleDES AESAES

TripleDESCryptoTripleDESCryptoServiceProviderServiceProvider

(CryptoAPI)(CryptoAPI)

AESManagedAESManaged(C#)(C#)

NouvelNouvelAlgorithmeAlgorithme

ImplémentationImplémentation

Classe de baseClasse de baseabstraiteabstraite

Classes Classes d’algorithme d’algorithme abstraitesabstraites

Classes de mise en œuvre Classes de mise en œuvre

AESAESHardwareHardware

Page 35: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

35

CAPICOMCAPICOM

Librairie COM redistribuable – CAPICOM.DLLLibrairie COM redistribuable – CAPICOM.DLL http://www.microsoft.com/downloadshttp://www.microsoft.com/downloads

Rechercher « CAPICOM »Rechercher « CAPICOM » Version 2.0.0.3Version 2.0.0.3 Windows 2000, Windows 98, Windows ME, Windows NT, Windows 2000, Windows 98, Windows ME, Windows NT,

Windows XP/Windows 2003Windows XP/Windows 2003 Nombreux exemplesNombreux exemples Documentation dans MSDNDocumentation dans MSDN

Encapsulation de CryptoAPIEncapsulation de CryptoAPI Orientée PKI X509Orientée PKI X509 Orientée environnements applicatif VB, VBS (scripts), ASP, Orientée environnements applicatif VB, VBS (scripts), ASP,

DHTMLDHTML

Le moyen le plus facile d’incorporer de la signature Le moyen le plus facile d’incorporer de la signature et chiffrement PKIX dans une applicationet chiffrement PKIX dans une application

Page 36: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

36

Utilisations CAPICOMUtilisations CAPICOM

ApplicationsApplications Signature PKIXSignature PKIX

Format PKCS#7Format PKCS#7 Avec certificat logiciel, smartcard, tokenAvec certificat logiciel, smartcard, token Vérification signature avec vérification révocationVérification signature avec vérification révocation

Chiffrement donnéesChiffrement données A base de mot de passe ou secret partagéA base de mot de passe ou secret partagé A base de PKIX (A base de PKIX (envelopingenveloping))

Gestion certificats et magasins de certificatsGestion certificats et magasins de certificats

Scripts administration et déploiement PKIScripts administration et déploiement PKI

Possibilité d’utiliser des combinaisonsPossibilité d’utiliser des combinaisons CAPICOM/CryptoAPI/Classes .NetCAPICOM/CryptoAPI/Classes .Net

Page 37: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

37

Classes .NetClasses .Net

CryptoAPICryptoAPIUne architecture en providersUne architecture en providers

CSP

BaseClés

Crypto APICrypto API

Gestion certificats etproviders de stockage

Gestion certificats etproviders de stockage

Opérations cryptographiquesOpérations cryptographiques

StockageCertificats

ApplicationApplication

ApplicationApplicationApplicationsApplications

CAPICOMCAPICOM

Page 38: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

38

CryptoAPIv1CryptoAPIv1 AlgorithmesAlgorithmes

AES128, AES192, AES256AES128, AES192, AES256, 3DES, DES, RC2, RC4, 3DES, DES, RC2, RC4 RSARSA, DH, DSA, DH, DSA SHA1, HMAC-SHA1SHA1, HMAC-SHA1, MD5, HMAC-MD5, MD4, MD2, MD5, HMAC-MD5, MD4, MD2

There are 15 providers:Type 01 - Gemplus GemSAFE Card CSP v1.0Type 01 - Infineon SICRYPT Base Smart Card CSPType 01 - Microsoft Base Cryptographic Provider v1.0Type 13 - Microsoft Base DSS and Diffie-Hellman Cryptographic ProviderType 03 - Microsoft Base DSS Cryptographic ProviderType 01 - Microsoft Base Smart Card Crypto ProviderType 18 - Microsoft DH SChannel Cryptographic ProviderType 01 - Microsoft Enhanced Cryptographic Provider v1.0Type 13 - Microsoft Enhanced DSS and Diffie-Hellman Cryptographic ProviderType 24 - Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)Type 05 - Microsoft Exchange Cryptographic Provider v1.0Type 12 - Microsoft RSA SChannel Cryptographic ProviderType 01 - Microsoft Strong Cryptographic ProviderType 01 - Schlumberger Cryptographic Service ProviderType 01 - Windows for Smart Cards Cryptographic Service Provider

Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype): RC2, Key sizes = 128 (def), 40, 128, Protocols supported 0x00000000 RC4, Key sizes = 128 (def), 40, 128, Protocols supported 0x00000000 DES, Key sizes = 56 (def), 56, 56, Protocols supported 0x00000000 3DES TWO KEY, Key sizes = 112 (def), 112, 112, Protocols supported 0x00000000 3DES, Key sizes = 168 (def), 168, 168, Protocols supported 0x00000000 SHA-1, Key sizes = 160 (def), 160, 160, Protocols supported 0x00000020 MD2, Key sizes = 128 (def), 128, 128, Protocols supported 0x00000020 MD4, Key sizes = 128 (def), 128, 128, Protocols supported 0x00000020 MD5, Key sizes = 128 (def), 128, 128, Protocols supported 0x00000020 SSL3 SHAMD5, Key sizes = 288 (def), 288, 288, Protocols supported 0x00000000 MAC, Key sizes = 0 (def), 0, 0, Protocols supported 0x00000000 RSA_SIGN, Key sizes = 1024 (def), 384, 16384, Protocols supported 0x00000030 RSA_KEYX, Key sizes = 1024 (def), 384, 16384, Protocols supported 0x00000030 HMAC, Key sizes = 0 (def), 0, 0, Protocols supported 0x00000000 AES 128, Key sizes = 128 (def), 128, 128, Protocols supported 0x00000000 AES 192, Key sizes = 192 (def), 192, 192, Protocols supported 0x00000000 AES 256, Key sizes = 256 (def), 256, 256, Protocols supported 0x00000000

Page 39: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

39

CryptoAPICryptoAPILien entre certificat du titulaire et clé privéeLien entre certificat du titulaire et clé privée

Stockée avec le certificat se trouve une référence Stockée avec le certificat se trouve une référence vers la clé privéevers la clé privée Extended Properties CERT_KEY_PROV_INFO_PROP_IDExtended Properties CERT_KEY_PROV_INFO_PROP_ID

Structure CRYPT_KEY_PROV_INFO: Contient toutes les Structure CRYPT_KEY_PROV_INFO: Contient toutes les informations nécessaires pour acquérir un contexte sur le informations nécessaires pour acquérir un contexte sur le CSP hébergeant la clé privée - typiquement les paramètres CSP hébergeant la clé privée - typiquement les paramètres de de CryptAcquireContextCryptAcquireContext

CryptAcquireCertificatePrivateKeyCryptAcquireCertificatePrivateKey

Basecertificats

Certificat(signé par CA)

Propriétés

Contexte de certificat

CRYPT_KEY_PROV_INFO ContainerName ProvName ProvType ProvParam …

CERT_KEY_PROV_INFO_PROP_IDCSP

BaseClés

Page 40: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

40

Protection de la clé privéeProtection de la clé privée

DPAPIDPAPI CryptProtectDataCryptProtectData, , CryptUnprotectDataCryptUnprotectData ProtectedDataProtectedData (.Net Framework 2.0) (.Net Framework 2.0)

Chiffrement 3DESChiffrement 3DES Clé dérivée d’une clé maitre 512 bitsClé dérivée d’une clé maitre 512 bits Clé maitre chiffrée avec clé dérivée du mot de passeClé maitre chiffrée avec clé dérivée du mot de passe

PBKDF2(SHA1(PBKDF2(SHA1(passwordpassword)))) Entropie supplémentaire possibleEntropie supplémentaire possible

Seul l’utilisateur qui a protégé peut accéderSeul l’utilisateur qui a protégé peut accéder Comptes du domaineComptes du domaine

Récupération contrôleur de domaineRécupération contrôleur de domaine

Compte localCompte local Password Recovery DiskPassword Recovery Disk

Compte du domaine

La protection est effective quelque soit le mode de syskey

Compte local

La protection n’est effective qu’avec SYSKEY mode 2 ou 3, a cause de la présence des LMHash (configuration par défaut Windows XP). Même en l’absence des LMHash la protection est moins sure que pour un compte du domaine de par la présence des NTHash.

Page 41: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

41

CryptoAPICryptoAPIBases, ou magasins de certificatsBases, ou magasins de certificats

Par utilisateur, machine, ou servicePar utilisateur, machine, ou service PluginPlugin MMC MMC CertificatesCertificates Certutil.exeCertutil.exe

Nom CryptoAPI Nom d’affichage Description

My Personal Les certificats du titulaireLes certificats du titulaire

Root Trusted Root Certification Authorities

Les racines de confiance

CA Intermediate Certification Authorities

Cache des CA intermédiaires et des listes de révocation

UserDS Active Directory User Object Les certificats du titulaire dans Active Directory – attribut du compte, userCertificate

Autres…

Page 42: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

NouveautésNouveautésWindows VistaWindows Vista

Page 43: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

43

Crypto Next GenerationCrypto Next Generation

Refonte du moteur de chiffrementRefonte du moteur de chiffrement Remplacement à long terme et progressif de CAPI 1Remplacement à long terme et progressif de CAPI 1

Permettre la mise en œuvre et l’utilisation de la Permettre la mise en œuvre et l’utilisation de la crypto d’une manière plus « agile »crypto d’une manière plus « agile » Facilité d’introduire de nouveaux algorithmesFacilité d’introduire de nouveaux algorithmes Facilité de remplacer des implémentations d’algorithmes Facilité de remplacer des implémentations d’algorithmes

par de nouvelles implémentationspar de nouvelles implémentations

Les algorithmes et implémentations dépendent de l’environnementSecteur public, Secteur privé, Défense, Politique, Géographie

La sureté des algorithmes et implémentations s’altère avec tempsMD5 -> SHA1 -> SHA2

RSA -> ECC

Page 44: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

44

Crypto Next GenerationCrypto Next Generation

Architecture extensible et adaptable par Architecture extensible et adaptable par plugginspluggins Enrichissement, ou remplacementEnrichissement, ou remplacement Granularité au niveau de l’algorithme ou du stockageGranularité au niveau de l’algorithme ou du stockage Algorithm ProviderAlgorithm Provider Key Storage Provider (KSP)Key Storage Provider (KSP) Pas de signature MS comme pour les CSPPas de signature MS comme pour les CSP

Chiffrement mode utilisateur et mode noyauChiffrement mode utilisateur et mode noyau Permet une configuration de la cryptographie au Permet une configuration de la cryptographie au

niveau de l’entreprise et de la machineniveau de l’entreprise et de la machine Crypto OperatorCrypto Operator

Principe d’isolation des clés et auditPrincipe d’isolation des clés et audit Conformité Critères Communs et FIPSConformité Critères Communs et FIPS

Disponible Windows Vista/LH, mais aussi Disponible Windows Vista/LH, mais aussi down-down-level platformslevel platforms Windows XP et Windows Server Windows XP et Windows Server 20032003

Page 45: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

45

Crypto Next GenerationCrypto Next Generation

Supporte de base un sur-ensemble des Supporte de base un sur-ensemble des algorithmes déjà offerts par les CSP MS de CAPI 1algorithmes déjà offerts par les CSP MS de CAPI 1 Chiffrement symétrique et asymétrique, hachage, RNG, Chiffrement symétrique et asymétrique, hachage, RNG,

échange de clé, signatureéchange de clé, signature Support PKCS#1 v2.1 pour le Support PKCS#1 v2.1 pour le wrappingwrapping des clés privées des clés privées Exposant public RSA > 32 bitsExposant public RSA > 32 bits

Chiffrement à courbe elliptique et hachage Chiffrement à courbe elliptique et hachage renforcérenforcé ECDHECDH (échange de clé), (échange de clé), ECDSAECDSA (signature) (signature)

Courbes NIST P-256, P-384, P-521Courbes NIST P-256, P-384, P-521 Implémentation MS ResearchImplémentation MS Research

SHA-2SHA-2 (256, 384, 512) (256, 384, 512) Conformité Suite-B et recommandations Conformité Suite-B et recommandations

gouvernements pays OTANgouvernements pays OTAN http://www.nsa.gov/ia/industry/crypto_suite_b.cfmhttp://www.nsa.gov/ia/industry/crypto_suite_b.cfm

Page 46: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

46

Suite-BSuite-B“AES, ECC and stronger hashes”“AES, ECC and stronger hashes”

Customer Target Assurance Level

General Classified Basic Assurance

Homeland SecurityCritical National Infrastructure

Privacy

Symmetric Symmetric EncryptionEncryption

AES-256AES-256 AES-128 or 256AES-128 or 256 AES-128AES-128

Key EstablishmentKey Establishment ECDH ECDH oror MQV-384 MQV-384 ECDH ECDH oror MQV-256 MQV-256 or 384or 384

ECDH ECDH oror MQV-256 MQV-256

Key Wrap (Internal Key Wrap (Internal & OTAR)& OTAR)

Product Product DependentDependent

AES Key WrapAES Key Wrap AES Key WrapAES Key Wrap

HashHash SHA-384SHA-384 SHA-256SHA-256 SHA-256SHA-256

Message SignatureMessage Signature ECDSA-384ECDSA-384 ECDSA-256ECDSA-256 ECDSA-256ECDSA-256

Certificate Certificate SignatureSignature

ECDSA-384ECDSA-384 ECDSA-256ECDSA-256 ECDSA-256ECDSA-256

Suite-B est un standard de la NSA qui spécifie les suites d'algorithmes cryptographiques à utiliser pour la sécurité des communications du gouvernement US. Suite-B exige l'utilisation de AES, avec ECC pour l'échange de clés et les signatures digitales, ainsi que les hash forts de type SHA-256 et SHA-384. D'autres exigences sont spécifiées par les standards FIPS tels que l'isolation des clés, etc...

Plusieurs gouvernements des pays de l’OTAN mandatent aussi l’utilisation des algorithmes à base de courbes elliptiques pour le chiffrement ainsi que la possibilité de contrôler les algorithmes et leurs implémentation au sein de la plateforme…

Page 47: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

47

Crypto Next GenerationCrypto Next GenerationTrois sortes de providers ou « pluggins »Trois sortes de providers ou « pluggins »

Protocol Protocol ProvidersProviders

ApplicationsApplications

Key Storage Key Storage ProvidersProviders

Primitive Primitive ProvidersProviders

SymmetriSymmetric Crypto c Crypto RouterRouter

Hash Hash RouterRouter

AsAsymmetrymmetric Crypto ic Crypto RouterRouter

Signature Signature

RouterRouter

Key Key Exchange Exchange

RouterRouter

RNG RNG RouterRouter

Key Key Storage Storage RouterRouter

BCrypt* NCrypt*

Page 48: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

48

Crypto Next GenerationCrypto Next GenerationProviders de « primitives »Providers de « primitives »

Mise en œuvre de algorithmesMise en œuvre de algorithmes Chiffrement symétriqueChiffrement symétrique HachageHachage Chiffrement asymétriqueChiffrement asymétrique Echange de cléEchange de clé SignatureSignature Génération de nombre aléatoireGénération de nombre aléatoire

Pas de clés persistantes, ni d’isolation de cléPas de clés persistantes, ni d’isolation de clé S’exécute S’exécute in-processin-process BCrypt*BCrypt*

bcrypt.hbcrypt.h Mode user – Mode user – bcrypt.dllbcrypt.dll Mode noyau – Mode noyau – ksecdd.sysksecdd.sys

Protocol Protocol ProviderProvider

ssApplicatioApplicatio

nsns

Key Key Storage Storage ProviderProvider

ss

PrimitivPrimitive e

ProviderProviderss

Page 49: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

49

Primitives BCrypt*Primitives BCrypt*

BCryptEnumAlgorithmsBCryptEnumAlgorithms BCryptEnumProvidersBCryptEnumProviders BCryptFreeBufferBCryptFreeBuffer BCryptCloseAlgorithmProviderBCryptCloseAlgorithmProvider BCryptCreateHashBCryptCreateHash BCryptDecryptBCryptDecrypt BCryptDestroyHashBCryptDestroyHash BCryptDestroyKeyBCryptDestroyKey BCryptEncryptBCryptEncrypt BCryptExportKeyBCryptExportKey BCryptFinishHashBCryptFinishHash BCryptGenerateSymmetricKeyBCryptGenerateSymmetricKey

BCryptFinalizeKeyPairBCryptFinalizeKeyPair BCryptGenerateKeyPairBCryptGenerateKeyPair BCryptSecretAgreementBCryptSecretAgreement BCryptImportKeyPairBCryptImportKeyPair BCryptGenRandomBCryptGenRandom BCryptGetPropertyBCryptGetProperty BCryptHashDataBCryptHashData BCryptImportKeyBCryptImportKey BCryptOpenAlgorithmProviderBCryptOpenAlgorithmProvider BCryptSetPropertyBCryptSetProperty BCryptSignBCryptSign BCryptVerifySignatureBCryptVerifySignature

Modèle de programmation:Modèle de programmation:La mémoire est fournie par l’appelantLa mémoire est fournie par l’appelant

Page 50: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

50

Crypto Next GenerationCrypto Next GenerationProviders de stockage de cléProviders de stockage de clé

Stockage permanent des clés publiques/privéesStockage permanent des clés publiques/privées Isolation de la clé privée au sein d’un processus Isolation de la clé privée au sein d’un processus

sécurise (plutôt que le processus de l’application)sécurise (plutôt que le processus de l’application) E.g. LSASSE.g. LSASS Typiquement, s’exécute hors processus appelantTypiquement, s’exécute hors processus appelant

Interface vers le stockage matérielInterface vers le stockage matériel HSM, SmartcardHSM, Smartcard

NCrypt*NCrypt* ncrypt.hncrypt.h Mode user seulementMode user seulement

ncrypt.dllncrypt.dll Exemples de stockageExemples de stockage

Profile utilisateur DPAPIProfile utilisateur DPAPI Active DirectoryActive Directory HSM, SmartcardHSM, Smartcard

Protocol Protocol ProviderProvider

ssApplicatioApplicatio

nsns

Key Key Storage Storage ProviderProvider

ss

PrimitivPrimitive e

ProviderProviderss

Page 51: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

51

Crypto Next GenerationCrypto Next GenerationProviders de protocoleProviders de protocole

Fournit les services crypto spécifiques à un Fournit les services crypto spécifiques à un protocoleprotocole SSL – permet de rajouter de nouvelles suites crypto, ou de SSL – permet de rajouter de nouvelles suites crypto, ou de

remplacer la mise en œuvre de suites existantesremplacer la mise en œuvre de suites existantes S/MIMES/MIME

Protocol Protocol ProviderProvider

ssApplicatioApplicatio

nsns

Key Key Storage Storage ProviderProvider

ss

PrimitivPrimitive e

ProviderProviderss

Page 52: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

52

Calcul de condenséCalcul de condenséCNGCNG

Page 53: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

Meilleures Meilleures pratiques et pratiques et

recommandationsrecommandationsSens pratique?Sens pratique?

Page 54: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

54

SécuritéSécurité

Gestion des secretsGestion des secrets Partage/échange/distribution/stockage des secretsPartage/échange/distribution/stockage des secrets

Nécessite des protocoles complexesNécessite des protocoles complexes Les failles de sécurité sont souvent dans la mise en Les failles de sécurité sont souvent dans la mise en

œuvre des protocolesœuvre des protocoles

N’élimine pas la nécessité des relations de N’élimine pas la nécessité des relations de confianceconfiance

Comporte des risques de perte des donnéesComporte des risques de perte des données Sujet à de multiples stratégies d’attaquesSujet à de multiples stratégies d’attaques

Texte chiffré, texte clair connu, texte clair choisi, texte Texte chiffré, texte clair connu, texte clair choisi, texte chiffré choisischiffré choisis

La cryptologie n’est pas la panacée…

… mais néanmoins indispensable

Page 55: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

55

Best practicesBest practices Analyse des menaces avant de faire appel aux Analyse des menaces avant de faire appel aux

procédés de chiffrementprocédés de chiffrement Erreur fréquenteErreur fréquente

Chiffrement pour des menaces qui n’existent pasChiffrement pour des menaces qui n’existent pas Absence de chiffrement pour des menaces qui existentAbsence de chiffrement pour des menaces qui existent

Erreur fréquenteErreur fréquente On chiffre les informations, mais on oublie de mettre en On chiffre les informations, mais on oublie de mettre en

œuvre la sécurité de base (contrôle d’accès, etc…)œuvre la sécurité de base (contrôle d’accès, etc…) L’attaquant passe par la porte d’entréeL’attaquant passe par la porte d’entrée Il invoque les services qui procèdent au déchiffrementIl invoque les services qui procèdent au déchiffrement

Erreur fréquenteErreur fréquente « Tout est systématiquement encrypté avec AES »« Tout est systématiquement encrypté avec AES » « Ah bon! Et la clé ? »« Ah bon! Et la clé ? » « Non, y’a pas de clé je t’assure, c’est tout l’avantage… »« Non, y’a pas de clé je t’assure, c’est tout l’avantage… »

Page 56: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

56

Best practicesBest practices Utiliser les algorithmes, protocoles, formats, et Utiliser les algorithmes, protocoles, formats, et

procédés standardprocédés standard Ne pas implémenter son propre algorithmeNe pas implémenter son propre algorithme

Utiliser algorithmes répandus et éprouvésUtiliser algorithmes répandus et éprouvés

Utiliser les Classes .Net et CAPICOMUtiliser les Classes .Net et CAPICOM Fixe un cadre sûr pour l’utilisation de la cryptoFixe un cadre sûr pour l’utilisation de la crypto

Gestion des clésGestion des clés La partie chiffrement est facileLa partie chiffrement est facile La gestion des clés est difficileLa gestion des clés est difficile

Evaluer la pertinence de mettre en œuvre une Evaluer la pertinence de mettre en œuvre une stratégie de récupérationstratégie de récupération

Page 57: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

57

Attention aux valeurs par défautAttention aux valeurs par défaut

AlgorithmesAlgorithmes Longueurs des clésLongueurs des clés Mode de chainageMode de chainage

Valeurs réputées sures, jusqu’à nouvel ordre…

3DES, AES 128, AES 256

SHA1, SHA256…

RSA 1024, 2048

Mode de chainage CBC

Page 58: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

58

Protection des secretsProtection des secrets Utiliser la classe .Net Utiliser la classe .Net SecureStringSecureString (.Net Framework 2.0) pour (.Net Framework 2.0) pour

tout ce qui est données sensiblestout ce qui est données sensibles Ne pas utiliser Ne pas utiliser StringString pour les mots de passe pour les mots de passe

Privilégier DPAPI pour les secrets persistantsPrivilégier DPAPI pour les secrets persistants CryptProtectData, CryptUnprotectDataCryptProtectData, CryptUnprotectData ProtectedDataProtectedData (.Net Framework 2.0) (.Net Framework 2.0)

Secrets éphémèresSecrets éphémères CryptProtectMemory, CryptUnprotectMemoryCryptProtectMemory, CryptUnprotectMemory ProtectedMemoryProtectedMemory (.Net Framework 2.0) (.Net Framework 2.0)

Mieux -> ne pas avoir à manipuler/stocker de secrets!Mieux -> ne pas avoir à manipuler/stocker de secrets! Utiliser la sécurité des plateformesUtiliser la sécurité des plateformes

E.g. Integrated WindowsE.g. Integrated Windows Carte à puceCarte à puce

Page 59: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

59

Best practice - conclusionBest practice - conclusion

Revue de conception, revue de codeRevue de conception, revue de code Toujours avoir un second avis sur la conception d’un Toujours avoir un second avis sur la conception d’un

système mettant en œuvre de la cryptosystème mettant en œuvre de la crypto Se faire assister d’experts en cryptologieSe faire assister d’experts en cryptologie

… … ne pas faire de chiffrement directementne pas faire de chiffrement directement Contextes de sécurité SSPIContextes de sécurité SSPI

SslStream, NegotiateStreamSslStream, NegotiateStream (.Net Framework 2.0) (.Net Framework 2.0) Autorisations, droits d’accès, rôlesAutorisations, droits d’accès, rôles Technologie RMSTechnologie RMS

Cryptography secures data, not applicationsCryptography secures data, not applications (@Stake) (@Stake)

Page 60: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

Questions?Questions?

Page 61: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France
Page 62: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

Transparents Transparents supplémentairessupplémentaires

Page 63: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

63

Enrôlement X509Enrôlement X509 Situation actuelle – téléchargement ActiveX dans Situation actuelle – téléchargement ActiveX dans

la page HTMLla page HTML Fourniture Certificate ServicesFourniture Certificate Services ActiveX XEnrollActiveX XEnroll

Interfaces ICEnroll4 et IEnroll4Interfaces ICEnroll4 et IEnroll4 Activex SCrdEnrollActivex SCrdEnroll

Pratiquement la même chosePratiquement la même chose Gestion de la carte a puce et de l’enrôlement par un Gestion de la carte a puce et de l’enrôlement par un

operateuroperateur

Windows Vista/LonghornWindows Vista/Longhorn Interfaces COM natives Interfaces COM natives CertEnrollCertEnroll Pas de téléchargementPas de téléchargement Requêtes de certificats (PKCS#10, PKCS#7, et CMC)Requêtes de certificats (PKCS#10, PKCS#7, et CMC) Clés publiques/privéesClés publiques/privées Extensions de certificats / Attributs / PropriétésExtensions de certificats / Attributs / Propriétés

Page 64: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

64

Enrôlement X509Enrôlement X509

IDispatchIDispatch

IX509CertificateRequest

IX509CertificateRequestPkcs10

IX509CertificateRequestCertificate

IX509CertificateRequestPkcs7

IX509CertificateRequestCmc

Classes de RequetesClasses de Requetes

Enrollment ClassesEnrollment Classes

IDispatchIDispatch

IX509Enrollment

IX509Enrollments

IX509EnrollmentStatus

IDispatchIDispatch

ICspAlgorithm

ICspAlgorithms

ICspInformation

ICspInformations

IcspStatus

ICspStatuses

IX509PublicKey

IX509PrivateKey

Classes CryptoClasses Crypto

IDispatchIDispatch

IX509Attribute

IX509Attributes

IX509AttributeExtensions

ICryptAttribute

ICryptAttributes

Classes gestion attributsClasses gestion attributs

IX509Extension

IX509ExtensionKeyUsage

IX509ExtensionEnhancedKeyUsage

IX509ExtensionTemplateName

IX509ExtensionTemplate

Page 65: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

65

DIMS (DIMS (Digital ID Management Digital ID Management ServiceService))

Permet de mettre à disposition de l’utilisateur d’un domaine Permet de mettre à disposition de l’utilisateur d’un domaine AD ses credentiels d’une station à une autreAD ses credentiels d’une station à une autre Certificats dans le magasin « MY » et « Request »Certificats dans le magasin « MY » et « Request »

%USERPROFILE%\AppData\Microsoft\SystemCertificates\My%USERPROFILE%\AppData\Microsoft\SystemCertificates\My %USERPROFILE%\AppData\Microsoft\SystemCertificates\Request%USERPROFILE%\AppData\Microsoft\SystemCertificates\Request

Clés privées des CSP MS et des KSP CNGClés privées des CSP MS et des KSP CNG %USERPROFILE%\AppData\Microsoft\Crypto\RSA%USERPROFILE%\AppData\Microsoft\Crypto\RSA %USERPROFILE%\AppData\Microsoft\Crypto\DSS%USERPROFILE%\AppData\Microsoft\Crypto\DSS %USERPROFILE%\AppData\Microsoft\Crypto\Keys%USERPROFILE%\AppData\Microsoft\Crypto\Keys

Clés maitres DPAPIClés maitres DPAPI %USERPROFILE%\AppData\Microsoft\Protect%USERPROFILE%\AppData\Microsoft\Protect

Base des credentiels CredmanBase des credentiels Credman %USERPROFILE%\AppData\Microsoft\Credentials %USERPROFILE%\AppData\Microsoft\Credentials

Les credentiels sont stockés par le service DIMS dans l’objet Les credentiels sont stockés par le service DIMS dans l’objet User dans Active DirectoryUser dans Active Directory ms-PKI-AccountCredentialsms-PKI-AccountCredentials ms-PKI-DPAPIMasterKeyms-PKI-DPAPIMasterKey (clés maitre DPAPI) (clés maitre DPAPI)

Configurable par Group PolicyConfigurable par Group Policy Par exemple pour ne pas répliquer les clés de signaturePar exemple pour ne pas répliquer les clés de signature

Page 66: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

66

Chiffrement RSAChiffrement RSA

On ne chiffre pas le message directementOn ne chiffre pas le message directement Le message est chiffré avec une clé de session Le message est chiffré avec une clé de session

(symétrique)(symétrique) La clé de session est générée aléatoirementLa clé de session est générée aléatoirement On chiffre la clé de session avec la clé publique RSAOn chiffre la clé de session avec la clé publique RSA

On déchiffre la clé de session avec la clé privée On déchiffre la clé de session avec la clé privée RSARSA On peut ensuite déchiffrer le message (symétrique)On peut ensuite déchiffrer le message (symétrique)

Néanmoins, CryptoAPI permet de chiffrer des Néanmoins, CryptoAPI permet de chiffrer des données arbitraires avec RSAdonnées arbitraires avec RSA On peut donc, si on le souhaite, appliquer RSA On peut donc, si on le souhaite, appliquer RSA

directement sur des donnéesdirectement sur des données

Page 67: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

67

Signature RSASignature RSA

On calcule un condensé du message (SHA-1)On calcule un condensé du message (SHA-1) On chiffre le condensé avec la clé privée RSAOn chiffre le condensé avec la clé privée RSA Le résultat est la signatureLe résultat est la signature

Standard PKCS#1 – RSA Data SecurityStandard PKCS#1 – RSA Data Security

Pour vérifier la signaturePour vérifier la signature On déchiffre la signature avec la clé publique RSAOn déchiffre la signature avec la clé publique RSA On calcule le condensé du messageOn calcule le condensé du message On compare avec la valeur déchiffréeOn compare avec la valeur déchiffrée

Page 68: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

68

Signature RSASignature RSA

Classes .NetClasses .Net

Page 69: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

69

Signature RSASignature RSA

Classes .Net - VérificationClasses .Net - Vérification

Page 70: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

70

Crypto Next GenerationCrypto Next GenerationSChannel (SSL)

CNG SSL Router

MS SSL Provider

Protocol APIProtocol API

Win32 Application

Key Storage APIKey Storage API

RNG Router

Symmetric Crypto Router

Hash Router

Asymmetric Crypto Router

Signature Router

Key Exchange Router

Key Storage Router

Smart Card

Hardware Security Module

Legacy Application

Legacy CryptoAPI(rsaenh.dll)

CAPI 1.0CAPI 1.0

RNG RSARC4DES

3DESAES

SHAMD5

DSSECDSA

DHECDH

Key Isolation Service

Software Storage

Provider(s)

Asymmetric Crypto Router

Signature Router

Key Exchange Router

RSA DSSECDSA

DHECDH

Key Isolation Process

Page 71: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

71

Crypto Next GenerationCrypto Next Generation

CryptoConfigCryptoConfig BCryptResolveProvidersBCryptResolveProviders

InterfaceID <Provider Information>AlgID ContextID

InterfaceID <Provider Information>AlgID ContextID

InterfaceID <Provider Information>AlgID ContextID

InterfaceID <Provider Information>AlgID NULL

InterfaceID <Provider Information>AlgID NULL

InterfaceID <Provider Information>AlgID NULL

0x0001 <Provider Information>“AES” “TLS 1.0”

0x0001 <Provider Information>“AES” “CMS”

0x0001 <Provider Information>“AES” “EFS”

0x0001 <Provider Information>“AES” “IPSEC-ESP”

0x0001 <Provider Information>“AES” NULL

InterfaceID

0x00000001 (symmetric encryption)0x00000002 (hashing)0x00000003 (asymmetric encryption)0x00000004 (secret agreement)0x00000005 (signing)0x00000006 (RNG)0x00010001 (Microsoft KSP)

Page 72: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

72

Crypto Next GenerationCrypto Next Generation

Configuration niveau machine ou niveau entrepriseConfiguration niveau machine ou niveau entreprise

Configuration de la base avec ACLs pour le Configuration de la base avec ACLs pour le Crypto Crypto OperatorOperator

Tables dans la base de registreTables dans la base de registre HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/

DomainDomain HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/

LocalLocal HKLM/SOFTWARE/Microsoft/Cryptography/CNG/ProvidersHKLM/SOFTWARE/Microsoft/Cryptography/CNG/Providers

EnterpriseDefaults

Table

MachineDefaults

Table

Lookup/Query 1

2

Page 73: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

73

Développer un provider CNGDévelopper un provider CNG

Coder et tester l’algorithmeCoder et tester l’algorithme

/* Implementation details of super secret encryption algorithm*/void XorBuffer(BYTE *pbIn, BYTE *pbOut, DWORD cbBufSize, BYTE *pbKey, DWORD cbKeySize){

UNREFERENCED_PARAMETER(cbKeySize); UNREFERENCED_PARAMETER(pbKey);

memcpy(pbOut, pbIn, cbBufSize);

for ( DWORD dwBufIndex = 0; dwBufIndex < cbBufSize; dwBufIndex++) { for ( DWORD dwKeyIndex = 0; dwKeyIndex < cbKeySize; dwKeyIndex++) { pbOut[dwBufIndex] ^= pbKey[dwKeyIndex]; }

}}

Page 74: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

74

Développer un provider CNGDévelopper un provider CNG

Wrapper l’algorithme dans Wrapper l’algorithme dans BCryptEncryptFnBCryptEncryptFn

NTSTATUSWINAPISymmEncrypt( __inout BCRYPT_KEY_HANDLE hKey, __in_bcount(cbInput) PUCHAR pbInput, __in ULONG cbInput, __in_opt VOID *pPaddingInfo, __inout_bcount_opt(cbIV) PUCHAR pbIV, __in ULONG cbIV, __out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput, __in ULONG cbOutput, __out ULONG *pcbResult, __in ULONG dwFlags)

{ NTSTATUS Status = STATUS_UNSUCCESSFUL; SYMM_CIPHER_KEY *pKey = ValidateKeyHandle(hKey);

*pcbResult = cbInput;

// do the encryption XorBuffer(pbInput, pbOutput, cbInput, pKey->rgbKey, SYMM_CIPHER_KEY_SIZE);

return STATUS_SUCCESS;

}

Page 75: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

75

Développer un provider CNGDévelopper un provider CNG

Ecrire les autres fonctions éventuelles, dont la Ecrire les autres fonctions éventuelles, dont la fonction d’ouverture du provider et nommage de fonction d’ouverture du provider et nommage de l’algorithmel’algorithme#define SYMM_CIPHER_ALGID L"XOR"

struct SYMM_CIPHER_ALGORITHM{ SYMM_HEADER Header; DWORD cbKey;};

NTSTATUSWINAPISymmOpenCipherProvider( __out BCRYPT_ALG_HANDLE *phAlgorithm, __in LPCWSTR pszAlgId, __in DWORD dwFlags){ if (wcscmp(pszAlgId, SYMM_CIPHER_ALGID)) { Status = STATUS_NOT_SUPPORTED; goto Cleanup; } pAlgorithm = (SYMM_CIPHER_ALGORITHM*)MALLOC(sizeof(SYMM_CIPHER_ALGORITHM));

if(NULL == pAlgorithm) { Status = STATUS_NO_MEMORY; goto Cleanup; } pAlgorithm->Header.dwMagic = SYMM_CIPHER_ALG_MAGIC; pAlgorithm->Header.cbLength = sizeof(SYMM_CIPHER_ALGORITHM); pAlgorithm->cbKey = sizeof(SYMM_CIPHER_KEY);

//return the handle *phAlgorithm = (BCRYPT_ALG_HANDLE)pAlgorithm;

Status = STATUS_SUCCESS;Cleanup: return Status;}

Page 76: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

76

Développer un provider CNGDévelopper un provider CNG

Définir la table de fonctions du providerDéfinir la table de fonctions du provider

////function pointer table for Cipher provider//BCRYPT_CIPHER_FUNCTION_TABLE SymmCipherFunctionTable = { BCRYPT_CIPHER_INTERFACE_VERSION_1, SymmOpenCipherProvider, SymmGetCipherProperty, SymmSetCipherProperty, SymmCloseCipherProvider, SymmGenerateKey, SymmEncrypt, SymmDecrypt, SymmImportKey, SymmExportKey, SymmDuplicateKey, SymmDestroyKey,};

Page 77: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

77

Développer un provider CNGDévelopper un provider CNG

Enregistrer le providerEnregistrer le provider

PWSTR rgpszAlgIDs[1] = {SYMM_CIPHER_ALGID};CRYPT_INTERFACE_REG Interface1 = {BCRYPT_CIPHER_INTERFACE, CRYPT_LOCAL, 1, rgpszAlgIDs};

PCRYPT_INTERFACE_REG rgpInterfaces[1] = {&Interface1};CRYPT_IMAGE_REG UM = {L"cngsymm.dll", 1, rgpInterfaces};CRYPT_PROVIDER_REG Provider = { 0, NULL, &UM, NULL};

// register provider1 for new algidhResult = BCryptRegisterProvider(SYMM_CIPHER_PROVIDER_NAME, 0, &Provider);

Page 78: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

78

Développer un provider CNGDévelopper un provider CNG

Utiliser et invoquer le provider d’algorithmeUtiliser et invoquer le provider d’algorithme

Status = BCryptOpenAlgorithmProvider(&hAlg, L”XOR”, NULL, 0);

Status = BCryptGenerateSymmetricKey(hAlg, &hKey, pbKeyObj, cbKeyObj, rgbHash, SYMM_CIPHER_KEY_SIZE, 0);

Status = BCryptEncrypt( hKey, rgbBufIn, cbSize, NULL, NULL, 0, rgbBufOut, cbSize, &cbResult, 0);

Page 79: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

79

Best practicesBest practices

La longueur des clefs n’a qu’une importance La longueur des clefs n’a qu’une importance toute relative -> marketing (« on fait du 256 »)toute relative -> marketing (« on fait du 256 ») Mais, néanmoins source de vulnérabilitéMais, néanmoins source de vulnérabilité On veillera à utiliser des clés symétriques On veillera à utiliser des clés symétriques

suffisamment longues et des clés RSA au modulo suffisamment longues et des clés RSA au modulo suffisamment élevésuffisamment élevé AES 256/RSA 1024AES 256/RSA 1024

Ralentir l’attaquant (itérations sur les Ralentir l’attaquant (itérations sur les condensés)condensés)

Page 80: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

80

Best practicesBest practices Utiliser des longueurs de clés cohérentes avec le reste du Utiliser des longueurs de clés cohérentes avec le reste du

système cryptographiquesystème cryptographique Erreur fréquenteErreur fréquente

On dérive une clé de longueur conséquente à partir d’un mot de On dérive une clé de longueur conséquente à partir d’un mot de passe faible, pensant être en sécuritépasse faible, pensant être en sécurité

Selon le calcul de l’entropie des mots de passe (Shannon 1948), Selon le calcul de l’entropie des mots de passe (Shannon 1948), longueurs minimum d’un mot de passe pour l’équivalent d’une longueurs minimum d’un mot de passe pour l’équivalent d’une clé:clé:

ScénarioScénario CaractèresCaractères Clé 128 Clé 128 bitsbits

Code PINCode PIN 10 (0-9)10 (0-9) 4040

Alpha sans caseAlpha sans case 26 (A-Z)26 (A-Z) 2828

Alpha avec caseAlpha avec case 52 (A-Z, a-z)52 (A-Z, a-z) 2323

Alpha et Alpha et numériquenumérique

62 (A-Z, a-z, 0-9)62 (A-Z, a-z, 0-9) 2222

Alpha-numériquet Alpha-numériquet et ponctuationset ponctuations

93 (A-Z, a-z, 0-9, et 93 (A-Z, a-z, 0-9, et ponctuations)ponctuations)

2020

Page 81: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

81

Best practicesBest practices

Utiliser des mots de passe fortsUtiliser des mots de passe forts Mettre en œuvre une politique de mot de passeMettre en œuvre une politique de mot de passe

Longueur minimumLongueur minimum ComplexitéComplexité Changement fréquentChangement fréquent

…… Ne pas utiliser de mots de passeNe pas utiliser de mots de passe

Cartes à puceCartes à puce Something you know and something you haveSomething you know and something you have……

Page 82: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

82

Best practicesBest practices

Utiliser des longueurs de clé et modulus cohérents entre Utiliser des longueurs de clé et modulus cohérents entre euxeux

Erreur fréquenteErreur fréquente Utilisation de AES 128 bits avec RSA modulo 512Utilisation de AES 128 bits avec RSA modulo 512

Équivalences entre tailles de cléÉquivalences entre tailles de clé

Clé symétriqueClé symétrique Modulo RSAModulo RSA

7070 947947

8080 12281228

100100 19261926

150150 45754575

250250 1459614596

Page 83: Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France

83

Best practicesBest practices

Choisir l’algorithme et la longueur des clés en Choisir l’algorithme et la longueur des clés en cohérence avec valeur temporelle de l’informationcohérence avec valeur temporelle de l’information Pour une information qui doit rester secrète quelques Pour une information qui doit rester secrète quelques

minutesminutes Peut-être que 3DES (168 bit) est adéquatPeut-être que 3DES (168 bit) est adéquat

Pour une information qu’il faut protéger pendant des mois Pour une information qu’il faut protéger pendant des mois et des annéeset des années On préférera AES 256 et RSA 1024, ou même 2048On préférera AES 256 et RSA 1024, ou même 2048

Ne pas réutiliser le Ne pas réutiliser le keystreamkeystream Attention clé RC4Attention clé RC4

Authentifier (HMAC) les textes chiffrés avec un Authentifier (HMAC) les textes chiffrés avec un algorithme de type algorithme de type streamstream Sensible au bit togglingSensible au bit toggling