Authentification : vérification de l'identité d'un utilisateur ou système

En cybersécurité, l'authentification constitue l'un des mécanismes fondamentaux de protection des systèmes informatiques. Elle permet de vérifier qu'un utilisateur, un appareil, une application ou un service possède bien l'identité qu'il revendique avant de lui accorder l'accès à certaines ressources.

1. À propos de l'authentification

L'authentification, appelée Authentication en anglais, est le processus permettant de vérifier l'identité déclarée d'une entité à l'aide de preuves appropriées.

Cette entité peut être une personne, un ordinateur, un serveur, une application ou un objet connecté. Les preuves utilisées peuvent notamment être un mot de passe, une clé cryptographique, un authentificateur matériel ou une caractéristique biométrique.

Pourquoi l'authentification est-elle indispensable ?

Sans mécanisme d'authentification approprié, un système ne peut pas établir avec suffisamment de confiance qu'une demande d'accès provient de l'entité autorisée.

L'authentification contribue notamment à :

  • Protéger les comptes utilisateurs contre les accès non autorisés.
  • Limiter l'usurpation d'identité dans les applications et les réseaux.
  • Contrôler l'accès aux services sensibles.
  • Protéger les informations confidentielles contre certaines divulgations.
  • Renforcer la traçabilité des opérations effectuées.
  • Établir la confiance entre certains systèmes communicants.

Exemple d'authentification

Lorsqu'un utilisateur accède à son espace personnel sur une plateforme pédagogique, il peut saisir un identifiant et un mot de passe. Le serveur vérifie alors les informations fournies avant d'établir une session authentifiée.

Dans une application correctement conçue, le serveur ne doit pas conserver les mots de passe en clair : il utilise notamment un mécanisme sécurisé de hachage des mots de passe.

Authentification humaine et authentification machine

L'authentification ne concerne pas uniquement les personnes. Un serveur peut également vérifier l'identité d'un autre serveur ou d'une application à l'aide de certificats numériques, de clés cryptographiques ou d'autres mécanismes adaptés.

EntitéExemple de méthodeContexte
UtilisateurMot de passe et MFAConnexion à une application Web
AdministrateurClé SSHAdministration d'un serveur
Serveur WebCertificat TLSAuthentification du serveur HTTPS
ApplicationIdentité de service ou clé cryptographiqueCommunication entre services
ÉquipementCertificat ou mécanisme matérielAccès à une infrastructure

2. Identification, authentification et autorisation

Les notions d'identification, d'authentification et d'autorisation sont étroitement liées, mais elles correspondent à des fonctions différentes.

Identification

L'identification consiste à déclarer une identité. Par exemple, un utilisateur saisit son nom de compte ou son adresse électronique.

Cette étape répond à la question : Qui prétendez-vous être ?

Authentification

L'authentification consiste à vérifier les preuves associées à l'identité revendiquée.

Elle répond à la question : Pouvez-vous prouver cette identité ?

Autorisation

L'autorisation consiste à déterminer les opérations qu'une entité authentifiée est autorisée à effectuer.

Elle répond à la question : Qu'avez-vous le droit de faire ?

Traçabilité

La traçabilité consiste à enregistrer les événements et les actions importantes afin de faciliter les audits, les investigations et la détection d'anomalies.

Exemple dans une application pédagogique

Supposons qu'un enseignant se connecte à une plateforme de gestion des notes.

  1. Il indique son identifiant : c'est l'identification.
  2. Il fournit une preuve valide de son identité : c'est l'authentification.
  3. L'application vérifie qu'il peut consulter ou modifier les notes de ses propres classes : c'est l'autorisation.
  4. L'application enregistre les modifications importantes : c'est la traçabilité.

Une authentification réussie ne signifie donc pas qu'un utilisateur possède automatiquement toutes les permissions du système.

Le modèle AAA

Dans les infrastructures réseau, on utilise souvent le modèle AAA, pour Authentication, Authorization and Accounting.

ComposanteRôle
AuthenticationVérifier l'identité.
AuthorizationDéterminer les permissions.
AccountingEnregistrer ou comptabiliser les activités et l'utilisation des ressources.

3. Les principaux facteurs et méthodes d'authentification

