Concepts Cryptographique
Comme cité dans l'article précédent, j'avais dit que la cryptographie était l'art de protéger un message en s'assurant de sa confidentialité, de son authenticité, de son intégrité, nous allons voir ces 3 notions.
Confidentialité:
Les données ne sont connues que des entités communicantes
C'est la mis en oeuvre d'un crypto système qui va gérer le chiffrement du message.
Crypto Système: M=Message, C=Chiffrer, K clé , H hash
Confidentialité par un système symétrique,
La même clé est utilisée pour Ek(M) et Dk(C).
Ce type de chiffrement nécessite un échange sûr
préalable de la clé K entre les entités A et B.
clé K chiffrement clé K déchiffrement
(A) ! ! (B)
M=>algo=>C ---------------->> C=>algo=>M
Confidentialité d’un système asymétrique,
Chaque entité possède sa propre paire de clés.
On aura donc la paire PkA, SkA pour l’entité A
et la paire PkB, SkB pour l’entité B.
Pk Public Key, Sk Secret Key
Chaque entité expéditrice utilise la public key de l'autre entité pour chiffrer C un message M, l'entité destinatrice déchiffre C avec sa clé secrète et récupère M.
clé PkB chiffrement clé SkB déchiffrement
(A) ! ! (B)
M=>algo=>C ----------------->> C=>algo=>M
Confidentialité d’un système hybride,
Avec le système à clé publique, on sécurise l’échange de la clé K (clé de session).
Les deux parties ayant acquis de manière sécurisée la clé de chiffrement K , On utilisera le système à clé symétrique pour chiffrer le message.
Génération clé K ( clé de session)
clé PkB chiffrement clé SkB déchiffrement
(A) ! ! (B)
K=>algo=>PkB(K) ----------->> PkB(K)=>algo=>K
clé K chiffrement clé K déchiffrement
(A) ! ! (B)
M=>algo=>C ------------------>> C=>algo=>M
Nous verrons un exemple concret d'échange dans un prochain article.
Garantir l’identité d’une entité
- Authentification par chiffrement (somme de contrôle)
- Authentification par hashage
- Authentification par MAC
MAC,Message Authentication Code) est un code accompagnant des
données dans le but d'assurer l'intégrité de ces dernières, en permettant
de vérifier qu'elles n'ont subi aucune modification, après une transmission
par exemple.
Au niveau des parties communicantes
Authentification symetrique
Ra est un nombre aléatoire, propre à l’utilisateur A.
A et B sont des identifiants personnels
A B
Generation Ra ======Ra========> E(Ra',B)
Dk ( E(Ra',B) ) <=== E(Ra',B) Rb=== Generation Rb
Ek(Rb,A) ==== Ek(Rb,A) ===> Dk ( Ek(Rb,A) )
Authentification asymetrique
L'expéditeur utilise la clé privé pour le chiffrement du message
Le destinataire ayant la clé publique peut vérifier l'authenticité du message
La confidentialité ne s'applique dans ce contexte.
A B
clé de chiffrement clé de déchiffrement
SkA PkA
! !
A-->algo--->C ====A|C======> C==algo) =====>A' A===========> ?=? comparaison
Au niveau du message
Authentification par MAC et syteme Symetrique
La clé secrète K utilisée étant partagée par les deux entités A et B.
Le MAC prend les dernier chiffres de C caclulés avec algo sur M et K
Le Message M et le MAC est envoyé au destinataire
L’authentification repose sur l’utilisation de la clé K.
Le MAC' est reconstitué des derniers chiffres de C avec algo sur M et K
Le MAC envoyé est vérifié avec le MAC' recalculer par le destinataire
(A) (B)
/------------- M
/ !
M / K===> algo
\ =algo => C =>MAC===>M|MAC==>/ !
/ \ C
K \ !
\- MAC ?=? MAC' comparaison
Authentification par MAC et hashage
La clé secrète K utilisée étant partagée par les deux entités A et B.
Le MAC est caclulé avec le hash sur le message M avec clé K par l'expéditeur
Le Message M et le MAC est envoyé au destinataire
L’authentification repose sur l’utilisation de la clé K.
Le MAC' est recalculé côté destinataire sur le message M avec clé K
Le MAC envoyé est vérifié avec le MAC' recalculer par le destinataire
(A) (B)
/------------- M
/ !
M / K===> Hash
\ =Hash===> MAC ===>M|MAC==>/ !
/ \- MAC ?=? MAC' comparaison
K
Authentification par signature
On fait abstraction de la confidentialité. C’est l’authentification qui importe.
L'expéditeur calcul le hash du Message M
On signe avec la clé privé SkA de l'expéditeur le hash H(M)
L'expéditeur envoi le message M et la signature au destinataire
Le destinataire recalcul H(M)' le Hash du Message M
Le destinataire récupère le hash H(M) venant de l'expéditeur avec la PkA
Le destinataire vérifie la valeur de hash H(M) avec le hash recalculer H(M)'
---------- M
/ !
/ Hash H(M)'
/ ? =? comparaison
M=>Hash H(M) => algo=>sign =>M|sign=>/ Hash H(M)
/ \ !
SkA \ PkA =>algo
\ !
\------- sign
Intégrité:
S'assurer que les message n'a pas subi de modification entre les entités communicantes
Envoi du message
M ================> M => Hash H(M)'
!
(A) (B) !
!
Hash H(M) ================> Hash H(M) ?=?' comparaison .
Une valeur de hashage se calcul rapidement
Une valeur de hashage ne permet pas de retrouver sa valeur initiale
Un message ne peut être modifier sans recalculer sa valeur de hashage
Deux message différents ne peuvent pas avoir la même valeur de hashage.