Modèle de sécurité

Ce que la barrière d'exécution vérifie réellement, pourquoi les erreurs de verrouillage d'appareil sont volontairement indiscernables, et les limites honnêtes de chaque niveau.

La protection n'est pas un simple indicateur présent ou absent — c'est une vérification à l'exécution, insérée dans chaque module verrouillé, qui s'exécute à chaque import de ce module, entièrement hors ligne, avec du matériel cryptographique qui ne quitte jamais l'appareil auquel il appartient.

Ce que la barrière vérifie

Chaque fois que du code verrouillé s'exécute, MagicLock vérifie, localement et dans cet ordre :

  1. La licence est authentique — elle a été délivrée par votre compte et sa signature se vérifie.
  2. La licence compte encore — ni expirée, ni révoquée.
  3. L'appareil correspond — c'est exactement la machine à laquelle la licence (ou l'artefact) est liée.
  4. La capacité est autorisée — ce qui va s'exécuter est dans le périmètre de ce que la licence accorde.
  5. La preuve est fraîche — un justificatif à usage unique exclut le rejeu d'une ancienne vérification capturée.

Si une étape échoue, l'exécution s'arrête avant que votre code protégé ne tourne — il n'y a pas de chemin partiel ou « au mieux ».

Pourquoi une mauvaise machine et un fichier altéré se ressemblent

VaultLockedError (voir la Référence de l'API) est levée aussi bien quand un artefact est ouvert sur la mauvaise machine que quand son état local a été modifié. C'est délibéré : distinguer les deux cas reviendrait à divulguer pourquoi la vérification a échoué, exactement le genre d'oracle qu'un attaquant sondant les faiblesses voudrait avoir. Le message d'erreur reste le même dans les deux cas.

Preuve d'altération, pas seulement détection

Les artefacts chiffrés sont authentifiés, pas seulement chiffrés — un seul octet modifié fait échouer l'authentification avant même le début du déchiffrement. Il n'y a pas de déchiffrement partiel d'un fichier modifié à inspecter ; il refuse simplement de s'exécuter.

Ce à quoi chaque niveau résiste réellement

Soyez précis sur le compromis que vous faites :

  • Niveau pratique (.pya) — empêche la copie et la lecture opportunistes du code source. Pendant que votre application tourne, le bytecode déchiffré existe nécessairement dans la mémoire du processus ; un attaquant suffisamment motivé, muni d'un débogueur et d'un contrôle total du processus en cours, peut en principe l'extraire. Ce niveau vise « ne pas rendre les choses triviales », pas la résistance à l'analyse mémoire.
  • Niveau compilé (magiclock build) — aucun Python en clair n'est livré, et la vérification de licence est insérée automatiquement dans le flux de contrôle de chaque module compilé au moment du build, au lieu de vivre derrière une vérification unique, partagée et supprimable. Cela ferme le contournement le plus simple (« supprimer la vérification ») et relève la barre de « lire la source » à « rétro-concevoir un binaire compilé, module par module ».
  • Liaison à l'appareil — lie le déchiffrement à une empreinte machine dérivée d'identifiants matériels/OS locaux. Elle résiste à la copie opportuniste entre machines ; ce n'est pas un substitut à un élément sécurisé matériel, et un attaquant suffisamment doté de moyens qui contrôle entièrement un appareil peut tenter d'usurper son empreinte.

MagicLock est conçu pour rendre la copie, l'altération et la rétro-ingénierie sensiblement plus coûteuses — pas pour prétendre qu'une protection purement logicielle serait incassable face à un attaquant disposant d'un temps illimité et du contrôle total du matériel. Si votre modèle de menace inclut ce niveau d'adversaire, c'est à cela que sert la protection matérielle.

Signature et clés

Les licences sont signées en Ed25519 et vérifiées contre votre clé éditeur — le même schéma de signature sécurise les listes de révocation, si bien qu'une révocation périmée ou falsifiée ne peut pas être rejouée pour annuler une révocation existante. Les clés de vérification sont embarquées dans ce que vous livrez ; la clé privée de signature ne quitte jamais le serveur de licences.

Voir aussi