Securite Materielle - Semestre 7
Annee academique : 2023-2024
ECTS : 2
Categorie : Securite et Systemes Embarques
PART A - Presentation Generale du Module
Vue d'ensemble
Ce cours aborde la securite materielle, un domaine essentiel a l'ere des objets connectes et des systemes embarques. Il couvre les vulnerabilites physiques des systemes electroniques, les attaques par canaux auxiliaires, les mecanismes de protection, et les techniques de conception securisee pour prevenir l'extraction d'informations sensibles.
Objectifs pedagogiques :
- Comprendre les menaces pesant sur la securite materielle
- Maitriser les attaques par canaux auxiliaires (timing, cache, puissance)
- Analyser les vulnerabilites des implementations cryptographiques
- Decouvrir les attaques par depassement de tampon et injection de code
- Implementer des contre-mesures efficaces
- Evaluer la securite physique des systemes embarques
Position dans le cursus
Ce module complete la formation en securite :
- Architecture Materielle (S6) : fonctionnement processeurs, caches, memoires
- Microcontroleurs (S6) : systemes embarques, ARM Cortex
- Systemes d'Exploitation (S5) : gestion memoire, processus
- Langage C et Assemblage (S5, S6) : programmation bas niveau
Il prepare a :
- Embedded IA for IoT (S9) : securite des objets connectes
- Projets professionnels : conception de systemes securises
- Cybersecurite : approche globale hardware/software
PART B - Experience Personnelle et Contexte d'Apprentissage
Organisation et ressources
Le module etait organise en cours magistraux et travaux pratiques intensifs :
Cours magistraux (12h) :
- Introduction a la securite materielle
- Attaques par canaux auxiliaires (timing, cache, puissance)
- Analyse de la consommation electrique (SPA, DPA, CPA)
- Attaques par injection de fautes
- Vulnerabilites logicielles (buffer overflow, shellcode)
- Contre-mesures materielles et logicielles
Travaux pratiques (12h) :
- TP1 : Analyse de consommation sur microcontroleur STM32
- TP Cache et SCA : Attaques par analyse de cache, detection d'ouverture de fichiers
- TP3 Overflow : Exploitation de depassements de tampon, shellcode, injection de code
- TP AES : Analyse de vulnerabilites dans implementations OpenSSL
Ressources :
- 6 polycopies de cours (slides, polycopies detailles)
- 2 TD avec corrections
- Outils : ChipWhisperer (analyse de puissance), GDB (debogage)
- Code source AES (OpenSSL versions 0.9.7a et 1.1.1t)
- Annales (4 sujets d'examens)
Methodologie d'etude
Phase 1 : Assimiler les concepts theoriques :
Comprendre les principes des attaques (canaux auxiliaires, injection de fautes, overflow).
Phase 2 : Manipuler en TP :
Realiser les attaques concretes pour comprendre leur fonctionnement et leur puissance.
Phase 3 : Analyser le code :
Etudier le code vulnerable (AES, programmes C) pour identifier les failles.
Phase 4 : Concevoir des contre-mesures :
Reflechir aux protections possibles et a leurs limites.
Phase 5 : Developper une vision critique :
Evaluer la securite globale d'un systeme en considerant tous les vecteurs d'attaque.
Difficultes rencontrees
Figure : Principe d'une attaque par buffer overflow - Ecrasement de l'adresse de retour
Complexite des attaques :
Les attaques par canaux auxiliaires necessitent des connaissances en electronique, traitement du signal, et statistiques.
Environnement technique :
Manipuler des outils specialises (ChipWhisperer, oscilloscopes) et du code assembleur requiert de la pratique.
Equilibre securite/performance :
Concevoir des contre-mesures efficaces sans degrader les performances est un defi constant.
Diversite des vulnerabilites :
La securite materielle couvre un spectre large : du cache au depassement de tampon, chaque domaine a ses specificites.
PART C - Aspects Techniques Detailles
1. Attaques par canaux auxiliaires
Principe general :
Les attaques par canaux auxiliaires exploitent les fuites d'information physiques lors de l'execution d'algorithmes :
- Consommation electrique
- Temps d'execution
- Emissions electromagnetiques
- Contenu du cache
Meme si l'algorithme est mathematiquement sur, son implementation peut reveler des secrets.
Attaques temporelles (Timing Attacks) :
Exploitent les variations du temps d'execution.
Exemple classique : Cache timing sur AES :
AES utilise des tables de substitution (S-box). L'acces a ces tables depend de la cle et du message.
Si une partie de la table est en cache (acces rapide) et une autre non (acces lent), on peut deduire quelle partie a ete accedee en mesurant le temps.
Attaque :
- Mesurer le temps d'execution pour differents messages
- Analyser les variations temporelles
- Deduire quelle partie de la S-box a ete accedee
- Recuperer progressivement les octets de la cle
Contre-mesures :
- Implementations a temps constant (meme duree quel que soit l'input)
- Desactivation du cache pour operations sensibles
- Ajout de bruit temporel (jitter)
Attaques par analyse de cache :
Le cache CPU peut reveler des informations sensibles.
Technique Prime+Probe :
- Attaquant remplit le cache avec ses propres donnees (Prime)
- Victime execute operation cryptographique
- Attaquant mesure quelles lignes de cache ont ete evincees (Probe)
- En deduire les acces memoire de la victime
TP realise : Detection d'ouverture de fichier :
Programme spy.c :
- Vide (flush) le cache pour une adresse du fichier cible
- Attend un delai
- Mesure le temps d'acces a cette adresse
- Si temps < seuil : fichier en cache → fichier a ete ouvert recemment
Application : espionnage d'activite sans acces systeme.
Attaques par analyse de la consommation (Power Analysis) :
Simple Power Analysis (SPA) :
Observation directe de la trace de consommation.
Chaque instruction consomme differemment : multiplication, addition, lecture memoire ont des signatures distinctes.
Exemple : Exponentiation modulaire en RSA :
- Operation "carre" visible
- Operation "carre puis multiplication" visible
- On deduit directement les bits de la cle privee
Differential Power Analysis (DPA) :
Analyse statistique sur de nombreuses traces.
Principe :
- Capturer N traces de consommation pour N messages differents
- Faire des hypotheses sur une partie de la cle
- Predire la consommation pour chaque hypothese
- Correler predictions avec traces reelles
- L'hypothese correcte donne la meilleure correlation
Correlation Power Analysis (CPA) :
Variante amelioree utilisant le coefficient de correlation de Pearson.
Permet d'attaquer des implementations plus resistantes.
TP realise : Analyse de consommation sur STM32 :
Programme main.c (TP1) :
- Microcontroleur execute des operations (multiplications repetees)
- Oscilloscope capture la consommation electrique
- Analyse des traces pour identifier les operations
- Correlation entre donnees manipulees et consommation
2. Attaques par injection de fautes
Principe :
Provoquer volontairement des erreurs lors de l'execution pour obtenir des informations ou contourner des protections.
Techniques d'injection :
| Technique | Description | Effet |
|---|---|---|
| Clock glitching | Impulsions sur horloge | Instructions sautees |
| Voltage glitching | Variation tension alimentation | Erreurs calcul |
| Laser | Faisceau laser focalise | Modification bit memoire |
| Temperature | Chauffage/refroidissement | Instabilites |
| EM | Impulsion electromagnetique | Perturbation circuits |
Exemple : Attaque sur authentification :
Code vulnerable :
if (password == correct_password) {
grant_access();
} else {
deny_access();
}
Injection de faute au moment du test :
- Le test echoue (mauvais mot de passe)
- Mais la faute inverse le resultat → acces accorde
Contre-mesures :
- Redondance (double verification)
- Codes correcteurs d'erreurs
- Detecteurs de glitches (capteurs de tension/horloge)
- Verifications de coherence
3. Vulnerabilites logicielles : Buffer Overflow
Principe :
Depassement de tampon : ecrire au-dela de la taille allouee d'un buffer, ecrasant des donnees adjacentes (adresse de retour, variables).
Mecanisme sur la pile (stack) :
Organisation de la pile lors d'un appel de fonction :
[parametres]
[adresse de retour]
[ancien ebp]
[variables locales]
[buffer]
Si on ecrit trop dans buffer, on ecrase les variables, ebp, et l'adresse de retour.
Exploitation :
- Remplir le buffer avec du code malveillant (shellcode)
- Ecraser l'adresse de retour pour pointer vers le shellcode
- Quand la fonction retourne, le shellcode s'execute
TP realise : Exploitation de buffer overflow :
Part 1 : Organisation memoire :
Analyse de la pile avec GDB, calcul des offsets.
Part 2 : Exploitation simple :
Programme vulnerable avec strcpy sans verification de taille. Injection pour modifier une variable ou sauter une verification.
Part 3 : Injection de shellcode :
shellcode.c :
void shellcode() {
asm(
"mov $0x3b, %rax" // syscall execve
"mov $0x0, %rdx"
"movabs $0x0068732f6e69622f, %r8" // "/bin/sh"
"push %r8"
"mov %rsp, %rdi" // adresse de "/bin/sh"
"syscall" // execve("/bin/sh", ...)
);
}
Objectif : injecter ce code et rediriger l'execution pour ouvrir un shell.
Part 4 & 5 : Exploitation complete :
- Calcul de l'adresse du shellcode
- Construction du payload (NOP sled + shellcode + adresse retour)
- Injection via upload.py
- Obtention d'un shell avec privileges
Contre-mesures modernes :
| Contre-mesure | Description |
|---|---|
| Stack canaries | Valeur sentinelle avant adresse retour, verifiee |
| ASLR (Address Space Layout Randomization) | Adresses memoire aleatoires |
| DEP/NX (Data Execution Prevention) | Memoire non executable (pile, tas) |
| RELRO (Relocation Read-Only) | Sections memoire en lecture seule |
| Compilation securisee | Options -fstack-protector, -D_FORTIFY_SOURCE |
4. Analyse de cache - Profiling
Hierarchie memoire :
CPU → Cache L1 (1-3 cycles) → Cache L2 (10-20 cycles) → Cache L3 (40-75 cycles) → RAM (100-300 cycles)
Le cache accelere l'acces aux donnees frequemment utilisees.
Mesure du temps d'acces :
TP Cache Profiling (profiling.c) :
- Fonction memaccesstime(ptr) : mesure le temps pour acceder a une adresse
- Fonction clflush(ptr) : vide (flush) l'adresse du cache
- Boucle de profiling :
- Acceder → mesurer (cache hit)
- Flush → acceder → mesurer (cache miss)
- Generation d'histogrammes avec gnuplot
Resultats typiques :
- Cache hit : 10-50 cycles
- Cache miss : 200-400 cycles
Exploitation pour attaque :
Technique Flush+Reload :
- Flush une ligne de cache partagee avec la victime
- Victime execute son code
- Attaquant mesure le temps de rechargement
- Si rapide : victime a accede a cette ligne
Application : Detection d'ouverture de fichier (spy.c) :
- Surveiller une adresse d'un fichier sensible
- Si le fichier est ouvert par un processus, il sera en cache
- Detection sans acces au systeme de fichiers
5. Vulnerabilites cryptographiques - AES
AES (Advanced Encryption Standard) :
Algorithme de chiffrement par blocs, standard depuis 2001.
Structure :
- Blocs de 128 bits
- Cles de 128, 192 ou 256 bits
- 10, 12 ou 14 rondes selon taille de cle
- Operations : SubBytes (S-box), ShiftRows, MixColumns, AddRoundKey
Vulnerabilites d'implementation :
Implementation naive : Acces tables dependant de la cle
AES utilise des tables de substitution (S-box). L'implementation classique stocke ces tables en memoire.
Lors de l'execution :
state[i] = Sbox[state[i] XOR key[i]]
L'indice d'acces depend de la cle : vulnerabilite aux attaques par cache.
TP : Comparaison OpenSSL versions
OpenSSL 0.9.7a (vulnerable) :
- Acces direct aux tables T0, T1, T2, T3
- Indices dependent des donnees et de la cle
- Vulnerable aux cache timing attacks
OpenSSL 1.1.1t (protegee) :
- Implementation AES-NI (instructions materielles)
- Pas d'acces memoire dependant de la cle
- Resistant aux cache timing attacks
AES-NI :
Instructions processeur dediees (Intel, AMD depuis 2010) :
- AESENC, AESENCLAST : chiffrement
- AESDEC, AESDECLAST : dechiffrement
- AESIMC, AESKEYGENASSIST : generation de cles
Avantages :
- Performance elevee
- Implementation resistante aux canaux auxiliaires
- Pas de tables en memoire
6. Autres contre-mesures
Masquage (Masking) :
Technique contre les attaques DPA.
Principe : Randomiser les valeurs intermediaires.
Au lieu de manipuler directement x, on manipule x XOR m (m aleatoire).
Les fuites de consommation portent sur x XOR m, qui est aleatoire.
Exemple :
x' = x XOR m
y' = f(x') = f(x XOR m)
y = y' XOR m' (ou m' decoule de m)
Inconvenients :
- Surcout en calcul et en aleatoire
- Difficile a implementer correctement (fuites possibles)
Hiding :
Reduire le rapport signal/bruit dans les traces de consommation.
Techniques :
- Randomisation de l'ordre des operations
- Insertion d'operations factices (dummy operations)
- Consommation constante (circuits a double rail)
Securite physique :
Capteurs :
- Detecteurs d'ouverture du boitier
- Capteurs de temperature, lumiere
- Capteurs de tension/frequence anormales
Memoire effacable :
En cas de detection d'attaque, effacer les cles.
Encapsulation :
Proteger les circuits sensibles dans des resines difficiles a retirer.
7. Outils et methodologies
ChipWhisperer :
Plateforme open-source pour analyse de canaux auxiliaires.
Fonctionnalites :
- Capture de traces de consommation electrique
- Synchronisation avec cible (trigger)
- Analyses DPA, CPA
- Injection de glitches (clock, voltage)
GDB (GNU Debugger) :
Utilise pour analyser les programmes vulnerables :
- Poser des breakpoints
- Examiner la pile et les registres
- Calculer les offsets pour exploitations
Commandes utiles :
info registers # etat des registres
x/32x $rsp # examiner la pile
disassemble # desassembler une fonction
Gnuplot :
Visualisation des distributions de temps d'acces (cache hit/miss).
8. Domaines d'application
Cartes a puce :
Cibles privilegiees : paiement, authentification, SIM.
Menaces : clonage, extraction de cles.
Protections : masquage, capteurs, hardware securise.
Systemes embarques critiques :
Automobile (CAN bus, ECU), aeronautique, medical.
Risques : injection de fautes, reverse engineering.
IoT (Internet of Things) :
Objets connectes souvent peu proteges.
Attaques possibles : extraction firmware, clonage, botnets.
Infrastructures cloud :
Attaques par cache entre machines virtuelles (VM).
Risque de fuite d'informations entre locataires (tenants).
PART D - Analyse Reflexive et Perspectives
Competences acquises
Comprehension des menaces materielles :
Capacite a identifier les vulnerabilites physiques et logicielles des systemes embarques.
Maitrise des attaques par canaux auxiliaires :
Aptitude a analyser les fuites d'information (timing, cache, puissance) et a exploiter ces failles.
Exploitation de vulnerabilites logicielles :
Competence en exploitation de buffer overflow, injection de shellcode, et comprehension des protections modernes.
Conception securisee :
Developpement de reflexes pour integrer la securite des la conception (secure by design).
Vision d'ensemble :
Capacite a evaluer la securite globale d'un systeme en considerant hardware, software, et attaques physiques.
Points cles a retenir
1. Securite ≠ Cryptographie seule :
Un algorithme mathematiquement sur peut etre vulnerable si son implementation fuit des informations.
2. Les canaux auxiliaires sont reels :
Timing, cache, consommation : ces attaques sont pratiques et ont compromis des systemes reels (cartes bancaires, DRM).
3. Defense en profondeur :
Pas de solution miracle. Combiner plusieurs contre-mesures pour augmenter le cout de l'attaque.
4. Trade-off securite/performance :
Les protections coutent en performance, energie, et complexite. Trouver le bon equilibre selon le contexte.
5. Evolution constante :
Nouvelles attaques regulierement decouvertes (Spectre, Meltdown, Rowhammer). Veille technologique indispensable.
Retour d'experience
Aspect revelateur :
Ce cours a ouvert les yeux sur la fragilite des systemes face aux attaques physiques. Voir des attaques theoriques fonctionner en TP est impressionnant.
Difficulte de la securite :
Concevoir un systeme sur est difficile. Il faut penser comme un attaquant pour identifier toutes les failles possibles.
Outils specialises :
Manipuler ChipWhisperer, GDB, et analyser des traces demande de la pratique. Les TP ont permis de se familiariser avec ces outils professionnels.
Equilibre necessaire :
Les contre-mesures ajoutent de la complexite. Il faut evaluer le niveau de menace et adapter la protection.
Applications pratiques
Pour ingenieur en securite :
- Audit de securite de systemes embarques
- Conception de produits resistants aux attaques physiques
- Certification securitaire (Common Criteria, FIPS)
Pour developpeur embarque :
- Ecrire du code resistant aux attaques (timing constant)
- Eviter les vulnerabilites classiques (buffer overflow)
- Tester la robustesse face aux fautes
Pour concepteur hardware :
- Integrer des contre-mesures materielles (capteurs, masking)
- Choisir des composants securises (TEE, Secure Element)
- Evaluer les risques des la phase de design
Dans la vie courante :
- Comprendre les risques des objets connectes (cameras, serrures)
- Evaluer la securite de produits (cartes bancaires, smartphones)
- Sensibiliser aux enjeux de cybersecurite
Limites et ouvertures
Limites du module :
- Peu d'approfondissement sur les attaques EM (electromagnetiques)
- Pas de manipulation reelle d'injection laser ou voltage glitching
- Aspects legaux et ethiques peu abordes
Ouvertures vers :
- Secure Elements : HSM, TPM, Trusted Execution Environments (TEE)
- Post-Quantum Cryptography : resistance aux ordinateurs quantiques
- Formal Verification : preuves formelles de securite
- Bug Bounty : recherche ethique de vulnerabilites
Evolutions recentes
Attaques Spectre et Meltdown (2018) :
Exploitation de l'execution speculative des processeurs modernes.
Spectre : forcer un programme a reveler ses secrets via le cache.
Meltdown : lire la memoire du noyau depuis l'espace utilisateur.
Impact : tous les processeurs Intel, AMD, ARM concernes.
Rowhammer (2014) :
Attaque sur memoire DRAM : acces repetes a des lignes de memoire peuvent induire des flips de bits sur lignes adjacentes.
Exploitation : elevation de privileges, evasion de machines virtuelles.
Attaques sur IA embarquee :
Les reseaux de neurones sont vulnerables :
- Attaques adversariales (perturbations imperceptibles)
- Extraction de modeles par observation
- Backdoors dans modeles
Enjeu croissant avec l'IA embarquee (reconnaissance vocale, vision).
5G et IoT :
Explosion du nombre d'objets connectes.
Surface d'attaque considerable.
Besoin de securite legere et efficace energetiquement.
Conseils pour reussir
1. Comprendre avant d'exploiter :
Bien maitriser le fonctionnement normal d'un systeme avant de chercher les failles.
2. Pratiquer les TP serieusement :
Les manipulations pratiques sont essentielles pour integrer les concepts.
3. Lire le code :
Analyser le code source (shellcode, AES) pour comprendre les vulnerabilites.
4. Penser en attaquant :
Adopter la mentalite d'un attaquant : chercher le maillon faible, les hypotheses implicites.
5. Se documenter :
Lire des articles academiques, des rapports de vulnerabilites (CVE), des blogs de securite.
6. Respecter l'ethique :
Ne jamais utiliser ces connaissances de maniere illegale. Hacking ethique uniquement.
Conclusion
Ce module est fondamental pour toute personne travaillant sur des systemes embarques ou critiques. La securite materielle est souvent negligee au profit de la securite logicielle, mais les attaques physiques sont reelles et efficaces.
Competences transferables :
- Analyse critique de la securite d'un systeme
- Comprehension profonde du fonctionnement des processeurs et memoires
- Capacite a integrer la securite des la conception
- Vision multidisciplinaire (hardware, software, cryptographie, physique)
Pertinence professionnelle :
Avec l'explosion de l'IoT, de l'industrie 4.0, et des vehicules autonomes, la securite materielle est un domaine en forte demande. Les ingenieurs formes a ces problematiques sont recherches.
Message principal :
La securite est un processus, pas un produit. Il faut constamment evaluer, tester, et ameliorer. Un systeme n'est jamais 100% sur, mais on peut augmenter considerablement le cout de l'attaque.
Recommandations :
- Approfondir avec des cours avances (Riscure Academy, Coursera)
- Suivre les conferences de securite (Black Hat, DEF CON, CHES)
- Pratiquer sur des plateformes (Hack The Box, CTF securite hardware)
- Rejoindre des communautes (r/ReverseEngineering, forums specialises)
- Rester informe des nouvelles vulnerabilites (CVE, bulletins de securite)
Liens avec les autres cours :
- Architecture Materielle - S6 : caches, processeurs
- Microcontroleurs - S6 : ARM Cortex, systemes embarques
- Systemes d'Exploitation - S5 : gestion memoire
- Langage C - S5 : programmation bas niveau
- Embedded IA for IoT - S9 : securite des objets connectes
Documents de Cours
Cours Complet
Cours complet de securite materielle : attaques par canaux caches, buffer overflow, vulnerabilites Spectre/Meltdown.
Buffer Overflow
Cours sur les attaques par depassement de tampon : exploitation, stack smashing, protections et contre-mesures.
TP Cache Side-Channel Attack
Sujet de TP sur les attaques par canaux caches via cache : timing attacks, Flush+Reload et experimentations.
Cours suivi en 2023-2024 a l'INSA Toulouse, Departement Genie Electrique et Informatique.
Hardware Security - Semester 7
Academic Year: 2023-2024
ECTS: 2
Category: Security and Embedded Systems
PART A - General Module Presentation
Overview
This course addresses hardware security, an essential field in the era of connected objects and embedded systems. It covers the physical vulnerabilities of electronic systems, side-channel attacks, protection mechanisms, and secure design techniques to prevent the extraction of sensitive information.
Learning objectives:
- Understand threats to hardware security
- Master side-channel attacks (timing, cache, power)
- Analyze vulnerabilities in cryptographic implementations
- Discover buffer overflow and code injection attacks
- Implement effective countermeasures
- Evaluate the physical security of embedded systems
Position in the curriculum
This module complements the security training:
- Hardware Architecture (S6): processor operation, caches, memories
- Microcontrollers (S6): embedded systems, ARM Cortex
- Operating Systems (S5): memory management, processes
- C Language and Assembly (S5, S6): low-level programming
It prepares for:
- Embedded IA for IoT (S9): security of connected objects
- Professional projects: design of secure systems
- Cybersecurity: comprehensive hardware/software approach
PART B - Personal Experience and Learning Context
Organization and resources
The module was organized into lectures and intensive practical work sessions:
Lectures (12h):
- Introduction to hardware security
- Side-channel attacks (timing, cache, power)
- Power consumption analysis (SPA, DPA, CPA)
- Fault injection attacks
- Software vulnerabilities (buffer overflow, shellcode)
- Hardware and software countermeasures
Practical work (12h):
- Lab 1: Power consumption analysis on STM32 microcontroller
- Cache and SCA Lab: Cache analysis attacks, file opening detection
- Lab 3 Overflow: Buffer overflow exploitation, shellcode, code injection
- AES Lab: Vulnerability analysis in OpenSSL implementations
Resources:
- 6 course handouts (slides, detailed handouts)
- 2 tutorials with corrections
- Tools: ChipWhisperer (power analysis), GDB (debugging)
- AES source code (OpenSSL versions 0.9.7a and 1.1.1t)
- Past exams (4 exam papers)
Study methodology
Phase 1: Assimilate theoretical concepts:
Understand the principles of attacks (side channels, fault injection, overflow).
Phase 2: Hands-on lab work:
Perform concrete attacks to understand how they work and their power.
Phase 3: Analyze code:
Study vulnerable code (AES, C programs) to identify flaws.
Phase 4: Design countermeasures:
Think about possible protections and their limitations.
Phase 5: Develop critical thinking:
Evaluate the overall security of a system by considering all attack vectors.
Difficulties encountered
Figure: Principle of a buffer overflow attack - Overwriting the return address
Attack complexity:
Side-channel attacks require knowledge of electronics, signal processing, and statistics.
Technical environment:
Handling specialized tools (ChipWhisperer, oscilloscopes) and assembly code requires practice.
Security/performance balance:
Designing effective countermeasures without degrading performance is a constant challenge.
Diversity of vulnerabilities:
Hardware security covers a broad spectrum: from cache to buffer overflow, each domain has its own specificities.
PART C - Detailed Technical Aspects
1. Side-channel attacks
General principle:
Side-channel attacks exploit physical information leaks during algorithm execution:
- Power consumption
- Execution time
- Electromagnetic emissions
- Cache contents
Even if the algorithm is mathematically secure, its implementation can reveal secrets.
Timing Attacks:
Exploit variations in execution time.
Classic example: Cache timing on AES:
AES uses substitution tables (S-box). Access to these tables depends on the key and the message.
If part of the table is in cache (fast access) and another part is not (slow access), one can deduce which part was accessed by measuring the time.
Attack:
- Measure execution time for different messages
- Analyze temporal variations
- Deduce which part of the S-box was accessed
- Progressively recover key bytes
Countermeasures:
- Constant-time implementations (same duration regardless of input)
- Cache disabling for sensitive operations
- Adding temporal noise (jitter)
Cache analysis attacks:
The CPU cache can reveal sensitive information.
Prime+Probe technique:
- Attacker fills the cache with their own data (Prime)
- Victim executes cryptographic operation
- Attacker measures which cache lines were evicted (Probe)
- Deduce the victim's memory accesses
Lab performed: File opening detection:
Program spy.c:
- Flush the cache for an address of the target file
- Wait for a delay
- Measure access time to that address
- If time < threshold: file in cache → file was opened recently
Application: activity spying without system access.
Power consumption analysis attacks (Power Analysis):
Simple Power Analysis (SPA):
Direct observation of the power consumption trace.
Each instruction consumes differently: multiplication, addition, memory read have distinct signatures.
Example: Modular exponentiation in RSA:
- "Square" operation visible
- "Square then multiply" operation visible
- Private key bits can be directly deduced
Differential Power Analysis (DPA):
Statistical analysis over many traces.
Principle:
- Capture N power traces for N different messages
- Make hypotheses about part of the key
- Predict consumption for each hypothesis
- Correlate predictions with actual traces
- The correct hypothesis gives the best correlation
Correlation Power Analysis (CPA):
Improved variant using Pearson's correlation coefficient.
Allows attacking more resistant implementations.
Lab performed: Power consumption analysis on STM32:
Program main.c (Lab 1):
- Microcontroller executes operations (repeated multiplications)
- Oscilloscope captures power consumption
- Trace analysis to identify operations
- Correlation between manipulated data and consumption
2. Fault injection attacks
Principle:
Deliberately cause errors during execution to obtain information or bypass protections.
Injection techniques:
| Technique | Description | Effect |
|---|---|---|
| Clock glitching | Clock pulses | Skipped instructions |
| Voltage glitching | Supply voltage variation | Computation errors |
| Laser | Focused laser beam | Memory bit modification |
| Temperature | Heating/cooling | Instabilities |
| EM | Electromagnetic pulse | Circuit disturbance |
Example: Attack on authentication:
Vulnerable code:
if (password == correct_password) {
grant_access();
} else {
deny_access();
}
Fault injection at the time of the test:
- The test fails (wrong password)
- But the fault inverts the result → access granted
Countermeasures:
- Redundancy (double verification)
- Error-correcting codes
- Glitch detectors (voltage/clock sensors)
- Consistency checks
3. Software vulnerabilities: Buffer Overflow
Principle:
Buffer overflow: writing beyond the allocated size of a buffer, overwriting adjacent data (return address, variables).
Stack mechanism:
Stack organization during a function call:
[parameters]
[return address]
[old ebp]
[local variables]
[buffer]
If too much is written into the buffer, it overwrites variables, ebp, and the return address.
Exploitation:
- Fill the buffer with malicious code (shellcode)
- Overwrite the return address to point to the shellcode
- When the function returns, the shellcode executes
Lab performed: Buffer overflow exploitation:
Part 1: Memory organization:
Stack analysis with GDB, offset calculation.
Part 2: Simple exploitation:
Vulnerable program with strcpy without size checking. Injection to modify a variable or skip a verification.
Part 3: Shellcode injection:
shellcode.c:
void shellcode() {
asm(
"mov $0x3b, %rax" // syscall execve
"mov $0x0, %rdx"
"movabs $0x0068732f6e69622f, %r8" // "/bin/sh"
"push %r8"
"mov %rsp, %rdi" // address of "/bin/sh"
"syscall" // execve("/bin/sh", ...)
);
}
Objective: inject this code and redirect execution to open a shell.
Part 4 & 5: Complete exploitation:
- Calculating the shellcode address
- Constructing the payload (NOP sled + shellcode + return address)
- Injection via upload.py
- Obtaining a shell with privileges
Modern countermeasures:
| Countermeasure | Description |
|---|---|
| Stack canaries | Sentinel value before return address, verified |
| ASLR (Address Space Layout Randomization) | Randomized memory addresses |
| DEP/NX (Data Execution Prevention) | Non-executable memory (stack, heap) |
| RELRO (Relocation Read-Only) | Read-only memory sections |
| Secure compilation | Options -fstack-protector, -D_FORTIFY_SOURCE |
4. Cache analysis - Profiling
Memory hierarchy:
CPU → L1 Cache (1-3 cycles) → L2 Cache (10-20 cycles) → L3 Cache (40-75 cycles) → RAM (100-300 cycles)
The cache speeds up access to frequently used data.
Access time measurement:
Cache Profiling Lab (profiling.c):
- Function memaccesstime(ptr): measures the time to access an address
- Function clflush(ptr): flushes the address from cache
- Profiling loop:
- Access → measure (cache hit)
- Flush → access → measure (cache miss)
- Histogram generation with gnuplot
Typical results:
- Cache hit: 10-50 cycles
- Cache miss: 200-400 cycles
Exploitation for attack:
Flush+Reload technique:
- Flush a cache line shared with the victim
- Victim executes their code
- Attacker measures reload time
- If fast: victim accessed that line
Application: File opening detection (spy.c):
- Monitor an address of a sensitive file
- If the file is opened by a process, it will be in cache
- Detection without access to the file system
5. Cryptographic vulnerabilities - AES
AES (Advanced Encryption Standard):
Block cipher algorithm, standard since 2001.
Structure:
- 128-bit blocks
- 128, 192, or 256-bit keys
- 10, 12, or 14 rounds depending on key size
- Operations: SubBytes (S-box), ShiftRows, MixColumns, AddRoundKey
Implementation vulnerabilities:
Naive implementation: Key-dependent table access
AES uses substitution tables (S-box). The classic implementation stores these tables in memory.
During execution:
state[i] = Sbox[state[i] XOR key[i]]
The access index depends on the key: vulnerability to cache attacks.
Lab: OpenSSL version comparison
OpenSSL 0.9.7a (vulnerable):
- Direct access to tables T0, T1, T2, T3
- Indices depend on data and key
- Vulnerable to cache timing attacks
OpenSSL 1.1.1t (protected):
- AES-NI implementation (hardware instructions)
- No key-dependent memory access
- Resistant to cache timing attacks
AES-NI:
Dedicated processor instructions (Intel, AMD since 2010):
- AESENC, AESENCLAST: encryption
- AESDEC, AESDECLAST: decryption
- AESIMC, AESKEYGENASSIST: key generation
Advantages:
- High performance
- Implementation resistant to side channels
- No tables in memory
6. Other countermeasures
Masking:
Technique against DPA attacks.
Principle: Randomize intermediate values.
Instead of directly manipulating x, we manipulate x XOR m (m random).
Consumption leaks relate to x XOR m, which is random.
Example:
x' = x XOR m
y' = f(x') = f(x XOR m)
y = y' XOR m' (where m' derives from m)
Drawbacks:
- Overhead in computation and randomness
- Difficult to implement correctly (possible leaks)
Hiding:
Reduce the signal-to-noise ratio in power consumption traces.
Techniques:
- Randomization of operation order
- Insertion of dummy operations
- Constant consumption (dual-rail circuits)
Physical security:
Sensors:
- Tamper detection sensors (case opening)
- Temperature and light sensors
- Abnormal voltage/frequency sensors
Erasable memory:
In case of attack detection, erase the keys.
Encapsulation:
Protect sensitive circuits in resins that are difficult to remove.
7. Tools and methodologies
ChipWhisperer:
Open-source platform for side-channel analysis.
Features:
- Power consumption trace capture
- Synchronization with target (trigger)
- DPA, CPA analyses
- Glitch injection (clock, voltage)
GDB (GNU Debugger):
Used to analyze vulnerable programs:
- Setting breakpoints
- Examining the stack and registers
- Calculating offsets for exploitation
Useful commands:
info registers # register state
x/32x $rsp # examine the stack
disassemble # disassemble a function
Gnuplot:
Visualization of access time distributions (cache hit/miss).
8. Application domains
Smart cards:
Privileged targets: payment, authentication, SIM.
Threats: cloning, key extraction.
Protections: masking, sensors, secure hardware.
Critical embedded systems:
Automotive (CAN bus, ECU), aeronautics, medical.
Risks: fault injection, reverse engineering.
IoT (Internet of Things):
Connected objects often poorly protected.
Possible attacks: firmware extraction, cloning, botnets.
Cloud infrastructure:
Cache attacks between virtual machines (VMs).
Risk of information leakage between tenants.
PART D - Reflective Analysis and Perspectives
Skills acquired
Understanding hardware threats:
Ability to identify the physical and software vulnerabilities of embedded systems.
Mastery of side-channel attacks:
Ability to analyze information leaks (timing, cache, power) and exploit these flaws.
Software vulnerability exploitation:
Competence in buffer overflow exploitation, shellcode injection, and understanding of modern protections.
Secure design:
Development of reflexes to integrate security from the design phase (secure by design).
Holistic vision:
Ability to evaluate the overall security of a system by considering hardware, software, and physical attacks.
Key takeaways
1. Security ≠ Cryptography alone:
A mathematically secure algorithm can be vulnerable if its implementation leaks information.
2. Side channels are real:
Timing, cache, power consumption: these attacks are practical and have compromised real systems (bank cards, DRM).
3. Defense in depth:
No silver bullet. Combine multiple countermeasures to increase the cost of an attack.
4. Security/performance trade-off:
Protections cost performance, energy, and complexity. Finding the right balance depends on the context.
5. Constant evolution:
New attacks are regularly discovered (Spectre, Meltdown, Rowhammer). Continuous technology watch is essential.
Feedback
Eye-opening aspect:
This course opened my eyes to the fragility of systems against physical attacks. Seeing theoretical attacks work in lab sessions is impressive.
Difficulty of security:
Designing a secure system is difficult. You have to think like an attacker to identify all possible flaws.
Specialized tools:
Handling ChipWhisperer, GDB, and analyzing traces requires practice. The lab sessions allowed familiarization with these professional tools.
Necessary balance:
Countermeasures add complexity. The threat level must be assessed and protection adapted accordingly.
Practical applications
For a security engineer:
- Security audit of embedded systems
- Design of products resistant to physical attacks
- Security certification (Common Criteria, FIPS)
For an embedded developer:
- Writing attack-resistant code (constant timing)
- Avoiding classic vulnerabilities (buffer overflow)
- Testing robustness against faults
For a hardware designer:
- Integrating hardware countermeasures (sensors, masking)
- Choosing secure components (TEE, Secure Element)
- Evaluating risks from the design phase
In everyday life:
- Understanding the risks of connected objects (cameras, locks)
- Evaluating product security (bank cards, smartphones)
- Raising awareness about cybersecurity issues
Limitations and perspectives
Module limitations:
- Limited coverage of EM (electromagnetic) attacks
- No hands-on laser injection or voltage glitching
- Legal and ethical aspects barely addressed
Openings towards:
- Secure Elements: HSM, TPM, Trusted Execution Environments (TEE)
- Post-Quantum Cryptography: resistance to quantum computers
- Formal Verification: formal proofs of security
- Bug Bounty: ethical vulnerability research
Recent developments
Spectre and Meltdown attacks (2018):
Exploitation of speculative execution in modern processors.
Spectre: force a program to reveal its secrets via the cache.
Meltdown: read kernel memory from user space.
Impact: all Intel, AMD, ARM processors affected.
Rowhammer (2014):
Attack on DRAM memory: repeated access to memory rows can induce bit flips on adjacent rows.
Exploitation: privilege escalation, virtual machine escape.
Attacks on embedded AI:
Neural networks are vulnerable:
- Adversarial attacks (imperceptible perturbations)
- Model extraction through observation
- Backdoors in models
Growing concern with embedded AI (voice recognition, vision).
5G and IoT:
Explosion in the number of connected objects.
Considerable attack surface.
Need for lightweight and energy-efficient security.
Tips for success
1. Understand before exploiting:
Master the normal operation of a system before looking for flaws.
2. Take lab work seriously:
Hands-on exercises are essential for internalizing concepts.
3. Read the code:
Analyze source code (shellcode, AES) to understand vulnerabilities.
4. Think like an attacker:
Adopt an attacker's mindset: look for the weakest link, implicit assumptions.
5. Do your research:
Read academic papers, vulnerability reports (CVE), security blogs.
6. Respect ethics:
Never use this knowledge illegally. Ethical hacking only.
Conclusion
This module is fundamental for anyone working on embedded or critical systems. Hardware security is often neglected in favor of software security, but physical attacks are real and effective.
Transferable skills:
- Critical analysis of a system's security
- Deep understanding of processor and memory operation
- Ability to integrate security from the design phase
- Multidisciplinary vision (hardware, software, cryptography, physics)
Professional relevance:
With the explosion of IoT, Industry 4.0, and autonomous vehicles, hardware security is a field in high demand. Engineers trained in these issues are sought after.
Key message:
Security is a process, not a product. You must constantly evaluate, test, and improve. A system is never 100% secure, but the cost of an attack can be significantly increased.
Recommendations:
- Deepen knowledge with advanced courses (Riscure Academy, Coursera)
- Attend security conferences (Black Hat, DEF CON, CHES)
- Practice on platforms (Hack The Box, hardware security CTF)
- Join communities (r/ReverseEngineering, specialized forums)
- Stay informed about new vulnerabilities (CVE, security bulletins)
Links with other courses:
- Hardware Architecture - S6: caches, processors
- Microcontrollers - S6: ARM Cortex, embedded systems
- Operating Systems - S5: memory management
- C Language - S5: low-level programming
- Embedded IA for IoT - S9: security of connected objects
Course Documents
Complete Course
Complete hardware security course: side-channel attacks, buffer overflow, Spectre/Meltdown vulnerabilities.
Buffer Overflow
Course on buffer overflow attacks: exploitation, stack smashing, protections and countermeasures.
Lab: Cache Side-Channel Attack
Lab subject on cache side-channel attacks: timing attacks, Flush+Reload and experiments.
Course taken in 2023-2024 at INSA Toulouse, Department of Electrical Engineering and Computer Science.