Les méthodes d'authentification reposent sur différentes catégories de preuves appelées facteurs d'authentification.

Facteur de connaissance

Ce facteur correspond à quelque chose que l'utilisateur connaît.

  • Mot de passe.
  • Code PIN.
  • Secret mémorisé.

Les mots de passe doivent être suffisamment robustes et protégés contre les tentatives automatisées.

Facteur de possession

Ce facteur correspond à quelque chose que l'utilisateur possède.

  • Clé de sécurité matérielle.
  • Authentificateur logiciel installé sur un appareil.
  • Carte à puce.
  • Dispositif cryptographique.

Facteur biométrique

Ce facteur correspond à une caractéristique physique ou comportementale de l'utilisateur.

  • Empreinte digitale.
  • Reconnaissance faciale.
  • Reconnaissance de l'iris.

Les données biométriques sont particulièrement sensibles. Leur utilisation nécessite des mesures de protection adaptées, notamment en matière de confidentialité et de stockage.

Authentification à facteur unique

L'authentification à facteur unique utilise un seul facteur, par exemple un mot de passe.

Authentification multifacteur

L'authentification multifacteur, ou MFA, combine au moins deux facteurs appartenant à des catégories différentes.

Par exemple, un utilisateur peut fournir un mot de passe et utiliser une clé de sécurité matérielle.

Deux mots de passe différents ne constituent pas nécessairement une authentification multifacteur puisqu'ils appartiennent à la même catégorie de connaissance.

Authentification à deux facteurs

L'authentification à deux facteurs, ou 2FA, est une forme de MFA utilisant exactement deux facteurs distincts.

Codes à usage unique

Un OTP, pour One-Time Password, est un code destiné à être utilisé une seule fois ou dans une fenêtre de validité limitée.

Les systèmes TOTP produisent des codes temporaires à partir d'un secret partagé et du temps. Ils peuvent renforcer l'authentification, mais ne garantissent pas à eux seuls une protection contre tous les scénarios de phishing.

Passkeys et FIDO2

Les passkeys utilisent des mécanismes cryptographiques à clé publique, notamment ceux définis par FIDO2 et WebAuthn.

Elles permettent de réduire la dépendance aux mots de passe et offrent une résistance importante au phishing grâce à leur liaison à l'origine du service.

Authentification adaptative

L'authentification adaptative ajuste les vérifications demandées selon le contexte, par exemple le niveau de risque d'une connexion ou la sensibilité de l'opération.

4. Fonctionnement d'un système d'authentification

Un système d'authentification doit vérifier les preuves fournies sans exposer les secrets des utilisateurs et sans accorder de permissions injustifiées.

Étape 1 : création du compte

Lors de l'inscription, l'utilisateur choisit généralement un identifiant et fournit les informations nécessaires à la création du compte.

Étape 2 : enregistrement sécurisé des informations

Lorsqu'un mot de passe est utilisé, il doit être stocké sous forme d'un hachage adapté aux mots de passe, avec un sel aléatoire.

Des algorithmes comme Argon2id, scrypt ou bcrypt peuvent être utilisés selon les exigences du système.

Étape 3 : demande de connexion

L'utilisateur présente son identité et les preuves d'authentification requises.

Étape 4 : vérification des preuves

Le serveur vérifie les preuves reçues en utilisant les mécanismes appropriés. Pour un mot de passe, il vérifie le secret fourni à l'aide de l'algorithme de hachage configuré.

Étape 5 : vérification complémentaire

Si une MFA est activée, une preuve supplémentaire peut être exigée.

Étape 6 : établissement de la session

Après une authentification réussie, l'application peut créer une session authentifiée associée à l'utilisateur.

Les identifiants de session doivent être difficiles à deviner, protégés pendant leur transmission et correctement invalidés lors de la déconnexion ou de leur expiration.

Étape 7 : vérification des autorisations

À chaque opération sensible, le serveur doit vérifier que l'utilisateur possède les permissions nécessaires.

Étape 8 : journalisation

Les événements importants, notamment les connexions réussies ou échouées, peuvent être enregistrés dans des journaux de sécurité.

Ces journaux ne doivent pas contenir de mots de passe ou de secrets d'authentification.

