SlideShare a Scribd company logo
1 of 60
Download to read offline
COMPANY CONFIDENTIAL
Cryptographie et attaques matérielles :
Application à la cryptographie en boîte blanche
Geeks anonymes
Philippe Teuwen
21 novembre 2019
Ecole de pensée
française:
on dit “chiffrer”,
pas “crypter”
Ecole de pensée
belge:
“décrypte le cipher”
Crédits: corkami.com
BREVE INTRO AUX
MODÈLES D’ATTAQUES
CRYPTOGRAPHIQUES
Modèle “Black box”
Modèle “Black box”
Modèle “Black box”
“Dans la vraie vie” => modèle “Grey box”
Modèle “Grey box”
Artwork derived from CC BY-SA Mark Pellegrini work on Wikimedia Commons
Modèle “Grey box”
Modèle “White box”
Modèle “White box”
Attaquant: accès complet à l’environnement d’exécution
Lire/altérer le binaire
Exécuter pas à pas
Lire/altérer les registres CPU, la mémoire, les I/Os, …
Seule ligne de défense:
Implémentation
Modèle “White box”
Obscurcissement de code
Vérifications d’intégrité
Astuces “anti-debug”
Ligne de défense = implémentation
Illustrations: par @xoreaxeaxeax à propos de M/o/Vfuscator et par blog.quarkslab.com à propos d’OLLVM
Pourquoi faire?
– Gestion de droits numériques (DRM) ↔ criminels utilisateurs
– Paiement mobile, HCE ↔ code malveillants
Cryptographie dans le modèle “White box”
Source: “l'industrie du film” Source: Business Insider
L’obscurcissement de code seul est très insuffisant
– L’obscurcissement sécurise le code mais ici :
algo de crypto standard nécessite une solide protection de clé
– Ex.: entropy attack on RSA by Shamir and Van Someren (1999)
Cryptographie dans le modèle “White box”
→ Chow et al. (2002)
– Implémentation “idéale”:
4.94 x 1027
TB
– Implémentation pratique d’AES:
752kB
Encodage des valeurs intermédiaires
Cryptographie “White box”
Illustration tirée de “A Tutorial on White-box AES” par James A. Muir
Cryptographie “White box”
Petit résumé:
– Attaques académiques → nouveaux designs → ...
– Tous les modèles académiques ont été cassés
Réponse de l’industrie:
– Gardons nos designs secrets
– Enterrons les implémentations sous des couches
d’obscurcissement, de vérif. d’intégrité, trucs “anti-debug”
– Hé ! Regardez on a un Secure Element logiciel !
Attaques “académiques”?
1. défaire les protections
2. être aware du design
3. appliquer l’attaque:
Extraits de:
●
“Two Attacks on a White-Box AES”
●
“Cryptanalysis of a Perturbated White-Box AES Implementation”
●
“Attacking an obfuscated cipher by injecting faults”
Attaques “académiques”?
Notre but:
TRACES D’EXECUTION
Enregistrer toutes les instructions et les accès mémoire
Exemples:
– Intel PIN
– Valgrind
– Instrumenter une VM (Java, Python,…)
– Instrumenter un émulateur
Tracer un exécutable
Visualisation de trace : quelques conventions
temps
adresses mémoire
stack data
instruction
lecture
écriture
code
Identification visuelle de crypto: par le code
9x4
Identification visuelle de crypto: par le code ?
Identification visuelle de crypto: par les données !
1+15
Identification visuelle de crypto: par les données ?
Identification visuelle de crypto: par la pile !
1+15
Identification visuelle de crypto: par la pile !
9x4x4
Identification visuelle de crypto: par la pile !
9x4x410
Identification visuelle de crypto: par la pile !
9x16
Et ma clé dans tout ça ?
DIFFERENTIAL
COMPUTATION
ANALYSIS
Rappelez-vous...
Differential Power Analysis
par P. Kocher et al. (1998)
– Corrélations possibles entre:
consommation électrique et
poids de Hamming de valeurs internes
– Enregistre les traces de consommation
correspondant à des messages différents
temps
tension
Differential Power Analysis
Certains valeurs intermédiaires de la première (ou dernière)
ronde ne dépendent que de données connues et d’une
fraction de la clé de ronde
Par ex. pour AES:
Seuls prérequis:
– Connaître l’entrée ou la sortie du chiffrement par blocs
– Pouvoir mesurer la consommation (ou les radiations EM)
– Présence de “fuites” (corrélations)
Differential Power Analysis
Traces d’exécution → “traces de consommation” ?
Adresses ou données des accès mémoire, écritures sur la pile,…
Exemple: octets lus
Differential Computation Analysis
Traces d’exécution → “traces de consommation” ?
Adresses ou données des accès mémoire, écritures sur la pile,…
Exemple: octets lus→ poids de Hamming ?
Differential Computation Analysis
Octets → bits
Differential Computation Analysis
Differential Computation Analysis
Source: Brightsight
Yapluka
Attaquer ces traces “de consommation” dans votre outil de DPA favori :
– Riscure Inspector SCA software
– ChipWhisperer opensource software
– Matlab…
– Daredevil !
Tracer quoi ?
– Écritures sur la pile
– Lectures en mémoire RO
– Adresses accédées
plaintexts et/ou ciphertexts
– Éventuellement via instrumentation du binaire
Large implémentation ? Minimiser l’acquisition
– Seulement premières/dernières rondes
– Compression des traces par analyse d’entropie
Tips
Ex: 5 exécutions de suite, celle du milieu est la bonne
=> Compresse 2.7M échantillons -> 5000 échantillons
Compression “naïve” par écart type
threshold
threshold
Challenge Wyseur
par Brecht Wyseur, 2007
implémentation WB-DES : Chow “plus some personal improvements”
On télécharge…
1h et 65 traces plus tard, la clé est cassée !
Challenge Hack.lu 2009
Windows crackme par Jean-Baptiste Bédrune
Implémentation WB-AES : Chow
Paresse → Wine/Linux + xdotool (émulation clavier/souris)
16 traces
(challenge de CTF, pas d’encodages internes)
Challenge SSTIC 2012
“white-box” en Python par Axel Tillequin
Implémentation WB-DES dans un objet “marshall”
→ instrumentation d’une classe externe “Bits”
16 traces
pas d’encodages internes
Karroumi
Dernière tentative académique de “réparer” Chow (2011)
Dual Ciphers, i.e. isomorphic AES ciphers:
Notre propre challenge…
2000 traces, 500 traces après tuning
Quelques implémentations “white-box” propriétaires
DES & AES
Cassées en 200 à 2500 traces
Aléas dynamique?
– Pas de TRNG, juste le message d’entrée
Ajout de délais pseudo-aléatoires?
– Traces d’instructions → on réaligne
Bref, délicat…
Une sécurité “parfaite” est illusoire, mais si le coût d’une attaque est
supérieur au gain pour l’attaquant, vous avez réussi.
Oups, c’est la chute des prix...
Contre-mesures ?
Oui !
Encodages “larges” (8x8)
masquant la non-linérarité
de la SBOX
La DCA peut-elle échouer ?
Oui !
Encodages “larges” (8x8)
masquant la non-linérarité
de la SBOX
→ grandes tables !
→ tendance à les réutiliser
→ autres types d’attaque
cf. write-ups
NoSuchCon 2013 et CHES 2015
http://wiki.yobi.be/wiki/CHES2015_Writeup
La DCA peut-elle échouer ?
Autres attaques “grey box” à portée de main :
Higher order DPA, CPA, DFA,…
La DFA, parlons-en...
Differential Fault Analysis sur AES (Piret/Quisquater 2003)
●
Prérequis: rejouer l’entrée, voir la sortie en clair
●
Sur AES-128 enc ou dec:
8 “bonnes” fautes sur la 9ème ronde
●
Temps d’analyse: 50 ms !
●
Variante:
2 “bonnes” fautes sur la 8ème ronde
●
Injection: source ; bin statique ; bin dynamique
●
Injection à l’aveugle, voire à la bourrin...
“Now this is not the end.
It's not even the beginning of the end.
But it is, perhaps, the end of the beginning.”
Autres aspects à protéger :
code lifting, inverse de f(),...
Side-Channel Marvels
https://github.com/SideChannelMarvels
Tracer
- TracerGrind
- TracerPIN
- TraceGraph
Deadpool
- White-boxes
- Attacks automation
Daredevil
- Side-channel analysis
(CPA)
JeanGrey
- Fault analysis
(DFA)
Side-Channel Marvels
https://github.com/SideChannelMarvels
Charles Hubain (NXP, Quarkslab, LINE)
Joppe Bos (NXP)
Michael Eder (TUM, Fraunhofer AISEC)
Paul Bottinelli (EPFL, ISARA Corp)
Philippe Teuwen (NXP, Quarkslab)
Van Huynh Le (U.Twente, NXP)
Wil Michiels (NXP, TU/e)
Orka
- images Docker
Sans oublier...
Pour aller plus loin
●
J. W. Bos, C.s Hubain, W.l Michiels et P. Teuwen. « Differential
Computation Analysis : Hiding Your White-Box Designs is Not
Enough ». In : Cryptographic Hardware and Embedded Systems –
CHES 2016 - 18th International Conference, Santa Barbara, CA, USA,
August 17-19, 2016, Proceedings. 2016, p. 215–236
●
E. Alpirez Bock, J. W. Bos, C. Brzuska, C. Hubain, W. Michiels, C.
Mune, E. Sanfelix Gonzalez, P. Teuwen et A.Treff. « White-Box
Cryptography: Don’t Forget About Grey-Box Attacks ». In : Journal
of Cryptology, 32(4):1095–1143, Oct. 2019
●
https://speakerdeck.com/doegox/grey-box-attacks-four-years-later
●
https://chipwhisperer.readthedocs.io/en/latest/tutorials/fault_4-openadc-
cwlitexmega.html
Démo
●
https://github.com/SideChannelMarvels/Deadpool/tree/master/
wbs_aes_grehack2019
MERCI !
QUESTIONS ?
@doegox
Image source: “A Beautiful Mind”

