Sur les signatures et vérifications par clef
Ce texte est une traduction de la page On Digital Signatures and Key Verification du projet Qubes (Présentation du Qubes OS Project).
Ce texte est un complément à mon tutoriel Comment vérifier l’intégrité d’un fichier que l’on télécharge ?
Début de traduction
Ce que les signatures numériques peuvent et ne peuvent pas prouver
La plupart des personnes - même les développeurs - sont confus sur les concepts de base que sous-tendent les signatures numériques. Par conséquent, la plupart des gens devraient lire cet article, même si cela semble trivial à première vue.
Les signatures numériques peuvent à la fois prouver l’authenticité et l’intégrité à un degré raisonnable de certitude. L’authenticité garantit qu’un fichier donné a bien été créée par la personne qui l’a signé (c’est à dire, qu’il n’a pas été modifié par un tiers). L’intégrité garantit que le contenu du dossier n’a pas été falsifiés (par exemple, qu’un tiers n’a pas modifié de façon indétectable son contenu en cours de route).
Les signatures numériques ne peuvent pas prouver autre chose, par exemple, que le fichier signé n’est pas malveillant. En fait, il n’y a rien qui pourrait empêcher quelqu’un de signer un programme malveillant (et cela arrive de temps en temps dans la réalité).
Le point est, bien sûr, que les gens doivent choisir en qui ils auront confiance (par exemple, Linus Torvalds, Microsoft, le projet Qubes, etc) et supposer que si un fichier donné a été signé par un tiers de confiance, alors il ne devrait pas être malveillant ou des contenir des erreurs énormes. Mais la décision de faire confiance à un tier donné est au-delà de la portée des signatures numériques. Il s’agit plus d’une décision politique et sociologique.
Une fois que nous prenons la décision de faire confiance à certains tiers/personnes, les signatures numériques sont utiles, car elles permettent que nous limitons notre confiance uniquement aux quelques tiers que nous choisissons et nous n’avons donc pas à nous soucier de toutes les "mauvaises choses qui peuvent arriver en cours de route" entre nous et le tiers, par exemple, avec des cas de compromission de serveur (Qubes-os.org va sûrement être compromise un jour), via un membre malveillant au sein de la société d’hébergement, du fournisseur d’accès, dans le cadre du piratage du Wifi... etc
En vérifiant tous les fichiers que nous téléchargeons et qui prétendent avoir été émis par le tiers auquel nous avons choisi de faire confiance, nous éliminons toutes préoccupations liées aux mauvaises choses évoquées ci-dessus, car nous pouvons facilement détecter si des fichiers ont été falsifiés (et par la suite choisir de s’abstenir de l’exécution, de l’installation ou de l’ouverture de ces fichiers corrompus).
Toutefois, pour les signatures numériques aient sens, nous devons nous assurer que les clés publiques que nous utilisons pour la vérification de signature sont en effet celles d’origine. N’importe qui peut générer une paire de clés GPG en prétendant qu’elles appartiennent au "Le projet Qubes," mais bien évidemment, seule la paire de clés que nous (c’est à dire, les développeurs Qubes) avons généré est légitime. La section suivante explique comment vérifier la validité des clés de signature de Qubes.
Importation Qubes clés de signature
Chaque fichier publié par le projet Qubes (rpm, tgz, dépôts git) est signé numériquement par l’une des clés de développeur ou de livraison de version. Chacune de ces clés est signé par la clé de signature du Qubes Master (0x36879494).
La clé publique principale peut être téléchargé à partir d’un serveur de clés, par exemple :
gpg - recv-keys 0x36879494
<code>
Pour plus de sécurité, nous publions également l'empreinte digitale de cette clé maîtresse ici dans ce document:
<code>
pub 4096R/36879494 2010-04-01
Empreinte de la clé = 427F 11FD 0FAA 4B08 0123 F01C DDFA 1A3e 3687 9494
uid Qubes Master Signing Key
<code>
Il devrait également y avoir une copie de cette clé sur le site principal du projet, ainsi que dans les archives des listes de diffusion développeurs et utilisateurs du projet.
Une fois que vous avez téléchargé et vérifié l'empreinte digitale de la clé de signature du Master, vous devez importer cette clé et définir son niveau de confiance à "ultime" (oh, bien), de sorte qu'elle puisse être utilisé pour vérifier automatiquement toutes les clefs des développeurs :
<code>
gpg - edit-key 0x36879494
puis : confiance, 5, y, q
Maintenant, vous pouvez facilement télécharger l’une des clefs d’un développeurs ou de livraison de version, qui aura été utilisé pour signer un fichier particulier de type rpm, tgz, ou tag git. Par exemple :
$ Gpg - recv-keys AC1BF9B3
$ gpg --recv-keys AC1BF9B3
gpg: requesting key AC1BF9B3 from hkp server keys.gnupg.net
gpg: key AC1BF9B3: public key "Qubes OS Release 1 Signing Key" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
<code>
Vous pouvez également télécharger toutes les clefs des développeurs actuellement utilisées (et aussi une copie de la clé maîtresse) à partir du répertoire des clefs sur notre serveur:
<a href="http://keys.qubes-os.org/keys/" title="http://keys.qubes-os.org/keys/">http://keys.qubes-os.org/keys/</a>
Les clés des développeur sont configurés pour n'être valable qu'1 an seulement, alors que la clef Master Qubes n'a pas de date d'expiration. Cette dernière clé a été générée et est conservée dans une machine dédiée, déconnectée et isolée, et la partie privé (espérons-le) ne quittera jamais cette machine isolée.
Vous pouvez maintenant vérifier l'ISO correspond à sa signature:
<code>
$ gpg --verify Qubes-R2-rc1-x86_64-DVD.iso{.asc,}
gpg: Signature made Sun 20 Apr 2014 10:06:13 BST using RSA key ID 0A40E458
gpg: Good signature from "Qubes OS Release 2 Signing Key"
La clé utilisée pour signer ce ISO doit être signé par la clé principale Qubes :
$ gpg --list-sig 0A40E458
pub 4096R/0A40E458 2012-11-15
uid Qubes OS Release 2 Signing Key
sig 26CA2CD7 2013-02-26 [User ID not found]
sig C55BCFE3 2014-02-20 [User ID not found]
sig 36879494 2012-11-15 Qubes Master Signing Key
sig 3 0A40E458 2012-11-15 Qubes OS Release 2 Signing Key
Vérifier le code source de Qubes
Les développeurs qui récupèrent le code de notre serveur Git doivent toujours vérifier les tags sur la dernière validation. Toutes les commits qui ne sont pas suivis par une étiquette signée ne devraient pas être de confiance !
Pour vérifier une signature sur une étiquette de git, vous pouvez utiliser la commande :
$ Git tag-v <tag name>
Fin de traduction
A lire également :
– Présentation du Qubes OS Project).
– Comment vérifier l’intégrité d’un fichier que l’on télécharge ?