Combien de fois j'ai parlé de clés, publiques, privées, de chiffrement, dans cette série ?

Ou avant ? Mais finalement, vous ne savez toujours pas ce que c'est !

C'est le moment de s'y coller !

Les maths

Les fonctions à sens unique

Soit deux très grands nombres, p et q par exemple, le produit n = pq est facile à calculer. En revanche il est très difficile de trouver p et q à partir de n.

C'est l'exemple d'une fonction à sens unique: la transformation d'un nombre vers une image est facile. L'opération opposée est presque impossible.

Il existe de nombreuses autres fonctions à sens unique, celle-ci étant la plus simple à expliquer.

Les fonctions à brèche secrète

Certaines fonctions à sens unique ont toutefois une solution pour les inverser: il s'agit des fonctions à brèche secrète.

Vous l'avez compris, cette brèche secrète est en fait la clé publique ou privée de la fonction de chiffrement.

Une clé publique peut déchiffrer ce qu'a chiffré une clé privée. Et inversement. C'est ce qui se passe lors d'une signature, rappelez-vous !

Donc avec OpenPGP …

Le truc c'est que calculer du chiffrement asymétrique est en fait très long. Environ 1000 fois plus long que le chiffrement symétrique. Et les clés de chiffrement asymétrique doivent être beaucoup plus grosses.

Lorsque l'on chiffre un fichier ou un courriel, on utilise donc une combinaison des deux:

  • créer une clé de chiffrement symétrique
  • chiffrer le fichier en question avec
  • chiffrer la clé de chiffrement symétrique avec le chiffrement asymétrique en question. Comme la clé symétrique est quelque chose de très petit, ça va très vite.
  • mettre le tout dans un conteneur adéquat (avec certainement de la compression quelque part dans le processus. Je ne sais pas trop à quelle étape).

Le déchiffrement consiste en l'opération inverse:

  • ouvrir le conteneur
  • déchiffrer la clé de chiffrement symétrique
  • avec la clé symétrique déchiffrée, déchiffrer le fichier ou le courriel lui-même

Les clés

Les clés sont donc des structures mathématiques. De très très grands nombres et les fonctions nécessaires pour les manipuler.

C'est pourquoi on ne peut utiliser une clé DSA avec un algorithme RSA: les nombres viennent avec les outils qu'on utilise avec eux. S'il ne s'agissait que de nombres et seulement de nombres, on pourrait faire ce qu'on veut.

Ces nombres constituent donc en fait les solutions de fonctions de chiffrement. Je vous rappelle qu'un ordinateur n'est rien d'autre qu'une grosse calculatrice surpuissante. Donc tout est traité avec des nombres. Un texte, c'est une suite de nombres. Et on peut donc leur appliquer un traitement mathématique…

Voila donc ce qu'est un fichier chiffré: le fichier, sous ses constituants fondamentaux, à savoir des nombres, subit des opérations mathématiques qui le rendent inutilisable faute d'avoir la solution.

Quand vous exportez une clé gpg, vous écrivez en fait ces structures mathématiques dans un fichier texte, ainsi que l'ensemble des informations nécessaires pour les utiliser, leur configuration de base, les algorithmes préférés tels que spécifiés dans le gpg.conf.

Voila ce qu'est votre fichier .gpg ou .asc : une bête feuille de papier virtuelle avec un ensemble de nombres et d'algorithmes écrits dessus, sous un format compressé.

Les sous-clés

J'ai déjà dit que chaque clé gpg était en fait une paire de clé: clé publique et privée.

À nouveau, en plongeant un peu plus loin dans le détail, on se rend compte qu'il y a, à nouveau d'autres choses: il y a donc des «sous-clés».

En fait, la paire de clé principale agit comme clé de voûte, mais est très peu utilisée pour la vie courante: elle n'est en général qu'une clé de signature. C'est elle qu'on utilise pour signer les clés de ses correspondants et les sous-clés.