More Related Content

Similar to 191121 philippe teuwen cryptographie et attaques materielles

Attaques DDoS par Bruno Tréguier
Attaques DDoS par Bruno TréguierAttaques DDoS par Bruno Tréguier
Attaques DDoS par Bruno TréguierAFEIT
 
Les attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui AmineLes attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui AmineZellagui Amine
 
Slides du meetup devops aix-marseille d'ocotbre 2023
Slides du meetup devops aix-marseille d'ocotbre 2023Slides du meetup devops aix-marseille d'ocotbre 2023
Slides du meetup devops aix-marseille d'ocotbre 2023Frederic Leger
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotiqueMicrosoft
 
Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)
Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)
Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)Noël Bardelot
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tFrancois Ostyn
 
Présentation LMAX / Disruptor
Présentation LMAX / DisruptorPrésentation LMAX / Disruptor
Présentation LMAX / DisruptorSOAT
 
2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open HardwareSylvain Wallez
 
Reverse Engineering d'un ransomware
Reverse Engineering d'un ransomwareReverse Engineering d'un ransomware
Reverse Engineering d'un ransomwareNinaSAMMUT
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarElsassJUG
 
StHack 2014 - Benjamin "@gentilkiwi" Delpy Mimikatz
StHack 2014 - Benjamin "@gentilkiwi" Delpy MimikatzStHack 2014 - Benjamin "@gentilkiwi" Delpy Mimikatz
StHack 2014 - Benjamin "@gentilkiwi" Delpy MimikatzStHack
 
