Bonjour à tous! Premier post sur ce forum combien intéressant! En espérant lire vos commentaires et questions et recevoir vos commandes dès maintenant!
Version courte
Insurgo, Technologies Libres offre du matériel reasonably secure (digne de confiance) remis à neuf rencontrant et dépassant les critères de la certification QubesOS. Le matériel proposé démarre depuis le micrologiciel (firmware) libre Heads, un payload Linux de coreboot, permettant de mesurer et d’attester de sa propre intégrité avant de vérifier celles des composantes et configurations de démarrage du système d’exploitation (QubesOS ou autres dérivés Linux) et de passer le contrôle à celui-ci.
L’environnement de démarrage vérifie que les binaires et configurations sont signées depuis la clef publique de l’utilisateur, intégrée à même Heads dans la mémoire flash SPI, confirmant que ceux-ci ont été signés à l’aide de la clef privée de l’utilisateur, quant à elle stockée et protégée dans sa Nitrokey Pro/LibremKey. Si les configurations de démarrage sont elles aussi intègres, Heads passe alors le contrôle à L’OS et le démarre (kexec). Sinon, Heads informe des modifications, qui devraient être liées à une mise à jour système que l’utilisateur aura permis. Il est donc important de redémarrer l’ordinateur après avoir effectué une mise à jour du kernel et de l’hyperviseur, de manière à signer ces changements dès qu’ils ont eu lieu.
Cette attestation d’intégrité du micrologiciel est effectuée depuis le Trustable Module Platform (TPM) ou/et depuis une clef USB Nitrokey Pro/LibremKey à l’aide du protocole HMAC-based one time password.
Il est à noter que les matériels proposés ne contiennent ni Intel ME (neutralisé via clean_me) ni PSP et en conséquence, aucun espion potentiel au niveau du matériel.
Insurgo offre aussi des formations adaptées au modèle de menace de ses différentes clientèles organisationelles et offre des banques de temps servant au support et au développement de fonctionnalités additionelles désirées au sein de Heads/QubesOS. Toutefois, pour l’offre grand publique, les clients seront redirigés vers les communautés Heads et QubesOS respectives, par manque de temps.
Insurgo vise à devenir une coopérative de travailleurs et de vente, de manière à diversifier son offre de services en fonction des expertises de ses collaborateurs et membres du conseil d’administration en devenir et afin de faire bénificier des réductions de coûts à ses futurs clients, en réduisant les coûts d’achats de matériel remis à neuf qui dépendent directement des réductions de coûts liés au volume d’achat de matériel.
L’idée étant de refiler la facture liée à l’acquisition du matériel au client, tout en chargeant un coût fixe liée à la reprogrammation du matériel, à l’installation de QubesOS et de l’attestation de l’intégrité de la configuration finale avant l’expédition du matériel dans des colis séparés.
Les modèles proposés sont:
- Laptop: x230 i7 2.9GHZ, USB3, écran IPS, 16GB ram, 240GB ssd, wifi Atheros AR5B95, backlit keyboad, webcam, TPM
- Serveurs/Deskops basés sur les motherboard KGPE-D16/KCMA-D8, avec carte ASMBv4.
Disclaimer: Je collabore sur le Projet Heads depuis 2 ans ainsi que sur le projet QubesOS depuis un peu plus longtemps. Je ne suis donc pas totalement impartiel quant à la fougue que je porte en ces projets.
Collaborations
Ma participation au projet Heads a démarré en 2016 lorsque j’ai constaté les limitations d’isolation matérielles pouvant être offertes par le IOMMU d’Intel (vt-d1) sur le chipset GM45 présent dans les Lenovo x200/x200t/t400/t500, étant les seuls laptops supportés par Libreboot et attesté Respect Your Freedom (RYF) par la Free Software Foundation (FSF) qui offrait assez de performance pour être utilisé tous les jours. Je travaillais alors à rendre QubesOS démarrable depuis un conteneur LUKS, qui a depuis été intégré en amont au projet QubesOS. J’ai depuis délaissé le x200, comme je délaisse présentement les plateformes Power9, ARM et RISC-V, puisque mon intérêt réside dans le concept de sécurité par méfiance et considère personellement que la meilleure approche est conséquemment la compartimentation, autant au niveau du matériel que des univers de travail. Ce modèle de menace rejoint entre autres aux défenseurs des droits et libertés, journalistes d’enquête, lanceurs d’alertes et fournisseurs de services privés sur infrastructures partagées/cloud privé.
Je collabore donc activement sur le projet Heads depuis 2 ans et participe, moins intensivement mais tout de même, à QubesOS depuis près de 3 ans.
Version longue
Heads
Heads, c’est un environnement de prédémarrage (BIOS) libre et sécuritaire remplaçant UEFI/BIOS propriétaire de certains modèles d’ordinateurs/serveurs sélectionnés pour leurs capacités de virtualisation (Intel: VT-x, AMD: AMD-V), et de compartimentalisation (IOMMU. Intel: VT-D, AMD: AMD-Vi avec RVI.) et le matériel présent sur la carte mère (carte graphique, carte réseau, contrôleurs) pouvant être initialisés et contrôlés depuis des micrologiciels et pilotes de périphériques libres.
Heads est en fait un payload Linux lancé par une version modifiée de Coreboot supportant measured boot.
Heads a pour but de rendre le matériel informatique duquel il démarre “slightly more secure” ou digne de confiance. En remplaçant le micrologiciel responsable d’initialiser le matériel et en utilisant Linux comme environnement de démarrage pour lancer son système d’exploitation favori, Heads permet de s’assurer que celui-ci n’a pas été compromis en ayant une confiance mesurable sur ce qui s’exécute sur le matériel de l’ordinateur avant le lancement du système d’opération. Heads combine une panoplie de logiciels libres (coreboot, Linux, kexec, GnuPG2, cryptsetup, dropbear, flashrom, busybox, etc), vous permettant d’attester de l’intégrité du micrologiciel à l’aide du Trusted Platform Module (TPM) présent dans ces modèles d’ ordinateur/serveurs, ou encore à l’aide d’une clef USB NitroKey Pro/LibremKey externe à celui-ci (bien qu’un port USB existe sur le motherboard de la plupart des serveurs et peut donc être considéré “interne” et protégée par une détection d’intrusion physique au chassis)
Measured boot
En utilisant une source de validation externe comme le TPM, Heads modifie coreboot pour qu’il mesure chacun des modules du micrologiciel avant de les exécuter et enregistre le résultat de ces mesures dans les registres du TPM. Le résultat final de ces mesures est un Code QR TPM based One Time Password (TPMTOTP), qui une fois scanné sur son téléphone intelligent depuis une application TOTP, permet à l’utilisateur de vérifier que le code éphémère de 6 chiffres affiché par Heads au démarrage est le même que sur son téléphone intelligent. S’il correspond, l’intégrité est attestée et l’utilisateur peut avoir confiance que sa machine n’a pas été compromise au niveau du micrologiciel, base de confiance nécessaire à toute informatique digne de confiance.
De plus, la mesure d’intégrité des modules est utilisée comme salage (salt) et combinée à un mot de passe de second ordre choisi par l’utilisateur, puis inséré dans le second slot du header LUKS, pour déchiffrer le contenu du disque dur sans jamais exposer le mot de passe de déchiffrement principal (recovery LUKS passphrase). En activant cette option (en sélectionnant une configuration de démarrage par défaut sous Heads), l’utilisateur n’a plus besoin de valider le code TPMTOTP sur son téléphone à chaque redémarrage. Si tapper le mode de passe de second ordre pour déchiffrer le contenu de son disque dur ne fonctionne pas, c’est que les mesures d’intégrité effectuées par le TPM sur le micrologiciel ne sont plus consistantes. Redémarrer et valider le code TPMTOTP sur son téléphone confirmera la chose et demandera à l’utilisateur d’user de précautions s’il décide tout de même d’utiliser le matériel compromis, puisque son ordinateur n’est plus que le sien. De plus, quelqu’un ou une caméra qui pourrait prendre note de la phrase de passe de déchiffrement de disque de second ordre n’est pas suffisant pour avoir accès au contenu de votre disque dur si celui-ci est cloné. Il n’est possible de déverrouiller le conteu de votre disque dur avec cette phrase de passe que depuis votre ordinateur et seulement si le micrologiciel est toujours intègre. Autrement, il est possible de déverrouiller son volume chiffré avec le mot de passe de chiffrement du disque principal, qui ne devrait d’ailleurs être entré au clavier qu’à l’abri des regards indiscrets.
La clef NitroKey Pro/LibremKey, dont le code source HMAC-based One Time Password (HOTP) a été développé par Puri.sm, est intégré en amont au code source de la Nitrokey Pro. L’utilisation de cette clef USB comporte toutes les fonctions attendues d’une SmartCard PGP (GnuPG), votre clef privée étant sécurisée et isolée dans le dispositif, à l’extérieur de votre ordinateur. Elle permet de chiffrer/déchiffrer courriels et fichiers, en plus de pouvoir être utilisée de manière extrêmement conviviale pour valider l’intégrité du micrologiciel responsable de démarrer celui-ci. En effet, si les mesures d’intégrité du micrologiciel sont celles attendues, la LED de la clef clignote en vert. Si l’intégrité micrologicielle n’est pas attestée comme connue, celle-ci clignote en rouge. Il est alors possible de livrer du matériel digne de confiance et cette clef dans des colis séparés, réunis par l’utilisateur à la réception préalablement au premier démarrage du matériel. Cette mesure d’intégrité, similaire à celle effectuée par le TPM, lui permet de s’assurer qu’aucun tier n’a compromis l’intégrité de la base de confiance de son ordinateur lorsqu’il était en transit ou hors de supervision immédiate. Sous réception du matériel expédié, l’utilisateur final réinitialise ses clefs depuis Heads: se réapproprie sa clef Nitrokey Pro/LibremKey et génère une paire de clefs PGP (GnuPG), reprend possession de son TPM (phrase de passe) et rééencrypte le contenu de son disque dur avec sa propre phrase de passe de déchiffrement principal du conteneur LUKS. L’ordinateur n’est plus celui du OEM, mais devient réellement et uniquement le sien. L’utilisateur final pourra s’assurer que le matériel est toujours sous son contrôle à chaque redémarrage de celui-ci et signer chaque mise à jour du kernel, initrd et mise à jour de Xen, ainsi que l’intégrité de ses configurations et paramètres de démarrages.
En remplaçant le BIOS dans la mémoire flash SPI par coreboot avec un tel payload linux, Heads sert d’environnement de contrôle et de récupération autonome. GPG2 y est intégré pour permettre de générer une paire de clefs de chiffrements depuis sa SmartCard NitroKey Pro/LibremKey. CBFS et flashrom permettent d’insérer la clef publique générée par l’utilisateur au micrologiciel Heads, de manière à vérifier la validité des signatures exigées de l’utilisateur à chaque mise à jour du kernel Linux ou de Xen ainsi que de ses configurations logicielles de démarrage. Heads permet aussi de signer ses propres images disques (ISO) téléchargées, n’étant pas signées par les distributeurs reconnus par Heads. Les clefs publiques des images de disques produites par Fedora, QubesOS et Tails sont intégrées à Heads, permettant de démarrer ces systèmes d’exploitation depuis une clef USB à condition d’être accompagnées de leurs signatures d’intégritées, qui elles sont validées depuis les signatures comprises dans le micrologiciel. Le résultat est qu’il est possible de démarrer depuis une image disque sur une clef USB, validant l’intégrité de l’image disque qu’il s’apprête à démarrer de manière automatique et sécuritaire.
Desktop/Serveur
Deux cartes mères, la KGPE-D16 et la KCMA-D8 ont été libérés par Timothy Pearson de RaptorEngineering dans un projet financé par Libreboot. Le code source permettant de libérer ces deux plateformes est bien sûr intégré à coreboot et ne contient aucun blob binaire pour initialiser l’entièreté du matériel. Le résultat est particulièrement intéressant.
Ces deux plateformes x86 sont en effet les deux seules ne comportant aucun blob binaire et supportant la virtualisation et un IOMMU, les rendant tout à fait dignes de confiance comme station de travail QubesOS, ou déployer des services sans risque d’être compromis par des portes dérobées au niveau du matériel.
Ces plateformes peuvent donc être utilisées de manière sécuritaires pour héberger un cloud privé, un serveur de virtualisation, développer en toute confiance ou encore servir de station de travail pour les journalistes utilisant SecureDrop.
Des plateformes complètement libres voient le jour, telles que Talos II (Power9) ou encore SiFive (Risc-V) mais celles-ci comportent quelques limitations au niveau des logiciels supportés. En conséquence, si votre modèle de menace implique l’utilisation de QubesOS pour compartimenter vos univers de vie ou isoler votre matériel (lire: ne pas faire confiance totalement aux périphériques réseaux et USB connectés), ces plateformes alternatives à x86 ne sont pas supportées par QubesOS et il n’y a pas de plan pour le faire, x86 étant la seule architecture grand publique présentement supportée.
Les cartes-mères KGPE-D16/KCMA-D8 acceptent optionellement une carte d’expension IPMI iKVM (ASMBv4) permettant d’accéder à vote machines telle un serveur. Celle-ci a aussi libérée par Timothy Pearson par sociofinancement. Cette carte, une fois son micrologiciel remplacé par OpenBMC, permet le contrôle à distance via SSH, depuis un lien Ethernet dédié. ASMBv4 a vu son design PCB libéré dernièrement et est maintenant disponible pour commandes. Reste à trouver qui peut les fabriquer localement. Vous avez des idées?
La résultante est un environnement de récupération Whiptail, accessible via internet si désiré, dépendemment de la configuration réseau déployée. Dans mon cas, mon routeur offre une adresse onion privée et redirige le traffic sur l’instance OpenBMC. Un port forward SSH combiné au lancement d’un screen me permet d’intéragir directement avec le dom0 de QubesOS, d’où je gère les instances de différents services et me connecte aux différentes consoles Xen.
L’environnement Heads permet de mettre à jour les micrologiciels Heads et OpenBMC. Mettre à jour Heads conservera les clefs et autres personnalisations insérées via cbfs au micrologiciel, qui sont extraites puis réinsérées au rom avant d’êtres écrites sur le SPI flash via flashrom. L’intégrité des composantes est mesurée et attestée depuis une clef LibremKey depuis le port usb interne de la carte mère.
Avec une flash SPI de 16MB, il y a donc espace pour beaucoup de personnalisation, y compris le support vboot qui vient tout juste d’être intégré à coreboot 4.9, sorti le 20 décembre.
Ordinateurs portables dignes de confiance
Le Lenovo x230 est sur Ivy bridge. Le Intel Management Engine (ME), sur Ivy bridge, peut être désactivé et ses extensions, supprimées. En effet, seules deux composantes logicielles sont encore présentes, soient le ROMP (inisitalisation) et le BUP(désactivé). Intel ME passe alors de plus de 5000Kb de code binaire et modules propriétaires démarrés sans consentement éclairé préalable à moins de 98K, étant le minium nécessaire au fonctionnement continu de l’ordinateur. La résultante est un Intel ME qui se rapporte comme étant en mode “Alt Disable Mode” et n’ayant aucun module additionnel à exécuter. C’est le mieux que nous puissions faire puisqu’il est impossible de se débarasser du module ROMP, le résultat étant un ordinateur qui s’éteint après 30 minutes.
Ordinateurs Amnésiques
En combinant Heads et une Nitrokey Pro/LibremKey avec un ordinateur digne de confiance amnésique (sans persistence de données) et sans trace d’Intel ME, on obtient le maximum de sécurité possible pour les clientèles les plus vulnérables. Un ordinateur portatif comme le Lenovo x200/x200t/t400, rendus libres par les efforts de Libreboot, basé sur le chipset GM45 (RYF) peut alors démarrer Tails de manière tout à fait sécuritaire, en lui permettant, dès le démarrage, de s’assurer qu’il peut avoir confiance en son ordinateur et ainsi démarrer Tails sous la forme attendue par ses développeurs.
Voici ma contribution pour une informatique plus libre et plus sécuritaire! Posez-moi toutes vos questions!
Je m’apprête à faire une annonce directement sur le groupe de discussions utilisateurs de QubesOS afin d’offrir le service vers la mi-janvier une fois une entente élaborée avec Purism avec sa LibremKey afin d’avoir accès à un rabais au volume.
Qui suis-je:
Thierry Laurion
Que fais-je:
GitHub
Insurgo, Technologies Libres/Open Technologies
Site web (Besoin d’aide pour faire un site transactionnel zerolog)
Page Facebook
Lauréat local du défi OseEntreprendre
Lauréat régional du défi OseEntreprendre
Contacts:
Courriel (Clef publique)
Matrix
Slack Heads/Linuxboot/u-root/u-bmc
Heads:
Heads’ reproducible builds
Heads’ documentation
Heads’ code
Heads’ 33c3 presentation