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 mis en œuvre en interne? Comment est-il lié à la clé principale? Est-ce une terminologie OpenPGP?
Commentaires
- Cela ma beaucoup aidé: wiki.debian .org / Sous-clés
Réponse
Ceci post par lutilisateur rjh de 2008 dans le forum enigmail répond bien:
À lorigine dans PGP 2.6, au début des années 90, vous naviez quune seule paire de clés et elle était utilisée à la fois pour le cryptage et la signature. La possibilité davoir des paires de clés supplémentaires présentait certains défis dingénierie. En fin de compte, il a été décidé que les paires de clés supplémentaires seraient appelées « sous-clés », malgré le fait quil ny ait rien de « sous » à leur sujet. De même, ce que vous appelez votre « clé » nest pas vraiment une clé du tout – la terminologie est un vestige de lépoque où une clé était vraiment une clé. De nos jours, une clé est en réalité une collection de clés, ainsi que des métadonnées pour les identifiants d’utilisateur, 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 lensemble complet de clés et de métadonnées la « clé 5B8709EB ».
Donc, « est-il possible davoir une clé qui » est utilisée pour le chiffrement et la signature sans aucune sous-clé du tout? « La réponse ici est non, car toutes les paires de clés d’une clé sont des sous-clés. Même s’il n’y en a qu’une.
Réponse
Sous-clés
Les paquets de sous-clés sont définis dans RFC 4880, OpenPGP, paquet de matériel clé 5.5 . 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 Public-Subkey (tag 14) a exactement le même format quun paquet de clé publique, mais désigne une sous-clé.
Utilisation des sous-clés
Les sous-clés OpenPGP sont utilisé à différentes fins:
- Être en mesure de 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 de la révocation votre clé primaire (partage dune 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 build. Encore une fois, révoquer des clés uniques est facile.
- Utilisation dune 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 ption, généralement associé à ElGamal.
Signatures de liaison
Il existe des sous-types de signature spéciaux pour lier les sous-clés aux clés primaires (et inversement), 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 quelle 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 dautres 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 faite 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 par une sous-clé de signature, indiquant quelle appartient à la clé primaire et à la sous-clé. Cette signature est calculée de la même manière quune signature 0x18: directement sur la clé primaire et la sous-clé, et non sur un ID utilisateur ou dautres paquets.