Construction d'un serveur de signature

Le modèle de signature Android APK prévoit que la clé de signature sera la même pendant toute la durée de vie de l’application. Cela peut être vu dans la durée de vie recommandée d’une clé de signature Android : 20+ ans. De plus, il est difficile de migrer une application vers une nouvelle clé. Puisque la clé de signature est un élément essentiel pour empêcher les APK de se faire passer pour un autre, les clés de signature Android doivent être conservées en sécurité pendant toute la durée de vie de l’application.

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.

Serveur de signature automatisé avec 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.

Une autre possibilité est d’utiliser une installation comme Sigul de Fedora. Cela implique trois 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.

Téléchargez l’image “CD” ou “DVD” complète de Debian pour lancer l’installation. Soyez sûr de vérifier la signature GPG et les hachages SHA-256. Pour mettre à jour la machine hors ligne, une installation de « apt offline » est nécessaire.

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
  • Installer un Coreboot binaire reproductible compilé
  • 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é
  • Agents de sécurité sur place
  • 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.