lundi 24 octobre 2016

02 - Notions de base


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.

Authenticité:

                    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.