Cryptographie : Sécurité

            Tous les algorithmes qui ont été présentés précédemment ne présentent pas les mêmes caractéristiques. Selon les méthodes employées, le niveau de sécurité va changer. Mais l'algorithme n'est pas le seul paramètre à prendre en compte lorsqu'on veut transmettre un message de manière sûre et discrète.

 

I) Quelques notions de sécurité

            Parmi tous les algorithmes étudiés dans les paragraphes précédents, il en est de plus performants que d'autres. Mais l'algorithme ne fait pas tout. En effet, la transmission sûre d'un message, sans interception ni modification, repose parfois sur des paramètres tout à fait différents. Parmi ces paramètres, on retrouve le plus souvent la clé.

        A) Le choix de la clé

            On associe souvent à un algorithme un certain niveau de sécurité. En fait, ce niveau de sécurité n'est pas constant, mais pourrait plutôt se rapprocher d'une moyenne, ou du niveau de sécurité dans les conditions optimales. Car même les meilleurs algorithmes ne sont pas sûrs à 100%, et un choix hasardeux de la clé pourrait compromettre la sécurité de l'algorithme. Vous pouvez avoir le système d'alarme le plus sophistiqué et le plus cher du marché, ça n'empêchera pas les intrus d'entrer chez vous si vous laissez les fenêtres ouvertes ! On retrouve exactement le même cas de figure en cryptographie.

            Les premières précautions à prendre, concernant le choix de la clé, sont toutes à fait évidentes : choisir une clé difficile à deviner. En effet, de nombreux algorithmes acceptent n'importe quel mot ou phrase comme clé de chiffrement. Le fait de choisir un mot ou une phrase permet donc de retenir plus facilement cette clé. On pourra noter au passage que ce problème ne se pose pas avec des algorithmes comme RSA pour lesquels la clé est générée par un programme, et stockée dans un fichier : elle n'est donc pas entrée au clavier par l'utilisateur et n'a pas besoin d'être retenue. Mais le fait d'avoir une clé mnémotechnique est aussi et surtout un inconvénient : en choisissant une clé que l'on n'a pas de mal à retenir, on choisit aussi, en général, un clé facile à deviner. Ainsi, les clés correspondant à votre nom, votre date de naissance, au titre de votre groupe préféré... sont vivement déconseillées par les aides de tous les logiciels de cryptage. N'importe quel indésirable aura plus ou moins accès à des informations vous concernant qui lui permettront d'essayer en priorités toutes ces clés.

            En fait, il est toujours conseillé d'utiliser des clés qui n'ont aucune signification, mélangeant majuscules, minuscules, chiffres, lettres, caractères de ponctuation, etc. Les seules clés parfaites sont en fait les clés totalement aléatoires. Mais les générateurs de nombres aléatoires ne sont pas parfaits eux-mêmes : ils calculent ces nombres à partir de formules prédéfinies et sont donc plus ou moins prévisibles. De plus, ces formules entraînent parfois des conséquences, d'un point de vue statistiques, qui permettent de retrouver plus facilement la clé.

            Enfin, il faut aussi savoir que le choix de la clé influe directement sur la sécurité de l'algorithme. Ainsi, le mélange compliqué des opérations peut parfois être simplifié pour certaines valeurs particulières de la clé. Par exemple, sur les 256 clés possible poour DES, il en existe 16 pour lesquelles le cryptage est identique au décryptage. Sous IDEA, les clés du type 0000 0000 0X00 0000 0000 000X XXXX X000 (où X est n'importe quel chiffre hexadécimal) ont la dangereuse propriété de faciliter une attaque à texte clair choisi. En effet, la combinaison par un XOR de deux textes chiffrés avec une clé de ce type est identique à la combinaison des deux textes en clair correspondants. Sous RSA, les nombres premiers doivent être choisis avec prudence pour que leur produit ne puisse pas être facilement factorisé. Parfois, les coïncidences sont encore plus compromettantes, et le message devient facilement déchiffrable à cause d'une clé mal adaptée à l'algorithme.

        B) La transmission de la clé

            Le second problème est en général la transmission et la distribution des clés. En effet, lorsqu'on veut transmettre un message sûrement, alors on doit le chiffrer. Pour que le destinataire puisse le déchiffrer, il doit aussi posséder la clé. Il faut alors la lui faire passer sans qu'elle ne soit interceptée, ce qui suppose l'existence d'un canal de communication sûr et à l'abri de toute atteinte. Mais si ce canal existe, alors pourquoi ne pas l'utiliser pour faire passer le message directement ? En fait, il faut regarder en quoi consiste ce canal pour en comprendre les inconvénients.

            Dans l'histoire de la cryptographie, le cryptage a principalement été utilisé par les militaires, pour le compte des différents gouvernements. Ceux-ci ont ainsi pu utiliser leurs diplomates internationaux pour transmettre la clé aux personnes concernées. Le problème est ici temporel : un agent dans un pays peut avoir besoin d'envoyer un message à n'importe quel moment. Or la valise diplomatique ne fait pas continuellement des allers-retours avec le pays d'origine. Elle permet donc de transmettre la clé à un moment quelconque qui permettra, le moment venu, de sécuriser la transmission du message. Or la valise diplomatique n'est pas à la disposition de tout le monde. Mais on peut transposer cette situation à deux utilisateurs. Ils peuvent échanger une clé lorsqu'ils se rencontrent, et cette clé permettra des échanges sécurisés ultérieurement, lorsqu'ils ne pourront pas se voir.

            De nos jours, d'autres canaux sécurisés existent. Il s'agit entre autres des cryptosystèmes à clé publique : ils permettent de crypter le message sans avoir besoin de transmettre la clé nécessaire au décryptage. Les risques d'interception sont donc réduits. Mais alors, pourquoi ne pas utiliser ces systèmes pour crypter directement les messages ? Tout simplement parce qu'ils sont trop lents. En effet, les systèmes les plus sûrs effectuent des opérations qui prennent beaucoup de temps. Crypter des textes entiers serait tout à fait hors de question. C'est pour cela que l'on ne se sert de ces systèmes que pour envoyer la clé d'un cryptosystème à clé privé, beaucoup plus rapide, et pour identifier un expéditeur dans certains cas.

Copyright © BLANC David - 2000