피드로 돌아가기
How to add license keys to a SwiftUI macOS app (in under an hour)
Dev.toDev.to
Security

Ed25519 서명 기반 Lease 구조를 통한 오프라인 라이선스 검증 시스템 구현

How to add license keys to a SwiftUI macOS app (in under an hour)

Nico2026년 6월 27일3intermediate

Context

자체 라이선스 시스템 구축 시 필요한 서명 서버, 암호화 계층, 상태 머신 구현으로 인한 개발 공수 증가 및 복잡도 상승 문제 발생. 네트워크 의존성으로 인한 앱 실행 속도 저하와 오프라인 환경에서의 기능 제어 한계 존재.

Technical Solution

  • Ed25519 알고리즘 기반의 디지털 서명 Lease를 도입하여 서버 통신 없는 로컬 검증 체계 구축
  • Activation 단계에서 Key를 디바이스 바인딩된 Lease로 교환하여 로컬 스토리지에 저장하는 1회성 온라인 프로세스 설계
  • checkOnLaunch 로직을 통한 로컬 Lease 서명 검증으로 앱 실행 즉시 라이선스 상태를 판별하는 Zero-latency 구조 적용
  • Lease 내부에 Signed Entitlements를 포함하여 네트워크 연결 없이도 기능 접근 권한을 제어하는 Feature Gating 구현
  • Stripe 결제 시스템과 License Minting 프로세스를 직접 연동하여 Webhook 구현 없이 결제-발급-활성화 루프 자동화
  • 최대 오프라인 유효 기간(Max-offline window) 설정을 통해 정기적인 라이선스 갱신 및 취소 상태 반영 메커니즘 확보

- 라이선스 검증 시 매번 서버를 호출하는 대신 서명된 Lease 파일을 로컬에서 검증하는 구조 검토 - 기능 제어 로직을 UI 전반에 산재시키지 않고 단일 Entitlement Set으로 관리하는 상태 기반 설계 적용 - Ed25519와 같은 고성능 공개키 암호화 방식을 통한 로컬 서명 검증 도입 고려 - 결제 시스템과 라이선스 발급 엔진의 직접 연동을 통한 인프라 관리 포인트 최소화

원문 읽기