개요
MagicLock이 보호하는 대상, 두 가지 보호 티어, 그리고 이 문서 전반에서 반복해서 등장하는 핵심 개념을 소개합니다.
MagicLock은 Python 소스 코드와 AI 모델을 암호화하고, 서명된 라이선스 뒤에 게이트를 걸어, 소프트웨어가 실행될 때마다 완전히 오프라인으로 해당 라이선스를 검사하는 커맨드라인 도구이자 Python SDK입니다. 패키지 하나를 설치하고, 명령 하나를 실행하면, 바로 배포할 수 있습니다.
사고 모델
MagicLock의 모든 것은 두 가지 독립적인 질문으로 귀결됩니다. 무엇을 보호하는가, 그리고 얼마나 강하게 보호해야 하는가입니다.
| 보호 대상 | 출력 | 강도 | |
|---|---|---|---|
| 편의 티어 | Python 소스(.py) | .pya — import 시스템이 이해하는, 암호화되고 게이트가 걸린 컨테이너 | 양호 — 단순한 소스 코드 열람을 막습니다. 기본은 포터블이며(머신 간 복사를 막으려면 --bind-machine 추가), 실행 중에는 복호화된 바이트코드가 메모리에 존재합니다 |
| 컴파일 강력 보호 | Python 소스를 컴파일 | 네이티브 .so / .pyd, 또는 독립 실행형 앱 디렉터리 | 강력 — 평문 Python이 전혀 배포되지 않으며, 라이선스 게이트가 한 곳에 몰려 있어 찾아서 patch할 수 있는 것이 아니라 컴파일된 모든 모듈에 자동으로 삽입됩니다 |
| 모델/리소스 보호 | 모델, 가중치, 모든 바이너리 자산 | .enc — 암호화된 봉투(envelope) | 두 티어 모두에 적용되며, 평문은 오직 메모리에만 존재합니다 |
먼저 편의 티어로 몇 분 만에 보호를 적용해 본 뒤, 코드 작성 방식을 바꾸지 않고도 나중에 컴파일 강력 보호로 옮겨갈 수 있습니다 — 컴파일 강력 보호의 게이트는 자동으로 삽입되므로 데코레이터를 붙이거나 bootstrap()을 직접 호출할 필요가 없습니다.
핵심 개념
이 문서 전반에서 반복해서 등장하는 개념들입니다.
- 라이선스 — 계정에 발급된 서명된 승인입니다. 어떤 기능을 사용할 수 있는지, 언제까지 사용할 수 있는지를 담고 있습니다. 키 파일을 직접 다루는 일 없이 발급되고 검증됩니다.
- 보호 수준 — 모든 암호화 명령은 다섯 가지 수준 중 하나를 선택합니다. 기본값은 키 없는 포터블입니다. 산출물은
magiclock이 설치된 어떤 머신에서도 투명하게 복호화됩니다 — 편리하고 자유롭게 배포할 수 있지만, 난독화 수준의 보호입니다.--passphrase또는--emit-key는 포터블 비밀(secret)을 추가하고,--bind-machine은 기기 바인딩(노드 잠금)을 적용합니다. - 기기 바인딩(노드 잠금) —
--bind-machine을 사용하면 산출물이 암호화를 수행한 활성화된 바로 그 머신에 묶입니다. 암호화된 파일을 다른 머신으로 복사해도 그곳에서는 복호화되지 않습니다. 여기에--passphrase를 더하면 2단계 잠금이 됩니다. - 활성화 — 계정 아래에 머신을 프로비저닝하는 1회성 단계입니다. 첫
protect/build호출에 통합되어 있어 손수 실행할 일은 거의 없습니다 — 계정 및 활성화를 참고하세요. - 역량(capability) — 라이선스가 부여할 수 있는 이름 붙은 권한입니다(코드 보호, 모델 암호화 등). 런타임 게이트와
open_model()은 각각 필요한 역량을 확인합니다. - 패키징은 온라인, 실행은 오프라인 — 암호화는 매번 라이선스 서버에 확인하므로 연결이 필요합니다. 복호화는 네트워크가 전혀 필요하지 않습니다.
- 유효 기간 — 암호화된 산출물 자체에 대한, 라이선스와는 별개인 선택적 제어로, 특정 날짜 또는 기간 이후 복호화를 막습니다.
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다음으로 볼 문서
- 설치 — 요구 사항, 선택적 컴파일 강력 보호용 extra, 업그레이드.
- 코드 암호화 —
protect/run, 유효 기간, 다섯 가지 보호 수준. - 모델 및 리소스 암호화 —
protect-model,bootstrap(),open_model(). - 컴파일 빌드 —
magiclock build, 자동으로 삽입되는 모듈 단위 게이트, 배포 가능한 것. - 계정 및 활성화 — 제로 컨피그 활성화, CI, 오프라인 동작, 취소.
- CLI 레퍼런스와 Python API 레퍼런스 — 모든 명령, 플래그, 함수 시그니처.
- 보안 모델 — 런타임 게이트가 실제로 무엇을 검사하는지, 그리고 그 한계를 정직하게 설명합니다.