APIs de sécurité
Transcription
APIs de sécurité
Sécurité des implémentations pour la cryptographie Partie 2 : APIs de sécurité Benoı̂t Gérard 4 janvier 2017 Fil rouge Objectif Développement de la CCP (Carte Cryptographique Personnelle). I Donnée par l’administration (autorité de confiance). I Doit pouvoir être utilisée pour tout besoin faisant intervenir de la cryptographie. Benoı̂t Gérard APIs de sécurité 2 / 27 Plan du cours Étape 1 Définition de l’interface carte/terminal : API exposée par la carte. Étape 2 Implémentation d’une version résistante aux attaques non-crypto. Étape 3 Implémentation d’algo. crypto. résistante aux attaques distantes. Étape 4 Implémentation d’algo. crypto. résistante aux attaques locales. Benoı̂t Gérard APIs de sécurité 3 / 27 Sommaire de la session Introduction Principes et outils Gestion des clefs Ce qui existe Benoı̂t Gérard APIs de sécurité 4 / 27 Plan Introduction Principes et outils Gestion des clefs Ce qui existe API de sécurité Motivation I On a une carte avec des secrets. I On veut les utiliser sans les compromettre i.e. I I I les secrets restent secrets les secrets ne sont pas altérés. → confidentialité → intégrité Analogie bancaire On veut un coffre fort ! infrastructure + règles d’accès ⇓ politique de sécurité Benoı̂t Gérard APIs de sécurité 5 / 27 API de sécurité Définition API de sécurité Interface entre une zone sécurisée et le reste du monde. Elle doit garantir la validité d’une ou plusieurs propriétés de sécurité pour toute suite d’appels à ses fonctions. Requêtes Benoı̂t Gérard SYM ASYM CLES MEM ALEA SEC API APIs de sécurité 6 / 27 API de sécurité Problématiques Propriété de sécurité classique Un attaquant ne peut connaı̂tre que les secrets d’utilisateurs qu’il a corrompu. Contraintes : I besoin de standards flexibles, I garantie des propriétés de sécurité. Problème Plus de flexibilité ⇒ plus de difficultés à garantir la sécurité. Exemple de PKCS#11 API de sécurité avec 70 fonctions (250 pages et 5 versions). Benoı̂t Gérard APIs de sécurité 7 / 27 Plan Introduction Principes et outils Gestion des clefs Ce qui existe Politique de sécurité Une politique de sécurité pour une application cryptographique : I Période de validité des certificats. I Définition des droits de l’administrateur. I Définition des droits des utilisateurs. Règles de manipulation des secrets : I I I I impossible de supprimer le secret racine, possibilité d’exporter certains secrets ... Tout ceci en fonction 1. de l’instant, 2. du type de secret, 3. de l’identité de l’utilisateur. Benoı̂t Gérard APIs de sécurité 8 / 27 Machines à états Cycles de vie Plusieurs cycles (pouvant être indépendants) I cycle de vie du système I cycle de vie d’un élément (e.g. carte) I cycle de vie de l’API Changement de propriétaire d’une carte ⇒ RAZ du cycle de l’API. Renouvellement d’une carte ⇒ RAZ du cycle de l’élément. En général Contient au moins les états : 1. Initialisation/Personnalisation (e.g. injection données personelles) 2. Utilisation 3. Fin de vie Benoı̂t Gérard APIs de sécurité 9 / 27 Machine à états Rôles des états À chaque état sa liste d’actions autorisées. start S1 I Insertion des données biométriques seulement en S1 . I La génération/injection du secret racine ne peut avoir lieu qu’en S2 . I Utilisation des services uniquement dans l’état S3 . I Dans l’état S4 on peut uniquement déverouiller la carte. I ... linkToOwner S2 unlock setSecret S4 S3 lock kill Sf Benoı̂t Gérard APIs de sécurité 10 / 27 Machines à états Le séquenceur I Reçoit les requêtes. I Applique les règles du cycle de vie de l’API. Applique les règles de séquencement des sous-états I I I I I début/suite/fin du hachage authentification avant un échange de clef DH confirmation de l’échange de clef avant utilisation de celle-ci ... Partie de l’implémentation très critique et potentiellement complexe. I Faire au plus simple. I Être rigoureux et exhaustif. Essentiel pour garantir que l’on se place bien dans le modèle des preuves cryptographiques (de protocoles ou autres). Benoı̂t Gérard APIs de sécurité 11 / 27 Objets Les données à protéger sont : I des clefs, I des données sensibles. Mais on a aussi des certificats. On a donc des données I de sensibilités 6=, I de tailles 6=, I ayant des périodes de validité 6=, I pour des usages 6=. Différents types/structures pour différents objets contenant la valeur utile et des attributs. Benoı̂t Gérard APIs de sécurité 12 / 27 Objets Attributs Les attributs permettent de formaliser la politique de sécurité. Cas multi-utilisateurs Des attributs owner et/ou group permettent de donner des droits quant à l’usage d’une clef. Transport Un attribut exportable permet de savoir si l’on peut sortir une clef du coffre (chiffrée bien entendu). Validité Un attribut validity permet de donner une date limite de validité à un certificat. Benoı̂t Gérard APIs de sécurité 13 / 27 Droits Authentification Les propriétés de sécurité reposent sur le fait que l’API sache quel utilisateur est connecté. La sécurité ne peut jamais entièrement se baser sur de la cryptographie ! I Vol de carte/badge/dongle. I Récupération de mot de passe. I Piratage des lecteurs d’empreintes. I ... Et en cas de perte d’un élément d’authentification ? Benoı̂t Gérard APIs de sécurité 14 / 27 Droits Authentification forte Authentification forte Renforcer l’assurance que la bonne personne se connecte. Combinaison de techniques : I dispositif électronique (clef, carte, dongle . . .), I mot de passe (ou code PIN), I envoi d’un code par messagerie (SMS, internet), I biométrie (empreinte digitale, rétine, ECG) I ... Compromis entre complexité de mise en oeuvre et sécurité. Permet un mode dégradé en cas de perte. Benoı̂t Gérard APIs de sécurité 15 / 27 Droits L’authentification permet de déterminer I l’ensemble des objets possédés, I le rôle de l’utilisateur. En fonction, l’utilisateur aura différents droits. I Droit de créer/supprimer I I I I Droit d’exporter/importer I I I un utilisateur, un objet possedé, un objet autre. un objet possedé, un objet autre. Droit d’effectuer certaines opérations spéciales I I transition entre deux états du cycle de vie, mise à jour. Benoı̂t Gérard APIs de sécurité 16 / 27 Exemple Retour à l’attaque sur la carte bancaire Rappel des faits Le composant pirate répond OK pour le code pin à la place de la carte. Analyse La carte n’a donc pas validé de code PIN avant la transaction. Solution possible Ajout d’un séquenceur qui vérifie qu’un code PIN a été testé avant une transaction. Benoı̂t Gérard APIs de sécurité 17 / 27 Exemple Retour à l’attaque sur la carte bancaire Rappel des faits Le composant pirate répond OK pour le code pin à la place de la carte. Analyse La carte n’a donc pas validé de code PIN avant la transaction. Solution possible Ajout d’un séquenceur qui vérifie qu’un code PIN a été testé avec succès avant une transaction. Benoı̂t Gérard APIs de sécurité 17 / 27 Exemple Retour à l’attaque sur la carte bancaire Rappel des faits Le composant pirate répond OK pour le code pin à la place de la carte. Analyse La carte n’a donc pas validé de code PIN avant la transaction. Solution possible Ajout d’un séquenceur qui vérifie qu’un code PIN a été testé avec succès avant une transaction. Variantes liées aux contraintes commerciales I Ajout d’un compteur : max. 3 opérations sans code PIN par mois. I Ajout d’un plafond : max. 100 euros dépensés avant code PIN obligatoire. Benoı̂t Gérard APIs de sécurité 17 / 27 Plan Introduction Principes et outils Gestion des clefs Ce qui existe Création des clefs Génération/import La génération de clef peut avoir lieu : I dans le périmètre de sécurité. I hors du périmètre (import dans le périmètre par la suite). Attention dans les deux cas ! Interne : I Disposer d’un bon aléa. Externe : I Aucune maı̂trise de l’aléa utilisé. I Aucune garantie de non diffusion de la clef. Périmètre de sécurité Contient toutes les implémentations de l’API qui sont de confiance. Benoı̂t Gérard APIs de sécurité 18 / 27 Manipulation des clefs Quelques mécanismes Key Wrap Stockage/transport de clefs hors périmètre de sécurité ⇒ besoin - de confidentialité, - d’intégrité/d’authenticité. Handles Permet l’utilisation des clefs sans les manipuler directement (identifiants). Cryptopériode - usure de la clef, - impact d’une compromission. Benoı̂t Gérard APIs de sécurité 19 / 27 Manipulation des clefs Handles Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles req = clef grise Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles md p = to to req = clef grise Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles md p = to to req = clef grise Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles req = ECDSA clef grise Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles req = ECDSA md p = to to clef grise Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles req = ECDSA md p = to to clef grise Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles Benoı̂t Gérard APIs de sécurité 20 / 27 Manipulation des clefs Handles Il existe ce genre de solution : YubiKey par exemple. Benoı̂t Gérard APIs de sécurité 20 / 27 Typer les clefs Bonne pratique Différencier (fortement) les éléments sensibles. Mauvais exemple (possible dans PKCS #11) Attribut sensible. 1. K crée déclarée sensible 1. K crée 2. Export(K) refusé 2. Export(K) autorisé 3. Attribut sensible désactivé 3. K déclarée sensible 4. Export(K) autorisé Leçon Type défini à la création d’un élément. Types/attributs liés à la sécurité non modifiables (par l’utilisateur). Benoı̂t Gérard APIs de sécurité 21 / 27 Cloisonner les clefs Buts 1. Limiter l’impact d’une compromission. 2. Éviter de tendre le bâton à l’attaquant. Benoı̂t Gérard APIs de sécurité 22 / 27 Cloisonner les clefs Buts 1. Limiter l’impact d’une compromission. 2. Éviter de tendre le bâton à l’attaquant. Exemple : sortir une clef en clair Clef K qui protège en confidentialité les clefs et les messages. 1. C = E(K, K 0 ) 2. E −1 (K, C) → K 0 Exemple : injecter une clef maı̂trisée Clef K chiffrement + import de clefs. 1. C = E(K, 0) 2. K 0 = Import(K, C) = E −1 (K, C) → K 0 = 0 Benoı̂t Gérard APIs de sécurité 22 / 27 Coffre fort de clefs Il existe d’autres attaques plus ou moins réalisables en pratique : I key conjuring (générationd de clefs non autorisées), I key binding (découpe de clefs longues en sous-clefs), I injection clef troyenne. À retenir Une bonne sécurité des clefs implique 1. de contrôler fortement les opérations effectuées, 2. de séparer les clefs selon leurs usages. C’est une grande source de vulnérabilités (on n’a pourtant pas fait de cryptanalyse). Benoı̂t Gérard APIs de sécurité 23 / 27 Plan Introduction Principes et outils Gestion des clefs Ce qui existe PKCS #11 Déploiement API C utilisée par : I autorités de certification, I HSM (Hardware Security Module) I GnuTLS, I OpenSSL/SSH/SC, I Mozilla, I OpenVPN, I Truecrypt, I ... Benoı̂t Gérard Implémentation conforme PKCS #11 m implémente un sous-ensemble de règles APIs de sécurité 24 / 27 PKCS #11 Analyse I Model checking I I I I I I par Graham Steel analyse l’implémentation pour déterminer le sous-ensemble de règles implantées, fourni le modèle correspondant à un model checker, fait tourner le checker jusqu’à trouver une faille. Très peu d’implémentations résistantes . . . Preuve formelle API générique proposée à CCS en 2012 I I gestion des clefs symétriques, prise en compte de la révocation. Comment s’assurer que l’implémentation finale est bien conforme aux hypothèses de la preuve ? Benoı̂t Gérard APIs de sécurité 25 / 27 Dans l’industrie Problématique de la certification (Critères Communs) : I certification obtenue auprès de l’ANSSI et des CESTIs, I on ne peut plus toucher au produit une fois obtenue, I EAL4 et plus : demande une conception méthodique, I EAL5 et plus : nécessite des méthodes (semi-)formelles. Contraintes coût/délai/performances : I manque de temps, manque de compétences, ⇒ utilisation de produits sur étagère fait par des spécialistes I I I I HSM (PCI, microSD), TPM (composant pour carte mère), Globull (disque avec coeur crypto de chez Bull). Benoı̂t Gérard APIs de sécurité 26 / 27 À retenir Messages I Faire au plus simple. I Quand la complexité augmente : avoir une méthodologie “formelle” pour être précis, clair et non-ambigu. I Les contrôles aident à garantir que l’on reste dans le modèle. Bonnes pratiques I Limiter l’exposition des clefs. I Cloisonner le plus possible afin de limiter les impacts. Benoı̂t Gérard APIs de sécurité 27 / 27