web-dev-qa-db-fra.com

Qu'est-ce qu'une sous-clé exactement?

Je comprends assez bien les mathématiques derrière RSA, Elgamal, AES, SHA mais pas comment les choses sont utilisées dans la pratique. En quoi les sous-clés sont-elles différentes de la clé principale? Je comprends son objectif à partir de divers sites Web, mais comment est-il implémenté en interne? Comment est-il lié à la clé principale? Est-ce une terminologie OpenPGP?

19
balki

Ce message de l'utilisateur rjh de 2008 sur le forum enigmail y répond bien:

À l'origine dans PGP 2.6, au début des années 90, vous n'aviez qu'une seule paire de clés et elle était utilisée à la fois pour le chiffrement et la signature. La possibilité d'avoir des paires de clés supplémentaires a présenté certains défis d'ingénierie. En fin de compte, il a été décidé que les paires de clés supplémentaires seraient appelées "sous-clés", bien qu'il n'y ait rien de "sous" en elles. De même, ce que vous appelez votre "clé" n'est pas vraiment une clé du tout - la terminologie est un vestige du temps où une clé était vraiment une clé. De nos jours, une clé est vraiment une collection de clés, ainsi que des métadonnées pour les identifiants d'utilisateurs, les signatures, etc.

Par exemple, ma "clé" comporte quatre paires de clés: 5B8709EB, D0C6AAE4, 71E177DB et 8DB02BBB3.

Ce que GnuPG appelle votre "clé publique" est vraiment la plus ancienne clé de signature de la collection. Par exemple, depuis que 5B8709EB a été créé en premier, GnuPG appelle l'ensemble des clés et métadonnées "la clé 5B8709EB".

Donc, "est-il possible d'avoir une clé utilisée pour le chiffrement et la signature sans aucune sous-clé?" La réponse est non, car toutes les paires de touches sur une touche sont des sous-clés. Même s'il n'y en a qu'un seul.

17
Geremia

Sous-clés

Les paquets de sous-clés sont définis dans RFC 4880, OpenPGP, 5.5 Key Material Packet . Ils ne se distinguent que par un autre ID de paquet et nécessitent une signature de liaison pour être réellement utiles (voir ci-dessous).

Un paquet de sous-clé publique (balise 14) a exactement le même format qu'un paquet de clé publique, mais désigne une sous-clé.

Utilisation des sous-clés

Les sous-clés OpenPGP sont utilisées à différentes fins:

  • Pouvoir stocker la clé primaire hors ligne ou un appareil plus sécurisé. Si une machine avec une sous-clé est endommagée, vous pouvez facilement révoquer la sous-clé sans tous les tracas liés à la révocation de votre clé primaire (partage d'une nouvelle clé, obtention de nouvelles signatures, ...).
  • Avoir différentes sous-clés sur différentes machines, par exemple une sous-clé de signature sur un serveur de génération. Encore une fois, la révocation de clés uniques est facile.
  • Utilisation d'une clé primaire plus grande pour une longue durée de vie et de sous-clés plus courtes mais plus rapides pour une utilisation quotidienne.
  • Certains algorithmes ne prennent pas en charge à la fois le chiffrement et la signature. Par exemple, une clé primaire DSA nécessite une autre clé pour le chiffrement, généralement associée à ElGamal.

Signatures contraignantes

Il existe des sous-types de signature spéciaux pour lier les sous-clés aux clés primaires (et vice versa), répertoriés dans RFC 4880, OpenPGP, 5.2.1 Types de signature :

0x18: Signature de liaison de sous-clé

Cette signature est une déclaration de la clé de signature de niveau supérieur qui indique qu'elle possède la sous-clé. Cette signature est calculée directement sur la clé primaire et la sous-clé, et non sur un ID utilisateur ou d'autres paquets. Une signature qui lie une sous-clé de signature DOIT avoir un sous-paquet de signature incorporée dans cette signature de liaison qui contient une signature 0x19 établie par la sous-clé de signature sur la clé primaire et la sous-clé.

0x19: Signature de liaison de clé primaire

Cette signature est une déclaration d'une sous-clé de signature, indiquant qu'elle appartient à la clé primaire et à la sous-clé. Cette signature est calculée de la même manière qu'une signature 0x18: directement sur la clé primaire et la sous-clé, et non sur un ID utilisateur ou d'autres paquets.

13
Jens Erat