시스템
소프트웨어 정품 인증을 직접 만들다 — RSA 라이선스
내가 만든 프로그램을 배포하다 보면 결국 “정품 인증”이 필요해집니다. 상용 솔루션을 붙일 수도 있었지만, 원리를 이해하고 통제하고 싶어서 직접 만들었습니다.
핵심은 RSA 서명
라이선스 파일에 사용자·만료일 같은 정보를 담고, 그걸 개인키로 서명합니다. 클라이언트는 공개키로 서명을 검증하니, 내용이 조금이라도 바뀌면 검증에 실패합니다. 위조가 사실상 불가능한 이유입니다. 서명·검증은 RSA-SHA256으로 통일했습니다.
역할을 나눴다
License AdminRSA 키페어로 라이선스 파일을 발급하는 관리자 GUI (go:embed 웹 UI).
License Server서명 검증 + 사용자 관리 + 관리자 승인 흐름. SQLite·bcrypt·웹 대시보드·systray.
License GeneratorGUI/CLI로 라이선스를 생성하는 Electron 발급기 (NSIS 설치본).
만들며 배운 것
- 키 관리가 전부다 — 개인키가 새면 모든 게 무너집니다. 키를 어디에 두고 어떻게 보호하느냐가 알고리즘보다 중요했습니다.
- 오프라인 검증 — 매번 서버에 물어보지 않고 공개키로 로컬 검증하게 하면, 인터넷이 없어도 동작하고 서버 부하도 줄었습니다.
- 승인 흐름 — 발급을 자동화하되 관리자가 최종 승인하는 단계를 두니 오·남용을 막을 수 있었습니다.
직접 만들어보니 “정품 인증”이라는 게 결국 신뢰의 사슬이라는 걸 알게 됐습니다. 서명 → 검증 → 관리로 이어지는 사슬 어디 하나만 약해도 전체가 흔들립니다.