Exemple d'une connexion Web

  1. L'utilisateur ouvre une page de connexion HTTPS.
  2. Il saisit son identifiant et son mot de passe.
  3. Le serveur recherche le compte correspondant.
  4. Le serveur vérifie le mot de passe à partir du hachage enregistré.
  5. Une vérification MFA peut être demandée.
  6. Une session sécurisée est établie.
  7. Les autorisations sont vérifiées pour chaque ressource protégée.

5. Protocoles et technologies d'authentification

Plusieurs protocoles et technologies permettent de mettre en œuvre l'authentification dans les applications Web, les réseaux et les infrastructures informatiques.

HTTP Basic Authentication

HTTP Basic Authentication est un mécanisme simple dans lequel les identifiants sont transmis sous une forme encodée en Base64. Cet encodage ne constitue pas un chiffrement.

Il doit donc être utilisé uniquement à travers un canal sécurisé, notamment HTTPS, lorsque son emploi est approprié.

LDAP

LDAP, pour Lightweight Directory Access Protocol, permet d'accéder à des services d'annuaire.

Il est notamment utilisé dans certains environnements professionnels pour rechercher des utilisateurs et participer à des mécanismes d'authentification centralisée.

Kerberos

Kerberos est un protocole d'authentification réseau reposant notamment sur des tickets et des mécanismes cryptographiques.

Il est largement utilisé dans des environnements d'entreprise, notamment avec Active Directory.

RADIUS

RADIUS est un protocole utilisé notamment pour centraliser l'authentification, l'autorisation et la comptabilisation des accès réseau.

OAuth 2.0

OAuth 2.0 est principalement un cadre de délégation d'autorisation. Il permet à une application d'obtenir un accès limité à certaines ressources sans recevoir directement le mot de passe de l'utilisateur.

OAuth 2.0 n'est pas, à lui seul, un protocole complet d'authentification des utilisateurs.

OpenID Connect

OpenID Connect, ou OIDC, ajoute une couche d'identité à OAuth 2.0 et permet notamment à une application de vérifier l'identité d'un utilisateur auprès d'un fournisseur d'identité.

SAML

SAML, pour Security Assertion Markup Language, permet notamment de transmettre des assertions d'authentification entre un fournisseur d'identité et un service.

Single Sign-On

Le Single Sign-On, ou SSO, permet à un utilisateur de bénéficier d'une authentification centralisée pour accéder à plusieurs services compatibles.

Certificats numériques

Les certificats numériques permettent notamment d'associer une identité à une clé publique. Ils sont utilisés dans des mécanismes tels que TLS et mTLS.

TechnologieUsage principal
LDAPAccès aux annuaires et services associés.
KerberosAuthentification réseau par tickets.
RADIUSContrôle d'accès réseau et fonctions AAA.
OAuth 2.0Délégation d'autorisation.
OpenID ConnectAuthentification fédérée et identité.
SAMLFédération d'identité et assertions.
WebAuthnAuthentification à clé publique résistante au phishing.
mTLSAuthentification mutuelle par certificats TLS.

6. Menaces et attaques contre l'authentification

Les mécanismes d'authentification constituent des cibles importantes pour les cybercriminels, car une compromission peut permettre d'accéder à des ressources protégées.

Attaque par force brute

Une attaque par force brute consiste à essayer de nombreuses combinaisons de secrets afin de découvrir des identifiants valides.

Password Spraying

Le Password Spraying consiste à tester un nombre limité de mots de passe courants sur plusieurs comptes.

Credential Stuffing

Le Credential Stuffing consiste à réutiliser des couples identifiant/mot de passe compromis provenant d'autres services.

Phishing

Le phishing cherche à tromper l'utilisateur pour obtenir ses informations d'authentification ou l'amener à valider une opération frauduleuse.

Vol de session

Le vol de session consiste à obtenir ou utiliser sans autorisation un identifiant de session permettant de se faire passer pour un utilisateur authentifié.

Attaque par rejeu

Une attaque par rejeu consiste à réutiliser des informations ou messages précédemment valides afin de contourner certaines protections.

MFA Fatigue

La MFA Fatigue consiste à multiplier les sollicitations d'authentification afin de pousser un utilisateur à approuver une demande frauduleuse.

Défauts de gestion des sessions

