Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Théme de la semaine : La cryptographie

Comprendre la cryptographie pour le développement web

⏱️ Temps de lecture estimé : 8 minutes
Accueil PHP 8 Comprendre la cryptographie pour le développement web

La cryptographie est partout autour de nous, souvent invisible mais essentielle. À chaque fois que vous envoyez un message chiffré, que vous vous connectez à un site sécurisé en HTTPS, ou que vous stockez un mot de passe dans une base de données, vous utilisez — sans toujours le savoir — les principes de la cryptographie.

Pour un développeur web, comprendre ces mécanismes n’est pas seulement un atout : c’est une nécessité. Sans eux, impossible de garantir la confidentialité des données, la sécurité des utilisateurs ou même la fiabilité d’une application.

Ce chapitre est le premier d’un tutoriel complet sur la cryptographie appliquée au développement web. Nous allons découvrir ensemble les bases de cette science, ses concepts fondamentaux et ses applications concrètes dans le monde du code. Vous n’aurez pas besoin de connaissances mathématiques avancées : tout sera expliqué avec des mots simples et des exemples concrets.

Qu’est-ce que la cryptographie ?

Le mot cryptographie vient du grec ancien kryptos (« caché ») et graphein (« écrire »). Littéralement, il signifie « écriture cachée ».

Son objectif principal est de rendre un message incompréhensible pour toute personne qui ne possède pas la clé permettant de le lire.

Imaginez que vous deviez envoyer un message secret à un ami, mais que d’autres personnes puissent intercepter la lettre. Vous allez donc transformer ce message grâce à une méthode que seul votre ami connaît. C’est exactement ce que fait la cryptographie : elle transforme des données lisibles (texte en clair) en données illisibles (texte chiffré), puis permet à la bonne personne de les déchiffrer.

Dans le monde du développement web, cette transformation est omniprésente. Lorsqu’un utilisateur entre son mot de passe sur un site, celui-ci n’est jamais stocké tel quel dans la base de données. Il est « chiffré » ou, plus précisément, « haché » pour qu’il soit inutilisable par un pirate, même en cas de fuite.

Mais la cryptographie ne se limite pas au chiffrement. Elle regroupe en réalité plusieurs grands domaines :

  • Le chiffrement et le déchiffrement (protéger la confidentialité)
  • La signature numérique (garantir l’authenticité)
  • Le hachage (protéger l’intégrité)
  • L’échange de clés (assurer la sécurité des communications)

Ces notions sont au cœur de la sécurité web moderne.

Un peu d’histoire : des codes secrets à Internet

La cryptographie existe depuis des millénaires. Bien avant les ordinateurs, les civilisations anciennes cherchaient déjà à transmettre des messages confidentiels.
L’un des exemples les plus célèbres est le chiffre de César, utilisé par Jules César lui-même pour communiquer avec ses généraux.
Le principe était simple : chaque lettre du message était remplacée par une autre, décalée d’un certain nombre dans l’alphabet.
Par exemple, avec un décalage de 3, le mot « CHAT » devenait « FKDW ».

Ce type de chiffrement, appelé chiffrement par substitution, est facile à comprendre… mais tout aussi facile à casser avec les outils modernes.
Pourtant, il représente la base de tous les systèmes de chiffrement plus évolués que nous utilisons aujourd’hui.

Avec le temps, les techniques se sont perfectionnées :

  • Au Moyen Âge, les diplomates utilisaient des tableaux complexes de substitutions.
  • Au XXe siècle, pendant la Seconde Guerre mondiale, la fameuse machine Enigma utilisée par l’armée allemande reposait sur un système électromécanique de chiffrement à multiples rotors.
  • Enfin, avec l’arrivée des ordinateurs, la cryptographie est devenue une véritable science mathématique, appuyée sur l’algorithmique, la théorie des nombres et la logique.

