web-dev-qa-db-fra.com

Chiffrer le dossier sous Linux qui ne peut être déchiffré que sur ce système d'exploitation et cet appareil spécifiques

Supposons que je veuille donner un ordinateur à quelqu'un qui exécute une application. Je veux éviter que le programme puisse être copié sur un autre ordinateur ou falsifié. Pour cela, je veux crypter le dossier qui contient le programme et je voudrais le faire pour que seul le système d'exploitation hôte (Linux) sur cet appareil puisse le décrypter (c'est-à-dire également éviter de déplacer le disque entre les ordinateurs). Il n'y a pas de module de plateforme sécurisée dans l'ordinateur. Le démarrage sécurisé est déjà en cours d'exécution, mais il semble que cela soit réinitialisé lors de la réinitialisation du CMOS. L'application nécessite un réseau, ce qui est déjà disponible.

Est-ce possible? Je ne vois pas vraiment comment cela peut être fait, si possible. Et ce n'est pas le cas, jusqu'où puis-je aller pour rendre le plus difficile possible?

7
Patrik

Quoi que vous fassiez, vous devrez stocker une clé de chiffrement quelque part, qui sera ensuite récupérable. Si vous avez besoin d'un serveur de licences, vous pouvez contourner ce problème en raccordant ou en corrigeant l'application. Vous pouvez faire des choses comme ça pour ralentir un adversaire, mais ce ne sera pas une protection complète. Si vous ne voulez vraiment pas donner votre logiciel, utilisez une architecture client-serveur avec la majeure partie de la logique côté serveur et exigez l'authentification d'un utilisateur payé/autorisé (bien que vous ne puissiez pas empêcher le logiciel client de être copié ou modifié non plus, mais c'est généralement un risque accepté).

11
multithr3at3d

Supposons que je veuille donner un ordinateur à quelqu'un qui exécute une application. Je veux éviter que le programme puisse être copié sur un autre ordinateur ou falsifié.

Il existe des outils disponibles dans le commerce qui le feront pour vous. Comme vous vous en doutez, il n'y a pas de solution pare-balles qui ne puisse être brisée par un adversaire dévoué. Mais, dans la pratique, il existe des obscurcisseurs disponibles dans le commerce qui peuvent être "assez bons" pour vos besoins.

Les outils disponibles dans le commerce peuvent également lier le logiciel à un matériel donné en prenant une "empreinte digitale" du matériel. Encore une fois, cela est probablement usurpé avec suffisamment de travail, mais pourrait être "assez bon" pour vos besoins.

Un exemple d'outil disponible dans le commerce est le ".NET Reactor" ( https://www.eziriz.com/dotnet_reactor.htm ) qui est destiné à être utilisé avec le logiciel Windows .NET. Il peut obscurcir le logiciel pour contrecarrer l'ingénierie inverse et il peut lier le logiciel à un matériel spécifique à l'aide d'une méthode d'empreinte digitale matérielle.

5
hft

Une stratégie que j'ai vue n'est pas infaillible, mais vous la lisez dans des ID matériels uniques et vous l'utilisez comme clé pour décrypter le logiciel, s'il est déplacé vers une autre machine, il ne serait pas décrypté.

Le seul problème est que la plupart de ces valeurs peuvent être écrasées et si l'attaquant sait de quel matériel ces valeurs dérivent, et les reproduire pour `` déverrouiller ''/décrypter efficacement le logiciel.

En outre, si vous rencontrez un problème si l'un de ces matériels tombe en panne et est remplacé, vous devez maintenant couper le nouveau logiciel - chiffré avec la nouvelle combinaison d'ID de matériel pour le matériel remplacé/nouveau.

5
thepip3r