Académique Documents
Professionnel Documents
Culture Documents
Big Data : offre des outils d‘analyse avancées pour les données
massives collectées par les objets IoT selon leurs
caractéristiques : volume, vitesse, variabilité (forme de données :
texte, audio, video, image).
Moufida Hajjaj – Sécurité des réseaux IoT 7
Technologies clés génériques
Les protocoles de communication : sont indispensables pour
Les utilisateurs doivent avoir confiance que les appareils IoT et les
Confidentialité
Est-ce que mon
système est privé?
acceptable.
signature.
Vulnérabilities
Menaces
Code malveillant
Attaques
Cible Impact et
conséquence:
• Indisponibilité
Génère du service,
• perte de
marché ou
Vulnérabilité d'image,…
195.20.100.254
Moufida Hajjaj – Sécurité des réseaux IoT 39
Menaces multiples
Déni de service (DoS) et DoS distribué (DDoS)
Mise hors service du système ciblé.
Introduction
Objectifs de la cryptographie
Vocabulaires
Systèmes de chiffrement
Chiffrement symétrique
Chiffrement asymétrique
Fonctions de hachage
Signature numérique
Objectifs de sécurité
Confidentialité
Authentification
Intégrité
Non-répudiation
Décryptement
Texte en clair
et/ou clé
privée ou secrète)
publique)
Chiffrement Déchiffrement
Texte en Texte Texte en
clair chiffré clair
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Texte en clair :
SECRET
Texte chiffré :
VHFUHW
Ainsi, dans un texte chiffré en français, si une lettre apparaît aux environs des
16%, nous pourrons assimiler cette lettre à un E ; et ainsi de suite avec les
autres lettre du texte chiffré.
Moufida Hajjaj – Sécurité des réseaux IoT 61
Chiffrement de César : Exemple
Tableau des fréquences des lettres en français
A B C D E F G H I J K L M
7,68 0,8 3,32 3,6 17,76 1,06 1,1 0,64 7,23 0,19 0 5,89 2,72
N O P Q R S T U V W X Y Z
7,61 5,34 3,24 1,34 6,81 8,23 7,3 6,05 1,27 0 0,54 0,21 0,07
N O P Q R S T U V W X Y Z Total
4 1 7 2 1 1 0 1 0 3 0 4 3 62
6,5 1,6 11,3 3,2 1,6 1,6 0 1,6 0 4,8 0 6,5 4,8 100
Principe de chiffrement
Enoncé
Solution
Kzorpmgi ym il vjw v z u k rg
Texte chiffré: K z o r p m g i y m i l v j w v z u k r g
128 bits
128 bits 192 bits
256 bits
𝑎0 𝑎4 𝑎8 𝑎12 𝑘0 𝑘4 𝑘8 𝑘12 𝑘16 𝑘20 𝑘24 𝑘28
𝑎1 𝑎5 𝑎9 𝑎13 𝑘1 𝑘5 𝑘9 𝑘13 𝑘17 𝑘21 𝑘25 𝑘29
𝑎2 𝑎6 𝑎10 𝑎14 𝑘2 𝑘6 𝑘10 𝑘14 𝑘18 𝑘22 𝑘26 𝑘30
𝑎3 𝑎7 𝑎11 𝑎15 𝑘3 𝑘7 𝑘11 𝑘15 𝑘19 𝑘23 𝑘27 𝑘31
Chiffrement
AES chiffrement à clé secrète par blocs de 128 bits
Algorithme
Paramètres en entrée : Un tableau State (texte clair), une clé K.
Valeur en sortie : Un tableau State chiffré
KeyExpansion( K, RoundKeys )
AddRoundKey( State, RoundKeys[0] ) // Addition initiale
Pour r = 1 à Nr – 1 Faire
Subbytes(State)
ShiftRows(State)
MixColumns(State)
AddRoundKey( State, RoundKeys[r] )
Fin Pour
// Tour final
Subbytes(State)
ShiftRows(State)
AddRoundKey( State, RoundKeys[Nr] )
𝑎0 𝑎4 𝑎8 𝑎12 𝑏0 𝑏4 𝑏8 𝑏12
𝑎1 𝑎5 𝑎9 𝑎13 𝑏1 𝑏5 𝑏9 𝑏13
𝑎2 𝑎6 𝑎10 𝑎14 𝑏2 𝑏6 𝑏10 𝑏14
𝑎3 𝑎7 𝑎11 𝑎15 𝑏3 𝑏7 𝑏11 𝑏15
2. Fonction ShiftRows
𝑏0 𝑏4 𝑏8 𝑏12 𝑏0 𝑏4 𝑏8 𝑏12
𝑏1 𝑏5 𝑏9 𝑏13 𝑏5 𝑏9 𝑏13 𝑏1
𝑏2 𝑏6 𝑏10 𝑏14 𝑏10 𝑏14 𝑏2 𝑏6
𝑏3 𝑏7 𝑏11 𝑏15 𝑏15 𝑏3 𝑏7 𝑏11
3. Fonction MixColumns
Brouillage des colonnes : Chaque colonne est transformée par
combinaisons linéaires des différents éléments de la colonne (ce qui
revient à multiplier la matrice 4×4 par une autre matrice 4×4).
𝑏0 𝑏4 𝑏8 𝑏12 𝑐0 𝑐4 𝑐8 𝑐12
𝑏1 𝑏5 𝑏9 𝑏13 𝑐1 𝑐5 𝑐9 𝑐13
𝑏2 𝑏6 𝑏10 𝑏14 𝑐2 𝑐6 𝑐10 𝑐14
𝑏3 𝑏7 𝑏11 𝑏15 𝑐3 𝑐7 𝑐11 𝑐15
c0 02 03 01 01 b0
b
c 01 02 03 01
c( X ) a( X ) b( X ) mod ( X 4 1) 1 1
c2 01 01 02 03 b2
c3 03 01 01 02 b3
Moufida Hajjaj – Sécurité des réseaux IoT 79
Chiffrement AES
4. Fonction AddRoundKey
Addition de la clé secrète: consiste à faire un ou exclusif (XOR) entre les 128
bits des données à chiffrer et les 128 bits de la clé de tour.
𝑐0 𝑐4 𝑐8 𝑐12 𝑘0 𝑘4 𝑘8 𝑘12
𝑐1 𝑐5 𝑐9 𝑐13 𝑘1 𝑘5 𝑘9 𝑘13
𝑐2 𝑐6 𝑐10 𝑐14 𝑘2 𝑘6 𝑘10 𝑘14
𝑐3 𝑐7 𝑐11 𝑐15 𝑘3 𝑘7 𝑘11 𝑘15
𝑑0 𝑑4 𝑑8 𝑑12
𝑑1 𝑑5 𝑑9 𝑑13
𝑑2 𝑑6 𝑑10 𝑑14
𝑑3 𝑑7 𝑑11 𝑑15
et Martin Hellman
Etapes
A = ga mod p
B = gb mod p
Exemple
Clé publique p = 79
Base publique s = 56
Alice choisit a = 35
Alice calcule A = sa mod p = (56) 35 mod 79 =
1536671176410377226593671913126918938977388947109059438942
6176 mod 79 = 24
Bob choisit b = 12
Bob calcule B = sb mod p = (56) 12 mod 79 = 951166013805414055936
mod 79 = 1
Alice calcule la clé k = Ba mod p = (1) 35 mod 79 = 1 mod 79 = 1
Bob calcule la clé k = Ab mod p = (24)12 mod 79 = 36520347436056576
mod 79 = 1
A = ga mod p C = gc mod p
C = gc mod p B = gb mod p
déchiffrement:
une clé publique qui peut être distribuée ou rendue publique sur
demande.
composites.
Méthode
Chiffrement et déchiffrement
Supposons que Bob désire envoyer un message à Alice. Par exemple,
un nombre x dans la gamme de 0 à M-1.
y = xe mod M
x = yd mod M
Exemple 1
Choisissez p et q; p = 7 et q = 11
Calculez M et N
M = p * q = 7 * 11 = 77
N = (p-1) * (q-1) = 6 * 10 = 60
Sélectionnez e, e = 17
Calculez d, d = (60*c+1)/17
Exemple 1
e = 17 , N = 60
Calcule de d
Algorithme d'Euclide : calcul du PGCD de N = 60 et e = 17
60 = 3*17+9
17 = 1*9+8
9 = 1*8+1
Formule de Bezout : On remonte les calculs qui ont servi a trouver le PGCD :
1 = 1*9 + -1*8
1 = -1*17 + 2*9
1 = 2*60 + -7*17
d = 60-7 = 53
Exemple
Bob veut envoyer à Alice “HELLO WORLD”
Représente chaque lettre comme un nombre 00(A) à 25(Z)
Calcule:
0717 mod 77 = 28,
0417 mod 77 = 16,
…,
0317 mod 77 = 75
Envoie à Alice : 28 16 44 44 42 38 22 42 19 44 75
Alice décrypte chaque nombre avec sa clé privée et obtient
"HELLO WORLD".
Exemple 2
Choisissez p et q; p = 5 et q = 11
Calculez M et N
M = p * q = 5 * 11 = 55
N = (p-1) * (q-1) = 4 * 10 = 40
Sélectionnez e, e = 7
Calculez d, d = (40*c+1)/7
Exemple 2
e = 7 , N = 40
Calcule de d
Algorithme d'Euclide : calcul du PGCD de N = 40 et e = 7
40 = 5*7+5
7 = 1*5+2
5 = 2*2+1
Formule de Bezout : On remonte les calculs qui ont servi a trouver le PGCD :
1 = 1*5 + -2*2
1 = -2*17 + 3*5
1 = 3*40 + -17*7
d = 40-17 = 23
Exemple 3
Choisissez p et q; p = 47 et q = 91
Calculez M et N
M = p * q = 5 * 11 = 3337
N = (p-1) * (q-1) = 4 * 10 = 3220
Sélectionnez e, e = 79
Calculez d, d = (3220*c+1)/79
Transmission du document
Document Document
Algorithme de hachage à
Hachage sens unique, résistant aux Hachage
collisions
comparaison
Empreinte reçu
Moufida Hajjaj – Sécurité des réseaux IoT 107
Contrôle d’intégrité
Comment utiliser une fonction de hachage pour vérifier l'intégrité d'un
document numérique ?
Initialement le code de hachage du document numérique est calculé et
stocké dans un endroit sûre.
Ultérieurement ce code est recalculé et comparé à celui qui a été stocké.
Si les deux valeurs sont égales alors le document n'a pas été modifié.
Sinon, le document a subit une modification.
Les fonctions message digest (MD) sont parmi les premières mais
128 bits;
Longueur
du message
01000011011001010110001101101001
00100000011001010111001101110100
00100000011101010110111000100000
01100101011110000110010101101101
01110000011011000110010100100000
01100100011001010010000001101000
01100001011000110110100001100001
011001110110010100101110
01000011011001010110001101101001
00100000011001010111001101110100
00100000011101010110111000100000
01100101011110000110010101101101
01110000011011000110010100100000
01100100011001010010000001101000
01100001011000110110100001100001
01100111011001010010111010000000
00000000000000000000000000000000
00000000000000000000000011111000
Afin de réduire notre matrice 16 X 32, on débute par jumeler les lignes
1, 5, 9, et 13 afin d'en extraire une seule ligne avec les fonctions OR,
AND, XOR et Rotation.
Voici un tableau contenant uniquement les lignes concernées.
Ligne 1 01000011011001010110001101101001
Ligne 5 01110000011011000110010100100000
Ligne 9 00000000000000000000000000000000
Ligne 13 00000000000000000000000000000000
Dans le cas présent, nous n'allons utiliser que les fonctions XOR
et Rotation.
Ligne 1 : 01000011011001010110001101101001
Ligne 5 : 01110000011011000110010100100000
Ligne 1 XOR 5 : 00110011000010010000011001001001
a1 : 00110011000010010000011001001001
Ligne 9 : 00000000000000000000000000000000
Ligne 9 XOR a1 : 00110011000010010000011001001001
a2 : 00110011000010010000011001001001
Ligne 13 : 00000000000000000000000000000000
Ligne 13 XOR a2 : 00110011000010010000011001001001
aa: 00110011000010010000011001001001
aaa: 01001000001100100100100110011000
Ligne 2 00100000011001010111001101110100
Ligne 6 01100100011001010010000001101000
Ligne 10 00000000000000000000000000000000
Ligne 14 00000000000000000000000000000000
Dans le cas présent, nous n'allons utiliser que les fonctions XOR
et Rotation.
Ligne 2 : 00100000011001010111001101110100
Ligne 6 : 01100100011001010010000001101000
Ligne 2 XOR 6 : 01000100000000000101001100011100
a1 : 01000100000000000101001100011100
Ligne 10 : 00000000000000000000000000000000
Ligne 10 XOR a1
01000100000000000101001100011100
:
a2 : 01000100000000000101001100011100
Ligne 14 : 00000000000000000000000000000000
Ligne 14 XOR a2
01000100000000000101001100011100
:
aa: 01000100000000000101001100011100
aaa: 00000010100110001110001000100000
Lignes 1, 5, 9, 13 : 01001000001100100100100110011000
Lignes 2, 6, 10, 14 : 00000010100110001110001000100000
Lignes 3, 7, 11, 15 : 10110000001100100000101000001000
Lignes 4, 8, 12, 16 : 11101010010110001010100000010000
483249980298e220b0320a08ea58a810
Alice Bob
Transmission du message
Message Message
Algorithme de hachage à
Hachage sens unique, résistant aux Hachage
collisions
comparaison
Empreinte reçu
Eve
M M’
h (M) h (M)
Alice Bob
Alice Bob
Transmission du document
Document Document
Clé Clé
Hachage secrète K
Hachage
secrète K
comparaison
MAC reçu
Code Python
import hashlib;
import hmac;
key="bill"
Message = " Bonjour"
print("HMAC (MD5): "+hmac.new(key.encode(), Message.encode(),
hashlib.md5).hexdigest())
print("HMAC (SHA1): "+hmac.new(key.encode(), Message.encode(),
hashlib.sha1).hexdigest())
print("HMAC (SHA256): "+hmac.new(key.encode(), Message.encode(),
hashlib.sha256).hexdigest())
print("HMAC (SHA512): "+hmac.new(key.encode(), Message.encode(),
hashlib.sha512).hexdigest())
Résultat
HMAC (MD5): da66a331e9a9d2a9d0a640e4bf9ccdc6
HMAC (SHA1): 47a5ef43ffa9f667a42cb42c7c2be4e68dd73d53
HMAC (SHA256): d003bb56ee27ed34aafea2952b60a3c8b089504cbba5cfb8f296a2777ac34f50
HMAC (SHA512):
3e46f918d888612b414cff03e0402103dc25cc1b8528beabd269b1f0c49413447081f783cc9200262
c0067a9e033b6a9deaa9a15284301e64818b78d072bc02c
document créé
par Charlotte Py75c%bn 3kJfgf*£$&
3kJfgf*£$&
RSA
SHA, MD5
Générer Chiffrement
le haché asymétrique
Calculer un condensé de
message à l'aide d'une fonction de
hachage.
priv
La clé
privée de
Document Charlotte
signé
SHA, MD5
Voici le Message Digest
document Générer Py75c%bn
créé par le haché
Charlotte
3kJfgf*£$&
Document Egaux ??
signé Signature
numérique
RSA
Clé publique de
Charlotte
Alice Bob
Transmission du message M
Message M Message M
Fonction de Fonction de
Hachage Hachage
h = H(M) h = H(M)
Chiffrement
avec la Clé privée
d’Alice Empreinte calculé
SE = C(H(M))
comparaison
Empreinte déchiffré
Déchiffrement avec la
Clé publique d’Alice
(Authentification)
Transmission de SE
SE reçu
Moufida Hajjaj – Sécurité des réseaux IoT 146
Signature numérique
1. Alice utilise une fonction de hachage (MD5 ou SHA-1 par exemple)
pour calculer l’empreinte du message (un condensé du message),
2. Alice chiffre l’empreinte avec sa clé privée; l’empreinte chiffrée
constitue la signature numérique du message,
3. Alice envoi à Bob : le message, la signature numérique, le nom de
la fonction de hachage utilisée, sa clé publique.
4. Bob déchiffre la signature avec la clé publique de Alice:
Authentification de Alice,
5. Bob calcule l’empreinte du message provenant de Alice (avec la
même fonction de hachage que celle employée par Alice),
6. Bob compare les 2 empreintes : si elles sont identiques, cela
signifierait que le message est intègre.
La signature électronique permet aussi de garantir que Alice ne peut
pas nier avoir envoyé le message parce qu’il est, a priori, le seul qui
possède la clé privée : Non-Repudiation.
Solution :
1. Alice crée une paire de clés asymétriques : il conserve la clé privée et
envoie la clé publique à Bob,
2. Bob crée une paire de clés asymétriques : une clé privée qu'elle
conserve, et une clé publique qu'elle diffuse librement, notamment à
Alice,
3. Alice effectue un condensat de son message en clair puis chiffre ce
condensat avec sa propre clé privé : Signature numérique,
4. Alice chiffre son message avec la clé publique de Bob
(Confidentialité),
5. Alice envoie le message chiffré accompagné du condensat chiffré (la
signature numérique),
Solution :
6. Bob reçoit le message chiffré de Alice, accompagné de la signature
numérique,
7. Bob déchiffre le message avec sa propre clé privée. À ce stade le
message est lisible mais elle ne peut pas être sûre que Alice en est
l'expéditeur,
8. Bob déchiffre le condensat avec la clé publique de Alice
(Authentification),
9. Bob utilise la même fonction de hachage sur le texte en clair pour
calculer le haché et compare le résultat avec le condensat déchiffré de
Alice. Si les deux condensats correspondent, alors Bob peut avoir la
certitude que le message est intègre.
chiffrement.
l’Authentification et la Non-Répudiation.
Networks (LoWPAN).
802.15.4.
La sécurité est assurée par une sous-couche, qui est insérée dans la
paquets.
Application
UDP/TCP
IPv6
6LoWPAN
IEEE 802.15.4 Security sublayer
IEEE 802.15.4 MAC
IEEE 802.15.4 PHY
avec AES.
logiciel).
détail.
CBC)
IV
Clé CBC AES-CBC-MAC
(Autnetification)
Message
MAC Chiffré
AES-CTR
Message
Clé CTR (Chiffrement)
chiffré
CTR
Message