Dans le contexte du web moderne, elle a pris une importance capitale.
Sans cryptographie, vos identifiants, vos paiements, vos emails et vos données personnelles seraient accessibles en clair sur le réseau.
Le protocole HTTPS, les certificats SSL/TLS, le stockage sécurisé des mots de passe, ou encore les signatures de cookies reposent tous sur elle.

Pour le développeur web, cela signifie qu’il faut comprendre à la fois comment la cryptographie protège les données et comment l’implémenter correctement dans ses applications.

3. Le rôle de la cryptographie dans le développement web

Chaque fois qu’un utilisateur interagit avec un site, il y a un échange d’informations.
Certaines sont anodines (comme une recherche ou une visite de page), d’autres sont sensibles : identifiants, emails, données bancaires, tokens de session…
C’est là que la cryptographie intervient pour protéger ces échanges.

Dans un projet web, on peut distinguer trois grands usages concrets de la cryptographie :

a. La protection des communications

C’est le rôle du protocole HTTPS. Il repose sur le chiffrement TLS (Transport Layer Security), qui garantit que les données échangées entre le navigateur et le serveur ne peuvent pas être lues par un tiers.

Si vous gérez un site en PHP, par exemple, et que vous configurez un certificat SSL sur votre serveur Apache ou Nginx, vous mettez déjà en pratique un mécanisme cryptographique complexe — mais invisible pour l’utilisateur.

b. La protection des données stockées

Lorsqu’un utilisateur s’inscrit sur un site, vous ne devez jamais stocker son mot de passe en clair. À la place, vous appliquez une fonction de hachage (comme bcrypt ou Argon2 en PHP).

Ces algorithmes transforment le mot de passe en une empreinte unique et irréversible.
Ainsi, même si la base de données est piratée, les mots de passe ne pourront pas être récupérés facilement.

c. L’authentification et la vérification d’identité

Les signatures numériques, les tokens JWT (JSON Web Tokens) ou encore les cookies sécurisés reposent aussi sur la cryptographie. Grâce à elle, le serveur peut vérifier qu’une requête provient bien d’un utilisateur légitime, et que le message n’a pas été altéré en cours de route.

Prenons un exemple concret :
Lorsque vous vous connectez à un tableau de bord administrateur, le serveur vous renvoie un token signé contenant votre identité. Ce token est chiffré de façon à ce que personne ne puisse le falsifier ou en deviner le contenu. Si un utilisateur malintentionné tente de le modifier, la signature cryptographique ne correspondra plus, et le serveur rejettera la requête.

Ainsi, la cryptographie est à la fois un outil de confidentialité, un bouclier contre la falsification, et un moyen d’identification fiable.

Les deux grands types de chiffrement

Pour bien comprendre la cryptographie moderne, il faut distinguer deux grands types de chiffrement : le chiffrement symétrique et le chiffrement asymétrique. Ces deux familles fonctionnent sur des principes très différents, mais elles se complètent souvent dans les applications web.

Le chiffrement symétrique

Dans un système de chiffrement symétrique, on utilise une seule et même clé pour chiffrer et déchiffrer un message. Autrement dit, la personne qui envoie le message et celle qui le reçoit doivent toutes deux posséder la même clé secrète.

Prenons un exemple simple :
Imaginons que vous vouliez envoyer le message « Bonjour » à un ami.
Vous utilisez un algorithme de chiffrement (par exemple AES) et une clé, disons « MaCleSuperSecrète123 ». Le message devient alors une suite de caractères illisibles, que seul quelqu’un possédant la même clé pourra déchiffrer.

Dans le code, en PHP par exemple, on peut chiffrer une donnée avec la fonction openssl_encrypt() et la déchiffrer avec openssl_decrypt().
Voici un mini-exemple pour illustrer :

$texte = "Bonjour";
$cle = "MaCleSuperSecrète123";
$texte_chiffre = openssl_encrypt($texte, 'AES-128-CTR', $cle, 0, '1234567891011121');
$texte_dechiffre = openssl_decrypt($texte_chiffre, 'AES-128-CTR', $cle, 0, '1234567891011121');

