Qu'est-ce la cryptographie ?

La cryptographie peut être définie comme des techniques de traitement de données qui rendent certaines actions par certaines personnes difficile, impossible ou très peu probables, en permettant, en même temps, ces actions à d'autres personnes sans difficultés.  La cryptographie est principalement un jeu d'opérations qui rendent certaines actions ou opérations un puzzle impossible à résoudre pour certains, et facile pour d'autres.

L'application originale de la cryptographie était bien sûr la communication secrète.  Cela est toujours une partie importante de la cryptographie, mais entre temps, le nombre d'autres applications cryptographiques a explosé, et la communication secrète est seulement une, bien que toujours importante, application parmi beaucoup d'autres.  La communication secrète consiste en rendant publique une source d'information, qui est totalement incompréhensible pour la plupart des gens, mais qui a un sens bien évident pour certains, car ces derniers possèdent une information supplémentaire qui permet d'utiliser une technique qui rend la source publique intelligible.  Dans la communication secrète classique, nous distinguons les amis et les ennemis.  Le message doit être compréhensible pour les amis, et impossible à lire pour les ennemis.  Ce qui distingue l'ami de l'ennemi, c'est la possession d'une information, que nous appelons la clé.  Un ami possède une clé, et un ennemi, pas.  Le vocabulaire militaire n'est pas totalement applicable bien sûr, car dans la cryptographie, nous ne voulons pas détruire un ennemi.  Mais il n'est pas totalement dénué de sens non plus.  Historiquement, la cryptographie était d'ailleurs essentiellement une affaire militaire.

Les applications modernes de la cryptographie vont rendre les concepts d'ennemi et d'ami beaucoup plus complexe.  Une même personne peut être en même temps ami et ennemi par exemple.  Dans la mesure où "permettre à certains de faire des opérations sur des données, et rendre cela impossible, difficile ou improbable à d'autres, dans un monde où les données sont de plus en plus économiquement importants, nous pouvons nous imaginer l'importance qu'a pris la cryptographie ces dernières décennies.  Cependant, la cryptographie est un domaine en général encore très mal compris par la plupart de ces utilisateurs qui en dépendent malgré tout pour leur activité économique, leur vie privée et même leur sûreté.  Cela est une situation inquiétante, qu'on pourrait assimiler à des commerciaux et des marchants qui n'auraient pas la maîtrise suffisante de l’arithmétique afin de pouvoir faire la comptabilité de leurs échanges.

 La cryptographie est une technologie basée principalement sur les mathématiques, les sciences de l'informatique et l'entropie.  Considérons l'application standard: la communication secrète.  Si notre but était d'émettre de l'information pour tout le monde, nous serions dans le domaine de l'ingénieur de communication.  Tout le monde serait ami.  Si notre but était de rendre de l'information incompréhensible pour tout le monde, c'est aussi très facile: ajoutons du bruit tel que l'information est totalement perdue.  Tout le monde est ennemi.  La subtilité de la cryptographie réside dans la nécessité d'avoir des techniques qui rendent le message facilement lisible pour certains en utilisant une clé, en rendant en même temps la même opération quasi impossible pour les autres.  Le message d'origine s'appelle le texte en clair.  Le message incompréhensible est le texte chiffré.  Le secret qui peut transformer le texte chiffré en clair est la clé.  Le texte chiffré doit aussi être produit, facilement, avec la clé à partir du texte en clair.  Sans la clé,  il devrait être impossible, très difficile, ou très improbable de produire le texte en clair, mais avec la clé, cela devrait être facile.  Ainsi, une opération mathématique doit être trouvée qui rend le puzzle facile en possession de la clé, et quasi-impossible sans la possession de la clé.  Seulement, les maths, c'est plutôt pour trouver des solutions que pour avoir la certitude de l'impossibilité de trouver la solution (qui existe).  C'est ce qui rend la cryptographie spéciale: il faut avoir des puzzles mathématiques dont nous savons qu'il est quasi-impossible de trouver des solutions.  C'est aussi ce qui rend "inventer de la crypto dans votre cave" une activité dangereuse si on l'utilise là où on compte sur son efficacité.  Autant qu'il est possible de se convaincre seul qu'on a trouvé la solution à un problème, il est impossible, dans la plupart des cas, de démontrer que personne ne trouvera jamais un moyen de trouver la solution à un problème.  Ainsi, il n'y a aucune façon de tester seul la fiabilité d'un système cryptographique.  La seule chose que l'on puisse faire, c'est de publier une technique et d'espérer qu'elle attirera une certaine attention de suffisamment de cryptographes pour qu'ils puissent essayer de casser le système, sans succès.  Casser un système cryptographique consiste a trouver une façon de faire avec les données ce qu'un ennemi est justement pas sensé de pouvoir faire, par exemple, de restituer le texte en clair à partir du texte chiffré sans la clé.

C'est pour cela que la règle d'or en cryptographie est: pour des applications cryptographiques importantes, seulement des techniques bien connues et publiés peuvent être utilisés.  N'utilisez pas une technique inventée "dans votre cave".

S'il y a une chose à retenir de la cryptographie, c'est bien celle-ci.

Applications et systèmes cryptographiques.