L'idéal est d'essayer de conserver cette paire de clés principale pour au minimum cinq ans (ceci est une estimation, un jugement personnel). De cette façon, vous pouvez distribuer cette clé principale sur supports physiques (cartes de visite par exemple). Puisqu'elle doit durer longtemps, elle doit être aussi au top niveau question «dureté». Cette durée de validité projetée ne doit pas vous tromper. Tout ce qui est défini en terme de sécurité reste valide: vous mettez une durée de validité de 1 an, que vous repoussez régulièrement.

Le but est de faire la transition vers une nouvelle clé - au sens de la clé principale - le plus tard possible.

Vous trouverez quelques conseils intéressants sur cette page.

Les sous-clés sont en fait celles servant dans les cas de signatures de courriel et de fichiers.

NB: Dans le reste des articles, quand la différence est d'importance, je parlerais soit de clés principales, soit de sous-clés.

Les identifiants

Sur une seule clé, on peut indiquer plusieurs adresses courriels. Certains utilisent aussi les identifiants ou commentaires pour loger une empreinte otr, une url, une adresse jabber…

Ajouter un identifiant ou une sous-clé est bien souvent très simple avec les logiciels graphiques comme KGpg.

Cela permet, par exemple, de lier une adresse professionnelle ou universitaire avec votre identité principale.

C'est, je pense, bien plus sûr que d'avoir une clé pour chacune de vos adresses. Ça ne perturbe ou n'inquiète pas vos interlocuteurs.

Et si vous voulez ne signer que tel ou tel identifiant, c'est possible ! Le gestionnaire de clés Kleopatra a par exemple une boite de dialogue avec cases pour désigner les identifiants à signer ou non.

Les groupes de clés

Gpg (et ses interfaces graphiques) permet de créer des groupes de clés.

Je dois avouer que sur le sujet des sous-clés et identifiants, je ne suis pas très au courant. Encore pire, je n'ai aucune idée de ce que sont les groupes de clés ! Mon utilisation de Gpg est bien plus basique. Toutefois, j'estime qu'il est important que vous soyez au courant de l'existence de ces fonctions, de manière à ce que vous puissiez approfondir votre connaissance de l'outil par vous même, si vous l'estimez nécessaire.

Si vous êtes au courant d'articles ou de documentations plus détaillés sur le sujet, n'hésitez pas à m'écrire SVP. Je rajouterais les liens.

Les algorithmes

Il existe une quantité impressionnante d'algorithmes utilisés dans la cryptographie. La plupart ont un rôle et un seul:

  • les algorithmes de chiffrement symétriques
    • DES (aujourd'hui obsolète)
    • AES
  • les algorithmes de chiffrement asymétriques
    • RSA (le plus célèbre et le plus utilisé en ce moment)
    • El-Gamal et DSA
    • ECC : chiffrement à courbes elliptiques ou hyperelliptiques, c'est le top niveau au moment où j'écris ce tutoriel
  • fonctions de hashage (assurent de l'intégrité d'un fichier)
    • La série des MDx (aujourd'hui obsolète): MD1, MD5
    • La série des SHA-x: SHA-1, SHA-2, SHA-256, SHA-512

Pour ceux qui connaissent, vous remarquerez qu'on retrouve les noms de certains algorithmes utilisés par TLS.

Un peu de vocabulaire

Je n'aime pas couper les cheveux en quatre. Pour moi ce qui compte, c'est l'action, ce qu'on fait. Pas les mots derrière.

Néanmoins, un peu de précision ne fait pas de mal.

La cryptographie est la partie des activités humaines (science, dévellopements mathématiques et informatique) consacrée au chiffrement, c'est à dire à la protection de l'information (protection des communications, des fichiers, authentification).

Il s'agit donc, entre autre, de toute la conception des algorithmes, qui sont ces opérations mathématiques qui permettent cette protection.

Le chiffrement quand à lui désigne plutôt l'action concrète, c'est à dire vous, utilisateurs finaux, qui protegez vos communications.

Pour proteger ces informations, on chiffre, puis on les déchiffre avec des clés.

Encrypter, quoique compréhensible, est un abus de language. Décrypter désigne l'action de lire l'information, sans avoir la clé. Sans être légitime donc !