====== Vérifier la signature de l'application F-Droid ======
Comme de toute application récupérée sur le site web de F-Droid.
Cette fiche ne traite pas de comment installer et configurer gnupg. C'est supposé être fait.
===== 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 =====
Sur le site de F-Droid, la documentation est très mal faite. Les traductions en français démontrent une méconnaissance élémentaire de la langue anglaise, ajoutant une couche d'opacité. Je recommande vivement de consulter la version anglaise du site.
À défaut de proposer de télécharger les clés publiques utilisées par F-Droid, la page [[https://f-droid.org/en/docs/Release_Channels_and_Signing_Keys/|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 [[https://keyserver.ubuntu.com/|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
===== En savoir plus =====
* [[phone:f-droid-full-install|Installer F-Droid]]
* [[https://f-droid.org/en/docs/Release_Channels_and_Signing_Keys/|Release Channels and Signing Keys]]
* [[https://f-droid.org/fr/docs/Get_F-Droid/|Get F-Droid]]
* [[https://f-droid.org/en/packages/org.fdroid.fdroid.privileged.ota/|F-Droid Privileged Extension OTA]]
* [[https://f-droid.org/fr/docs/|Documentation]]