Sandboxing, une nouvelle défense contre les menaces intelligentes
Sandboxing, une nouvelle défense contre les menaces intelligentesSandboxing, une nouvelle défense contre les menaces intelligentes
Sandboxing, une nouvelle défense contre les menaces intelligentese-Xpert Solutions SA
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !ochafik
 

Similar to 191121 philippe teuwen cryptographie et attaques materielles (20)

Attaques DDoS par Bruno Tréguier
Attaques DDoS par Bruno TréguierAttaques DDoS par Bruno Tréguier
Attaques DDoS par Bruno Tréguier
 
Les attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui AmineLes attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui Amine
 
La sécurité informatique pour une petite équipe
La sécurité informatique pour une petite équipeLa sécurité informatique pour une petite équipe
La sécurité informatique pour une petite équipe
 
Comprendre la securite web
Comprendre la securite webComprendre la securite web
Comprendre la securite web
 
Slides du meetup devops aix-marseille d'ocotbre 2023
Slides du meetup devops aix-marseille d'ocotbre 2023Slides du meetup devops aix-marseille d'ocotbre 2023
Slides du meetup devops aix-marseille d'ocotbre 2023
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
 
Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)
Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)
Notions de sécurité à l'usage des développeurs (Soat, 6 nov. 2014)
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
 
