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

shell
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

python
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

SignatureNotes
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) -> bytesDé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.