La cryptographie est un procédé utilisé depuis l’antiquité pour transporter des informations sans en permettre l’interception par des éventuels ennemis. En effet, certains messages sont parfois cruciaux et leur découverte pourraît être grave en conséquences. Ainsi, elle fut notamment utilisée à des fins militaires dans ses débuts : on peut notamment citer l’exemple de la machine de chiffrement
Enigma, qui était utilisée par les allemands durant la seconde guerre mondiale.
De nos jours, les méthodes utilisées pour le chiffrement d’informations ont bien évolué depuis l’antiquité : en effet, les contraintes ne sont pas les mêmes qu’à l’époque, et empêchent donc une utilisation pratique des vieilles méthodes de chiffrement (j’en donnerai quelques exemples plus bas). De plus, la cryptographie s’est maintenant démocratisée et est utilisée dans la vie de tous les jours pour rendre nos communications confidentielles : en effet, on peut notamment citer l’exemple du SSL sécurisant les communications sur l’Internet, ou même nos téléphones portables, qui chiffrent nos communications grâce à des informations contenues dans leur carte SIM.
Cependant, malgré de nombreuses bibliothèques, la mise en place de chiffrement dans un programme est souvent compliquée et nécessite beaucoup de connaissances théoriques. C’est sur ce constat que les équipes de la Google Online Security ont développé leur nouveau bébé, nommé Keyczar, permettant en une ligne de crypter des informations en faisant abstraction des détails techniques. De plus, cette bibliothèque est
libre, c’est à dire que son code source est ouvert à tous et réutilisable dans vos applications.
Avant de vous expliquer quels sont les avantages et les fonctionnalités de Keyczar par rapport aux autres bibliothèques de chiffrement existantes, faisons tout d’abord un petit rappel des principes de base de la cryptographie, qui vous permettront ensuite de mieux comprendre les fonctionnalités de Keyczar.
Le chiffrement : comment ça marche ?
Tout d’abord, on peut dissocier deux cas de chiffrements : les algorithmes de chiffrement
symétriques, et les algorithmes
asymétriques. Alors que les premiers nécessitent de communiquer une clé pour crypter ou décrypter le message, les seconds utilisent eux deux clés différentes : une pour le chiffrement et une pour le déchiffrement.
Les algorithmes de chiffrement symétriques
Chronologiquement, ces algorithmes ont été les plus utilisés car ce sont les plus simples à mettre en place, et car c’est également le moyen le plus intuitif. Déja dans la Grèce antique, en 600 avant J.C, ce genre de chiffrements existaient via l’usage d’un scytale, un baton en bois. Les romains utilisèrent ensuite une autre méthode de chiffrement, qui consistait en un décalage des lettres de l’alphabet. On utilise encore ce genre d’algorithmes, comme le montre l’adoption du standard
AES en octobre 2000.
Cependant, le chiffrement symétrique pose un problème : pour que l’interlocuteur puisse déchiffrer notre message chiffré, il doit connaître la clé que nous avons utilisée. Mais pour lui fournir la clé, il n’y a que deux moyens : soit l’avoir communiquée directement de manière sûre avant d’être séparés, soit la communiquer chiffrée… ce qui nous fait un beau cercle vicieux obligeant la plupart du temps à transmettre la clé de façon non sécurisée, rendant ainsi le chiffrement vulnérable.
Les algorithmes de chiffrement asymétriques
Les algorithmes de chiffrement asymétriques se basent sur l’arithmétique (un domaine des mathématiques) pour créer deux clés réciproques par interlocuteur. Pour communiquer à deux, nous avons donc chacun deux clés, générées automatiquement par un programme par exemple (on peut notamment citer openssl, très utilisé de nos jours à cet effet). La première clé, aussi appelée
clé publique, n’est utilisée que pour crypter les informations, on peut donc la diffuser sans soucis (d’où son nom de clé
publique). La seconde,
clé privée, ne doit pas être diffusée : elle est la seule à pouvoir déchiffrer des messages chiffrés avec la clé publique qui va de paire.
Ainsi, si Alice veut envoyer un message secret à Bob, elle va demander à Bob sa clé publique (en pratique, on peut la trouver dans des annuaires de clés sur Internet par exemple), chiffrer son message avec la clé publique de Bob, et lui envoyer le message chiffré. Ainsi, Bob, seul détenteur de la clé privée, est le seul à pouvoir décrypter le message.
Pour reprendre une analogie que l’on trouve souvent pour simplifier l’explication, on peut imaginer que Alice possède un coffre-fort et sa clé. Elle envoie le coffre-fort ouvert à Bob en gardant la clé. Bob va ensuite placer le message dans le coffre et le refermer, avant de le renvoyer à Alice. Alice était la seule à posséder la clé du coffre, elle peut maintenant l’ouvrir.
Les fonctionnalités de Keyczar
La visée de Keyczar est d’être un outil à la fois simple et fiable à l’utilisation. Ainsi, il permet le chiffrement et le déchiffrement, aussi bien symétrique qu’asymétrique, et cela en une ligne de code. Les deux langages pouvant actuellement utiliser cette bibliothèque sont Java et Python, et une traduction du projet vers le
C++ est actuellement en cours.
Ainsi, pour crypter symétriquement un message, on fait très simplement comme ceci en langage Python :
Code : Python1 | message_crypte = Crypter.Read("/chemin/vers/les/cles").Encrypt("Message")
|
On fait de cette façon abstraction de tous les détails d’implémentation derrière, qui sont de toute façon gérés par Keyczar. Les clés sont générées par un outil fourni avec la bibliothèque, très simple d’utilisation lui aussi. À côté des fonctionnalités de chiffrement, cette bibliothèque permet aussi de
signer des messages pour en assurer l’intégrité et l’expéditeur (ainsi, vos messages ne pourront pas être modifiés à votre insu).
Un des plus gros défauts de cette bibliothèque est cependant sa jeunesse : en effet, sortie le 11 août dernier, pratiquement aucune application ne l’utilise à ce jour, et la documentation est encore loin d’être abondante. De plus, elle n’est actuellement utilisable que dans deux langages différents, mais cela risque de changer dans les semaines à venir. ;)
Liens externes