Table des matières
Vérifier la signature de l'application F-Droid
Comme de toute application récupérée sur le site web de F-Droid.
Cas d'utilisation
Je souhaite ajouter l'application F-Droid afin de pouvoir facilement installer et mettre à jours des application fournies par ce magasin d'applications. Cette application n'étant pas disponible sur Google-Play, il faut la télécharger manuellement, puis l'installer. Avant de l'installer, je veux m'assurer que l'application que j'ai téléchargée est bien celle qui a été développée et packagée par F-Droid.
Le problème
Afin de permettre ce type de contrôle, F-Droid fournit, sur son site web, des fichiers de signature PGP. Il devrait donc être possible de contrôler la validité du fichier contenant l'application. Or, il ne suffit pas de télécharger le fichier de l'application et le fichier de signature pour s'assurer de la validité de l'application. C'est tout à fait normal. Il faut disposer de la clé publique de la personne qui à apposé cette signature. Pas de bol, cette clé étant introuvable sur le site web de F-Droid, comment faire pour la récupérer ?
Installer la clé publique
À défaut de proposer de télécharger les clés publiques utilisées par F-Droid, la page Release Channels and Signing Keys de leur site web fournit les empreintes de leurs clés. Dans mon cas d'utilisation, la clé qui m'intéresse est celle qu'utilse F-Droid pour signer ses “official binary releases”. Les trois informations utiles sont l'adresse mail ainsi que les empreintes des “Primary key” et “Subkey”. Chacune de ces trois informations est susceptible de permettre de récupérer la clé publique correspondante, sur un serveur de clés.
En utilisant le serveur de clé mis à disposition par Unbuntu et en indiquant l'adresse mail comme critère de recherche j'obtiens un résultat :
Search results for 'admin@f-droid.org' Type bits/keyID cr. time exp time key expir pub rsa4096/37d2c98789d8311948394e3e41e7044e1dba2e89 2014-04-25T13:33:11Z Hash=6015784cd3773f3f669a945e849bc70c sig sig d3a6fa2d7ecc6df6 2018-04-20T19:55:32Z ____________________ ____________________ d3a6fa2d7ecc6df6 sig sig 99392f62bae30723 2020-01-30T13:36:53Z 2022-01-29T13:36:53Z ____________________ 99392f62bae30723 sig sig 1715eeaa14daec14 2020-12-02T06:23:50Z ____________________ ____________________ 1715eeaa14daec14 …
La ligne suivante indique l'empreinte correspondante à ce résultat :
pub rsa4096/37d2c98789d8311948394e3e41e7044e1dba2e89 2014-04-25T13:33:11Z
À la date de création de cette fiche, elle correspond à l'empreinte figurant sur la page de F-Droid, les espaces de séparation en moins et les majuscules remplacées par des minuscule. C'est normal ! Je décide donc de charger cette clé sur mon ordi, depuis ce serveur de clés :
$ gpg --keyserver keyserver.ubuntu.com --recv-keys 37d2c98789d8311948394e3e41e7044e1dba2e89
Le résultat de la commande indique comment s'est déroulée l'opération. Je vérifie que la clé est installée et fait une dernière vérification de son empreinte :
$ gpg --list-keys F-Droid
Confiance
La clé est ajoutée mais je n'ai pas indiqué quelle confiance je lui fait, c'est-à-dire quelle confiance je fait à la signature de personne ou à l'organisation qui l'a émise. Comme dans les relations sociales, à quoi sert de savoir que la signature d'une personnes est authentique si on ne lui fait pas confiance ? Je décide d'accorder ma confiance à l’émettrice de cette clé. Pour ce faire, j'utilise la commande “trust” de gpg.
$ gpg --edit-key F-Droid
gpg> trust
[la commande affiche les options et me permet de choisir]
gpg> quit
Vérifier la signature de l'application F-Droid
Après téléchargement du fichier de l'application F-Droid et du fichier de signature, je peux procéder à la vérification :
$ gpg --verify F-Droid.apk.asc F-Droid.apk
Tant que j'y suis, j'en fait autant pour l'application “F-Droid Privileged Extension OTA”.
$ gpg --verify org.fdroid.fdroid.privileged.ota_2130.zip.asc org.fdroid.fdroid.privileged.ota_2130.zip