MagicLock vs PyArmor — Python の暗号化・ライセンスと難読化
MagicLock と PyArmor の事実に基づく比較: バイトコード難読化と、デバイス固定ライセンス・モデル保護・遠隔停止スイッチを備えた暗号化。
結論
PyArmor はコードを読みにくくします。MagicLock は、あなたが許可していないマシン上では実行そのものを拒ませます — 難読化はコストを引き上げますが、暗号化とデバイス固定ライセンスはその問い自体をなくします。
| MagicLock | PyArmor | |
|---|---|---|
| 中核となるアプローチ | 暗号化 + デバイス固定ライセンス | バイトコード難読化 |
| マシンバインド | 標準搭載 — すべての成果物、すべてのティアで | 有償エディションで利用可能 |
| AI モデル / 資産の暗号化 | デバイスごとの暗号化エンベロープ;平文はメモリ上にのみ存在 | なし |
| 出荷後の遠隔停止スイッチ | 成果物ごとにオプトインの --web-gate | なし |
| ネイティブコード版 | 全モジュールにライセンスゲートを織り込み、機械語へコンパイル | 難読化されたバイトコード |
| 有効化後のオフライン実行 | 実行時の通信ゼロ | バインドされたスクリプトはローカルで実行 |
| 顧客のシート向けライセンスポータル | 有効化、席数、成果物スイッチ | ライセンスファイルを自分で管理 |
| CLI・ポータルの対応言語 | 6(EN · 简体中文 · 繁體中文 · 日本語 · 한국어 · FR) | 場合による |
- 中核となるアプローチ
- MagicLock暗号化 + デバイス固定ライセンス
- PyArmorバイトコード難読化
- マシンバインド
- MagicLock標準搭載 — すべての成果物、すべてのティアで
- PyArmor有償エディションで利用可能
- AI モデル / 資産の暗号化
- MagicLockデバイスごとの暗号化エンベロープ;平文はメモリ上にのみ存在
- PyArmorなし
- 出荷後の遠隔停止スイッチ
- MagicLock成果物ごとにオプトインの --web-gate
- PyArmorなし
- ネイティブコード版
- MagicLock全モジュールにライセンスゲートを織り込み、機械語へコンパイル
- PyArmor難読化されたバイトコード
- 有効化後のオフライン実行
- MagicLock実行時の通信ゼロ
- PyArmorバインドされたスクリプトはローカルで実行
- 顧客のシート向けライセンスポータル
- MagicLock有効化、席数、成果物スイッチ
- PyArmorライセンスファイルを自分で管理
- CLI・ポータルの対応言語
- MagicLock6(EN · 简体中文 · 繁體中文 · 日本語 · 한국어 · FR)
- PyArmor場合による
下記の日付時点の公開ドキュメントに基づきます。PyArmor はエディションごとに差異があります — 最新の詳細は pyarmor.readthedocs.io でご確認ください。
PyArmor のほうが合う場合
- 買い切りで自己管理できるツールを求めており、ライセンスファイルを自分で運用することに抵抗がない。
- 想定する脅威が本気の抽出ではなくカジュアルな盗み読みであり、難読化のコスト対効果で十分。
MagicLock のほうが合う場合
- ソフトウェアを販売・ライセンス提供しており、誰が実行できるかを変換ではなく暗号技術で強制したい。
- 顧客のディスク上に平文で存在してはならない AI モデルやデータを出荷している。
- 出荷済みの成果物を遠隔で止める選択肢(未払いの請求、期限切れのパイロット)が欲しい — あるいはその逆の保証、つまり誰の遠隔操作も証明可能に及ばない成果物が欲しい。
- 保護とライセンスとネイティブコンパイルを 1 つのコマンドで、ライセンスサーバーを運用することなく使いたい。
PyArmor は最も有名な Python 難読化ツールであり、長年にわたって活発にメンテナンスされ、広く使われています。スクリプトを難読化されたバイトコードへ変換し、有償エディションではマシンバインドや有効期限も利用できます。目的が「自分の Python を読みにくくする」ことであり、成熟してドキュメントも充実したツールを求めているなら、PyArmor は妥当な選択です — このページの目的は 2 つのアプローチの違いを説明することであって、PyArmor を思いとどまらせることではありません。
PyArmor の優れている点
- 長い実績と大きなユーザーベース — Python の難読化でまず名前が挙がる定番です。
- コード変更なしでスクリプトを難読化でき、有償エディションでは多彩な強化オプション(スクリプトの有効期限、マシンバインド、restrict モード)が使えます。
- 純 Python のワークフローに優しい設計: コンパイラのツールチェーンを必要としません。
根本的な違い: 難読化と暗号化
難読化はプログラムを変換しますが、その全体を届けることに変わりはありません。難読化されたファイルを手にした人は、どのマシン上でも、実行可能な形の完全なプログラムロジックを手にしています — 保護は、その変換を元に戻すコストが高いまま保たれることに依存します。十分な労力とツールがあれば、難読化されたバイトコードは原理的には再構築できます。PyArmor 自身のドキュメントも、難読化は復元を不可能にするのではなくコストを引き上げるものだと率直に述べています。
MagicLock は暗号化します。許可していないマシンへコピーされた成果物が見せるのは、読みにくいコードではなく暗号文であり、デバイスごとの鍵がなければ解析すべきものが何も存在しません。問いは 「これはどれくらい読みにくいか?」 から 「このマシンは、そもそもこれを実行することを許可されているか?」 へと変わります。
事実確認: 2026-08
製品名および商標は各社に帰属します。比較は公開ドキュメントに基づきます。機能はバージョンやエディションにより異なるため、各ベンダーの公式資料でご確認ください。