Présentation LMAX / Disruptor
Présentation LMAX / DisruptorPrésentation LMAX / Disruptor
Présentation LMAX / Disruptor
 
2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware
 
Diagnostic performances
Diagnostic performancesDiagnostic performances
Diagnostic performances
 
Reverse Engineering d'un ransomware
Reverse Engineering d'un ransomwareReverse Engineering d'un ransomware
Reverse Engineering d'un ransomware
 
mimikatz @ sthack
mimikatz @ sthackmimikatz @ sthack
mimikatz @ sthack
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 
StHack 2014 - Benjamin "@gentilkiwi" Delpy Mimikatz
StHack 2014 - Benjamin "@gentilkiwi" Delpy MimikatzStHack 2014 - Benjamin "@gentilkiwi" Delpy Mimikatz
StHack 2014 - Benjamin "@gentilkiwi" Delpy Mimikatz
 
Sandboxing, une nouvelle défense contre les menaces intelligentes
Sandboxing, une nouvelle défense contre les menaces intelligentesSandboxing, une nouvelle défense contre les menaces intelligentes
Sandboxing, une nouvelle défense contre les menaces intelligentes
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !
 

More from Geeks Anonymes

Programmer sous Unreal Engine
Programmer sous Unreal EngineProgrammer sous Unreal Engine
Programmer sous Unreal EngineGeeks Anonymes
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesGeeks Anonymes
 
Managing Open Source Licenses (Geeks Anonymes)
Managing Open Source Licenses (Geeks Anonymes)Managing Open Source Licenses (Geeks Anonymes)
Managing Open Source Licenses (Geeks Anonymes)Geeks Anonymes
 
Reprendre le contrôle de ses données
Reprendre le contrôle de ses donnéesReprendre le contrôle de ses données
Reprendre le contrôle de ses donnéesGeeks Anonymes
 
Geeks Anonymes - Le langage Go
Geeks Anonymes - Le langage GoGeeks Anonymes - Le langage Go
Geeks Anonymes - Le langage GoGeeks Anonymes
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
Vulnérabilités au cœur des applications Web, menaces et contre-mesures
 Vulnérabilités au cœur des applications Web, menaces et contre-mesures Vulnérabilités au cœur des applications Web, menaces et contre-mesures
Vulnérabilités au cœur des applications Web, menaces et contre-mesuresGeeks Anonymes
 
"Surfez couverts !" - Conseils de Cyber securité
"Surfez couverts !" - Conseils de Cyber securité "Surfez couverts !" - Conseils de Cyber securité
"Surfez couverts !" - Conseils de Cyber securité Geeks Anonymes
 
Introduction au développement mobile - développer une application iOS et Andr...
Introduction au développement mobile - développer une application iOS et Andr...Introduction au développement mobile - développer une application iOS et Andr...
Introduction au développement mobile - développer une application iOS et Andr...Geeks Anonymes
 
Intelligence artificielle et propriété intellectuelle
Intelligence artificielle et propriété intellectuelleIntelligence artificielle et propriété intellectuelle
Intelligence artificielle et propriété intellectuelleGeeks Anonymes
 
Pour une histoire plophonique du jeu video
Pour une histoire plophonique du jeu videoPour une histoire plophonique du jeu video
Pour une histoire plophonique du jeu videoGeeks Anonymes
 
Become Rick and famous, thanks to Open Source
Become Rick and famous, thanks to Open SourceBecome Rick and famous, thanks to Open Source
Become Rick and famous, thanks to Open SourceGeeks Anonymes
 
Reconnaissance vocale et création artistique
Reconnaissance vocale et création artistiqueReconnaissance vocale et création artistique
Reconnaissance vocale et création artistiqueGeeks Anonymes
 
Natural Language Processing
Natural Language ProcessingNatural Language Processing
Natural Language ProcessingGeeks Anonymes
 
Sécurité, GDPR : vos données ont de la valeur
Sécurité, GDPR : vos données ont de la valeur Sécurité, GDPR : vos données ont de la valeur
Sécurité, GDPR : vos données ont de la valeur Geeks Anonymes
 

