Cours 7SIN

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
Alice --[Cle K]--> Chiffre --[Cle K]--> Bob

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
Alice chiffre avec Cle_pub_Bob → Bob dechiffre avec Cle_priv_Bob

// 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"

AspectSymetriqueAsymetrique
VitesseRapideLent (1000x)
Echange de cleProblematiqueSimple (publique)
UsageChiffrement donneesEchange de cles, signature
ExemplesAES, ChaCha20RSA, 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

AlgorithmeTailleStatutUsage
MD5128 bitsObsoleteChecksums uniquement
SHA-1160 bitsDeprecieLegacy, eviter
SHA-256256 bitsRecommandeSignatures, certificats
bcryptVariableRecommandeMots 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

AttaqueDescriptionProtection
Brute ForceTester toutes les combinaisonsLimitation tentatives, captcha
Man-in-the-MiddleInterception des communicationsTLS/HTTPS, certificats
Replay AttackRejouer une requete intercepteeNonce, timestamp, tokens
InjectionInjecter du code malveillantValidation entrees, sanitization
DDoSSurcharge du systemeRate 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

  1. 1Le chiffrement symetrique (AES) est rapide ; l'asymetrique (RSA) resout l'echange de cles.
  2. 2Les fonctions de hachage (SHA-256) garantissent l'integrite et permettent de stocker les mots de passe.
  3. 3L'authentification forte (2FA) combine au moins deux facteurs : savoir, posseder, etre.
  4. 4Les nonces et timestamps protegent contre les attaques par rejeu.
  5. 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

Scientia