jeudi 28 juin 2012

La cryptographie, un sujet complexe

« Authentifier, c'est vérifier l'authenticité de l'identité présentée. »
Présentée ainsi, l'authentification peut paraître simple.
Cependant :
  • que signifie vérifier ?
  • de quelle identité parle-t-on ?
  • Que veut bien vouloir dire « présenter » une identité ?
La cryptographie est un procédé mathématique qui permet de s'affranchir de mettre en présence l'authentifiant et l'authentifié. Elle ne permet pas de simplifier les autres aspects de l'authentification, même si elle résout d'autres problèmes de façon assez élégante, comme la confidentialité ou l'anonymisation.
Autour du projet SEPAmail, nous avons rencontré des experts « authentification », « cryptographie », « sécurité », ce qui m'a permis de me rendre compte que :
  • le sujet est complexe,
  • le sens du vocable fondamental n'est pas toujours partagé,
  • il manque un modèle d'authentification partagé,
  • les couches permettant la simplification locale ne sont pas toujours valorisées
  • il y a réellement un besoin de simplicité pour l'utilisateur
Je détaille tout cela dans ce billet un peu long (pour une fois).

Les mots valise

Le sujet comprend beaucoup de mots valises qui sont structurants.
J'en précise certains en donnant quelques uns des sens différents utilisés et les confusions possibles.

Identification

« L'identification, c'est vérifier qu'un identifiant est présent dans une liste. » 
Par exemple, on identifie la chaîne de caractères que lit un lecteur de badge comme appartenant à la liste des identifiants de badges autorisés à passer un portique. Il peut être également identifié comme appartenant à une liste d'identifiants de badges non autorisés à passer le portique.
Ici, la chaîne de caractères est l'identifiant du badge.
Le badge est considéré comme non identifié si son identifiant n'appartient à aucune des listes.
Par extension, nombreux sont ceux qui induisent l'identifiant comme l'identité d'une personne physique. Ils considèrent alors l'identification, non pas comme la vérification que l’identité de la personne ramené à des identifiants (nom, prénom, visage, empreinte digitale, adresse) appartient à une liste d'identifiants connus, mais comme la vérification que la personne est bien celle associés aux identifiants présentés.
Cette approximation usuelle amène deux remarques :
  • un identifiant n'est pas une identité
  • identifier dans le sens télévisuel de la série policière est plutôt de l'authentification d'identité de personnes physiques dans une société les recensant en ayant associé un identifiant unique.

Authentification


« L'authentification, c'est vérifier l'authenticité. »
Ceci n'est pas simple et repose généralement sur le croisement de plusieurs critères.
Par exemple, l'authenticité d'un billet de banque repose sur de nombreux procédés de fabrication secrets ou connus mais difficiles à reproduire.
Par extension encore, la plupart parle d'authentification de personnes physiques à l'aide de procédé cryptographique alors même que l'authentification concerne une chaîne de caractères appelée « clé privée » au sein d'un système applicatif et/ou matériel déverrouillé par la personne physique en question.
Deux questions intéressantes sont :
  1. que veut-on authentifier ?
  2. Pourquoi veut-on authentifier ?
En y répondant, on simplifie généralement le problème.
L'authentification d'une personne vis-à-vis d'un système d'information est délicate à réaliser de façon directe. En effet, du point de vue de la machine, seul un procédé de nature cryptographique s'avère sûr, tandis que la personne, quant à elle, ne peut directement employer un tel mécanisme.
Les procédés d'authentification directe d'une personne se caractérisent tous par la possibilité de rejeu.
Pour bien distinguer les procédés d'authentification directe d'une personne, nous qualifions ces procédés de déverrouillage.
La robustesse est la capacité d'un mécanisme d'authentification à résister à une méthode de contournement ou de falsification.
Actuellement, il n'existe pas de mécanisme d'authentification que l'on ne peut pas contourner ou falsifier. Par contre, il en existe avec une robustesse très élevée. On distingue souvent trois niveaux de robustesse : standard, renforcé et élevé.

Sécurité

« La sécurité, c'est, entre autres, l'absence ou la limitation des risques dans un domaine précis. »
Dès que l'on parle de sécurité, il y a de gros écarts de compréhension, notamment :
  • entre ceux qui croient au système ultime et ceux qui croient qu'un tel système n'existent pas,
  • entre ceux qui « font la preuve » et ceux qui « s'engagent » en s'assurant contre le risque.
