Signature / vérification du noyau pour empêcher / détecter la manipulation
8
Toutes mes partitions sont cryptées ( /et /home), mais la /bootpartition doit rester non cryptée et est ouverte à la manipulation. Je pensais à hacher le noyau au démarrage et à comparer le résultat avec une valeur stockée (générée lors de la compilation, enregistrée sur mon lecteur chiffré) pour voir si quelqu'un avait manipulé le noyau depuis le dernier démarrage (peut-être même physiquement). Y a-t-il un problème avec l'écriture d'un tel script? Y a-t-il déjà des programmes qui le font?
Ce que vous recherchez - vérifier que le système d'exploitation exécuté sur l'ordinateur est un système de confiance - s'appelle un démarrage sécurisé . (C'est l'une des nombreuses choses qui sont parfois appelées démarrage de confiance). La méthode que vous proposez n'atteint pas cet objectif.
Le chiffrement ne fournit pas l'intégrité ou l' authenticité des données . En d'autres termes, cela n'empêche pas un attaquant de modifier le contenu de votre disque et de le remplacer par un système d'exploitation malveillant. Ce système d'exploitation malveillant pourrait facilement être programmé pour afficher la somme de contrôle que vous attendez du noyau chargé.
Le chemin d'attaque le plus simple est un homme au milieu où l'attaquant exécute votre système d'exploitation normal sous une sorte de machine virtuelle. La couche de machine virtuelle transmet votre entrée au système d'exploitation souhaité et retransmet la sortie. Mais il enregistre également vos frappes (mmmm, mots de passe) sur le côté, récupère les clés privées de la mémoire du système d'exploitation, etc.
Afin d'éviter cette forme d'attaque, vous devez avoir une racine de confiance : un composant du système auquel vous faites confiance pour une raison autre que parce qu'un autre composant du système le dit. En d'autres termes, vous devez commencer quelque part. Commencer avec du matériel en votre possession est un bon début; vous pouvez garder votre système d'exploitation sur une clé USB qui ne vous quitte pas et ne le brancher que sur du matériel en lequel vous avez suffisamment confiance (le matériel peut contenir des logiciels malveillants !). Attention, si vous êtes prêt à faire confiance à l'ordinateur, vous pouvez également faire confiance à son disque dur.
Il existe une solution technique pour combler l'écart entre faire confiance à une petite puce et faire confiance à un ordinateur de bureau ou un ordinateur portable entier. Certains PC disposent d'un TPM (module de plateforme de confiance) qui peut, entre autres, vérifier que seul un système d'exploitation connu peut être démarré. Trusted Grub prend en charge les TPM, donc avec un TPM plus Trusted Grub, vous pouvez avoir l'assurance que le noyau que vous exécutez est celui que vous avez approuvé.
Notez que l'adoption du TPM peut fonctionner pour ou contre vous. Tout dépend de qui a les clés. Si vous disposez de la clé privée de votre module de plateforme sécurisée, vous pouvez contrôler exactement ce qui s'exécute sur votre ordinateur. Si seul le fabricant possède la clé privée, c'est un moyen de transformer une plate-forme à usage général en une appliance verrouillée.
+1 pour la référence à un gros écueil potentiel du TPM (aka Treacherous Computing)
Eli Heady
Vous ne donnez aucune solution réelle , mentionnez simplement les expressions populaires liées à la sécurité. Ce que vous dites d'une attaque MITM est une menace qui ignore l'idée principale de la question de l'OP: utiliser un script de vérification de somme de contrôle qui ne permet au système de démarrer que si certaines conditions sont remplies. À ce stade, il n'y aurait aucun problème à vérifier que le matériel sous-jacent réel est ce qu'il devrait être, pas une machine virtuelle.
rozcietrzewiacz
-1
Le noyau amorcé réside en mémoire. Vous pouvez créer un script qui le localisera /dev/memet, connaissant la taille, calculer et vérifier sa somme de contrôle.
Vous pouvez également avoir l'ensemble du disque dur crypté, sans avoir besoin de /bootpartition et (presque) aucun moyen de modifier le noyau. Comment? deux façons dont je peux penser:
Placez votre noyau sur un CD, à partir duquel votre ordinateur démarrera. Ce n'est pas si difficile; certaines personnes ont signalé avoir utilisé une telle configuration il y a plusieurs années - voir le deuxième post dans ce fil de discussion .
Si votre carte mère est prise en charge par coreboot et a suffisamment d'espace pour accueillir un noyau minimal, vous pouvez avoir un noyau activé pour le cryptage sur votre puce BIOS. (Je n'ai pas eu l'occasion de tester, mais je ne vois aucune raison pour laquelle cela pourrait ne pas fonctionner.)
Edit: Notez que ce ne sont que des étapes simples vers un démarrage "fiable" ou "vérifié" (que Gilles a souligné à juste titre). Le mécanisme complet doit également tenir compte de ce qui se passe au stade du chargeur de démarrage et de la façon dont le matériel sous-jacent est identifié. Découvrez comment Google Chromium OS y parvient .
Est-ce que ça marchera? Je ne suis pas sûr; Je ne sais pas si le noyau modifie son code en mémoire après son démarrage. Je sais que vous ne pouvez pas vérifier un module de cette façon, car le module est lié au noyau (en changeant certaines adresses ici et là) lorsqu'il est chargé. Fournira-t-il les propriétés de sécurité souhaitées? Non, voyez ma réponse. L'intégrité est délicate!
Gilles 'SO- arrête d'être méchant'
Il semble que vous n'ayez pas lu toute ma réponse. Le premier paragraphe, auquel vous faites référence, n'est qu'une réponse directe à ce qui a vraiment été demandé. Le reste de ma réponse présente des options similaires à la méthode que vous avez mentionnée, mais mieux , car elles sont protégées contre la modification du noyau (contrairement à une clé USB).
rozcietrzewiacz
@Gilles Vous avez oublié de '@' dans le commentaire précédent. De plus, je viens de vérifier ce dont vous n'êtes pas sûr: a fait un vidage de l'image du noyau en mémoire, puis a ajouté un tas de modules, a fait un deuxième vidage de la région, comparé - pareil. Vous pouvez l' utiliser.
Le noyau amorcé réside en mémoire. Vous pouvez créer un script qui le localisera
/dev/mem
et, connaissant la taille, calculer et vérifier sa somme de contrôle.Vous pouvez également avoir l'ensemble du disque dur crypté, sans avoir besoin de
/boot
partition et (presque) aucun moyen de modifier le noyau. Comment? deux façons dont je peux penser:Placez votre noyau sur un CD, à partir duquel votre ordinateur démarrera. Ce n'est pas si difficile; certaines personnes ont signalé avoir utilisé une telle configuration il y a plusieurs années - voir le deuxième post dans ce fil de discussion .
Si votre carte mère est prise en charge par coreboot et a suffisamment d'espace pour accueillir un noyau minimal, vous pouvez avoir un noyau activé pour le cryptage sur votre puce BIOS. (Je n'ai pas eu l'occasion de tester, mais je ne vois aucune raison pour laquelle cela pourrait ne pas fonctionner.)
Edit: Notez que ce ne sont que des étapes simples vers un démarrage "fiable" ou "vérifié" (que Gilles a souligné à juste titre). Le mécanisme complet doit également tenir compte de ce qui se passe au stade du chargeur de démarrage et de la façon dont le matériel sous-jacent est identifié. Découvrez comment Google Chromium OS y parvient .
la source