Évaluation Hardware et Software pour la confiance des cartes à puces JTE : Confiance et Système CNAM, Paris, 20 Juin 2006 Van-Lam Nguyen Security Coordinator, Embedded Systems 20 juin 2006 Trusted Labs, 2006
Agenda L'expertise de Trusted Labs Les cartes à puces et la sécurité Évaluations et schémas Évaluation pratique, les évaluations software (SW) Évaluation pratique, les évaluations hardware (HW)
L'expertise de Trusted Labs
Trusted Labs, conseil en sécurité et évaluations sécuritaires Expertise en sécurité, maîtrise des systèmes embarqués ouverts Création : Janvier 1999 Effectif : 13 Deux bureaux: Versailles et Sophia Antipolis (Nice) Références : MasterCard, GIE Sesam Vitale, RATP, SFR, Sun Microsystems, Texas Instruments, DCSSI (service du Premier Ministre), fabricants de carte à puces, etc.
L'offre de service de Trusted Labs Building up your security Design (pre-)evaluate Security Consulting Risk Analysis Requirements Policy definition Specification Security features Specification Analysis Evaluation guides Common Criteria Security Target Protection Profiles CC Assistance CC Documentation CC Companion Test & Security Evaluations Test Objectives Formal Methods Test Specification Test Documentation Robustness Test Suites (black box) Code review (white box) Static analysis Logical attacks HW attacks piloting
Les cartes à puces et la sécurité
Cartes à puces et données sensibles Les cartes à puces contiennent des données sensibles : Code porteur (PIN) Clés cryptographiques d'authentification, de chiffrement, de signature Données confidentielles (ex: transaction bancaire) Données personnelles Etc. Les cartes à puces effectuent des opérations sensibles : Authentification Chiffrement Signature Les cartes à puces fonctionnent en environnement "hostile" : Manipulables sans être "sous surveillance"
Définition de la sécurité pour une carte à puce La sécurité d'une carte à puce, c'est intégrité et confidentialité: Ne pas divulguer de données sensibles Ne pas permettre la modification non autorisée des données sensibles Ne pas permettre d'exécuter un service non autorisé Garantir l'exécution non erronée d'un service Etc. Le déni de service n'est pas un problème De part la nature des données stockées et des opérations effectuées, il il faut s'assurer par une évaluation indépendante du niveau de résistance d'une carte à puce.
Structure d'une carte à puce Application 1 Application 2 Java Card VM APIs JCRE SW Low level layer (drivers) Security peripherals Cryptographic engine Code ROM Core (8 or or 16 or or 32-bit) RAM EEPROM HW Données
Évaluation et schémas
Évaluation et schémas officiels Les évaluations sécuritaires se font souvent dans le cadre de schémas officiels d'évaluation définis par des organismes Les schémas aident à définir: Le périmètre de l'évaluation La méthodologie d'évaluation Exemples: Critères Communs (ISO15408), axé qualité et sécurité Schémas bancaires CAST (MasterCard International Inc.) Visa Approval (Visa International Inc.
Evaluation, aspects pratiques Objectif d'une évaluation Peut-on avoir confiance dans le produit? En fonction d'un périmètre défini (données sensibles / opérations sensibles), identifier des vulnérabilités et démontrer leur exploitation. Évaluation en deux axes : Évaluation logique Revue d'architecture, de code source Tests logiciels Attaques logicielles Évaluation physique Attaques avec moyens physiques (environnement anormal)
Évaluation, les techniques Caractériser le niveau de sécurité d'une carte à puce Robustness Report Source Source Code Code Analysis Analysis Architecture Architecture Overview Overview Application Operating System Coverage Trusted Labs, 2006 Security Security Test Test Suite Suite Logical Logical Attacks Attacks Static Static Code Code Analysis Analysis Security Security Test Test Suite Suite Physical Physical Testing Testing :: Perturbation Perturbation And And Observation Observation Analysis Analysis and and Report Report
Évaluation pratique: les évaluations SW
Techniques d'évaluation SW Objectif: identifier des vulnérabilités Deux techniques complémentaires : Revue de code source Investigation de points précis Intelligence et adaptabilité de l'évaluateur Tests de robustesse Combinaison complexe de cas d'erreurs Vitesse d'exécution et couverture exhaustive des points vérifiés par la suite de test
Types d'attaque logicielle Deux types d'attaques logicielles sur carte à puce Attaques sur le protocole de communication Attaques par téléchargement d'applications malicieuses Attaques sur le protocole Surtout commandes cachées Attaque par applications malicieuses, processus : 1. Exécution de tests de robustesse Combinaison extrême de cas d'erreur 2. Analyse de résultats afin d'identifier des comportements anormaux 3. Tentative d'exploitation des comportements anormaux à travers le téléchargement d'applications malicieuses
Applications malicieuses Constitution d'une application malicieuse Code volontairement incorrect Séquence "illégale" d'instructions Effets possibles Lecture / modification de données sensibles Lecture / modification de données appartenant à d'autres applications Prise de contrôle du système d'exploitation Modification de code d'autres applications Etc.
Exemple d'application malicieuse Accès par débordement à une zone interdite de données sensibles Clé K en accès en lecture directe interdite Pseudo code malicieux: Byte A[10] B = (Short *)A Espace Public Espace Protégé Mémoire A[0] A[1] A[2] A[3] A[9] K[0] B[0] B[1] B[5] CopieClé = B[5..9] K[8] K[9] B[9] Opération normalement interdite
Évaluation pratique: les évaluations HW
Techniques d'évaluation HW Objectif: identifier et exploiter des vulnérabilités Deux techniques qui peuvent être complémentaires Observation Obtention d'information sur les données et opérations sensibles A travers de la consommation électrique les émanations électromagnétiques les temps d'exécution Etc. Perturbation Modification du fonctionnement normal de la puce A travers de La lumière (type flash photo / laser) les pics de tensions les pics d'horloge les températures anormales Etc.
Exemple: attaque par observation sur une vérification de secret Comparaison sur 8 octets, la réponse normale de la commande est vrai / faux. 256 8 = 18 446 744 073 709 551 616 possibilités Attaque par observation: 256 x 8 = 2048 essais maximum Comparaison de 3 octets: Les 2 premiers sont corrects le 3ieme est faux Comparaison de 8 octets: Les 8 octets sont corrects
Exemple : synchronisation d'une attaque par perturbation Application d'un flash laser sur une zone particulière de la puce À un moment particulier de l'exécution du programme CPU, cryptoprocesseur, etc. Spot Laser
Exemple: attaque par perturbation sur vérification de PIN Un flash laser à un moment précis peut supprimer des écritures EEPROM Ici suppression de la décrémentation du compteur d'essai Traitement normal: 4 écritures EEPROM Traitement attaqué: 1 écriture EEPROM restante Déclenchement laser
Exemples d'attaques plus sophistiquées Combinaison perturbation / Cryptographie Differential Fault Analysis (DFA) sur RSA ou DES Combinaison perturbation / attaques logiques Chargement d'applets malicieuses sur Java Card Combinaison observation / traitement du signal / statistique / cryptographie Differential Power Analysis (DPA) sur DES / AES
Conclusion Les cartes à puces sont associées à un arsenal important de techniques d'évaluation Les exigences de sécurité sont les plus fortes parmi les dispositifs embarqués Mais beaucoup d'exigences pourraient être réutilisées
Thinking up your security