Des sessions trop longues, des jetons insuffisamment protégés ou une invalidation incorrecte peuvent augmenter les risques d'accès non autorisés.

Conséquences possibles

  • Accès non autorisé à un compte.
  • Usurpation d'identité.
  • Consultation ou modification de données sensibles.
  • Élévation de privilèges.
  • Compromission de services connectés.
  • Fraude ou interruption de certaines activités.

7. Implémentation de l'authentification avec Python

Python permet d'illustrer les principes de l'authentification, du stockage sécurisé des mots de passe et de la vérification des autorisations. Les exemples suivants sont pédagogiques et ne remplacent pas les mécanismes de sécurité fournis par un framework professionnel.

Exemple 1 : authentification simple avec identifiant et mot de passe

Le programme suivant illustre une vérification élémentaire d'identifiant et de mot de passe. Les valeurs sont volontairement définies dans le code pour faciliter la compréhension. Cette méthode ne doit pas être utilisée dans une application réelle, car elle conserve un mot de passe en clair.

Output :

Exemple 2 : hachage d'un mot de passe avec scrypt

Le programme suivant utilise scrypt, disponible dans le module standard hashlib, pour dériver un hachage de mot de passe avec un sel aléatoire. Il vérifie ensuite un mot de passe candidat avec hmac.compare_digest(), qui permet une comparaison adaptée aux secrets.

Le programme illustre une technique de stockage plus sûre que la conservation d'un mot de passe en clair. Dans une application réelle, le sel, les paramètres de dérivation et le hachage doivent être enregistrés ensemble dans un format approprié.

Output :

Exemple 3 : limitation pédagogique des tentatives de connexion

Le programme suivant simule une politique de limitation des tentatives d'authentification. Après trois échecs consécutifs, les nouvelles tentatives sont refusées dans cette simulation. Dans une application réelle, la limitation doit être appliquée côté serveur, avec une politique adaptée pour éviter les abus et les blocages injustifiés.

Output :

Exemple 4 : simulation d'une authentification à deux facteurs

Le programme suivant illustre le principe de deux vérifications successives : un mot de passe et un code complémentaire. Les valeurs sont fixes uniquement pour la démonstration. Il ne s'agit pas d'une véritable implémentation TOTP ou MFA sécurisée.

Output :

Exemple 5 : distinguer authentification et autorisation

Le programme suivant vérifie d'abord si un utilisateur est authentifié, puis examine son rôle avant d'autoriser une opération administrative. Il montre qu'une identité vérifiée ne donne pas automatiquement accès à toutes les fonctionnalités.

Output :

Exemple 6 : générer un jeton de session aléatoire

Le programme suivant utilise le module secrets pour générer un jeton aléatoire destiné à illustrer un identifiant de session difficile à deviner. Pour éviter d'afficher une valeur aléatoire différente à chaque exécution, le programme présente uniquement sa longueur.

Dans une application réelle, un jeton doit également être associé à une session côté serveur, disposer d'une durée de validité adaptée et être transmis et stocké de manière sécurisée.

Output :

Exemple 7 : analyser des échecs d'authentification

Le programme suivant analyse des événements fictifs de connexion et signale les utilisateurs ayant atteint un seuil d'échecs. Cette technique constitue une introduction à la surveillance des journaux d'authentification.

Output :

Authentification avec Django

Le framework Django possède un système d'authentification intégré comprenant notamment la gestion des utilisateurs, des mots de passe, des sessions, des groupes et des permissions.

Pour une application Django, il est préférable d'utiliser les mécanismes intégrés du framework plutôt que de créer soi-même un système complet d'authentification.

Le programme suivant montre comment vérifier les identifiants d'un utilisateur avec la fonction authenticate(). Il suppose qu'un projet Django est correctement configuré et qu'un utilisateur nommé alice possède le mot de passe de démonstration indiqué.

Output :

Cette sortie correspond au cas où les identifiants sont valides et où le backend d'authentification accepte la connexion. Dans une application Web Django, l'établissement effectif de la session nécessite également l'utilisation appropriée de login().

8. Bonnes pratiques et sécurisation de l'authentification

La sécurité d'un système d'authentification dépend de plusieurs mécanismes complémentaires. Une vérification correcte du mot de passe ne suffit pas à elle seule pour garantir la protection des comptes.