Ce code chiffre le mot « Bonjour » et le rend illisible. Seule la personne connaissant la clé et le vecteur d’initialisation (IV) pourra retrouver le message original.

Le principal avantage du chiffrement symétrique est sa rapidité : il est très efficace, même sur de gros volumes de données. Mais il présente un inconvénient majeur : comment échanger la clé secrète sans qu’elle soit interceptée ?
C’est précisément ce problème que le chiffrement asymétrique vient résoudre.

Le chiffrement asymétrique

Le chiffrement asymétrique, aussi appelé chiffrement à clé publique, repose sur l’utilisation de deux clés distinctes :

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?
  • Une clé publique, que l’on peut partager librement ;
  • Une clé privée, qui doit rester secrète.

Le principe est le suivant :

  • Si vous chiffrez un message avec la clé publique, seule la clé privée correspondante peut le déchiffrer.
  • Inversement, si vous signez un message avec la clé privée, tout le monde peut vérifier cette signature grâce à la clé publique.

Prenons un exemple concret appliqué au web :
Lorsqu’un internaute visite un site en HTTPS, son navigateur récupère la clé publique du serveur (contenue dans le certificat SSL). Grâce à elle, il peut chiffrer les données qu’il envoie (comme son mot de passe). Le serveur, lui, est le seul à posséder la clé privée capable de déchiffrer ces informations.

Ainsi, même si un pirate intercepte la communication, il ne pourra rien en faire, car il ne dispose pas de la clé privée.

C’est ce principe qui fonde la sécurité du protocole HTTPS et, plus largement, de la plupart des échanges sécurisés sur Internet. Des algorithmes comme RSADSA ou ECC sont utilisés pour mettre en œuvre ce type de chiffrement.

Le hachage : protéger sans jamais pouvoir déchiffrer

Le hachage est une autre facette essentielle de la cryptographie, souvent mal comprise. Contrairement au chiffrement, le hachage ne permet pas de retrouver les données d’origine.
C’est un processus irréversible.

Quand on applique une fonction de hachage à un texte, on obtient une « empreinte » unique (ou presque) :

  • Le même texte produira toujours la même empreinte.
  • Une légère modification du texte donnera une empreinte totalement différente.
  • Il est impossible, en pratique, de retrouver le texte initial à partir de l’empreinte.

C’est ce qui rend le hachage si utile pour le stockage des mots de passe.

Prenons un exemple :
Lorsqu’un utilisateur s’inscrit sur votre site, vous ne stockez pas son mot de passe directement. Vous le transformez à l’aide d’un algorithme de hachage, comme bcrypt. Ainsi, même si votre base de données est compromise, les mots de passe restent protégés.

En PHP, cela se fait très simplement :

$motdepasse = "MonMotDePasse123";
$hash = password_hash($motdepasse, PASSWORD_BCRYPT);

if (password_verify("MonMotDePasse123", $hash)) {
    echo "Mot de passe valide";
}

Ici, la fonction password_hash() crée une empreinte unique et sécurisée.
Et password_verify() permet de vérifier si un mot de passe correspond à cette empreinte. Le mot de passe original n’est jamais enregistré ni même affiché.

Les algorithmes modernes comme bcryptscryptArgon2 ou PBKDF2 sont conçus pour résister aux attaques par force brute, en rendant le hachage volontairement lent.
Cela complique énormément le travail des pirates.

Signatures numériques et intégrité des données

Un autre aspect fondamental de la cryptographie est la vérification de l’intégrité et de l’authenticité des données. Il ne suffit pas de chiffrer les messages : il faut aussi être certain qu’ils n’ont pas été modifiés en cours de route.

C’est le rôle des signatures numériques.

Une signature numérique fonctionne un peu comme une signature manuscrite, mais elle est générée mathématiquement à partir du contenu du message et de la clé privée de l’émetteur. Ainsi, si le message est modifié, la signature ne correspond plus, et le destinataire sait immédiatement qu’il y a eu falsification.

