La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France."— Transcription de la présentation:

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

2 Agenda Crypto 101 Crypto 101 Chiffrement/Condensé/MAC Chiffrement/Condensé/MAC Cryptographie à clé publique Cryptographie à clé publique PKIX PKIX APIs Crypto APIs Crypto Classes.Net Classes.Net CAPICOM CAPICOM CryptoAPI CryptoAPI Nouveautés Windows Vista Nouveautés Windows Vista CNG CNG Meilleures pratiques Meilleures pratiques

3 3 Chiffrement Symétrique Symé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étrique En principe le moteur est aussi symétrique Asymétrique Asymétrique On chiffre et déchiffre avec des clés différentes On chiffre et déchiffre avec des clés différentes Typiquement une clé publique et une clé privée Typiquement une clé publique et une clé privée ChiffrementDéchiffrement Texte en clair Clef de chiffrement Texte chiffré Texte original Clef de déchiffrement Source dentropie

4 4 ICryptoTransform Input Block Output Block CryptoStream (mode write) ICryptoTransform Buffer Nimporte quel stream Chiffrement symétrique Classes.Net Lapplication du chiffrement est fait par ICryptoTransform (ICT), une transformation bloc par bloc Lapplication du chiffrement est fait par ICryptoTransform (ICT), une transformation bloc par bloc La classe CryptoStream gère les transformations au niveau des blocs pour offrir une programmation de type stream La classe CryptoStream gère les transformations au niveau des blocs pour offrir une programmation de type stream

5 5 Chiffrement symétrique Classes.Net

6 6 Chiffrement symétrique CAPICOM Dans ce cas (AES), la longueur de clé par défaut est 256 Dans ce cas (AES), la longueur de clé par défaut est 256 EncryptedData.Algorithm.KeyLength EncryptedData.Algorithm.KeyLength

7 7 Chiffrement symétrique CryptoAPI

8 8 Génération de clé aléatoire Caractéristiques cryptographiques Caractéristiques cryptographiques Utiliser le moteur de crypto Utiliser le moteur de crypto Classes.Net: SymmetricAlgorithm.GenerateKey Classes.Net: SymmetricAlgorithm.GenerateKey CryptoAPI: CryptGenRandom, CryptGenKey CryptoAPI: CryptGenRandom, CryptGenKey CAPICOM: Utilities.GetRandom CAPICOM: Utilities.GetRandom Source dentropie: timing des touches clavier et clics souris, timestamp démarrage du système, nombre de page swap, etc… Source dentropie: timing des touches clavier et clics souris, timestamp démarrage du système, nombre de page swap, etc… Norme NIST FIPS186-2 issue de la norme X9.17 Norme NIST FIPS186-2 issue de la norme X9.17 Ne jamais utiliser RAND (c-runtime) Ne jamais utiliser RAND (c-runtime) Avantage Avantage Bonne source dentropie, en provenance dun espace étendu Bonne source dentropie, en provenance dun espace étendu Difficulté Difficulté Échange et stockage de la clé Échange et stockage de la clé

9 9Condensé Fonction de hachage à sens unique (one-way hash) Fonction de hachage à sens unique (one-way hash) Non-invertability: Il est difficile de retrouver le texte original à partir du condensé Non-invertability: Il est difficile de retrouver le texte original à partir du condensé Collision-intractability: Il est difficile de trouver deux textes qui donnent le même condensé Collision-intractability: Il est difficile de trouver deux textes qui donnent le même condensé Le condensé peut identifier un texte en clair à la manière dune empreinte Le condensé peut identifier un texte en clair à la manière dune empreinte Permet didentifier un texte, sans en connaître le contenu… Permet didentifier un texte, sans en connaître le contenu… Caractéristiques dune bonne fonction de hash Caractéristiques dune bonne fonction de hash Absence de collisions connues Absence de collisions connues Divergence - Deux textes en clair peu différents produisent des condensés très différents Divergence - Deux textes en clair peu différents produisent des condensés très différents Fonction Sens Unique Texte (longueur arbitraire) Empreinte ou condensé (longueur n octets, typiquement 16 ou 20)

10 10 Condensé Classes.Net

11 11 Condensé Classes.Net

12 12 Condensé CAPICOM Algorithme par défaut SHA1 Algorithme par défaut SHA1 Propriété HashedData.Algorithm Propriété HashedData.Algorithm

13 13 Condensé CryptoAPI SHA1 – NIST – 160 bits/20 octets SHA1 – NIST – 160 bits/20 octets

14 14 Dérivation dune clé A partir dun mot de passe ou dun secret utilisateur Password Based Key Derivation Password Based Key Derivation Standard pour dériver une clé à partir dun mot de passe Standard pour dériver une clé à partir dun mot de passe PKCS#5 – RFC 2898 PKCS#5 – RFC 2898 Itérations, Salt, Algorithme de hash Itérations, Salt, Algorithme de hash PBKDF1 PBKDF1 Classe.Net PasswordDeriveBytes Classe.Net PasswordDeriveBytes PBKDF2 PBKDF2 Classe.Net Rfc2898DeriveBytes (.Net Framework 2.0) Classe.Net Rfc2898DeriveBytes (.Net Framework 2.0) Avantage Avantage On ne stocke pas le secret (il est dans lesprit de lutilisateur) On ne stocke pas le secret (il est dans lesprit de lutilisateur) Inconvénient Inconvénient Source dentropie en provenance dun espace restreint Source dentropie en provenance dun espace restreint Celui des mots de passe en général Celui des mots de passe en général