Ne jamais stocker les mots de passe en clair

Les mots de passe doivent être protégés par des algorithmes spécialisés tels que Argon2id, scrypt ou bcrypt, avec des paramètres appropriés.

Les algorithmes de hachage rapides comme SHA-256 ne doivent pas être utilisés seuls pour stocker les mots de passe.

Utiliser une authentification multifacteur

L'authentification multifacteur réduit les risques associés à la compromission d'un seul facteur.

Les mécanismes résistants au phishing, comme les passkeys et certaines clés de sécurité FIDO2, doivent être privilégiés lorsque cela est possible.

Protéger les communications

Les informations d'authentification doivent être transmises à travers des canaux sécurisés, notamment HTTPS pour les applications Web.

Limiter les tentatives automatisées

Les systèmes doivent mettre en place des protections adaptées contre les tentatives répétées, notamment des limitations de débit, des délais progressifs ou des mécanismes de détection des abus.

Éviter les messages trop révélateurs

Les messages d'erreur ne doivent pas permettre trop facilement de déterminer si un identifiant existe ou si seul le mot de passe est incorrect.

Protéger les sessions

Les identifiants de session doivent être générés de manière sécurisée et protégés contre le vol ou la réutilisation non autorisée.

Pour les applications Web, les cookies de session doivent notamment utiliser les attributs Secure, HttpOnly et une politique SameSite adaptée.

Prévoir une expiration des sessions

Les sessions doivent avoir des durées de validité appropriées. Les opérations particulièrement sensibles peuvent nécessiter une nouvelle vérification de l'identité.

Sécuriser la récupération des comptes

La procédure de réinitialisation des mots de passe doit utiliser des mécanismes sécurisés et ne doit pas permettre à un attaquant de contourner l'authentification principale.

Appliquer le moindre privilège

L'authentification doit être complétée par une autorisation rigoureuse. Chaque utilisateur doit disposer uniquement des permissions nécessaires à ses fonctions.

Journaliser les événements sensibles

Les connexions réussies, les échecs, les changements de facteurs d'authentification et les opérations administratives sensibles doivent être surveillés selon les besoins de sécurité.

Protéger les comptes administrateurs

Les comptes disposant de privilèges élevés doivent bénéficier de protections renforcées, notamment une MFA adaptée, une surveillance spécifique et une séparation des usages administratifs et ordinaires.

Réaliser des audits de sécurité

Les applications doivent être régulièrement examinées afin de détecter les erreurs de configuration, les défauts de gestion des sessions et les faiblesses de contrôle d'accès.

Défense en profondeur

Une stratégie de défense en profondeur combine l'authentification forte, les contrôles d'accès, le chiffrement, la surveillance, les mises à jour et les procédures de réponse à incident.

9. À retenir

L'authentification est le processus permettant de vérifier l'identité revendiquée d'un utilisateur, d'une application ou d'un système.

Elle doit être distinguée de l'identification, qui consiste à déclarer une identité, et de l'autorisation, qui détermine les actions permises après vérification de cette identité.

Les principaux facteurs d'authentification reposent sur la connaissance, la possession et les caractéristiques biométriques.

L'authentification multifacteur combine plusieurs catégories de facteurs afin de renforcer la sécurité des accès.

Les passkeys et les mécanismes FIDO2/WebAuthn constituent des solutions modernes offrant une résistance importante au phishing.

Les mots de passe ne doivent jamais être stockés en clair. Leur protection nécessite des algorithmes spécialisés comme Argon2id, scrypt ou bcrypt.

Les technologies Kerberos, LDAP, RADIUS, OpenID Connect, SAML et WebAuthn interviennent dans différents environnements d'authentification et de gestion des identités.

Les principales menaces comprennent la force brute, le Credential Stuffing, le phishing, le vol de session et certaines attaques contre les mécanismes MFA.

Python permet d'illustrer les principes de vérification des identifiants, de hachage des mots de passe, de limitation des tentatives et de surveillance des événements de connexion.

Enfin, une authentification fiable doit être associée à un contrôle d'accès rigoureux, une gestion sécurisée des sessions et une stratégie globale de défense en profondeur.

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *