• Aucun résultat trouvé

Algorithmes de chiffrement

2.4 Outils cryptographiques et services de sécurité

2.4.1 Algorithmes de chiffrement

Le chiffrement cache (en anglais encrypt) un texte en clair (en anglais plain- text) noté traditionnellement P en le transformant en texte chiffré (en anglais ciphertext), noté C, c.-à-d. écrit en chiffres par l’application d’un algorithme de chiffrement (en anglais encryption algorithm), noté E. Le chiffrement est une opération bijective et son inverse est le déchiffrement (en anglais deciphering), noté D. Ainsi, on écrit C = E(P ) et P = D(C). Il se distingue de cette sorte de codage où chaque mot du texte en clair est remplacé par un symbole. Ce dernier procédé n’est plus utilisé pour cacher le sens d’un message, surtout de- puis l’invention d’ordinateurs dont les capacités de transformation surpassent les capacités humaines autrefois indispensables.

28. Par exemple cela peut prendre plusieurs dizaines de siècles avec des moyens de calcul puissants.

En vue de garantir la dissimulation des textes chiffrés, on gardait autrefois les algorithmes secrets. Cependant une lente mais irrésistible évolution a amené à séparer le procédé en un algorithme et une clé, l’algorithme étant d’une qua- lité telle que seule la détention de la clé permet le chiffrement (ou le déchiffre- ment) du message. En effet, les efforts nécessaires pour modifier les algorithmes ou pour en inventer d’autres, lorsque ceux-ci sont cryptanalysés (on dit aussi cassés), étaient importants. De plus, l’idée que l’adversaire ne connaît pas le fonctionnement de l’algorithme et qu’il lui est par conséquent difficile de le dé- couvrir ne sert qu’à donner des illusions aux concepteurs. On s’est même rendu compte que la publication des algorithmes en attirant les efforts de la commu- nauté scientifique est un facteur de sécurité. C’est le principe de Kerckhoff : tous les algorithmes doivent être publics, seules les clés sont secrètes.

D’autre part, s’il y a lieu de communiquer une information sensibles d’une entité à une autre, ce caractère public évite d’échanger préalablement des al- gorithmes secrets de tailles assez importantes puisqu’ils sont connus de toutes les parties. On évite ainsi la réelle difficulté d’un échange de données à la fois volumineuses et sensibles puisqu’il suffit grâce à l’usage des algorithmes publics à clés secrètes, d’échanger seulement les clés.

Nous n’exposerons pas la palettes d’attaques connues et répertoriées contre les algorithmes de chiffrement renvoyant pour cela à [47]. Nous retiendrons sim- plement que l’efficacité de ces attaques varie selon la longueur des clés, l’algo- rithme considéré voire même la façon dont cet algorithme est effectivement mis en œuvre. Dès lors, il devient possible de définir une solidité des processus de chiffrement, en mesurant par exemple le temps nécessaire à la découverte, en présence d’un texte chiffré, du texte en clair originel : plus un algorithme est solide, plus ce temps de décryptage29 devient long. On peut même classer les procédés par solidité croissante.

Cette solidité est appréciée. Elle se paye souvent au prix de temps de calculs, de consommation d’espace mémoire ou d’un rallongement qui peut être impor- tant des messages à transmettre. Le choix de l’algorithme de chiffrement peut donc être orienté par les capacités non seulement des équipements qui chiffrent mais aussi des équipements qui déchiffrent. Ce point est important à retenir quant au choix ultérieur pour sécuriser les échanges dans les réseaux ad hoc.

Il existe deux grandes classes d’algorithmes de chiffrement : ceux à clé sy- métrique dit aussi symétriques et ceux à couple de clés dit asymétriques. Un algorithme de la première classe emploie une même clé pour les opérations de chiffrement et de déchiffrement, tandis qu’un algorithme appartenant à la deuxième classe se sert d’un couple de clés publique/privée, quand l’une chiffre l’autre déchiffre. On désigne aussi la clé symétrique et la clé privée par secret car elles ne doivent pas être divulguées contrairement à la clé publique. Algorithmes de chiffrement symétrique La machine Enigma mettait déjà en son temps en œuvre un algorithme à clé symétrique : en vertu de la continuité des circuits électriques, si la touche A allumait la lampe W, la touche W allumait la lampe A.

29. C’est le contraire de déchiffrement qui consiste selon Larousse [41] à « rétablir dans sa forme primitive un texte chiffré en utilisant en sens inverse le procédé de transformation adopté par le chiffreur et connu du déchiffreur » et qui dans notre cas suppose que la clé de déchiffrement est connue.

2.4 Outils cryptographiques et services de sécurité 37 Déjà considérée par Claude Shannon, utilisée au cours de la guerre froide pour le célèbre téléphone rouge et implantée dans les premières versions du système UNIX par la commande crypt, la méthode du ou exclusif (en anglais XOR) est l’une des plus ancienne. On sait que sous certaines conditions, elle est optimale. Elle impose la pré-connaissance par les parties désirant communiquer de très longues clés, ce qui la rend difficile à mettre en œuvre.