More from Geeks Anonymes (20)

Programmer sous Unreal Engine
Programmer sous Unreal EngineProgrammer sous Unreal Engine
Programmer sous Unreal Engine
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexes
 
Managing Open Source Licenses (Geeks Anonymes)
Managing Open Source Licenses (Geeks Anonymes)Managing Open Source Licenses (Geeks Anonymes)
Managing Open Source Licenses (Geeks Anonymes)
 
Reprendre le contrôle de ses données
Reprendre le contrôle de ses donnéesReprendre le contrôle de ses données
Reprendre le contrôle de ses données
 
Geeks Anonymes - Le langage Go
Geeks Anonymes - Le langage GoGeeks Anonymes - Le langage Go
Geeks Anonymes - Le langage Go
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Vulnérabilités au cœur des applications Web, menaces et contre-mesures
 Vulnérabilités au cœur des applications Web, menaces et contre-mesures Vulnérabilités au cœur des applications Web, menaces et contre-mesures
Vulnérabilités au cœur des applications Web, menaces et contre-mesures
 
"Surfez couverts !" - Conseils de Cyber securité
"Surfez couverts !" - Conseils de Cyber securité "Surfez couverts !" - Conseils de Cyber securité
"Surfez couverts !" - Conseils de Cyber securité
 
Introduction au développement mobile - développer une application iOS et Andr...
Introduction au développement mobile - développer une application iOS et Andr...Introduction au développement mobile - développer une application iOS et Andr...
Introduction au développement mobile - développer une application iOS et Andr...
 
Le langage rust
Le langage rustLe langage rust
Le langage rust
 
Test your code
Test your codeTest your code
Test your code
 
Intelligence artificielle et propriété intellectuelle
Intelligence artificielle et propriété intellectuelleIntelligence artificielle et propriété intellectuelle
Intelligence artificielle et propriété intellectuelle
 
Pour une histoire plophonique du jeu video
Pour une histoire plophonique du jeu videoPour une histoire plophonique du jeu video
Pour une histoire plophonique du jeu video
 
Become Rick and famous, thanks to Open Source
Become Rick and famous, thanks to Open SourceBecome Rick and famous, thanks to Open Source
Become Rick and famous, thanks to Open Source
 
Reconnaissance vocale et création artistique
Reconnaissance vocale et création artistiqueReconnaissance vocale et création artistique
Reconnaissance vocale et création artistique
 
Natural Language Processing
Natural Language ProcessingNatural Language Processing
Natural Language Processing
 
Sécurité, GDPR : vos données ont de la valeur
Sécurité, GDPR : vos données ont de la valeur Sécurité, GDPR : vos données ont de la valeur
Sécurité, GDPR : vos données ont de la valeur
 
Modern sql
Modern sqlModern sql
Modern sql
 
Qt
QtQt
Qt
 