Dans les applications web, on retrouve ce principe dans les tokens JWT (JSON Web Tokens) utilisés pour l’authentification. Un token JWT contient des informations encodées (souvent l’identifiant de l’utilisateur et la date d’expiration), et une signature cryptographique.

Lorsque le client envoie ce token au serveur, celui-ci peut vérifier sa validité grâce à une clé secrète partagée. Aucune base de données n’a besoin d’être interrogée pour savoir si la session est légitime.

Par exemple, un token JWT typique ressemble à ceci :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMyIsIm5vbSI6IkFsYmFuIiwiaWF0IjoxNzM5NjMyMDAwfQ.mwFUR9pR9K5C6V4vJ1A0Ygh3K3s7FGVONrC5PEvZTvU

Même s’il est lisible, sa signature empêche toute modification frauduleuse.

La cryptographie et la sécurité des sites web

Dans un environnement web, la cryptographie intervient à presque tous les niveaux :

  • Lorsqu’un utilisateur se connecte à votre site (HTTPS)
  • Lorsqu’il s’inscrit (hachage du mot de passe)
  • Lorsqu’il reste connecté (signature de session ou token JWT)
  • Lorsqu’il échange des données sensibles (API, formulaires, paiements, etc.)

Pour un développeur, l’objectif n’est pas forcément de réinventer les algorithmes cryptographiques, mais de les utiliser correctement.
C’est souvent là que les failles apparaissent : une mauvaise configuration, une clé trop courte, ou un stockage non sécurisé peuvent annuler toute la robustesse d’un système.

Voici quelques bonnes pratiques universelles :

  • Toujours utiliser HTTPS sur toutes les pages du site.
  • Ne jamais stocker un mot de passe en clair.
  • Utiliser des bibliothèques éprouvées (par exemple, openssllibsodium, ou password_hash() en PHP).
  • Renouveler régulièrement les clés privées et certificats SSL.
  • Ne jamais inventer soi-même un algorithme de chiffrement, même « simple ».

La sécurité web repose avant tout sur la rigueur et la vigilance du développeur.

L’avenir de la cryptographie

La cryptographie continue d’évoluer rapidement.
Avec la montée en puissance des ordinateurs et l’arrivée des technologies quantiques, certains algorithmes autrefois jugés indéchiffrables deviennent vulnérables.
C’est pourquoi la recherche se tourne vers la cryptographie post-quantique, capable de résister à ces nouvelles menaces.

Dans le développement web, on voit déjà apparaître des protocoles plus légers et plus sûrs, comme TLS 1.3, ou des systèmes d’authentification sans mot de passe basés sur des clés de sécurité physiques et la cryptographie asymétrique(par exemple, WebAuthn et FIDO2).

Comprendre les bases de la cryptographie aujourd’hui, c’est donc se préparer à coder les applications sécurisées de demain.


La cryptographie n’est pas une notion abstraite réservée aux mathématiciens : c’est un pilier concret et indispensable du développement web moderne. Elle se cache derrière chaque connexion sécurisée, chaque mot de passe stocké, chaque token échangé entre un client et un serveur. Sans elle, Internet serait un espace totalement ouvert et vulnérable.

Apprendre la cryptographie, c’est apprendre à protéger. Protéger les utilisateurs, les données, et la confiance qu’ils placent dans vos applications. C’est aussi comprendre les mécanismes invisibles qui font fonctionner le web en toute sécurité.

Dans les prochains chapitres de ce tutoriel, nous entrerons plus en détail dans les mécanismes de chiffrement symétrique (AES)asymétrique (RSA), les signatures numériques, et la mise en place pratique du protocole HTTPS. Vous verrez comment ces concepts prennent vie dans le code, avec des exemples concrets en PHP, JavaScript et Python.

Car maîtriser la cryptographie, ce n’est pas seulement connaître des formules : c’est savoir quand et comment les utiliser pour concevoir des sites web sûrs, modernes et dignes de confiance.