Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Sécurité des applications web
  3. Introduction à la cryptographie
Extrait - Sécurité des applications web Stratégies offensives et défensives
Extraits du livre
Sécurité des applications web Stratégies offensives et défensives Revenir à la page d'achat du livre

Introduction à la cryptographie

L’encodage

L’encodage n’est pas à proprement parler de la cryptographie, mais il s’agit d’une bonne introduction à ce chapitre. L’encodage est simplement le fait de représenter une information sous une autre forme sans en changer le sens originel. Cela est utile afin d’échanger plus facilement des informations entre plusieurs entités, mais il n’apporte cependant aucune garantie concernant la confidentialité, l’intégrité ou l’authenticité de la donnée à transmettre.

L’encodage est encore trop souvent utilisé pour protéger des données sensibles transitant lors des échanges ou stockées au niveau des serveurs. Il est également possible de retrouver ce type de données au niveau du client pour les applications qui utilisent les cookies ou le stockage du navigateur tel que le Local Storage ou le Session Storage.

Un nombre important de techniques d’encodage existent ; seuls quelques encodages utilisés fréquemment par les applications web sont détaillés dans ce chapitre.

1. L’encodage URL

L’encodage URL va permettre de faire transiter de l’information via les URL, ou dans la soumission de formulaires, lorsque cette information contient certains caractères réservés. Les caractères réservés (https://datatracker.ietf.org/doc/html/rfc3986#section-2.2) possèdent une signification particulière pour les navigateurs et les serveurs :

:

/

?

#

[

]

@

!

$

&

’...

Le hachage

Une fonction de hachage permet, à partir d’une donnée arbitraire, de calculer une donnée de taille fixe en sortie, généralement entre 128 et 512 bits. La donnée de sortie est nommée empreinte, hash ou encore condensat. Pour une entrée donnée, l’empreinte calculée par la fonction sera toujours la même :

images/09EP04.png

Calculer une empreinte d’un document peut permettre d’effectuer un test d’intégrité afin de déterminer si le document en question a été modifié entre temps, ou de comparer si plusieurs documents sont identiques entre eux. Certains sites utilisent ce procédé en affichant l’empreinte du document ou du logiciel à télécharger sur la page de téléchargement, en général d’un logiciel à installer. Cela permet à l’utilisateur de télécharger le fichier, de calculer à nouveau son empreinte, puis de la comparer avec celle affichée. Si les empreintes correspondent, cela signifie que le fichier n’a pas été altéré et peut être installé sereinement. Le téléchargement du logiciel VirtualBox propose la vérification de telles empreintes en utilisant les algorithmes MD5 ou SHA256 :

images/09EP05.png

Il existe des fonctions de hachage qui ne sont...

Le chiffrement

Le chiffrement est un processus cryptographique permettant à une entité (une personne ou un programme) de rendre inintelligible une information, excepté pour les entités possédant la clé de déchiffrement adéquate. Un tel processus permet donc d’appliquer le critère de confidentialité à une donnée. Il existe deux systèmes différents de chiffrement : le chiffrement symétrique et le chiffrement asymétrique.

1. Chiffrement symétrique

Le système de chiffrement symétrique est le moins complexe à appréhender. Il nécessite une seule clé cryptographique, utilisée pour le chiffrement et le déchiffrement, qui doit être connue par les différentes entités.

Par exemple, si une personne, nommée Alice, veut envoyer un message à son ami Bob mais souhaite garder ce message confidentiel, et que seul Bob peut en lire le contenu, elle peut, pour cela, s’appuyer sur la cryptographie symétrique. Mais un problème se pose, comment Alice va envoyer la clé à Bob afin qu’il puisse déchiffrer le message ?

images/09EP07.png

Hors de question d’envoyer la clé en même temps que le message, si quelqu’un intercepte la clé et le message, il n’aura aucune difficulté pour en connaître le contenu. Il est possible d’envoyer la clé dans un premier temps puis, dans un second message, d’envoyer le message chiffré à Bob, mais le problème reste sensiblement le même. Si une personne tierce intercepte la clé du premier échange, il pourra également déchiffrer le message envoyé dans le second message. De plus, ni Alice ni Bob n’auront le moyen de savoir que la clé est dorénavant connue par une autre personne, nommée ici Eve :

images/09EP08.png

Pour remédier à cela, Alice et Bob doivent au préalable effectuer l’échange de clés en se rencontrant physiquement par exemple. Maintenant qu’ils sont tous les deux en possession de la clé, plus rien n’empêche Alice, de chiffrer son message, puis de l’envoyer à Bob, qui pourra le déchiffrer :

images/09EP09.png

Bien sûr, dans ce cas, Alice n’a qu’à...

La signature

De façon similaire à la signature manuscrite, la signature numérique a pour rôle d’assurer au destinataire les propriétés d’authentification, d’intégrité et de non-répudiation. L’authentification permet de s’assurer que la personne apposant sa signature est bien la personne qu’elle présume être. L’intégrité permet de s’assurer que le document n’a pas été modifié/falsifié entre le moment où la personne a apposé sa signature et la lecture de celui-ci, et la non-répudiation permet de s’assurer que la personne ayant apposé sa signature ne pourra nier de l’avoir fait. La signature numérique repose sur la cryptographie asymétrique. Cette fois, c’est la clé privée qui va permettre de signer un document et la clé publique qui va permettre de la vérifier.

Afin qu’Alice puisse signer un document et le transmettre à Bob à des fins de vérification, Alice doit tout d’abord générer une paire de clés. Elle garde secrète sa clé privée et met à disposition de Bob sa clé publique. Cette fois, Alice ne va pas envoyer un message chiffré car la signature n’a pas pour vocation de protéger la confidentialité du message...

HMAC (Hash-Based Message Authentication Code)

HMAC est un protocole qui permet de s’assurer de l’intégrité et de l’authenticité d’un message. Il repose sur une clé secrète et sur l’utilisation d’une fonction de hachage. Le nom de l’algorithme est composé du sigle HMAC et du nom de la fonction de hachage utilisée, par exemple HMAC-MD5, HMAC-SHA1 ou HMAC-SHA-256. La qualité cryptographique du HMAC dépend de deux facteurs : la longueur de la clé secrète utilisée et la robustesse de la fonction de hachage utilisée.

Suite à un échange de la clé secrète, Alice calcule le code HMAC du message, en fournissant le nom de la fonction de hachage à utiliser, la clé partagée ainsi que le message. Puis, elle envoie ce code ainsi que le message originel à Bob :

images/09EP22.png

Bob peut maintenant vérifier l’authenticité du message ainsi que son intégrité en effectuant la même opération sur le message et en comparant le code calculé au code reçu :

images/09EP23.png

Le HMAC est similaire à la signature numérique car les deux procédés permettent de vérifier l’authenticité du message ainsi que son intégrité. La différence principale repose sur le type de clé utilisée pour...