De plus, pour rendre plus compréhensible la notion de sécurité d'un système, beaucoup utilisent la notion de niveaux.
Or, sur ces sujets, on trouve de nombreux qualificatifs pour de nombreux concepts, par exemple :
  • des niveaux d'authentification (simple, forte)
  • des niveaux de robustesse cryptographique (standard, renforcé, élevé) [Référentiel Général de Sécurité]
  • deux niveaux européens de signature électronique (simple et avancée) [Directive 1999/93/CE article 2]
  • plusieurs niveaux français de signature électronique (simple, présumée fiable, avancée) [Memento sur la signature électronique de l'agence nationale de sécurité des système d'information ANSSI]
  • différents niveaux de sécurité d'un système informatique (logique, physique, réseau, utilisateurs)
  • deux états d'insécurité (passif et actif)
  • des certificats électroniques (qualifiés ou « dits » conformes en attente de qualification)
  • des autorités de certifications (racines, intermédiaires, qualifiées)
  • différentes instances édictant différentes normes de sécurité dans le domaine du traitement de l'information, des systèmes d'information, des données de paiements (EPC, RGS, PCI DSS).
Nous voyons bien qu'un même adjectif peut être utilisé dans un sens différent, ce qui augmente les possibilités de confusion et d'incompréhension, même auprès d'un public averti.

Cryptographie

« La cryptographie est une des disciplines de la cryptologie s'attachant à protéger des messages. »
D'un abord mathématique et rigoureux, cette science a été vulgarisée par l'utilisation en sécurité informatique et en droit.
Cette vulgarisation conduit à de nombreuses confusions.

 

Une confusion possible : Décrypter et déchiffrer

Notons les définitions suivantes :
  • chiffrer : transformer à l'aide d'une clé de chiffrement un message en clair (dit texte clair) en un message incompréhensible (dit texte chiffré) pour celui qui ne dispose pas de la clé de déchiffrement (en anglais encryption)
  • déchiffrer :  retrouver le message clair correspondant à un message chiffré avec la clé de déchiffrement
  • décrypter : retrouver le message clair correspondant à un message chiffré sans posséder la clé de déchiffrement (terme que ne possèdent pas les anglophones, qui eux « cassent » des codes secrets)
Le mot « crypter » n'a pas raison d'être ; il n'existe donc pas et il est absent du dictionnaire de l'académie française.

Déchiffrer et décrypter ne signifient pas du tout la même chose en langue française alors que les traductions anglicistes les confondent allègrement.

Une confusion possible : le procédé de cryptographie asymétrique utilise largement le procédé de cryptographie symétrique


Il y a plusieurs procédés de cryptographie dont deux permettent de nombreuses fonctionnalités :
  • le système de chiffrement symétrique, quand il utilise la même clé pour chiffrer et déchiffrer.
  • le système de chiffrement asymétrique, quand il utilise des clés différentes : une paire composée d'une clé publique, servant au chiffrement, et d'une clé privée, servant à déchiffrer (Le point fondamental soutenant cette décomposition publique/privée est l'impossibilité calculatoire de déduire la clé privée de la clé publique)
L'utilisation d'un système symétrique ou asymétrique dépend des tâches à accomplir. La cryptographie asymétrique présente deux intérêts majeurs : elle supprime le problème de transmission sécurisée de la clé, et elle permet la signature électronique.
Elle ne remplace cependant pas les systèmes symétriques car les temps de calcul sont nettement plus longs. La plupart du temps, le système asymétrique sera utilisé pour échanger une clé de session (courte) qui servira ensuite de clé partagée pour un échange symétrique plus rapide.
Les deux procédés ne s'opposent donc pas ; ils se complètent. 

Une confusion possible : le procédé de cryptographie asymétrique est accessible aux automates de calcul et non directement aux humains

D'aucuns parlent d'authentification de personne au moyen de procédé de cryptographie asymétriques alors même que ce type de procédé n'est pas accessibles directement à l'être humain non outillé d'un calculateur.
L'humain déverrouille un environnement local de confiance à l'aide d'un mécanisme de rejeu (une combinaison plus ou moins compliquée de plusieurs facteurs entre ce qu'il possède, qu'il sait, qu'il est...) laissant alors la charge à cet environnement local de confiance automatisé de s'authentifier à l'aide d'un procédé de cryptographique asymétrique sans rejeu.

Une confusion possible : déverrouillage local et authentification à distance

Seule l'utilisation de protocoles cryptographiques d'authentification permet de garantir à deux machines qu'elles communiquent bien l'une avec l'autre et non avec une machine usurpatrice.
Pour authentifier une personne, on utilise des mécanismes de déverrouillage (mot de passe, biométrie, support personnel) dont l'esprit est qu'ils doivent demeurer locaux.
L'utilisation d'un déverrouillage dans une procédure à distance ne constitue pas véritablement une authentification car dans le monde numérique, le rejeu est rendu très facile par les possibilités de copie numérique.
Le périmètre dans lequel le mécanisme de déverrouillage est employé doit être bien identifié car c'est un environnement qui doit être local et de confiance.