Pour cette raison, d’autres algorithmes ont été proposés. Par ordre chro- nologique, on peut citer DES (Data Encryption Standard) conçu par IBM et standardisé en 1977, Triple DES (noté aussi 3DES) publié également par IBM en 1999, Rijndael du standard AES (Advanced Encryption Standard) adopté en 2001 par le NIST (National Institute of Standards and Technology) qui sont les trois algorithmes symétriques les plus utilisés aujourd’hui.

On sait, depuis la découverte d’un certain nombre d’attaques que l’on peut mener pour en casser les clés, que DES est fragile. En matière de chiffrement, cette méthode qui est encore disponible sur de vielles machines peut encore éviter les plus grossières des indiscrétions. Triple DES, dérivé du DES, exécute celui-ci trois fois successives en utilisant plusieurs clés différentes. Enfin AES, qui a été conçu pour parer les attaques trouvées contre DES et 3DES, assure une meilleure sécurité, en particulier en permettant l’utilisation de clés plus longues. Algorithmes de chiffrement asymétrique Parmi les algorithmes asymé- triques, RSA, du nom de ses créateurs Rivest, Shamir et Adleman, qui coexiste avec d’autres algorithmes, est de loin, le plus répandu. Conçu autour d’un pro- blème de théorie des nombres clairement identifié30et jugé difficile par la com- munauté mathématique, il garantit pour cela une qualité et une sûreté qui le font considéré comme un archétype. Nous donnons quelques éléments mathé- matiques en annexe B.

Les algorithmes de ce type ont été essentiellement créés pour palier le pro- blème de partage de clé posé par les algorithmes à clés symétriques. La section suivante met en lumière cette difficulté et les solutions apportées.

Les deux types d’algorithmes permettent d’assurer les services d’authentifi- cation et de confidentialité. Cela est expliqué plus loin dans ce chapitre. Si RSA est réputé pour sa solidité, il demande au chiffrement comme au déchiffrement un volume de calculs non négligeable, tandis que les algorithmes symétriques, qui sont connus pour être moins solides, sont d’exécution plus rapide. Nous ne détaillerons pas les diverses méthodes et critères utilisés par les cryptanalystes pour démontrer qu’un algorithme est solide. Mais nous mettrons l’accent sur l’importance de la longueur de la clé pour établir cette solidité. En effet, des chiffrements faibles avec un algorithmes donné peuvent le devenir moins en aug- mentant la longueur de la clé, puisqu’une fois la force de l’algorithme établie, la découverte de la clé, seule, représente un danger.

Choix de la longueur des clés de chiffrement Les algorithmes de chiffre- ments gagnent en solidité par l’utilisation de longues clés c.-à-d. des clés ayant un nombre de bits assez élevés. Cette longueur est bien entendu relative au type de l’algorithme considéré. Alors qu’une longueur n’excédant pas 300 bits

30. Il s’agit de factoriser un grand nombre entier dont on sait qu’il est lui même le produit de deux grands nombres entiers premiers.

pourrait être suffisante avec un chiffrement symétrique, une longueur du mo- dule RSA d’au moins 2048 bits, soit 616 chiffres en numération décimal, est nécessaire dans le cas d’un chiffrement asymétrique. Ceci est dû à la présence de la clé publique, connue au moins de l’adversaire, reliée à la clé privée par un procédé mathématique, lui aussi connu puisque l’algorithme est public et donc exploitable lors du décryptage [48].

L’importance de la longueur de la clé s’explique par le fait qu’en l’absence de tout autre mécanisme plus facile pour décrypter, l’attaquant peut se replier sur la solution de l’attaque par force brute qui consiste à essayer toutes les clés possibles jusqu’à trouver celle qui convient. Il en découle que pour une longueur de clé égale à l, le nombre maximal d’essais est égal à 2l. La charge de travail de l’attaquant augmente donc de façon exponentielle quand la longueur de la clé croît.

Inutile de rappeler par ailleurs que les temps de chiffrement et de déchif- frement sont aussi affectés par le rallongement de la longueur de la clé et non pas seulement les temps de décryptage, puisque, comme nous l’avons expliqué plus haut, l’on perd en temps de calculs quand on gagne en solidité. Il appa- raît donc qu’un compromis est à établir lors du choix de la clé. Il doit tenir compte de la sensibilité de l’information à cacher et des risques encourus : un message d’ordre militaire est bien plus sensible qu’un message échangé entre journalistes31. Les performances des processeurs utilisés pour chiffrer ou, par l’attaquant, pour décrypter sont aussi à prendre en considération. Or celles-ci ne cessent de s’améliorer, conséquence de la capacité des processeurs à inclure de plus en plus de transistors, phénomène modélisé depuis longtemps par la loi empirique de Moore.

Limites du chiffrement Il y a des protections que le chiffrement ne peut pas garantir, par exemple qu’un texte ne soit pas modifié. En effet une personne malintentionnée est capable de changer le texte chiffré même si elle ne connaît pas sa version en clair. Cela peut être facilement détectable si le texte source est en caractères mais l’est moins s’il est en binaire. Pour faire en sorte qu’une machine puisse le détecter, on protège l’intégrité des informations grâce à des algorithmes cryptographiques de hachage.