web-dev-qa-db-fra.com

Comment utiliser FDE sans avoir besoin de partager le mot de passe de cryptage

Nous avons un modèle d'IA qui doit être déployé sur site. Le matériel sera fourni par nous, afin que nous puissions faire ce que nous voulons sur l'appareil. L'appareil est un mini PC exécutant Ubuntu 18.04.

L'interface utilisateur est lancée en mode kiosque, donc seul notre programme s'exécutera. L'utilisateur doit pouvoir démarrer la machine, fournir le nom d'utilisateur et le mot de passe pour se connecter et le logiciel démarrera automatiquement.

Cet appareil doit être verrouillé. C'est à dire. nous devons le faire:

  1. Chiffrez le disque dur afin que personne ne puisse prendre le disque dur et copier les fichiers en le branchant sur un autre ordinateur.
  2. Autorisez l'utilisateur à se connecter et à utiliser l'application.
  3. Stockez le modèle AI, utilisez-le de manière à ce que l'utilisateur ne puisse pas le copier ou l'utiliser avec un autre logiciel que le nôtre.

Pour activer cela, j'ai découvert certains problèmes. Pour que l'utilisateur utilise le système, nous devons partager le mot de passe de cryptage. Il pourra donc toujours brancher le disque dur sur n'importe quel autre système et l'utiliser (ou copier le modèle).

Comment puis-je surmonter ce problème?

20
Hari

Selon ma réponse précédente, suggestion de @logneck et un peu de google-fu, Je suis arrivé à la conclusion qu'il est possible de mettre en œuvre le schéma demandé dans la question avec les outils disponibles et beaucoup de patience/expertise. Cette approche devrait satisfaire la demande du PO mais n'est qu'une indication de conception, car elle présente un certain nombre d'inconvénients/pièges. Cela aidera l'OP à se défendre contre l'attaquant naïf essayant de copier les données du disque crypté.

Mon idée précédente d'utiliser une puce TPM reste valide. Ce guide , que je n'ai jamais essayé, montre comment crypter le disque sans avoir à taper un mot de passe et en empêchant quiconque de décrypter les données sur une autre machine.

Le TPM est normalement intégré à la carte mère, il ne peut donc pas être déplacé vers un autre matériel. TPM effectue une attestation matérielle, afin que vous puissiez vérifier que l'environnement matériel est conforme et qu'aucune carte tierce n'a été connectée à votre mobo.

Si l'attestation matérielle réussit, le TPM se déverrouille. Le module LUKS peut alors demander au TPM la clé de chiffrement du disque, qui est stockée dans le TPM déverrouillé.

Si le disque est déplacé vers une autre machine, vous n'aurez pas la clé avec vous.

Comme décrit dans le guide, le procss implique:

  • Installer la distribution de votre choix
  • Prenez possession de la puce TPM à l'aide de trousers et tpm-tools
  • Installer trustedgrub2 et l'utiliser comme chargeur de démarrage
  • Ajoutez la clé de déchiffrement LUKS au module de plateforme sécurisée
  • Sceller le TPM

Sceller le TPM signifie faire une attestation matérielle. Le guide que j'ai lié parle de démarrage du BIOS au lieu d'UEFI (les utilisateurs UEFI connaissent le concept de démarrage sécurisé). Fondamentalement trustedgrub2 sera mesure le logiciel. Cela peut être simplifié en faisant la somme de contrôle du noyau pour s'assurer qu'il n'est pas modifié. TPM va également mesurer matériel pour vérifier qu'aucune autre carte PCI ou similaire n'a été installée depuis que TPM a été scellé.

Pendant le processus de démarrage, si le matériel n'a pas été touché/altéré, et le noyau de démarrage est le même qui a scellé le TPM, puis le TPM délivre le secret Clé LUKS du système, afin que le système puisse se décrypter.

Résultat: 1) le disque est crypté, 2) aucun mot de passe n'est requis au démarrage, de sorte que l'utilisateur peut redémarrer la machine à tout moment, et 3) la clé ne peut pas être récupérée par un utilisateur car elle réside dans le stockage matériel.

Notez que cette solution, similaire à celle de Microsoft BitLocker, n'est pas parfaite et partage les mêmes pièges de sécurité que la solution de Microsoft. En fait, BitLocker alimenté uniquement par TPM et non PIN a été critiqué à plusieurs reprises pour sa sécurité plus faible, dont je ne parlerai pas ici.

Voici le résultat: vous voulez implémenter un schéma DRM . Beaucoup avant vous avez essayé, tous ont échoué. Il n'est pas possible de donner quelque chose (matériel, données) aux utilisateurs et de les empêcher de l'utiliser de manière non intentionnelle ou de le copier. Vous pouvez le rendre plus difficile, mais vous ne pouvez pas l'empêcher. D'autres avec plus de ressources que vous n'en avez essayé (par exemple Sony, Microsoft, Nintendo pour empêcher le piratage des jeux sur console) et à la fin, tout a été brisé.

La solution TPM ci-dessus n'est pas sûre à 100% (voir le commentaire @Josef). Si vous donnez le bien au client, vous devez vous attendre à ce que vos données soient communiquées.

Pour une solution sûre, vous aurez besoin de votre gadget pour téléphoner à la maison à un serveur qui est sous votre contrôle.

En règle générale, chaque fois que votre logiciel doit calculer quelque chose, il demande un jeton de calcul avec un moyen d'authentifier le client. Ce jeton est généré par votre serveur (donc pas sous la main de votre client) et il est vérifié comme valide avant d'effectuer le calcul.

Vous pouvez utiliser n'importe quel schéma de signature ici, vous devrez signer le message plus un horodatage. Le jeton est accepté si la signature correspond à la clé publique de votre serveur et si l'horodatage n'est pas trop loin dans le passé.

Si vous ne voulez absolument pas que votre modèle d'intelligence artificielle soit divulgué, intégrez également une clé pour déchiffrer le fichier de modèle d'intelligence artificielle dans ce jeton (la clé utilisée pour le chiffrement doit être par appareil pour éviter les fuites globales en cas de divulgation).

Idéalement, mettez à niveau votre modèle d'IA de temps en temps et incluez l'horodatage maximal autorisé pour son utilisation. Si quelqu'un réussit à capturer la clé "privée" pour la décrypter, cela sera inutile quelques jours/semaine plus tard, les dégâts seront donc limités.

Enfin, vous pouvez également crypter les classes que donnera votre résultat AI (si votre IA concerne la classification des données), de sorte que même avec le modèle, il est inutile/difficile d'utiliser le modèle, sauf si vous êtes connecté à un serveur donnant vos clés de déchiffrement.

Une fois que vous avez fait tout cela et passé des semaines/mois à ce sujet, vous vous rendrez compte que vos concurrents ont passé leur temps à améliorer leurs produits et c'est maintenant mieux que le vôtre.

0
xryl669