191121 philippe teuwen cryptographie et attaques materielles

  • 1. COMPANY CONFIDENTIAL Cryptographie et attaques matérielles : Application à la cryptographie en boîte blanche Geeks anonymes Philippe Teuwen 21 novembre 2019
  • 2. Ecole de pensée française: on dit “chiffrer”, pas “crypter” Ecole de pensée belge: “décrypte le cipher” Crédits: corkami.com
  • 3. BREVE INTRO AUX MODÈLES D’ATTAQUES CRYPTOGRAPHIQUES
  • 7. “Dans la vraie vie” => modèle “Grey box”
  • 8. Modèle “Grey box” Artwork derived from CC BY-SA Mark Pellegrini work on Wikimedia Commons
  • 12. Attaquant: accès complet à l’environnement d’exécution Lire/altérer le binaire Exécuter pas à pas Lire/altérer les registres CPU, la mémoire, les I/Os, … Seule ligne de défense: Implémentation Modèle “White box”
  • 13. Obscurcissement de code Vérifications d’intégrité Astuces “anti-debug” Ligne de défense = implémentation Illustrations: par @xoreaxeaxeax à propos de M/o/Vfuscator et par blog.quarkslab.com à propos d’OLLVM
  • 14. Pourquoi faire? – Gestion de droits numériques (DRM) ↔ criminels utilisateurs – Paiement mobile, HCE ↔ code malveillants Cryptographie dans le modèle “White box” Source: “l'industrie du film” Source: Business Insider
  • 15. L’obscurcissement de code seul est très insuffisant – L’obscurcissement sécurise le code mais ici : algo de crypto standard nécessite une solide protection de clé – Ex.: entropy attack on RSA by Shamir and Van Someren (1999) Cryptographie dans le modèle “White box”
  • 16. → Chow et al. (2002) – Implémentation “idéale”: 4.94 x 1027 TB – Implémentation pratique d’AES: 752kB Encodage des valeurs intermédiaires Cryptographie “White box” Illustration tirée de “A Tutorial on White-box AES” par James A. Muir
  • 17. Cryptographie “White box” Petit résumé: – Attaques académiques → nouveaux designs → ... – Tous les modèles académiques ont été cassés Réponse de l’industrie: – Gardons nos designs secrets – Enterrons les implémentations sous des couches d’obscurcissement, de vérif. d’intégrité, trucs “anti-debug” – Hé ! Regardez on a un Secure Element logiciel !
  • 18. Attaques “académiques”? 1. défaire les protections 2. être aware du design 3. appliquer l’attaque: Extraits de: ● “Two Attacks on a White-Box AES” ● “Cryptanalysis of a Perturbated White-Box AES Implementation” ● “Attacking an obfuscated cipher by injecting faults”
  • 22. Enregistrer toutes les instructions et les accès mémoire Exemples: – Intel PIN – Valgrind – Instrumenter une VM (Java, Python,…) – Instrumenter un émulateur Tracer un exécutable
  • 23. Visualisation de trace : quelques conventions temps adresses mémoire stack data instruction lecture écriture code
  • 24. Identification visuelle de crypto: par le code 9x4
  • 25. Identification visuelle de crypto: par le code ?
  • 26. Identification visuelle de crypto: par les données ! 1+15
  • 27. Identification visuelle de crypto: par les données ?
  • 28. Identification visuelle de crypto: par la pile ! 1+15
  • 29. Identification visuelle de crypto: par la pile ! 9x4x4
  • 30. Identification visuelle de crypto: par la pile ! 9x4x410
  • 31. Identification visuelle de crypto: par la pile ! 9x16
  • 32. Et ma clé dans tout ça ?
  • 35. Differential Power Analysis par P. Kocher et al. (1998) – Corrélations possibles entre: consommation électrique et poids de Hamming de valeurs internes – Enregistre les traces de consommation correspondant à des messages différents temps tension
  • 36. Differential Power Analysis Certains valeurs intermédiaires de la première (ou dernière) ronde ne dépendent que de données connues et d’une fraction de la clé de ronde Par ex. pour AES:
  • 37. Seuls prérequis: – Connaître l’entrée ou la sortie du chiffrement par blocs – Pouvoir mesurer la consommation (ou les radiations EM) – Présence de “fuites” (corrélations) Differential Power Analysis
  • 38. Traces d’exécution → “traces de consommation” ? Adresses ou données des accès mémoire, écritures sur la pile,… Exemple: octets lus Differential Computation Analysis
  • 39. Traces d’exécution → “traces de consommation” ? Adresses ou données des accès mémoire, écritures sur la pile,… Exemple: octets lus→ poids de Hamming ? Differential Computation Analysis
  • 40. Octets → bits Differential Computation Analysis
  • 42. Yapluka Attaquer ces traces “de consommation” dans votre outil de DPA favori : – Riscure Inspector SCA software – ChipWhisperer opensource software – Matlab… – Daredevil !
  • 43. Tracer quoi ? – Écritures sur la pile – Lectures en mémoire RO – Adresses accédées plaintexts et/ou ciphertexts – Éventuellement via instrumentation du binaire Large implémentation ? Minimiser l’acquisition – Seulement premières/dernières rondes – Compression des traces par analyse d’entropie Tips
  • 44. Ex: 5 exécutions de suite, celle du milieu est la bonne => Compresse 2.7M échantillons -> 5000 échantillons Compression “naïve” par écart type threshold threshold
  • 45. Challenge Wyseur par Brecht Wyseur, 2007 implémentation WB-DES : Chow “plus some personal improvements” On télécharge… 1h et 65 traces plus tard, la clé est cassée !
  • 46. Challenge Hack.lu 2009 Windows crackme par Jean-Baptiste Bédrune Implémentation WB-AES : Chow Paresse → Wine/Linux + xdotool (émulation clavier/souris) 16 traces (challenge de CTF, pas d’encodages internes)
  • 47. Challenge SSTIC 2012 “white-box” en Python par Axel Tillequin Implémentation WB-DES dans un objet “marshall” → instrumentation d’une classe externe “Bits” 16 traces pas d’encodages internes
  • 48. Karroumi Dernière tentative académique de “réparer” Chow (2011) Dual Ciphers, i.e. isomorphic AES ciphers: Notre propre challenge… 2000 traces, 500 traces après tuning
  • 49. Quelques implémentations “white-box” propriétaires DES & AES Cassées en 200 à 2500 traces
  • 50. Aléas dynamique? – Pas de TRNG, juste le message d’entrée Ajout de délais pseudo-aléatoires? – Traces d’instructions → on réaligne Bref, délicat… Une sécurité “parfaite” est illusoire, mais si le coût d’une attaque est supérieur au gain pour l’attaquant, vous avez réussi. Oups, c’est la chute des prix... Contre-mesures ?
  • 51. Oui ! Encodages “larges” (8x8) masquant la non-linérarité de la SBOX La DCA peut-elle échouer ?
  • 52. Oui ! Encodages “larges” (8x8) masquant la non-linérarité de la SBOX → grandes tables ! → tendance à les réutiliser → autres types d’attaque cf. write-ups NoSuchCon 2013 et CHES 2015 http://wiki.yobi.be/wiki/CHES2015_Writeup La DCA peut-elle échouer ?
  • 53. Autres attaques “grey box” à portée de main : Higher order DPA, CPA, DFA,…
  • 54. La DFA, parlons-en... Differential Fault Analysis sur AES (Piret/Quisquater 2003) ● Prérequis: rejouer l’entrée, voir la sortie en clair ● Sur AES-128 enc ou dec: 8 “bonnes” fautes sur la 9ème ronde ● Temps d’analyse: 50 ms ! ● Variante: 2 “bonnes” fautes sur la 8ème ronde ● Injection: source ; bin statique ; bin dynamique ● Injection à l’aveugle, voire à la bourrin...
  • 55. “Now this is not the end. It's not even the beginning of the end. But it is, perhaps, the end of the beginning.” Autres aspects à protéger : code lifting, inverse de f(),...
  • 56. Side-Channel Marvels https://github.com/SideChannelMarvels Tracer - TracerGrind - TracerPIN - TraceGraph Deadpool - White-boxes - Attacks automation Daredevil - Side-channel analysis (CPA) JeanGrey - Fault analysis (DFA)
  • 57. Side-Channel Marvels https://github.com/SideChannelMarvels Charles Hubain (NXP, Quarkslab, LINE) Joppe Bos (NXP) Michael Eder (TUM, Fraunhofer AISEC) Paul Bottinelli (EPFL, ISARA Corp) Philippe Teuwen (NXP, Quarkslab) Van Huynh Le (U.Twente, NXP) Wil Michiels (NXP, TU/e) Orka - images Docker Sans oublier...
  • 58. Pour aller plus loin ● J. W. Bos, C.s Hubain, W.l Michiels et P. Teuwen. « Differential Computation Analysis : Hiding Your White-Box Designs is Not Enough ». In : Cryptographic Hardware and Embedded Systems – CHES 2016 - 18th International Conference, Santa Barbara, CA, USA, August 17-19, 2016, Proceedings. 2016, p. 215–236 ● E. Alpirez Bock, J. W. Bos, C. Brzuska, C. Hubain, W. Michiels, C. Mune, E. Sanfelix Gonzalez, P. Teuwen et A.Treff. « White-Box Cryptography: Don’t Forget About Grey-Box Attacks ». In : Journal of Cryptology, 32(4):1095–1143, Oct. 2019 ● https://speakerdeck.com/doegox/grey-box-attacks-four-years-later ● https://chipwhisperer.readthedocs.io/en/latest/tutorials/fault_4-openadc- cwlitexmega.html
  • 60. MERCI ! QUESTIONS ? @doegox Image source: “A Beautiful Mind”