개요

MagicLock이 보호하는 대상, 두 가지 보호 티어, 그리고 이 문서 전반에서 반복해서 등장하는 핵심 개념을 소개합니다.

MagicLock은 Python 소스 코드와 AI 모델을 암호화하고, 서명된 라이선스 뒤에 게이트를 걸어, 소프트웨어가 실행될 때마다 완전히 오프라인으로 해당 라이선스를 검사하는 커맨드라인 도구이자 Python SDK입니다. 패키지 하나를 설치하고, 명령 하나를 실행하면, 바로 배포할 수 있습니다.

사고 모델

MagicLock의 모든 것은 두 가지 독립적인 질문으로 귀결됩니다. 무엇을 보호하는가, 그리고 얼마나 강하게 보호해야 하는가입니다.

보호 대상출력강도
편의 티어Python 소스(.py).pya — import 시스템이 이해하는, 암호화되고 게이트가 걸린 컨테이너양호 — 단순 복사를 막습니다. 실행 중에는 복호화된 바이트코드가 메모리에 존재합니다
컴파일 강력 보호Python 소스를 컴파일네이티브 .so / .pyd, 또는 독립 실행형 앱 디렉터리강력 — 평문 Python이 전혀 배포되지 않으며, 라이선스 게이트가 한 곳에 몰려 있어 찾아서 patch할 수 있는 것이 아니라 컴파일된 모든 모듈에 자동으로 삽입됩니다
모델/리소스 보호모델, 가중치, 모든 바이너리 자산.enc — 암호화된 봉투(envelope)두 티어 모두에 적용되며, 평문은 오직 메모리에만 존재합니다

먼저 편의 티어로 몇 분 만에 보호를 적용해 본 뒤, 코드 작성 방식을 바꾸지 않고도 나중에 컴파일 강력 보호로 옮겨갈 수 있습니다 — 컴파일 강력 보호의 게이트는 자동으로 삽입되므로 데코레이터를 붙이거나 bootstrap()을 직접 호출할 필요가 없습니다.

핵심 개념

이 문서 전반에서 반복해서 등장하는 개념들입니다.

  • 라이선스 — 계정에 발급된 서명된 승인입니다. 어떤 기능을 사용할 수 있는지, 언제까지 사용할 수 있는지를 담고 있습니다. 키 파일을 직접 다루는 일 없이 발급되고 검증됩니다.
  • 기기 바인딩(노드 잠금) — 기본적으로 라이선스, 그리고 그 라이선스로 암호화된 모든 것은 활성화된 바로 그 머신에 묶입니다. 암호화된 파일을 다른 머신으로 복사해도 그곳에서는 복호화되지 않습니다.
  • 활성화 — 계정 아래에 머신을 프로비저닝하는 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.pya

다음으로 볼 문서