Construction d'un serveur de signature

The Android APK signing model sets the expectation that the signing key will be the same for the entire lifetime of the app. That can be seen in the recommended lifetime of an Android signing key: 20+ years. On top of that, it is difficult to migrate an app to a new key. Since the signing key is an essential part to preventing APKs from impersonating another, Android signing keys must be kept safe for the entire life of the app.

Les clés de signature du dépôt F-Droid suivent un modèle très similaire : la clé de signature est le moyen essentiel pour identifier en toute sécurité un dépôt F-Droid. Ainsi, les mêmes considérations s’appliquent aux clés de signature du dépôt F-Droid pour les clés de signature APK. Cela offre aussi des avantages vraiment utiles. Puisque l’intégrité du fichier index repo et des APKs est garantie par la signature repo, les fichiers peuvent être livrés par la méthode la plus pratique, et leur intégrité sera automatiquement vérifiée par l’application client F-Droid, le processus de déploiement f-droid.org et Repomaker.

Cela signifie que la charge de sécurité est transférée du serveur Web public en ligne vers une machine à signer privée. Le simple fait de garder cette machine à l’abri des regards du public contribue grandement à améliorer la sécurité. Un certain nombre de mesures supplémentaires peuvent être prises pour améliorer encore la sécurité du processus de signature. Voici quelques approches, en commençant par la plus simple et la moins sécurisée, et en passant par des installations plus sécurisées qui demandent plus de travail pour l’installation et l’exécution. La signature n’est pas un processus exigeant en ressources, de sorte que n’importe quelle machine fonctionnera, même un ordinateur portable vieux de 10 ans. Nous recommandons d’utiliser une installation minimaleDebian et de reconstruire la machine à partir de zéro.

Automated Signing Server with HSM

Pour un système de signature entièrement automatisée, la machine qui exécute la signature doit être en ligne et en cours d’exécution. Idéalement, cette machine ne devrait pas avoir d’accès à distance, ou alors l’accès à distance devrait être très soigneusement contrôlé et surveillé. Un ordinateur portable permet de travailler facilement, même lorsque l’accès à distance est désactivé, puisqu’il dispose d’un clavier et d’un moniteur intégrés. Si l’accès à distance est nécessaire, n’importe quel PC de base fonctionnera parfaitement. L’utilisation d’un module de sécurité matérielle (HSM) pour stocker les clés empêche qu’elles soient volées si le serveur est piraté. Un attaquant ne pouvait exécuter le processus de signature que sur ce serveur.

Idéalement, cette machine devrait être uniquement accessible via Tor. Cela cache la localisation physique du serveur et cache le trafic en provenance du réseau. Cela rend plus difficile de trouver la machine pour des attaquants.

Pour le HSM, nous recommandons l’utilisation du matérielNitrokey, puisqu’il s’agit de logiciels/matériel libre et qu’ils offrent un large éventail d’options. Utilisez une machine séparée pour mettre les clés de signature sur HSM. Un bon MHS conservera une piste de vérification du nombre de signatures qui ont été faites, de sorte que l’information pourrait être utilisée pour créer un processus de vérification automatique afin de déclencher des alarmes si de trop nombreuses signatures ont été faites. Cela pourrait signifier que ce serveur a été violé et utilisé pour signer des paquets non autorisés.

Another possibility is to use a setup like Fedora’s Sigul that involves three machines.

Ordinateur portable basique dédié à la signature

Commencez par un ordinateur portable qui peut être nettoyé et reconstruit à partir de zéro. Le plus important, c’est que seul le logiciel essentiel y est installé, et rien d’autre. N’incluez aucun navigateur, par exemple, car c’est le vecteur d’attaque le plus courant. Aucune configuration d’accès à distance (par exemple SSH ou VNC) ne doit être installée ou configurée. Pour signer des applications et des dépôts, quelqu’un pourrait sortir cet ordinateur portable, le connecter au réseau et lancer le processus de signature. Les résultats signés peuvent ensuite être publiés via la connexion réseau. Lorsque la signature est terminée, la machine peut être éteinte et déconnectée et conservée dans un endroit sûr.

Cela pourrait être fait automatiquent avec certains scripts personnalisés. La personne qui exécute le processus n’aurait qu’à retirer la machine, la connecter, l’allumer, attendre que le processus soit terminé, puis tout ranger à nouveau.

Ordinateur portable de signature entièrement hors ligne avec clés USB

Ce processus est basé sur le même ordinateur portable basique dépouillé que l’exemple précédent. Mais cette fois, le réseau devrait être entièrement désactivé avant le processus d’installation. Par exemple, il est facile pour de nombreux ordinateurs portables de retirer physiquement la carte WiFi. Par conséquent, il est logique d’utiliser un ordinateur portable qui n’inclut pas de prise Ethernet, qui ne sont en général pas possible à enlever. Sinon, le blocklisting de tous les modules du noyau liés à neworking peut suffire. Puisque cette machine est complètement hors ligne, le travail supplémentaire de l’utilisation d’un HSM n’est pas aussi important, mais cela ne peut pas faire de mal de l’inclure.

Download the full “CD” or “DVD” image of Debian to run the install. Be sure to verify the GPG signatures and the SHA-256 hashes. In order to update the offline machine, an “apt offline” setup is required.

Pour être encore plus prudent, tous les logiciels utilisés devraient être vérifiés. Les Chromebooks sont de bons ordinateurs portables premiers prix qui exécutent Linux nativement. Ils utilisent aussi Coreboot comme BIOS.

  • Achetez un ordinateur avec de l’argent comptant directement en magasin, évitez de le faire expédier, surtout de l’étranger
  • Achetez un Chromebook compatible avec Debian avec du matériel WiFi amovible et ne nécessitant pas de logiciels propriétaires
  • Install a reproducibly built Coreboot binary
  • Installez à partir d’une image Debian construite de manière reproductible, effaçant complètement Chrome OS

L’Environnement Physique

La dernière chose à considérer est l’emplacement physique où les signatures se produisent et où l’équipement essentiel est entreposé. L’environnement de signature doit être physiquement sécurisé. Sinon, il n’y a aucun moyen d’empêcher que des ordinateurs portables ou des HSM soient perdus ou utilisés pour signer des contenus inappropriés. Pour les machines hors ligne, les garder dans une pièce fermée à clé est un bon début. Pour une machine en ligne, forcer tout le trafic réseau et l’accès à distance sur Tor cache l’emplacement physique de la machine aux observateurs du réseau.

Pour des clés de signature à haut risque, l’utilisation de multiples couches de défense est important :

  • Accès physique restreint au HSM ou aux cartes à puce
  • Caméras de sécurité
  • On-site security guards
  • Enregistrement des visiteurs
  • Un coffre-fort résistant pour les serveurs de signature de code en ligne

Le serveur de signature doit être physiquement séparé du reste de l’infrastructure. Et les journaux, la machine et le réseau devraient faire l’objet d’un audit périodique.

Décisions difficiles

Idéalement, toutes ces pratiques devraient être mises en place, mais chacune de ces mesures de sécurité a une contrainte de difficulté, de coût et de complexité. Elles peuvent également retarder le processus de mise à jour régulière. Il y a donc des risques de mettre en œuvre des politiques de sécurité trop strictes, tout comme des risques de ne pas en mettre en œuvre suffisamment.