概要
MagicLock が保護する対象、2 つの保護レベル、そしてこれ以降のドキュメント全体に登場する基本概念について説明します。
MagicLock は、Python のソースコードと AI モデルを暗号化し、署名付きライセンスによるゲートで保護し、ソフトウェアの実行のたびにそのライセンスを完全にオフラインで検証する、コマンドラインツール兼 Python SDK です。パッケージを 1 つインストールし、コマンドを 1 つ実行するだけで、製品を出荷できます。
メンタルモデル
MagicLock のすべては、2 つの独立した問いに集約されます。何を保護するのか、そしてどれだけ強力な保護が必要か、です。
| 保護対象 | 出力 | 強度 | |
|---|---|---|---|
| 簡易版 | Python ソース(.py) | .pya — インポートシステムが理解する、暗号化されゲートで保護されたコンテナ | 良好 — 安易なソースコード閲覧を防止;デフォルトではポータブル(マシン間のコピーを防ぐには --bind-machine を追加);実行中は復号されたバイトコードがメモリ上に存在します |
| コンパイル版(強保護) | Python ソース(コンパイル済み) | ネイティブの .so / .pyd、またはスタンドアロンのアプリディレクトリ | 強力 — 平文の Python は一切出荷されず、ライセンスゲートは 1 箇所に集約されず、コンパイル後のすべてのモジュールに自動で組み込まれるため、攻撃者が見つけて patch する的を絞れません |
| モデル・リソース保護 | モデル、重み、任意のバイナリ資産 | .enc — 暗号化されたエンベロープ | どちらのレベルにも適用可能;平文はメモリ上にのみ存在します |
簡易版を使えば数分で保護を導入でき、その後コードの書き方を変えることなくコンパイル版へ移行できます — コンパイル版のゲートは自動的に挿入されるため、デコレータを付けたり bootstrap() を手動で呼んだりする必要はありません。
基本概念
このドキュメント全体で繰り返し登場する、いくつかの考え方があります。
- ライセンス(License) — あなたのアカウントに対して発行される署名付きの許可証で、利用できる機能と、その有効期限を定めます。鍵ファイルを直接扱うことなく発行・検証されます。
- 保護レベル(Protection level) — すべての暗号化コマンドは 5 つのレベルのいずれかを選びます。デフォルトは鍵なしポータブル:成果物は
magiclockがインストールされた任意のマシンで透過的に復号できます — 便利で自由に配布できますが、強度は難読化相当です。--passphraseまたは--emit-keyでポータブルな秘密を追加でき、--bind-machineでデバイス固定(ノードロック)にできます。 - デバイス固定(ノードロック) —
--bind-machineを指定すると、成果物は暗号化を行った有効化済みの特定のマシンに紐づけられます。暗号化されたファイルを別のマシンにコピーしても、そこでは復号できません。さらに--passphraseを重ねれば二要素ロックになります。 - 有効化(Activation) — あなたのアカウントの下でマシンをプロビジョニングする、一度限りのステップです。最初の
protect/build呼び出しに組み込まれているため、手動で実行する必要はほとんどありません — 詳しくはアカウントと有効化を参照してください。 - ケーパビリティ(Capability) — ライセンスが付与できる、名前の付いた権限(コード保護、モデル暗号化など)です。ランタイムゲートと
open_model()はそれぞれ必要なケーパビリティを確認します。 - パッケージングはオンライン、実行はオフライン — 暗号化は毎回ライセンスサーバーに確認するため、接続が必要です。復号にはネットワークが一切必要ありません。
- 有効期限(Expiry) — ライセンスとは独立した、暗号化された成果物そのものに対する任意の制御で、指定した日付や期間を過ぎると復号できなくなります。
60 秒クイックスタート
shell
pip install magiclock
# First run: signs you in (opens a browser) and activates this machine,
# then encrypts. Every encrypt after that is instant and non-interactive.
magiclock protect app.py # -> app.pya
# Runs fully offline: no login, no network, ever.
magiclock run app.pyaAI エージェントに任せたい場合
Claude Code のような AI コーディングエージェントを使っているなら、magiclock skill を一度実行してください。プロジェクトにスキル(.claude/skills/magiclock-protect/SKILL.md)がインストールされ、上記のワークフロー全体をエージェントに教えるので、エージェント自身がどの保護レベルを選ぶべきか判断し、コードを保護してくれます。
shell
magiclock skill次に読むべきもの
- インストール — 必要要件、コンパイル版向けのオプション拡張、アップグレード方法。
- コードの暗号化 —
protect/run、有効期限、5 つの保護レベル。 - モデル・リソースの暗号化 —
protect-model、bootstrap()、open_model()。 - コンパイルビルド —
magiclock build、自動で挿入されるモジュール単位のゲート、出荷できるもの。 - アカウントと有効化 — ゼロコンフィグの有効化、CI、オフライン時の挙動、失効。
- CLI リファレンス と Python API リファレンス — すべてのコマンド、フラグ、関数シグネチャ。
- セキュリティモデル — ランタイムゲートが実際に何を検証しているか、そしてその正直な限界について。