Securite des Systemes
Cryptographie, authentification, vulnerabilites et protection
Objectifs pedagogiques
- Comprendre les principes de la cryptographie symetrique et asymetrique
- Identifier les principales vulnerabilites des systemes numeriques
- Mettre en oeuvre des mecanismes d'authentification securises
- Appliquer les bonnes pratiques de securisation des communications
Introduction : Pourquoi securiser ?
Exemple concret : Serrure connectee
Une serrure connectee permet d'ouvrir votre porte via smartphone. Si la communication n'est pas chiffree, un attaquant peut intercepter le code et entrer chez vous. La securite n'est pas optionnelle : elle est critique pour les systemes IoT.
La securite informatique repose sur trois piliers fondamentaux : la Confidentialite (seuls les autorises accedent), l'Integrite (donnees non modifiees), et la Disponibilite (systeme accessible). C'est le triangle CIA.
Triangle CIA de la securite
Confidentialite
Chiffrement
Integrite
Hash, signature
Disponibilite
Redondance
1Cryptographie : L'Art du Secret
Vocabulaire essentiel
- Texte clair : Message original lisible
- Texte chiffre : Message transforme, illisible sans cle
- Cle : Secret permettant de chiffrer/dechiffrer
- Algorithme : Methode de transformation (AES, RSA...)
Chiffrement symetrique
Principe
- Meme cle pour chiffrer et dechiffrer
- Rapide, adapte aux gros volumes
- Probleme : partage de la cle
Algorithmes
- AES : Standard actuel (128/256 bits)
- DES : Obsolete (56 bits, cassable)
- ChaCha20 : Alternative moderne
Chiffrement asymetrique (cle publique/privee)
Principe : Deux cles mathematiquement liees
- Cle publique : Partageable, sert a chiffrer
- Cle privee : Secrete, sert a dechiffrer
// Exemple XOR simple (NE PAS utiliser en production !)
void xorCipher(char* data, char* key, int len) {
int keyLen = strlen(key);
for(int i = 0; i < len; i++) {
data[i] = data[i] ^ key[i % keyLen];
}
}
// XOR est reversible : meme fonction pour chiffrer/dechiffrer
// "Hello" XOR "key" = chiffre
// chiffre XOR "key" = "Hello"
| Aspect | Symetrique | Asymetrique |
|---|---|---|
| Vitesse | Rapide | Lent (1000x) |
| Echange de cle | Problematique | Simple (publique) |
| Usage | Chiffrement donnees | Echange de cles, signature |
| Exemples | AES, ChaCha20 | RSA, ECC |
HTTPS/TLS : Utilise les deux ! RSA pour echanger une cle AES, puis AES pour chiffrer les donnees. C'est le meilleur des deux mondes.
2Fonctions de Hachage et Integrite
Qu'est-ce qu'un hash ?
Une fonction de hachage transforme des donnees de taille variable en une empreinte de taille fixe. Elle est unidirectionnelle (impossible de retrouver les donnees originales) et deterministe (meme entree = meme sortie).
Proprietes d'un bon hash
Resistance aux collisions
Difficile de trouver deux entrees avec meme hash
Effet avalanche
1 bit change = hash completement different
Irreversibilite
Impossible de retrouver l'entree depuis le hash
Rapidite
Calcul rapide meme pour gros fichiers
// Exemple de hash SHA-256
Entree: "Hello"
SHA-256: 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
Entree: "hello" (minuscule)
SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
// Completement different ! Effet avalanche.
Algorithmes de hachage
| Algorithme | Taille | Statut | Usage |
|---|---|---|---|
| MD5 | 128 bits | Obsolete | Checksums uniquement |
| SHA-1 | 160 bits | Deprecie | Legacy, eviter |
| SHA-256 | 256 bits | Recommande | Signatures, certificats |
| bcrypt | Variable | Recommande | Mots de passe |
Applications des hash
- Verification d'integrite : hash d'un fichier telecharge
- Stockage de mots de passe : on stocke le hash, pas le mdp
- Signature numerique : hash signe avec cle privee
- Blockchain : chaque bloc contient le hash du precedent
3Authentification et Controle d'Acces
Les 3 facteurs d'authentification
Ce que je sais
Mot de passe, PIN, question secrete
Ce que je possede
Badge, telephone, cle USB
Ce que je suis
Empreinte, visage, iris
Authentification forte (2FA/MFA)
// Authentification a deux facteurs (2FA)
Etape 1 : Mot de passe (ce que je sais)
→ Verification du hash en base de donnees
Etape 2 : Code OTP (ce que je possede)
→ Code a 6 chiffres genere toutes les 30s
→ Base sur secret partage + timestamp (TOTP)
// Algorithme TOTP simplifie
code = HMAC-SHA1(secret, time/30) mod 10^6
Stockage securise des mots de passe
Ne JAMAIS faire
- Stocker les mots de passe en clair
- Utiliser MD5 ou SHA1 seul
- Utiliser le meme sel pour tous les utilisateurs
Bonne pratique : hash + sel
sel = random(16 bytes)
hash = bcrypt(mot_de_passe + sel, iterations=12)
stockage = sel + hash
// Verification mot de passe Arduino (simplifie)
#include <SHA256.h>
// Hash pre-calcule du mot de passe "1234"
const char* HASH_ATTENDU = "03ac67...";
bool verifierCode(char* code) {
SHA256 sha;
sha.update(code, strlen(code));
char hash[65];
sha.finalize(hash);
return strcmp(hash, HASH_ATTENDU) == 0;
}
4Vulnerabilites et Attaques Courantes
Types d'attaques
| Attaque | Description | Protection |
|---|---|---|
| Brute Force | Tester toutes les combinaisons | Limitation tentatives, captcha |
| Man-in-the-Middle | Interception des communications | TLS/HTTPS, certificats |
| Replay Attack | Rejouer une requete interceptee | Nonce, timestamp, tokens |
| Injection | Injecter du code malveillant | Validation entrees, sanitization |
| DDoS | Surcharge du systeme | Rate limiting, CDN |
Securite specifique IoT/Embarque
Vulnerabilites courantes
- Mots de passe par defaut
- Communications non chiffrees
- Pas de mise a jour firmware
- Debug port accessible (JTAG)
- Cles codees en dur
Bonnes pratiques
- Forcer changement mdp initial
- TLS/DTLS pour communications
- OTA (Over-The-Air) updates
- Desactiver debug en prod
- Secure boot, stockage chiffre
// Protection contre attaque replay - utiliser un nonce
unsigned long dernierNonce = 0;
bool validerCommande(char* cmd, unsigned long nonce) {
// Verifier que le nonce est nouveau
if(nonce <= dernierNonce) {
return false; // Rejeu detecte !
}
dernierNonce = nonce;
return true;
}
OWASP IoT Top 10 : Liste des 10 vulnerabilites les plus critiques pour les objets connectes. A consulter avant tout projet IoT !
Resume en 5 points cles
- 1Le chiffrement symetrique (AES) est rapide ; l'asymetrique (RSA) resout l'echange de cles.
- 2Les fonctions de hachage (SHA-256) garantissent l'integrite et permettent de stocker les mots de passe.
- 3L'authentification forte (2FA) combine au moins deux facteurs : savoir, posseder, etre.
- 4Les nonces et timestamps protegent contre les attaques par rejeu.
- 5Les objets IoT necessitent une attention particuliere : TLS, OTA, pas de cles en dur.
Mini-Quiz
Question 1 : Quel type de chiffrement utilise la meme cle pour chiffrer et dechiffrer ?
a) Asymetrique
b) Symetrique
c) Hachage
Reponse : b) Le chiffrement symetrique utilise une cle unique partagee
Question 2 : Pourquoi ajouter un "sel" au hash d'un mot de passe ?
a) Pour accelerer le calcul
b) Pour empecher les attaques par dictionnaire/rainbow tables
c) Pour reduire la taille du hash
Reponse : b) Le sel rend chaque hash unique meme pour le meme mot de passe
Question 3 : Qu'est-ce qui protege contre une attaque Man-in-the-Middle ?
a) Un mot de passe complexe
b) Le chiffrement TLS avec certificats
c) Un pare-feu
Reponse : b) TLS chiffre les communications et les certificats authentifient le serveur