Non répudiation

« La non-répudiation est l’impossibilité de nier la participation au traitement d’une information. »

La non-répudiation de quoi ?

Selon le contexte, la non répudiation ne se limite pas au seul auteur d'un processus ou d'une action.
Par exemple, pour l'échange de messages, on peut considérer de façon distincte :
  • la répudiation par l'émetteur du message ("je nie avoir envoyé le message")
  • la répudiation par le destinataire ("je nie avoir reçu le message")
  • la répudiation sur le contenu du message de l'un ou de l'autre (« je nie avoir envoyé le contenu de ce message » ou « je nie avoir reçu le contenu de ce message »)
  • la répudiation sur les données liées au temps, l'horodatage de l'un ou de l'autre(« je nie avoir envoyé à cette date et cette heure le message », « je nie avoir reçu ce message à cette date et heure »)

Le contexte juridique de la non-répudiation

La non-répudiation est souvent associée au contexte juridique du « renversement de la charge de la preuve » dans le cadre de la signature électronique, preuve préconstituée.
Le coût économique de cette charge de la preuve étant dans certaines situations non négligeable, cette caractéristique de « non répudiation » peut devenir un sujet clé.
Pour éviter de se poser cette question, il est possible d'insérer dans le contrat initial entre une banque et son client l'obligation de preuve pour celui qui dénonce une signature.
Ainsi, le cadre de la répudiation devient contractuel.

Le contexte technique de la non-répudiation

Les systèmes de cryptographie asymétriques consacrent la notion de certificat et d'autorité de certification avec un usage garanti de non répudiation dans le cadre de la norme X.509 et sa spécialisation pour les application internet.
Attention, là encore, on utilise deux expressions voisines anglaises, souvent confondues et associées toutes les deux à la non-répudiation. Nous détaillons pour une bonne compréhension ces deux expressions et l'usage technique.
  • « key usage extensions », ou extension du protocole sur l'usage de la clé est un champ renseignant sur l'utilisation qui doit être faite de la clé. Si ce champ est défini comme critique, alors la clé ne doit être utilisée que pour l'usage spécifié. Si le champ n'est pas positionné à critique, alors le champ Key usage est là à titre indicatif.
  • « extended key usage extension », ou extension du protocole sur l'usage étendu de la clé, permet de définir de façon plus étendue les usages, notamment par une fonction globale attendue de la clé, comme la protection des courriels ou l'authentification d'un serveur. Voici quelques uns des usages étendus possibles, pour bien comprendre. 

En guise de conclusion

Il me semble qu'au vu de :
  • la complexité du sujet,
  • du manque de compréhension partagée parmi les différents experts,
  • du vocabulaire ambigu ou mal traduit largement utilisé, surtout du côté des adjectifs de la graduation,
  • de l'évolution des technologies avec les capacités de calcul des processeurs et des failles découvertes,
Il est temps de partager un référentiel simple et compréhensible pour l'utilisateur qui soit orienté sur les grandes fonctions qu'apporte la cryptographie en sécurité.

C'est l'objet de SAPPhire, un standard de simplification pour l'authentification sécurisé orienté utilisateur.
SAPPhire a été développé pour SEPAmail mais dépasse largement le cadre de SEPAmail.
J'en développerai peut-être dans un prochain billet en quoi SAPPhire répond à ces différentes problématiques.

2 commentaires:

Tristan a dit…

Merci Manfred pour ce bel article. Désormais, je sais que je ne sais rien :-)
Question bonus, comment fais-tu rentrer les mécanismes d'OTP (par ex, SecurID) dans ton modèle opposant authentification et déverrouillage ? (déverrouillage à distance puis authentification du token ?)

Manfred Sherlock OLM a dit…

Les systèmes OTP sont des procédés à mot de passe unique (one time password), fondés généralement sur l'outillage de l'agent humain pour dépasser son incapacité à dépasser le rejeu.
Dans le modèle d'authentification proposé par le RGS (et non par moi ;-) ), ces mécanismes outillent généralement le déverrouillage de l'environnement local de confiance.

On parle souvent d'authentification forte à distance de cet environnement local de confiance car le déverrouillage met en jeu un mécanisme avec ce que l'utilisateur sait (un mot de passe) et ce que l'utilisateur a (l'outil OTP délivre souvent un code à ajouter au mot de passe de l'utilisateur), donc deux facteurs de nature différente.

Certains mécanismes OTP sont présentés comme des systèmes sécurisés pour l'authentification à distance sur des environnements locaux qui ne sont pas de confiance (un poste de travail dans un cyber café). Ils ne sont généralement pas faits pour cela et ne garantissent donc pas la sécurité de cette authentification.