Comme mentionné avant, l'application originale de la cryptographie est la communication secrète, mais entre temps. beaucoup d'autres applications existent:

  • La communication secrète parmi un petit nombre d'amis.  C'est l'application originale de la cryptographie, et c'est basée sur des techniques cryptographiques symétriques.  Un petit groupe d'amis partagent une clé qu'ils gardent secret. Avec la clé, ils peuvent transformer le texte en clair, en texte chiffré, ainsi que de transformer le texte chiffré en texte clair.  Les ennemis qui n'ont pas la clé, ne peuvent pas faire cela.  Le statut d'ami correspond au fait de posséder la clé.
  • La communication secrète parmi n'importe qui vers une personne.  Avec l'émergence des communications de masse et d'internet, une nouvelle application a vu le jour basée sur des techniques de cryptographie asymétriques.  Avec la cryptographie asymétrique, il y a une pair de clés, une clé dite publique et une clé dite secrète ou privée.  La clé publique permet de transformer un texte en clair, en texte chiffré, mais ne permet pas l'opération inverse.  La clé privé permet de transformer le texte chiffré en texte en clair.  Ainsi, on peut rendre public la clé publique (d'où son nom).  Il faut garder le secret de la clé privée.  N'importe qui peut prendre la clé publique, et chiffrer un message.  Ainsi, il peut rendre public le texte chiffré qu'il a fabriqué lui-même, mais seulement le destinataire pourra déchiffrer le texte chiffré.  S'il y a quelqu'un d'autre qui veut envoyer un message chiffré au même destinataire, il peut faire cela aussi de la même façon.  Le premier émetteur ne pourra pas lire le message du second émetteur, et le second émetteur ne pourra pas lire le message du premier émetteur.  Seulement le destinataire peut déchiffrer les deux messages.  Un avantage de cette technique est qu'il ne faut pas déterminer à l'avance qui sont des amis.
  • Empreintes digitales numériques.   Des fonctions mathématiques dites des fonctions de hachage cryptographiques peuvent générer des empreintes digitales de grandes quantités de données, de telle façon qu'il n'y a pas de moyen pour modifier les données et de retrouver l'empreinte originale.  
  • Des signatures numériques.  Une combinaison des deux techniques précédentes.  Une personne fabrique une pair de clés et utilises la clé secrète et une fonction de hachage pour produire une signature d'un document.  Il met à disposition la clé publique.  Avec la clé publique, on peut vérifier que ce qui à été chiffré "à l'envers" par la clé secrète était bien l'empreinte du document par la fonction de hachage.  Ceci n'est valable bien sûr que dans la mesure où le vérificateur peut avoir confiance que la clé publique est bien celle qui va avec la clé secrète.   Dans la mesure où on peut avoir confiance dans la clé publique, une signature numérique prouve que c'est bien l'ami qui possède la clé secrète qui a signé le document et non quelqu'un qui veut se faire passer pour lui.
  • Non-répudiation.  Ceci est une version plus compliqué de la signature numérique qui peut prouver que quelqu'un est bien le signataire d'un document, même si cette personne ne veut plus le reconnaître.  C'est l'équivalent de la signature d'un contrat.
  • Certification.  La certification numérique le fait qu'une autorité de certification à donnée une preuve de possession justifiée d'une clé publique à la personne qui vous fournit une clé publique.  Pour cela, il faut avoir confiance dans l'autorité de certification bien sûr.  Un certificat est essentiellement une clé publique qui a une signature numérique d'une autorité de certification, ce qu'elle n'est sensée de faire que quand elle a eu des preuves de l'identité de la personne à qui elle a fourni le certificat.
  • Preuve de zéro-connaissance.  Un protocole interactif qui permet à un agent d'obtenir la preuve qu'un autre agent possède une information, sans obtenir la moindre entropie de cette information et sans être, après, capable de faussement prouver à quelqu'un d'autre qu'on possède la-dite information en utilisant les réponses de l'autre parti.  C'est en quelque sorte l'opposé de la non-répudiation.
  • Preuve de travail.  Un agent doit prouver à un autre agent qu'il a fourni une quantité de travail, ce qui peut facilement être vérifié sans devoir faire le même travail.  Ceci peut être utile si nous voulons limiter le nombre de copies d'identité qu'un agent pourra simuler: à partir d'une certaine quantité de travail à fournir par copie, cela devient trop cher pour l'imposteur.
  • Signature de cercle.  C'est une technique qui est équivalente à une signature numérique, à part le fait que le signataire peut utiliser les clés publiques d'autres personnes et les "mélanger" à la sienne.  La seule chose qui peut en suite être vérifiée, c'est que une de ces personnes, y compris le signataire, a signé le document.  Le signataire peut, s'il le désire, ensuite prouver que parmi les signataires potentiels, c'était bien lui.
  • Cacher des données dans d'autres données ou dans du bruit.  Quand on rend publique un texte chiffré, tout le monde peut voir que vous avez rendu publique un texte chiffré.  Les ennemis ne peuvent pas lire le message en clair, mais ils voient bien que vous avez voulu envoyer un message.  Cela peut poser un problème dans certaines situations.  Ainsi, il est aussi possible de cacher des messages dans des données innocents comme une image ou un fichier son ou quelque chose de similaire.  Ennemis ne peuvent même pas déceler qu'il y ait de l'information (autre que l'information innocente) dans le fichier.  Il y a des versions plus sophistiqués de cette technique, où un texte chiffré rend un certain texte en clair avec une clé, et rend un autre texte en clair avec une autre clé.   Sans la deuxième clé, il n'est même pas possible de déceler qu'il y avait un deuxième texte caché dans le texte chiffré.
  • ...

Comme dans toute discipline d'ingénierie, il y a une structure de bas en haut: à la base il y a des techniques fondamentales cryptographiques basées sur des propriétés mathématiques.  Un niveau plus haut, nous avons les blocs d'application comme mentionnés ci-dessus: il y a encore un lien très fort entre une technique et le bloc d'application.   Ensuite ces blocs peuvent être combinés dans des systèmes cryptographiques avec un certain cas d'utilisation.  La navigation sûre et/ou privée sur internet est un tel système ; les crypto-monnaies en sont un autre.