Chiffrer les modèles et ressources
Chiffrez vos modèles d'IA et autres actifs binaires, et relisez-les à l'exécution sans jamais écrire de données en clair sur disque.
magiclock protect-model chiffre un modèle, un fichier de poids ou toute autre ressource dans une enveloppe .enc. Votre application le déchiffre en mémoire à l'exécution avec bootstrap() + open_model() — les octets en clair ne touchent jamais le disque.
Chiffrer un modèle
magiclock protect-model models/face.onnx # -> models/face.onnx.enc
magiclock protect-model weights/net.pt --feature ai_model -o net.enc--feature nomme la capacité que votre licence doit accorder pour le déverrouiller — la valeur par défaut est ai_model. Les mêmes options d'expiration (--trial / --expires-in / --expires-at), portables (--no-bind-machine, --passphrase, --emit-key) et --lock-passphrase de Chiffrer le code s'appliquent ici aussi.
Le relire à l'exécution
import magiclock
import onnxruntime
magiclock.bootstrap() # brings the gate up against this machine's license
model_bytes = magiclock.open_model("models/face.onnx.enc") # plaintext, in memory only
session = onnxruntime.InferenceSession(model_bytes)open_model() fonctionne de la même manière quel que soit le contenu de l'enveloppe — ONNX, state dicts PyTorch, tableaux de poids bruts, ou ressources binaires arbitraires comme des lots de configuration ou des jeux de données. Tout ce qui a la forme de bytes en entrée, ressort tel quel.
Référence des fonctions
| Signature | Notes | |
|---|---|---|
magiclock.bootstrap() | bootstrap(vault_dir=None, *, app_version="1.0.0") -> MagicLockRuntime | À appeler une fois, avant tout open_model() (ou code verrouillé). magiclock build insère cet appel pour vous au point d'entrée compilé — vous ne l'appelez à la main que dans les scripts ordinaires (non compilés). Lève une exception si cette machine n'a pas été activée. |
magiclock.open_model() | open_model(path, *, vault_dir=None, passphrase=None, key=None) -> bytes | Détecte automatiquement les enveloppes verrouillées machine ou portables. Passez passphrase/key pour les artefacts portables ou à deux facteurs, au lieu d'une invite. |
Voir la Référence de l'API Python complète pour les exceptions et cas limites.
En mémoire uniquement, à chaque fois
Les octets du modèle déchiffré n'existent que dans la mémoire du processus, tant que vous en conservez une référence — open_model() n'écrit jamais de copie en clair sur disque, dans un répertoire temporaire ni ailleurs. Si votre framework d'inférence exige un chemin de fichier plutôt que des octets, gardez-le dans un emplacement en mémoire (par exemple un objet fichier en mémoire) plutôt que de l'écrire vous-même, sinon les données en clair finissent sur disque, hors de la protection de MagicLock.