15 15Salt Valeur aléatoire, non secrète, quon inclut en entrée de lalgorithme de dérivation de mot de passe Valeur aléatoire, non secrète, quon inclut en entrée de lalgorithme de dérivation de mot de passe Rend lattaque de dictionnaire difficile Rend lattaque de dictionnaire difficile On ne peut facilement pré-calculer tous les dérivés possibles pour un dictionnaire On ne peut facilement pré-calculer tous les dérivés possibles pour un dictionnaire Dérivation de clé de chiffrement à partir dun mot de passe Dérivation de clé de chiffrement à partir dun mot de passe Vérificateurs de mots de passe Vérificateurs de mots de passe Le salt est unique/aléatoire pour chaque mot de passe. Le salt et PBKDF(password, salt, iter) sont stockés dans la base Le salt est unique/aléatoire pour chaque mot de passe. Le salt et PBKDF(password, salt, iter) sont stockés dans la base On ne peut reconnaître le fait que deux utilisateurs ont le même mot de passe en observant la base des comptes On ne peut reconnaître le fait que deux utilisateurs ont le même mot de passe en observant la base des comptes

16 16 Dérivation de clé La valeur résultant de la dérivation nest pas forcement dune longueur égale à la clé de lalgorithme La valeur résultant de la dérivation nest pas forcement dune longueur égale à la clé de lalgorithme CryptDeriveKey( HCRYPTPROV, ALG_ID, HCRYPTHASH …) CryptDeriveKey( HCRYPTPROV, ALG_ID, HCRYPTHASH …) Si condensé plus long, on extrait les bits dont on a besoin Si condensé plus long, on extrait les bits dont on a besoin Hash SHA1 – 160 bits, pour AES 128 Hash SHA1 – 160 bits, pour AES 128 Si condensé moins long, on létire selon un algorithme connu Si condensé moins long, on létire selon un algorithme connu Hash SHA1 – 160 bits, pour AES 256 Hash SHA1 – 160 bits, pour AES 256 Rfc2898DeriveBytes.GetBytes(keysize) Rfc2898DeriveBytes.GetBytes(keysize)

17 17 Dérivation dune clé Classes.Net

