buy it, use it, break it ... fix it : caml crush, un proxy pkcs11 filtrant sstic 2014 R. BENADJILA, T. CALDERON, M. DAUBIGNARD Agence Nationale de la Sécurité des Systèmes d’Information 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Contexte Thomas et Guy-Manuel veulent : des des des une secrets opérations cryptographiques clés et les utiliser interface standardisée {harder better faster stronger } API API Échanger Réaliser Partager Utiliser Guy-Manuel Thomas Éviter les vulnérabilités et faiblesses. Caml Crush : une solution robuste et flexible de proxification de l’API PKCS#11. 1/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Vous avez dit API de sécurité ? Une API de sécurité est une interface de programmation qui permet de réaliser des opérations cryptographiques et des opérations de gestion des clés. 2/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Vous avez dit API de sécurité ? Une API de sécurité est une interface de programmation qui permet de réaliser des opérations cryptographiques et des opérations de gestion des clés. Les valeurs de clés ne sont pas censées être manipulées. harder Chiffre( better , Zone sécurisée : - Cryptographie faster stronger dZs"@&q... 2/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 valeur ) |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Vous avez dit API de sécurité ? Une API de sécurité est une interface de programmation qui permet de réaliser des opérations cryptographiques et des opérations de gestion des clés. Les valeurs de clés ne sont pas censées être manipulées. Les clés sont utilisées via des références («handles»). harder Chiffre( better , Zone sécurisée : - Cryptographie - Stockage sécurisé faster stronger X509 dZs"@&q... 2/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 handle ) |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Vous avez dit API de sécurité ? Une API de sécurité est une interface de programmation qui permet de réaliser des opérations cryptographiques et des opérations de gestion des clés. Les valeurs de clés ne sont pas censées être manipulées. Les clés sont utilisées via des références («handles»). Zone sécurisée : - Cryptographie - Stockage sécurisé Déchiffre(dZs"@&q..., ) X509 harder better faster stronger 2/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Le standard PKCS#11 PKCS#11 = sous-ensemble de Public Key Cryptography Standards produit par RSA labs. L’API est aussi appelée Cryptoki (Cryptographic Token Interface). 3/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Le standard PKCS#11 PKCS#11 = sous-ensemble de Public Key Cryptography Standards produit par RSA labs. L’API est aussi appelée Cryptoki (Cryptographic Token Interface). Pourquoi un standard ? 3/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 HSM status: OK! IP addr: Power 192.168.1.10 NetHSM eth1 eth0 Zone de confiance Clients PKCS#11 API PKCS#11 Limiter les interfaces propriétaires des terminaux qui implantent de la cryptographie. Unicité et portabilité du code. |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses PKCS#11 et la portabilité Comment cacher la couche propriétaire ? 4/18 Middleware / pilote PKCS#11 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 HSM status: OK! IP addr: Power 192.168.1.10 NetHSM eth1 eth0 Zone de confiance Clients PKCS#11 API PKCS#11 / pkcs11.h RSA labs fourni pkcs11.h Les fabricants fournissent une bibliothèque partagée («middleware») |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses PKCS#11 et la portabilité Comment cacher la couche propriétaire ? RSA labs fourni pkcs11.h Les fabricants fournissent une bibliothèque partagée («middleware») La bibliothèque gère le matériel : 4/18 Middleware / pilote PKCS#11 DU AP Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 HSM status: OK! IP addr: Power 192.168.1.10 NetHSM eth1 eth0 Zone de confiance Clients PKCS#11 API PKCS#11 / pkcs11.h Envoi d’APDU (via USB, port série ...) aux cartes à puce Envoi de trames réseau aux NetHSM Envoi de trames USB aux dongles |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Modèle d’attaquant 5/18 Middleware / pilote PKCS#11 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 HSM status: OK! IP addr: Power 192.168.1.10 NetHSM eth1 eth0 Zone de confiance API PKCS#11 / pkcs11.h L’attaquant n’effectue que des requêtes PKCS#11. |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Confidentialité des clés PKCS#11 traduit l’usage des clés par des attributs. Ex. : Encrypt, Decrypt, Sensitive, . . . L’API de sécurité ne doit pas laisser sortir en clair les valeurs de clés confidentielles (Sensitive). Zone sécurisée : - Cryptographie - Stockage sécurisé Sensitive 6/18 Donne valeur de x Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Mécanisme d’encapsulation (Wrap) L’API permet l’export (encapsulation ou Wrap) de clés. Les attributs qui gèrent cela : Wrap/Unwrap = la clé peut en exporter/importer d’autres Extractable = la clé peut être exportée Zone sécurisée : - Cryptographie - Stockage sécurisé Encapsule { Sensitive Extractable 7/18 avec } Wrap Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Attaque Wrap/Decrypt L’attaque utilise la confusion que fait l’API entre fonctions d’encapsulation et de chiffrement. 8/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Attaque Wrap/Decrypt L’attaque utilise la confusion que fait l’API entre fonctions d’encapsulation et de chiffrement. Zone sécurisée : - Cryptographie - Stockage sécurisé Wrap Sensitive Extractable Decrypt 8/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Attaque Wrap/Decrypt L’attaque utilise la confusion que fait l’API entre fonctions d’encapsulation et de chiffrement. Zone sécurisée : - Cryptographie - Stockage sécurisé Encapsule { avec } Wrap Sensitive Extractable Decrypt 8/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 Attaque phase 1 : Wrap |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Attaque Wrap/Decrypt L’attaque utilise la confusion que fait l’API entre fonctions d’encapsulation et de chiffrement. Zone sécurisée : - Cryptographie - Stockage sécurisé Encapsule { avec Attaque phase 1 : Wrap } Wrap Sensitive Extractable Decrypt Déchiffre({ } , ) Attaque phase 2 : Decrypt 8/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Attaque Wrap/Decrypt L’attaque utilise la confusion que fait l’API entre fonctions d’encapsulation et de chiffrement. Zone sécurisée : - Cryptographie - Stockage sécurisé Wrap Sensitive Extractable Decrypt 8/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Veut-on vraiment PKCS#11 ? 9/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Veut-on vraiment PKCS#11 ? Non, mais PKCS#11 est incontournable . . . 9/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |PKCS#11 |Portabilité |Faiblesses Veut-on vraiment PKCS#11 ? T Présenté à SSTIC 2011 par Graham Steel Non, mais PKCS#11 est incontournable . . . Il existe des solutions pour détecter les faiblesses d’un token (Tookan T , devenu Cryptosense Analyzer), mais pas vraiment de solution pour en protéger un réputé faible. 9/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Idée : se mettre en coupure des requêtes PKCS#11 entre une application et un middleware. 10/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Idée : se mettre en coupure des requêtes PKCS#11 entre une application et un middleware. Adaptation du modèle d’attaquant : Possibilité d’effectuer des requêtes PKCS#11 10/18 Middleware / pilote PKCS#11 Proxy PKCS#11 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 HSM status: OK! IP addr: Power 192.168.1.10 NetHSM eth1 eth0 Zone de confiance API PKCS#11 / pkcs11.h Impossibilité de contourner le proxy (c.f. Déploiement) |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Idée : se mettre en coupure des requêtes PKCS#11 entre une application et un middleware. Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Idée : se mettre en coupure des requêtes PKCS#11 entre une application et un middleware. Proxy PKCS#11 Bibliothèque cliente Socket TCP/UNIX Zone de confiance (SSL/TLS optionnel) Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Un proxy modulaire avec des briques spécialisées. Proxy PKCS#11 Serveur RPC PKCS#11 Bibliothèque cliente Socket TCP/UNIX Couche RPC Couche RPC Zone de confiance (SSL/TLS optionnel) Fonctions PKCS#11 exportées Filtre PKCS#11 Binding PKCS#11 Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Binding OCaml/C nécessaire pour discuter avec le middleware d’origine. Proxy PKCS#11 Bibliothèque cliente Socket TCP/UNIX Serveur RPC PKCS#11 Couche RPC Couche RPC Zone de confiance (SSL/TLS optionnel) Fonctions PKCS#11 exportées Filtre PKCS#11 1 Binding PKCS#11 Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Un filtre en OCaml (contenant l’intelligence du proxy). Proxy PKCS#11 Bibliothèque cliente Socket TCP/UNIX Serveur RPC PKCS#11 Couche RPC Couche RPC Zone de confiance (SSL/TLS optionnel) 2 Fonctions PKCS#11 exportées Filtre PKCS#11 Binding PKCS#11 Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Un serveur RPC en OCaml fourni par la bibliothèque Netplex. Proxy PKCS#11 Serveur RPC PKCS#11 3 Bibliothèque cliente Socket TCP/UNIX Couche RPC Couche RPC Zone de confiance (SSL/TLS optionnel) Fonctions PKCS#11 exportées Filtre PKCS#11 Binding PKCS#11 Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Une couche Sun RPC pour le transport des fonctions P11, en OCaml ou C via le standard XDR. Proxy PKCS#11 Serveur RPC PKCS#11 Bibliothèque cliente 4 Socket TCP/UNIX 4 Couche RPC Couche RPC Zone de confiance (SSL/TLS optionnel) Fonctions PKCS#11 exportées Filtre PKCS#11 Binding PKCS#11 Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Une bibliothèque cliente qui exporte la P11 côté applicatif. Proxy PKCS#11 Serveur RPC PKCS#11 Bibliothèque cliente Socket TCP/UNIX Couche RPC Couche RPC Zone de confiance (SSL/TLS optionnel) 5 Fonctions PKCS#11 exportées Filtre PKCS#11 Binding PKCS#11 Interface PKCS#11 Application Cryptoki Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage La proxification PKCS#11 Zoom sur le filtre qui est au cœur de la solution. Proxy PKCS#11 Bibliothèque cliente Socket TCP/UNIX Zone de confiance (SSL/TLS optionnel) 2 Filtre PKCS#11 2 Filtre PKCS#11 Interface PKCS#11 Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) Code en C Code en OCaml Transport (USB, RS232 ...) Carte à puce (exemple de token) 11/18 Application Cryptoki Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage Filtrage PKCS#11 Le filtre est isolé du reste via un frontend et un backend. Serveur RPC PKCS#11 Interface PKCS#11 Frontend Filtre PKCS#11 Backend Interface PKCS#11 Binding PKCS#11 12/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage Filtrage PKCS#11 Vue globale des composants du filtre. Serveur RPC PKCS#11 Interface PKCS#11 Frontend Filtre PKCS#11 CONF Fonctions communes Parseur de configuration LOGS Moteur de filtrage État interne Actions Backend Interface PKCS#11 Binding PKCS#11 12/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Concept et architecture |Filtrage Filtrage PKCS#11 Actions de l’utilisateur extensibles. Serveur RPC PKCS#11 Interface PKCS#11 Frontend Filtre PKCS#11 Fonctions communes Parseur de configuration Moteur de filtrage État interne Actions LOGS Extensions définies par l’utilisateur CONF OCaml let my_new_function a = if a then ... Backend Interface PKCS#11 Binding PKCS#11 12/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Aspects sécurité Implémente des contre-mesures dynamiques aux attaques sur PKCS#11 : par exemple les attributs conflictuels. 13/18 1 Positionne Wrap sur non 3 Filtre 2 Decrypt=TRUE ? Proxy PKCS#11 Zone sécurisée : - Cryptographie - Stockage sécurisé Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Aspects sécurité Filtre Zone sécurisée : - Cryptographie - Stockage sécurisé 4 Wrap 13/18 Wrap=TRUE 4 Proxy PKCS#11 Implémente des contre-mesures dynamiques aux attaques sur PKCS#11 : par exemple les attributs conflictuels. Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 OK 5 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Aspects sécurité Implémente des contre-mesures dynamiques aux attaques sur PKCS#11 : par exemple les attributs conflictuels. Wrap 13/18 1 Positionne Decrypt sur oui 3 Filtre 2 Wrap=TRUE ? Proxy PKCS#11 Zone sécurisée : - Cryptographie - Stockage sécurisé Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 x4 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Aspects sécurité Implémente des contre-mesures dynamiques aux attaques sur PKCS#11 : par exemple les attributs conflictuels. Bloquer des attaques sur tout périphérique PKCS#11 : Avec les patchs logiques de l’API En interdisant les fonctions/mécanismes dangereux 13/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Aspects sécurité Implémente des contre-mesures dynamiques aux attaques sur PKCS#11 : par exemple les attributs conflictuels. Bloquer des attaques sur tout périphérique PKCS#11 : Avec les patchs logiques de l’API En interdisant les fonctions/mécanismes dangereux Offre une solution aux limitations de PKCS#11 : Segmentation des logins SO (admin) et User Filtrage d’objets sur une ressource Forcer l’utilisation en lecture seule Durcir la politique de complexité du PIN ... 13/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Aspects sécurité Implémente des contre-mesures dynamiques aux attaques sur PKCS#11 : par exemple les attributs conflictuels. Bloquer des attaques sur tout périphérique PKCS#11 : Avec les patchs logiques de l’API En interdisant les fonctions/mécanismes dangereux Offre une solution aux limitations de PKCS#11 : Segmentation des logins SO (admin) et User Filtrage d’objets sur une ressource Forcer l’utilisation en lecture seule Durcir la politique de complexité du PIN ... Contourner les problèmes (connus) liés à un «middleware». 13/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Partage de ressources Machine Virtuelle 1 Machine Virtuelle 2 Objets application PKCS#11 Objets application PKCS#11 Caml Crush client PKCS#11 Caml Crush client PKCS#11 Hyperviseur de confiance Filtrage labels A Filtrage labels B Caml Crush handles handles Middleware Middleware A B B A 14/18 X509 B Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Cloisonnement des usages VM Admin VM Utilisateur PKCS#11 Admin PKCS#11 Utilisateur Caml Crush client PKCS#11 Caml Crush client PKCS#11 Hyperviseur de confiance Filtrage Admin Caml Crush Filtrage Utilisateur Fonctions Crypto Fonctions Admin Middleware Middleware X509 15/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Poste durci Architecture logicielle du poste client chargement bibliothèque 1 Bibliothèque cliente PKCS#11 Caml Crush 2 socket Application cliente PKCS#11 5 socket Proxy Caml Crush chargement 3 bibliothèque Middleware PKCS#11 Pile USB Démon PC/SC 4 16/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Aspects sécurité |Aspects fonctionnels Portabilité de la bibliothèque cliente La bibliothèque cliente est portable sous divers CPU ainsi que divers OS. Proxy PKCS#11 Serveur RPC PKCS#11 Couche RPC Filtre PKCS#11 Binding PKCS#11 Interface PKCS#11 Middleware PKCS#11 réel (bibliothèque partagée) 17/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 caml crush client: Connecting to proxy ... |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Conclusion Blocage dynamique des attaques PKCS#11. Apporte d’autres fonctionnalités utiles. Caml Crush est open source : https://github.com/ANSSI-FR/caml-crush 18/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion Conclusion Blocage dynamique des attaques PKCS#11. Apporte d’autres fonctionnalités utiles. Caml Crush est open source : https://github.com/ANSSI-FR/caml-crush ? questions ? 18/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Performances |Compatibilité |OCaml Performances HSM PCI (séquentiel) HSM PCI (parallèle) natif proxy filtre key-gen rand-dgst rand-dgst rsa rsa aes aes Temps Relatif 20 40 60 80 NetHSM (séquentiel) natif key-gen proxy filtre rand-dgst 19/18 Temps Relatif 20 40 60 80 NetHSM (parallèle) natif key-gen proxy filtre rand-dgst 0 0 rsa rsa aes aes 0 20 40 natif proxy filtre key-gen Temps Relatif 60 80 100 0 20 40 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 Temps Relatif 60 80 100 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Performances |Compatibilité |OCaml Performances Carte à puce (séquentiel) natif proxy filtre rand-dgst rsa 0 50 Temps Relatif 100 150 200 Coût négligeable en asymétrique. Impact plus élevé sur les opérations symétriques. Carte à puce : peu de support HSM : dépend du matériel mais le coût réduit dès lors que la charge du HSM augmente 20/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Performances |Compatibilité |OCaml Matrice de compatibilité Linux FreeBSD Mac OS X Win32 (natif) Win32 (cygwin) Client C Unix TCP ✓ ✓ ✓ ✓ ✗ ✓ ✗ ✓ Client Ocaml Unix TCP ✓ ✓ ✓ ✓ ✓ ✓ ✗ ✗ pkcs11proxyd Unix TCP ✓ ✓ ✓ ✓ ✓ ✓ ✗ ✗ SSL/TLS ✓ ✓ ✓ Caml Crush fonctionne sur les plateformes Little/Big Endian (avec architectures hybrides entre client et serveur). 21/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014 |Contexte |API de sécurité |PKCS#11 et les attaques |Architecture |Déploiement |Conclusion |Performances |Compatibilité |OCaml Choix d’OCaml Langage fonctionnel, fortement typé, gestion de la mémoire avec ramasse-miettes, possibilité de compilation native via ocamlopt : Garanties fortes contre les vulnérabilités classiques (buffer overflows) Garde-fous à la compilation grâce à l’inférence de type Aspect fonctionnel compatible avec l’expressivité de règles de filtrage . . . tout cela en gardant des performances raisonnables ! 22/18 Caml Crush: Proxy PKCS#11 filtrant - 5 juin 2014
© Copyright 2024 ExpyDoc