Il s'agit d'une excellente question. La réponse est (bien sûr) assez complexe, mais laissez-moi essayer de la décomposer pour vous. Examinons d'abord les processus techniques :
La chaîne de confiance
Nous n'utilisons pas SSL pour sécuriser APT, nous utilisons des hachages cryptographiques (SHA256, de nos jours) et des signatures OpenPGP. Cela vous permet de faire confiance à des miroirs non fiables et vous évite d'avoir à faire confiance à la PKI de l'AC.
Lorsque vous ajoutez un référentiel à la liste des référentiels d'APT, vous pouvez l'ajouter à la liste des référentiels d'APT. sources.list
vous devez également ajouter sa clé PGP au trousseau de clés de confiance d'APT, avec l'attribut apt-key
commande. Le trousseau de clés est livré avec les clés des dépôts d'Ubuntu incluses. Et lorsque vous utilisez la commande apt-add-repository
pour ajouter un PPA, il ajoute la clé (obtenue de Launchpad via SSL) pour vous.
La chaîne de confiance est :
- Cada
sources.list
points d'entrée APT vers un Release
dans le référentiel, avec un Release.gpg
(ou ils peuvent être combinés en une signature InRelease
). Ce fichier décrit le dépôt, et doit être signé par une clé dans le trousseau de clés de votre APT.
- En
Release
Le fichier contient les hachages cryptographiques de tous les Packages
y Sources
fichiers. Ils listent tous les paquets et les versions disponibles dans le référentiel.
- En
Packages
y Sources
contiennent les hachages cryptographiques de chaque paquet.
- Les paquets eux-mêmes ne sont pas signés. C'est inutile, il y a une chaîne de confiance vers eux, depuis le fichier Release, signé par le miroir. Cependant, les paquets sources, utilisés pour construire les paquets binaires sont signés PGP, par le développeur qui les a envoyés.
Vous pouvez en savoir plus sur le format de référentiel sur le wiki Debian .
Cette chaîne signifie que nous n'avons pas à faire confiance à des miroirs intermédiaires, nous pouvons être sûrs que le paquet que nous installons est identique à celui qui était présent lorsque le fichier Release a été signé.
Vous pouvez inspecter le trousseau de clés d'APT en exécutant sudo apt-key finger
.
Vérification des clés d'archivage d'Ubuntu
Comment savez-vous ce qui devrait être là ? Si vous ne faites pas confiance à votre ordinateur, vous ne pouvez pas faire confiance aux programmes qui s'y trouvent pour ne pas vous mentir (tels que apt-key
), et cet exercice est futile. Supposons donc que c'est juste par intérêt académique, et vérifions le contenu du trousseau de clés à partir du paquet source définitif, qui est signé PGP par le développeur qui l'a téléchargé.
Télécharger le ubuntu-keyring
le paquet source, et voyez ce qui devrait s'y trouver :
$ apt-get source ubuntu-keyring
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 20.0 kB of source archives.
Get:1 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (dsc) [1542 B]
Get:2 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (tar) [18.5 kB]
Fetched 20.0 kB in 0s (0 B/s)
dpkg-source: info: extracting ubuntu-keyring in ubuntu-keyring-2012.05.19
dpkg-source: info: unpacking ubuntu-keyring_2012.05.19.tar.gz
$ gpg --verify ubuntu-keyring_2012.05.19.dsc
gpg: Signature made Sat May 19 03:33:12 2012 SAST
gpg: using RSA key 0x393587D97D86500B
gpg: Good signature from "Colin Watson <cjwatson@chiark.greenend.org.uk>"
gpg: aka "Colin Watson <cjwatson@debian.org>"
gpg: aka "Colin Watson <cjwatson@ubuntu.com>"
gpg: aka "Colin Watson <cjwatson@canonical.com>"
$ gpg --no-default-keyring --keyring ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg --fingerprint
ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg
-------------------------------------------------------------
pub 1024D/0x40976EAF437D05B5 2004-09-12
Key fingerprint = 6302 39CC 130E 1A7F D81A 27B1 4097 6EAF 437D 05B5
uid Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
sub 2048g/0x251BEFF479164387 2004-09-12
pub 1024D/0x46181433FBB75451 2004-12-30
Key fingerprint = C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451
uid Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>
pub 4096R/0x3B4FE6ACC0B21F32 2012-05-11
Key fingerprint = 790B C727 7767 219C 42C8 6F93 3B4F E6AC C0B2 1F32
uid Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>
pub 4096R/0xD94AA3F0EFE21092 2012-05-11
Key fingerprint = 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
uid Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>
Je sais qu'il s'agit en fait de la signature de Colin Watson, car je l'ai rencontré plusieurs fois et nous avons vérifié nos identités respectives et signé nos clés respectives. Si vous disposez d'une clé dans le jeu de clés PGP, vous devriez pouvoir trouver un chemin de confiance vers lui. Je sais également que je peux lui faire confiance pour télécharger le bon fichier ubuntu-keyring
paquet.
Pour Debian, il y a un paquet ( debian-keyring
) contenant les clés PGP de tous les développeurs Debian, et vous pouvez l'utiliser pour vérifier les signatures des paquets sources. Ubuntu n'a pas d'équivalent, mais de nombreux développeurs Ubuntu sont également des développeurs Debian, et les clés PGP de tous nos développeurs sont disponibles sur leurs profils dans Launchpad.
Les autres questions
Comment puis-je savoir si les mises à jour ne sont pas malveillantes ?
C'est une question de confiance. Vous devez faire entièrement confiance à chaque référentiel que vous utilisez. Vous donnez aux mainteneurs de chaque dépôt la permission d'exécuter des choses en tant que root sur votre machine.
Les paquets Ubuntu ne peuvent être téléchargés que par les développeurs Ubuntu qui se sont vus accorder des droits de téléversement par la Commission européenne. Conseil d'adhésion des développeurs (dont je fais actuellement partie). Pour demander des droits de téléchargement, vous devez être parrainé par plusieurs développeurs Ubuntu existants qui ont travaillé avec vous et qui ont confiance en vos capacités à travailler par vous-même. Sans droits d'upload, les uploads doivent être sponsorisés par les développeurs qui ont les droits (ce qui devrait inclure la révision de l'upload).
Pour les mises à jour postérieures à la sortie de la version, Ubuntu a des politiques strictes concernant le contenu des mises à jour. Elles ne doivent contenir que des correctifs minimaux pour corriger les bogues connus. Les correctifs sont examinés par les membres des équipes SRU / Sécurité avant d'être acceptés.
Évidemment, les PPA et les dépôts de tiers n'ont pas toutes ces restrictions. Vous devez faire confiance aux propriétaires de PPA pour être raisonnable.
Tous les paquets Ubuntu et PPA ont la source disponible, donc ils peuvent être inspectés par n'importe qui.
Existe-t-il des options de configuration qui rendent le processus plus ou moins prudent, et quelles sont leurs valeurs par défaut ?
Vous pouvez désactiver la vérification des signatures dans APT, mais elle est bien sûr activée par défaut. Lorsque vous essayez d'installer quelque chose à partir d'un dépôt non signé / non fiable, apt vous demande de confirmer que vous voulez vraiment le faire.
Y a-t-il des attaques connues ou des vulnérabilités récentes ?
Je me souviens d'un, Bogue Debian 499897 . Debian contourne ce problème en donnant aux fichiers Release une date d'expiration, après laquelle ils ne sont plus dignes de confiance. Ubuntu ne le supporte pas encore .