18 18 Authenticité des messages Hash du texte original et dun secret partagé Permet de dassurer de lauthenticité et de lintégrité du message Permet de dassurer de lauthenticité et de lintégrité du message HMAC – keyed hash HMAC – keyed hash RFC 2104 RFC 2104 MD5 ou SHA1 MD5 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 0x5C opad (outer padding) constitué des octets 0x5C ipad (inner padding) constitué des octets 0x36 ipad (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 RC4 Indispensable avec RC4 Meilleure pratique: utiliser deux secrets indépendants Meilleure pratique: utiliser deux secrets indépendants Un pour le chiffrement, et un pour le code dauthenticité Un pour le chiffrement, et un pour le code dauthenticité

19 19 CryptoStream AES Buffer CS HMAC-SHA Stream Chainage transformations crypto Classes.Net On peut enchaîner les transformations cryptos en spécifiant un CryptoStream en sortie dun CryptoStream On peut enchaîner les transformations cryptos en spécifiant un CryptoStream en sortie dun CryptoStream Exemple: Exemple: Le premier CryptoStream effectue le chiffrement Le premier CryptoStream effectue le chiffrement Les données en sorties sont dirigées vers le deuxième CryptoStream qui effectue le calcul du code MAC Les données en sorties sont dirigées vers le deuxième CryptoStream qui effectue le calcul du code MAC CryptoStream

20 20 Authenticité des messages Classes.Net

21 21 Chiffrement clé publique Classes.Net Obtention de la clé publique Obtention de la clé publique ExportParameters, ImportParameters ExportParameters, ImportParameters

22 22 Signature RSA Classes.Net

23 23 Vérification de signature RSA Classes.Net

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

25 25 Certificats PKI X509 La clé publique est liée à une entité (détenteur) par un certificat La clé publique est liée à une entité (détenteur) par un certificat Le certificat est signé par une autorité de certification (CA) Le certificat est signé par une autorité de certification (CA) Contient la clé publique Contient la clé publique Contient le nom de lentité détentrice Contient le nom de lentité détentrice Le certificat atteste que la clé publique appartient bien à lentité Le certificat atteste que la clé publique appartient bien à lentité Lutilisateur de la clé publique (qui nest pas son détenteur) fait confiance à lautorité de certification Lutilisateur de la clé publique (qui nest pas son détenteur) fait confiance à lautorité de certification Lautorité de certification a bien authentifié le détenteur et sest bien assuré quil/elle possédait la clé privée avant de délivrer le certificat Lautorité de certification a bien authentifié le détenteur et sest bien assuré quil/elle possédait la clé privée avant de délivrer le certificat public Name:Jane Doe Valid From: 6/18/99 Valid To 6/18/01 Signed: CA Certificate Serial #: Public Key:

26 26 Chiffrement PKIX Standard PKCS#7 – RFC 2315 /CMS – RFC 2630 Standard PKCS#7 – RFC 2315 /CMS – RFC 2630 Signature des messages Signature des messages Signature attachée Signature attachée Signature détachée Signature détachée Multiples signatures et imbrications Multiples signatures et imbrications Confidentialité des messages Confidentialité des messages Envelopped data Envelopped data Classes.Net Classes.Net System.Security.Cryptography.X509Certificates System.Security.Cryptography.X509Certificates X509Certificate, X509Store, X509Chain, etc… X509Certificate, X509Store, X509Chain, etc… System.Security.Cryptography.Pkcs System.Security.Cryptography.Pkcs Support de PKIX largement enrichi avec 2.0 Support de PKIX largement enrichi avec 2.0 A défaut, WSE 3.0 A défaut, WSE 3.0 CAPICOM - privilégie PKI X509 CAPICOM - privilégie PKI X509 CryptoAPIv2 CryptoAPIv2 CertOpenStore, CertFindCertificateInStore, etc… CertOpenStore, CertFindCertificateInStore, etc… CryptEncryptMessage/CryptSignMessage, etc… CryptEncryptMessage/CryptSignMessage, etc… Support de PKIX très étendu Support de PKIX très étendu

27 27 Chiffrement PKIX Classes.Net

28 28 Signature PKIX Classes.Net

29 29System.Security.Cryptography.Pkcs EnvelopedCMS EnvelopedCMS Message chiffré, ou chiffré/signé Message chiffré, ou chiffré/signé SignedCMS SignedCMS Message signé Message signé ContentInfo ContentInfo Contenu sur lequel sapplique le chiffrement/signature Contenu sur lequel sapplique le chiffrement/signature RecipientInfo RecipientInfo Pour qui le message est chiffré Pour qui le message est chiffré CMSSigner CMSSigner Par qui le message est signé Par qui le message est signé

30 30 Signature PKIX CAPICOM Lobjet Signer na pas de certificat Lobjet Signer na pas de certificat CAPICOM affiche la boîte de dialogue de choix dun certificat à partir du magasin personnel CAPICOM affiche la boîte de dialogue de choix dun certificat à partir du magasin personnel

31 31 Signature PKIX CAPICOM Pour vérifier Pour vérifier SignedData.Verify SignedData.Verify Vérifie la validité de la signature et du certificat Vérifie la validité de la signature et du certificat Validation de la chaîne et révocation Validation de la chaîne et révocation

32 32 Choix de lAPI Classes.Net Classes.Net Environnement.Net Framework (managed) Environnement.Net Framework (managed).Net Framework v2.0 enrichi et maintenant très complet.Net Framework v2.0 enrichi et maintenant très complet Signature XML Signature XML Utiliser WSE si nécessaire Utiliser WSE si nécessaire CAPICOM CAPICOM PKIX – signature/chiffrement PKIX – signature/chiffrement Administration, déploiement, scripts PKIX Administration, déploiement, scripts PKIX Applications Web Applications Web CryptoAPIv2 CryptoAPIv2 PKIX, certificats, messages PKCS#7/CMS PKIX, certificats, messages PKCS#7/CMS CryptoAPIv1/CNG CryptoAPIv1/CNG Contrôle très fin Contrôle très fin Mise en œuvre de protocoles/performance Mise en œuvre de protocoles/performance Programmation « bas niveau » Programmation « bas niveau » CSPs/algorithmes spécifiques CSPs/algorithmes spécifiques

33 33 Classes.Net Algorithmes dans la boite Algorithmes dans la boite Hashes: SHA-1, SHA-256/384/512, RIPEMD160 (en C#), MD5 Hashes: SHA-1, SHA-256/384/512, RIPEMD160 (en C#), MD5 Asymétrique: RSA, DSA Asymétrique: RSA, DSA Symétrique: AES (en C#), TripleDES, DES, RC2 Symétrique: AES (en C#), TripleDES, DES, RC2 Keyed MACs: HMAC-SHA1, HMAC-SHA256… Keyed MACs: HMAC-SHA1, HMAC-SHA256… RNGs: RNG basé sur CryptoAPI RNGs: RNG basé sur CryptoAPI Plusieurs classes dimplémentation encapsulent CryptoAPI Plusieurs classes dimplémentation encapsulent CryptoAPI Permet de bénéficier de la certification FIPS-140 des CSP du système Permet de bénéficier de la certification FIPS-140 des CSP du système Modèle objet extensible – permet lajout dalgorithmes Modèle objet extensible – permet lajout dalgorithmes Configuration système crypto définit les implémentations par défaut pour chaque abstraction Configuration système crypto définit les implémentations par défaut pour chaque abstraction Par défaut, les instanciations utilisent des options fortes Par défaut, les instanciations utilisent des options fortes Rijndael aes = Rijndael.Create() Rijndael aes = Rijndael.Create() Clé 256, mode CBC, IV aléatoire Clé 256, mode CBC, IV aléatoire

34 34 Classes.Net Modèle objet SymmetricAlgorithm TripleDESAES TripleDESCryptoServiceProvider(CryptoAPI)AESManaged(C#) Nouvel Algorithme Implémentation Classe de base abstraite Classes dalgorithme abstraites Classes de mise en œuvre AESHardware

35 35CAPICOM Librairie COM redistribuable – CAPICOM.DLL Librairie COM redistribuable – CAPICOM.DLL Rechercher « CAPICOM » Rechercher « CAPICOM » Version Version Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP/Windows 2003 Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP/Windows 2003 Nombreux exemples Nombreux exemples Documentation dans MSDN Documentation dans MSDN Encapsulation de CryptoAPI Encapsulation de CryptoAPI Orientée PKI X509 Orientée PKI X509 Orientée environnements applicatif VB, VBS (scripts), ASP, DHTML Orientée environnements applicatif VB, VBS (scripts), ASP, DHTML Le moyen le plus facile dincorporer de la signature et chiffrement PKIX dans une application Le moyen le plus facile dincorporer de la signature et chiffrement PKIX dans une application

36 36 Utilisations CAPICOM Applications Applications Signature PKIX Signature PKIX Format PKCS#7 Format PKCS#7 Avec certificat logiciel, smartcard, token Avec certificat logiciel, smartcard, token Vérification signature avec vérification révocation Vérification signature avec vérification révocation Chiffrement données Chiffrement données A base de mot de passe ou secret partagé A base de mot de passe ou secret partagé A base de PKIX (enveloping) A base de PKIX (enveloping) Gestion certificats et magasins de certificats Gestion certificats et magasins de certificats Scripts administration et déploiement PKI Scripts administration et déploiement PKI Possibilité dutiliser des combinaisons Possibilité dutiliser des combinaisons CAPICOM/CryptoAPI/Classes.Net CAPICOM/CryptoAPI/Classes.Net

37 37 Classes.Net CryptoAPI Une architecture en providers CSP Base Clés Crypto API Gestion certificats et providers de stockage Opérations cryptographiques Stockage Certificats Application Applications CAPICOM

38 38CryptoAPIv1 Algorithmes Algorithmes AES128, AES192, AES256, 3DES, DES, RC2, RC4 AES128, AES192, AES256, 3DES, DES, RC2, RC4 RSA, DH, DSA RSA, DH, DSA SHA1, HMAC-SHA1, MD5, HMAC-MD5, MD4, MD2 SHA1, HMAC-SHA1, MD5, HMAC-MD5, MD4, MD2 There are 15 providers: Type 01 - Gemplus GemSAFE Card CSP v1.0 Type 01 - Infineon SICRYPT Base Smart Card CSP Type 01 - Microsoft Base Cryptographic Provider v1.0 Type 13 - Microsoft Base DSS and Diffie-Hellman Cryptographic Provider Type 03 - Microsoft Base DSS Cryptographic Provider Type 01 - Microsoft Base Smart Card Crypto Provider Type 18 - Microsoft DH SChannel Cryptographic Provider Type 01 - Microsoft Enhanced Cryptographic Provider v1.0 Type 13 - Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider Type 24 - Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype) Type 05 - Microsoft Exchange Cryptographic Provider v1.0 Type 12 - Microsoft RSA SChannel Cryptographic Provider Type 01 - Microsoft Strong Cryptographic Provider Type 01 - Schlumberger Cryptographic Service Provider Type 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 0x RC4, Key sizes = 128 (def), 40, 128, Protocols supported 0x DES, Key sizes = 56 (def), 56, 56, Protocols supported 0x DES TWO KEY, Key sizes = 112 (def), 112, 112, Protocols supported 0x DES, Key sizes = 168 (def), 168, 168, Protocols supported 0x SHA-1, Key sizes = 160 (def), 160, 160, Protocols supported 0x MD2, Key sizes = 128 (def), 128, 128, Protocols supported 0x MD4, Key sizes = 128 (def), 128, 128, Protocols supported 0x MD5, Key sizes = 128 (def), 128, 128, Protocols supported 0x SSL3 SHAMD5, Key sizes = 288 (def), 288, 288, Protocols supported 0x MAC, Key sizes = 0 (def), 0, 0, Protocols supported 0x RSA_SIGN, Key sizes = 1024 (def), 384, 16384, Protocols supported 0x RSA_KEYX, Key sizes = 1024 (def), 384, 16384, Protocols supported 0x HMAC, Key sizes = 0 (def), 0, 0, Protocols supported 0x AES 128, Key sizes = 128 (def), 128, 128, Protocols supported 0x AES 192, Key sizes = 192 (def), 192, 192, Protocols supported 0x AES 256, Key sizes = 256 (def), 256, 256, Protocols supported 0x

39 39 CryptoAPI Lien entre certificat du titulaire et clé privée Stockée avec le certificat se trouve une référence vers la clé privée Stockée avec le certificat se trouve une référence vers la clé privée Extended Properties CERT_KEY_PROV_INFO_PROP_ID Extended Properties CERT_KEY_PROV_INFO_PROP_ID Structure CRYPT_KEY_PROV_INFO: Contient toutes les informations nécessaires pour acquérir un contexte sur le CSP hébergeant la clé privée - typiquement les paramètres de CryptAcquireContext Structure CRYPT_KEY_PROV_INFO: Contient toutes les informations nécessaires pour acquérir un contexte sur le CSP hébergeant la clé privée - typiquement les paramètres de CryptAcquireContext CryptAcquireCertificatePrivateKey CryptAcquireCertificatePrivateKey Base certificats Certificat (signé par CA) Propriétés Contexte de certificat CRYPT_KEY_PROV_INFO ContainerName ProvName ProvType ProvParam … CERT_KEY_PROV_INFO_PROP_ID CSP Base Clés

40 40 Protection de la clé privée DPAPI DPAPI CryptProtectData, CryptUnprotectData CryptProtectData, CryptUnprotectData ProtectedData (.Net Framework 2.0) ProtectedData (.Net Framework 2.0) Chiffrement 3DES Chiffrement 3DES Clé dérivée dune clé maitre 512 bits Clé dérivée dune clé maitre 512 bits Clé maitre chiffrée avec clé dérivée du mot de passe Clé maitre chiffrée avec clé dérivée du mot de passe PBKDF2(SHA1(password)) PBKDF2(SHA1(password)) Entropie supplémentaire possible Entropie supplémentaire possible Seul lutilisateur qui a protégé peut accéder Seul lutilisateur qui a protégé peut accéder Comptes du domaine Comptes du domaine Récupération contrôleur de domaine Récupération contrôleur de domaine Compte local Compte local Password Recovery Disk Password Recovery Disk Compte du domaine La protection est effective quelque soit le mode de syskey Compte local La protection nest effective quavec SYSKEY mode 2 ou 3, a cause de la présence des LMHash (configuration par défaut Windows XP). Même en labsence des LMHash la protection est moins sure que pour un compte du domaine de par la présence des NTHash.

41 41 CryptoAPI Bases, ou magasins de certificats Par utilisateur, machine, ou service Par utilisateur, machine, ou service Plugin MMC Certificates Plugin MMC Certificates Certutil.exe Certutil.exe Nom CryptoAPINom daffichageDescription MyPersonal Les certificats du titulaire RootTrusted Root Certification AuthoritiesLes racines de confiance CAIntermediate Certification AuthoritiesCache des CA intermédiaires et des listes de révocation UserDSActive Directory User ObjectLes certificats du titulaire dans Active Directory – attribut du compte, userCertificate Autres…

42 Nouveautés Windows Vista

43 43 Crypto Next Generation Refonte du moteur de chiffrement Refonte du moteur de chiffrement Remplacement à long terme et progressif de CAPI 1 Remplacement à long terme et progressif de CAPI 1 Permettre la mise en œuvre et lutilisation de la crypto dune manière plus « agile » Permettre la mise en œuvre et lutilisation de la crypto dune manière plus « agile » Facilité dintroduire de nouveaux algorithmes Facilité dintroduire de nouveaux algorithmes Facilité de remplacer des implémentations dalgorithmes par de nouvelles implémentations Facilité de remplacer des implémentations dalgorithmes par de nouvelles implémentations Les algorithmes et implémentations dépendent de lenvironnement Secteur public, Secteur privé, Défense, Politique, Géographie La sureté des algorithmes et implémentations saltère avec temps MD5 -> SHA1 -> SHA2 RSA -> ECC

44 44 Crypto Next Generation Architecture extensible et adaptable par pluggins Architecture extensible et adaptable par pluggins Enrichissement, ou remplacement Enrichissement, ou remplacement Granularité au niveau de lalgorithme ou du stockage Granularité au niveau de lalgorithme ou du stockage Algorithm Provider Algorithm Provider Key Storage Provider (KSP) Key Storage Provider (KSP) Pas de signature MS comme pour les CSP Pas de signature MS comme pour les CSP Chiffrement mode utilisateur et mode noyau Chiffrement mode utilisateur et mode noyau Permet une configuration de la cryptographie au niveau de lentreprise et de la machine Permet une configuration de la cryptographie au niveau de lentreprise et de la machine Crypto Operator Crypto Operator Principe disolation des clés et audit Principe disolation des clés et audit Conformité Critères Communs et FIPS Conformité Critères Communs et FIPS Disponible Windows Vista/LH, mais aussi down-level platforms Windows XP et Windows Server 2003 Disponible Windows Vista/LH, mais aussi down-level platforms Windows XP et Windows Server 2003

45 45 Crypto Next Generation Supporte de base un sur-ensemble des algorithmes déjà offerts par les CSP MS de CAPI 1 Supporte de base un sur-ensemble des algorithmes déjà offerts par les CSP MS de CAPI 1 Chiffrement symétrique et asymétrique, hachage, RNG, échange de clé, signature Chiffrement symétrique et asymétrique, hachage, RNG, échange de clé, signature Support PKCS#1 v2.1 pour le wrapping des clés privées Support PKCS#1 v2.1 pour le wrapping des clés privées Exposant public RSA > 32 bits Exposant public RSA > 32 bits Chiffrement à courbe elliptique et hachage renforcé Chiffrement à courbe elliptique et hachage renforcé ECDH (échange de clé), ECDSA (signature) ECDH (échange de clé), ECDSA (signature) Courbes NIST P-256, P-384, P-521 Courbes NIST P-256, P-384, P-521 Implémentation MS Research Implémentation MS Research SHA-2 (256, 384, 512) SHA-2 (256, 384, 512) Conformité Suite-B et recommandations gouvernements pays OTAN Conformité Suite-B et recommandations gouvernements pays OTAN

46 46 Suite-B AES, ECC and stronger hashes Customer Target Assurance Level General Classified Basic Assurance Homeland Security Critical National Infrastructure Privacy Symmetric Encryption AES-256 AES-128 or 256 AES-128 Key Establishment ECDH or MQV-384 ECDH or MQV-256 or 384 ECDH or MQV-256 Key Wrap (Internal & OTAR) Product Dependent AES Key Wrap HashSHA-384SHA-256SHA-256 Message Signature ECDSA-384ECDSA-256ECDSA-256 Certificate Signature ECDSA-384ECDSA-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 lOTAN mandatent aussi lutilisation 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…

47 47 Crypto Next Generation Trois sortes de providers ou « pluggins » Protocol Providers Applications Key Storage Providers Primitive Providers Symmetric Crypto Router Symmetric Crypto Router Hash Router Hash Router Asymmetric Crypto Router Asymmetric Crypto Router Signature Router Signature Router Key Exchange Router Key Exchange Router RNG Router RNG Router Key Storage Router Key Storage Router BCrypt*NCrypt*

48 48 Crypto Next Generation Providers de « primitives » Mise en œuvre de algorithmes Mise en œuvre de algorithmes Chiffrement symétrique Chiffrement symétrique Hachage Hachage Chiffrement asymétrique Chiffrement asymétrique Echange de clé Echange de clé Signature Signature Génération de nombre aléatoire Génération de nombre aléatoire Pas de clés persistantes, ni disolation de clé Pas de clés persistantes, ni disolation de clé Sexécute in-process Sexécute in-process BCrypt* BCrypt* bcrypt.h bcrypt.h Mode user – bcrypt.dll Mode user – bcrypt.dll Mode noyau – ksecdd.sys Mode noyau – ksecdd.sys Protocol Providers Application s Key Storage Providers Primitive Providers

49 49 Primitives BCrypt* BCryptEnumAlgorithms BCryptEnumAlgorithms BCryptEnumProviders BCryptEnumProviders BCryptFreeBuffer BCryptFreeBuffer BCryptCloseAlgorithmProvider BCryptCloseAlgorithmProvider BCryptCreateHash BCryptCreateHash BCryptDecrypt BCryptDecrypt BCryptDestroyHash BCryptDestroyHash BCryptDestroyKey BCryptDestroyKey BCryptEncrypt BCryptEncrypt BCryptExportKey BCryptExportKey BCryptFinishHash BCryptFinishHash BCryptGenerateSymmetricKey BCryptGenerateSymmetricKey BCryptFinalizeKeyPair BCryptFinalizeKeyPair BCryptGenerateKeyPair BCryptGenerateKeyPair BCryptSecretAgreement BCryptSecretAgreement BCryptImportKeyPair BCryptImportKeyPair BCryptGenRandom BCryptGenRandom BCryptGetProperty BCryptGetProperty BCryptHashData BCryptHashData BCryptImportKey BCryptImportKey BCryptOpenAlgorithmProvider BCryptOpenAlgorithmProvider BCryptSetProperty BCryptSetProperty BCryptSign BCryptSign BCryptVerifySignature BCryptVerifySignature Modèle de programmation: La mémoire est fournie par lappelant

50 50 Crypto Next Generation Providers de stockage de clé Stockage permanent des clés publiques/privées Stockage permanent des clés publiques/privées Isolation de la clé privée au sein dun processus sécurise (plutôt que le processus de lapplication) Isolation de la clé privée au sein dun processus sécurise (plutôt que le processus de lapplication) E.g. LSASS E.g. LSASS Typiquement, sexécute hors processus appelant Typiquement, sexécute hors processus appelant Interface vers le stockage matériel Interface vers le stockage matériel HSM, Smartcard HSM, Smartcard NCrypt* NCrypt* ncrypt.h ncrypt.h Mode user seulement Mode user seulement ncrypt.dll ncrypt.dll Exemples de stockage Exemples de stockage Profile utilisateur DPAPI Profile utilisateur DPAPI Active Directory Active Directory HSM, Smartcard HSM, Smartcard Protocol Providers Application s Key Storage Providers Primitive Providers

51 51 Crypto Next Generation Providers de protocole Fournit les services crypto spécifiques à un protocole Fournit les services crypto spécifiques à un protocole SSL – permet de rajouter de nouvelles suites crypto, ou de remplacer la mise en œuvre de suites existantes SSL – permet de rajouter de nouvelles suites crypto, ou de remplacer la mise en œuvre de suites existantes S/MIME S/MIME Protocol Providers Application s Key Storage Providers Primitive Providers

52 52 Calcul de condensé CNG

53 Meilleures pratiques et recommandations Sens pratique?

54 54Sécurité Gestion des secrets Gestion des secrets Partage/échange/distribution/stockage des secrets Partage/échange/distribution/stockage des secrets Nécessite des protocoles complexes Nécessite des protocoles complexes Les failles de sécurité sont souvent dans la mise en œuvre des protocoles Les failles de sécurité sont souvent dans la mise en œuvre des protocoles Nélimine pas la nécessité des relations de confiance Nélimine pas la nécessité des relations de confiance Comporte des risques de perte des données Comporte des risques de perte des données Sujet à de multiples stratégies dattaques Sujet à de multiples stratégies dattaques Texte chiffré, texte clair connu, texte clair choisi, texte chiffré choisis Texte chiffré, texte clair connu, texte clair choisi, texte chiffré choisis La cryptologie nest pas la panacée… … mais néanmoins indispensable

55 55 Best practices Analyse des menaces avant de faire appel aux procédés de chiffrement Analyse des menaces avant de faire appel aux procédés de chiffrement Erreur fréquente Erreur fréquente Chiffrement pour des menaces qui nexistent pas Chiffrement pour des menaces qui nexistent pas Absence de chiffrement pour des menaces qui existent Absence de chiffrement pour des menaces qui existent Erreur fréquente Erreur fréquente On chiffre les informations, mais on oublie de mettre en œuvre la sécurité de base (contrôle daccès, etc…) On chiffre les informations, mais on oublie de mettre en œuvre la sécurité de base (contrôle daccès, etc…) Lattaquant passe par la porte dentrée Lattaquant passe par la porte dentrée Il invoque les services qui procèdent au déchiffrement Il invoque les services qui procèdent au déchiffrement Erreur fréquente Erreur 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, ya pas de clé je tassure, cest tout lavantage… » « Non, ya pas de clé je tassure, cest tout lavantage… »

56 56 Best practices Utiliser les algorithmes, protocoles, formats, et procédés standard Utiliser les algorithmes, protocoles, formats, et procédés standard Ne pas implémenter son propre algorithme Ne pas implémenter son propre algorithme Utiliser algorithmes répandus et éprouvés Utiliser algorithmes répandus et éprouvés Utiliser les Classes.Net et CAPICOM Utiliser les Classes.Net et CAPICOM Fixe un cadre sûr pour lutilisation de la crypto Fixe un cadre sûr pour lutilisation de la crypto Gestion des clés Gestion des clés La partie chiffrement est facile La partie chiffrement est facile La gestion des clés est difficile La gestion des clés est difficile Evaluer la pertinence de mettre en œuvre une stratégie de récupération Evaluer la pertinence de mettre en œuvre une stratégie de récupération

57 57 Attention aux valeurs par défaut Algorithmes Algorithmes Longueurs des clés Longueurs des clés Mode de chainage Mode de chainage Valeurs réputées sures, jusquà nouvel ordre… 3DES, AES 128, AES 256 SHA1, SHA256… RSA 1024, 2048 Mode de chainage CBC

58 58 Protection des secrets Utiliser la classe.Net SecureString (.Net Framework 2.0) pour tout ce qui est données sensibles Utiliser la classe.Net SecureString (.Net Framework 2.0) pour tout ce qui est données sensibles Ne pas utiliser String pour les mots de passe Ne pas utiliser String pour les mots de passe Privilégier DPAPI pour les secrets persistants Privilégier DPAPI pour les secrets persistants CryptProtectData, CryptUnprotectData CryptProtectData, CryptUnprotectData ProtectedData (.Net Framework 2.0) ProtectedData (.Net Framework 2.0) Secrets éphémères Secrets éphémères CryptProtectMemory, CryptUnprotectMemory CryptProtectMemory, CryptUnprotectMemory ProtectedMemory (.Net Framework 2.0) ProtectedMemory (.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 plateformes Utiliser la sécurité des plateformes E.g. Integrated Windows E.g. Integrated Windows Carte à puce Carte à puce

59 59 Best practice - conclusion Revue de conception, revue de code Revue de conception, revue de code Toujours avoir un second avis sur la conception dun système mettant en œuvre de la crypto Toujours avoir un second avis sur la conception dun système mettant en œuvre de la crypto Se faire assister dexperts en cryptologie Se faire assister dexperts en cryptologie … ne pas faire de chiffrement directement … ne pas faire de chiffrement directement Contextes de sécurité SSPI Contextes de sécurité SSPI SslStream, NegotiateStream (.Net Framework 2.0) SslStream, NegotiateStream (.Net Framework 2.0) Autorisations, droits daccès, rôles Autorisations, droits daccès, rôles Technologie RMS Technologie RMS Cryptography secures data, not applications

60 Questions?

61

62 Transparents supplémentaires

63 63 Enrôlement X509 Situation actuelle – téléchargement ActiveX dans la page HTML Situation actuelle – téléchargement ActiveX dans la page HTML Fourniture Certificate Services Fourniture Certificate Services ActiveX XEnroll ActiveX XEnroll Interfaces ICEnroll4 et IEnroll4 Interfaces ICEnroll4 et IEnroll4 Activex SCrdEnroll Activex SCrdEnroll Pratiquement la même chose Pratiquement la même chose Gestion de la carte a puce et de lenrôlement par un operateur Gestion de la carte a puce et de lenrôlement par un operateur Windows Vista/Longhorn Windows Vista/Longhorn Interfaces COM natives CertEnroll Interfaces COM natives CertEnroll Pas de téléchargement Pas 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ées Clés publiques/privées Extensions de certificats / Attributs / Propriétés Extensions de certificats / Attributs / Propriétés

64 64 Enrôlement X509 IDispatch IX509CertificateRequest IX509CertificateRequestPkcs10 IX509CertificateRequestCertificate IX509CertificateRequestPkcs7 IX509CertificateRequestCmc Classes de Requetes Enrollment Classes IDispatch IX509Enrollment IX509Enrollments IX509EnrollmentStatus IDispatch ICspAlgorithm ICspAlgorithms ICspInformation ICspInformations IcspStatus ICspStatuses IX509PublicKey IX509PrivateKey Classes Crypto IDispatch IX509Attribute IX509Attributes IX509AttributeExtensions ICryptAttribute ICryptAttributes Classes gestion attributs IX509Extension IX509ExtensionKeyUsage IX509ExtensionEnhancedKeyUsage IX509ExtensionTemplateName IX509ExtensionTemplate

65 65 DIMS (Digital ID Management Service) Permet de mettre à disposition de lutilisateur dun domaine AD ses credentiels dune station à une autre Permet de mettre à disposition de lutilisateur dun domaine AD ses credentiels dune 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 CNG Clé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 DPAPI Clés maitres DPAPI %USERPROFILE%\AppData\Microsoft\Protect %USERPROFILE%\AppData\Microsoft\Protect Base des credentiels Credman Base des credentiels Credman %USERPROFILE%\AppData\Microsoft\Credentials %USERPROFILE%\AppData\Microsoft\Credentials Les credentiels sont stockés par le service DIMS dans lobjet User dans Active Directory Les credentiels sont stockés par le service DIMS dans lobjet User dans Active Directory ms-PKI-AccountCredentials ms-PKI-AccountCredentials ms-PKI-DPAPIMasterKey (clés maitre DPAPI) ms-PKI-DPAPIMasterKey (clés maitre DPAPI) Configurable par Group Policy Configurable par Group Policy Par exemple pour ne pas répliquer les clés de signature Par exemple pour ne pas répliquer les clés de signature

66 66 Chiffrement RSA On ne chiffre pas le message directement On ne chiffre pas le message directement Le message est chiffré avec une clé de session (symétrique) Le message est chiffré avec une clé de session (symétrique) La clé de session est générée aléatoirement La clé de session est générée aléatoirement On chiffre la clé de session avec la clé publique RSA On chiffre la clé de session avec la clé publique RSA On déchiffre la clé de session avec la clé privée RSA On déchiffre la clé de session avec la clé privée RSA 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 données arbitraires avec RSA Néanmoins, CryptoAPI permet de chiffrer des données arbitraires avec RSA On peut donc, si on le souhaite, appliquer RSA directement sur des données On peut donc, si on le souhaite, appliquer RSA directement sur des données

67 67 Signature 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 RSA On chiffre le condensé avec la clé privée RSA Le résultat est la signature Le résultat est la signature Standard PKCS#1 – RSA Data Security Standard PKCS#1 – RSA Data Security Pour vérifier la signature Pour vérifier la signature On déchiffre la signature avec la clé publique RSA On déchiffre la signature avec la clé publique RSA On calcule le condensé du message On calcule le condensé du message On compare avec la valeur déchiffrée On compare avec la valeur déchiffrée

68 68 Signature RSA Classes.Net Classes.Net

69 69 Signature RSA Classes.Net - Vérification Classes.Net - Vérification

70 70 Crypto Next Generation SChannel (SSL) CNG SSL Router MS SSL Provider Protocol API Win32 Application Key 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.0 RNG RSARC4 DES 3DES AES SHA MD5 DSS ECDSA DH ECDH Key Isolation Service Software Storage Provider(s) Asymmetric Crypto Router Signature Router Key Exchange Router RSADSS ECDSA DH ECDH Key Isolation Process

71 71 Crypto Next Generation CryptoConfig CryptoConfig BCryptResolveProviders BCryptResolveProviders InterfaceID 0x (symmetric encryption) 0x (hashing) 0x (asymmetric encryption) 0x (secret agreement) 0x (signing) 0x (RNG) 0x (Microsoft KSP)

72 72 Crypto Next Generation Configuration niveau machine ou niveau entreprise Configuration niveau machine ou niveau entreprise Configuration de la base avec ACLs pour le Crypto Operator Configuration de la base avec ACLs pour le Crypto Operator Tables dans la base de registre Tables dans la base de registre HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/Domain HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/Domain HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/Local HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Config/Local HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Providers HKLM/SOFTWARE/Microsoft/Cryptography/CNG/Providers

73 73 Développer un provider CNG Coder et tester lalgorithme Coder et tester lalgorithme /* 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]; }

74 74 Développer un provider CNG Wrapper lalgorithme dans BCryptEncryptFn Wrapper lalgorithme dans BCryptEncryptFn NTSTATUS WINAPI SymmEncrypt( __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; }

75 75 Développer un provider CNG Ecrire les autres fonctions éventuelles, dont la fonction douverture du provider et nommage de lalgorithme Ecrire les autres fonctions éventuelles, dont la fonction douverture du provider et nommage de lalgorithme #define SYMM_CIPHER_ALGID L"XOR" struct SYMM_CIPHER_ALGORITHM { SYMM_HEADER Header; DWORD cbKey; }; NTSTATUS WINAPI SymmOpenCipherProvider( __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; }

76 76 Développer un provider CNG Définir la table de fonctions du provider Dé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, };

77 77 Développer un provider CNG Enregistrer le provider Enregistrer 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 algid hResult = BCryptRegisterProvider(SYMM_CIPHER_PROVIDER_NAME, 0, &Provider);

78 78 Développer un provider CNG Utiliser et invoquer le provider dalgorithme Utiliser et invoquer le provider dalgorithme Status = BCryptOpenAlgorithmProvider(&hAlg, LXOR, NULL, 0); Status = BCryptGenerateSymmetricKey(hAlg, &hKey, pbKeyObj, cbKeyObj, rgbHash, SYMM_CIPHER_KEY_SIZE, 0); Status = BCryptEncrypt( hKey, rgbBufIn, cbSize, NULL, 0, rgbBufOut, cbSize, &cbResult, 0);

79 79 Best practices La longueur des clefs na quune importance toute relative -> marketing (« on fait du 256 ») La longueur des clefs na quune importance 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 suffisamment longues et des clés RSA au modulo suffisamment élevé On veillera à utiliser des clés symétriques suffisamment longues et des clés RSA au modulo suffisamment élevé AES 256/RSA 1024 AES 256/RSA 1024 Ralentir lattaquant (itérations sur les condensés) Ralentir lattaquant (itérations sur les condensés)

80 80 Best practices Utiliser des longueurs de clés cohérentes avec le reste du système cryptographique Utiliser des longueurs de clés cohérentes avec le reste du système cryptographique Erreur fréquente Erreur fréquente On dérive une clé de longueur conséquente à partir dun mot de passe faible, pensant être en sécurité On dérive une clé de longueur conséquente à partir dun mot de passe faible, pensant être en sécurité Selon le calcul de lentropie des mots de passe (Shannon 1948), longueurs minimum dun mot de passe pour léquivalent dune clé: Selon le calcul de lentropie des mots de passe (Shannon 1948), longueurs minimum dun mot de passe pour léquivalent dune clé: ScénarioCaractères Clé 128 bits Code PIN 10 (0-9) 40 Alpha sans case 26 (A-Z) 28 Alpha avec case 52 (A-Z, a-z) 23 Alpha et numérique 62 (A-Z, a-z, 0-9) 22 Alpha-numériquet et ponctuations 93 (A-Z, a-z, 0-9, et ponctuations) 20

81 81 Best practices Utiliser des mots de passe forts Utiliser des mots de passe forts Mettre en œuvre une politique de mot de passe Mettre en œuvre une politique de mot de passe Longueur minimum Longueur minimum Complexité Complexité Changement fréquent Changement fréquent … Ne pas utiliser de mots de passe Ne pas utiliser de mots de passe Cartes à puce Cartes à puce Something you know and something you have… Something you know and something you have…

82 82 Best practices Utiliser des longueurs de clé et modulus cohérents entre eux Utiliser des longueurs de clé et modulus cohérents entre eux Erreur fréquente Erreur fréquente Utilisation de AES 128 bits avec RSA modulo 512 Utilisation de AES 128 bits avec RSA modulo 512 Équivalences entre tailles de clé Équivalences entre tailles de clé Clé symétrique Modulo RSA

83 83 Best practices Choisir lalgorithme et la longueur des clés en cohérence avec valeur temporelle de linformation Choisir lalgorithme et la longueur des clés en cohérence avec valeur temporelle de linformation Pour une information qui doit rester secrète quelques minutes Pour une information qui doit rester secrète quelques minutes Peut-être que 3DES (168 bit) est adéquat Peut-être que 3DES (168 bit) est adéquat Pour une information quil faut protéger pendant des mois et des années Pour une information quil faut protéger pendant des mois et des années On préférera AES 256 et RSA 1024, ou même 2048 On préférera AES 256 et RSA 1024, ou même 2048 Ne pas réutiliser le keystream Ne pas réutiliser le keystream Attention clé RC4 Attention clé RC4 Authentifier (HMAC) les textes chiffrés avec un algorithme de type stream Authentifier (HMAC) les textes chiffrés avec un algorithme de type stream Sensible au bit toggling Sensible au bit toggling


Télécharger ppt "Utilisation du chiffrement sur la plateforme Windows Jean-Yves Poublan Microsoft France."

Présentations similaires


Annonces Google