← PORTFOLIO · SECURITY

라이선스 바인딩 보호 모듈

폴더째 복사해도
다른 PC에서는 열리지 않게

납품한 프로그램이 설치 폴더 통째로 복사돼 다른 곳에서 돌아가는 상황을 막습니다. 실행 PC의 하드웨어 지문과 전자서명된 라이선스를 대조해, 발급받은 장비에서만 프로그램이 열립니다. 시작 코드 한 줄이면 기존 프로그램에도 그대로 적용됩니다.

  • 하드웨어 지문 바인딩
  • RSA-SHA256 전자서명
  • 제품별 키페어 분리
  • .NET · Python 상호 호환
  • 외부 패키지 의존성 없음
검증 결과 VALID 정상 — 프로그램 실행 허용
제품 MyApp 제품 전용 키페어 v1
발급일 2026-06-18 만료 2027-06-17
남은 기간 319
이 PC의 하드웨어 지문
MG   머신 GUID          수집됨
CPU  프로세서 식별자     수집됨
BB   메인보드 시리얼     수집됨
BIOS BIOS 시리얼         공백 — 제외
────────────────────────────────
SHA-256  7F3A91C2-4D08B65E-…-9C22A104
검증 단계
1. 라이선스 파일 존재%ProgramData%\MyApp\license.lic
2. 서명 검증 (공개키)RSA PKCS#1 v1.5 · SHA-256
3. 제품명 일치product = MyApp
4. 지문 일치 · 유효기간동일 PC · 만료 전

※ 화면은 실제 구동 화면을 재구성한 예시이며, 표시된 값은 샘플입니다.

01 — HOW IT WORKS

지문을 받고, 서명해서 돌려주면 끝입니다

공급자는 개인키로 서명만 하고, 프로그램에는 공개키만 들어갑니다. 배포본을 뜯어봐도 라이선스를 새로 만들 수 없습니다.

  1. STEP 01

    제품 키페어 생성

    제품마다 전용 키페어를 만듭니다. 한 제품의 개인키가 유출돼도 다른 제품은 영향을 받지 않습니다.

  2. STEP 02

    프로그램에 게이트 삽입

    시작 지점에 검증 호출 한 줄을 넣고 공개키를 상수로 넣습니다. 기존 코드 구조는 그대로 둡니다.

  3. STEP 03

    사용자 지문 확인

    라이선스가 없으면 인증 창이 뜨고, 사용자는 [지문 복사] 버튼으로 자기 PC의 지문 문자열을 전달합니다.

  4. STEP 04

    라이선스 발급

    공급자가 발급 도구에 제품과 지문, 사용자명, 만료일을 넣고 개인키로 서명합니다. 결과는 작은 텍스트 파일 하나입니다.

  5. STEP 05

    라이선스 등록

    사용자가 인증 창에서 받은 파일을 불러오면 지정된 위치로 복사되고 즉시 검증이 다시 돕니다.

  6. STEP 06

    실행 시 검증

    이후 실행할 때마다 서명 · 제품 · 지문 · 만료일을 확인합니다. 하나라도 어긋나면 상태 코드와 함께 실행을 막습니다.

02 — FEATURES

검증 · 발급 · 통합을 한 벌로

하드웨어 지문

  • 머신 GUID · 프로세서 · 메인보드 · BIOS 식별자 조합
  • 제조사 기본 문자열 같은 무의미한 값 자동 제외
  • SHA-256 해시로 고정 길이 문자열 생성
  • 8자리 단위 구분 표기로 전달 오류 방지

서명 검증

  • 지문 · 사용자 · 제품 · 발급일 · 만료일을 묶어 서명
  • 프로그램에는 공개키만 내장 — 위조 불가
  • 파일을 한 글자만 고쳐도 검증 실패
  • 서명 규약이 명세로 고정되어 언어 간 호환

상태 구분

  • 정상 / 파일 없음 / 서명 무효
  • 다른 PC용 / 다른 제품용
  • 기간 만료 / 확인 중 오류
  • 상태별 안내 문구를 사용자 화면에 그대로 노출

발급 도구

  • 콘솔 · GUI · 더블클릭 배치 파일 세 가지 제공
  • 제품 선택 후 지문 붙여넣기만 하면 발급
  • 만료일 미지정 시 무기한 발급
  • 발급 → 검증 왕복을 검사하는 점검 스크립트 포함

다중 언어 지원

  • .NET 판과 Python 판이 동일한 지문 값을 산출
  • 동일한 라이선스 파일을 양쪽에서 그대로 사용
  • Python 판은 표준 라이브러리만으로 서명 검증 구현
  • 인증 창은 WinForms · tkinter 두 형태 제공

통합 편의

  • 소스 드롭인 또는 라이브러리 참조 선택
  • 라이선스 파일 위치 기본값 제공 · 지정 가능
  • 서버 · CLI 프로그램용 콘솔 인증 경로 제공
  • 적용 절차를 3단계 가이드 문서로 제공

03 — SCREENS

사용자는 창 하나, 공급자는 도구 하나

사용자에게 필요한 조작은 [지문 복사]와 [라이선스 등록] 두 개뿐입니다.

사용자 인증 창

라이선스가 없거나 무효일 때만 뜹니다. 지문을 복사해 전달하고, 받은 파일을 등록합니다.

제품 인증
이 PC의 지문7F3A91C2-4D08B65E-…
현재 상태라이선스 파일 없음
안내지문을 공급자에게 전달하세요

발급 도구

제품을 고르고 지문을 붙여넣으면 서명된 라이선스 파일이 만들어집니다.

라이선스 발급
제품MyApp
사용자사업장 A
만료일2027-06-17 (미지정 시 무기한)
개인키keys\MyApp_private.xml

검증 상태 코드

실패 원인이 구분되어 있어 문의 응대에 그대로 쓸 수 있습니다.

상태 코드
VALID — 정상실행
MISSING — 파일 없음차단
INVALID — 서명 무효차단
MACHINE_MISMATCH — 다른 PC차단
EXPIRED — 기간 만료차단

적용 코드

시작 지점에 게이트를 넣는 것으로 통합이 끝납니다.

# 1) 제품 설정 — 공개키만 내장
opt = LicenseOptions(
    product_name = "MyApp",
    public_key_xml = "<RSAKeyValue>…</RSAKeyValue>",
)

# 2) 시작 지점에 게이트 한 줄
if not activation.ensure(opt):
    raise SystemExit(0)

# ---- 여기서부터 실제 프로그램 ----

04 — ARCHITECTURE

의존성 없이, 파일 두 개로

외부 패키지를 끌어오지 않습니다. 검증 로직과 인증 창만 프로젝트에 넣으면 동작합니다.

  • 핵심 구현C# · .NET Framework 4.7.2
  • 파이썬 판Python 3 · 표준 라이브러리만
  • 지문머신 GUID + CPU · 보드 · BIOS → SHA-256
  • 서명RSA PKCS#1 v1.5 + SHA-256
  • 서명 대상지문|사용자|제품|발급일|만료일
  • 라이선스서명 포함 JSON 텍스트 파일
  • 기본 위치%ProgramData%\{제품}\license.lic
  • 발급 도구PowerShell (콘솔 · GUI · 배치)

보호 범위를 정직하게 밝힙니다

이 모듈은 설치 폴더를 복사해 다른 PC에서 실행하는 형태의 무단 사용을 확실히 차단합니다. 다만 소프트웨어 단독 보호가 완전무결할 수는 없습니다. 숙련된 공격자가 바이너리를 역공학·패치하면 우회가 가능하며, 이는 모든 소프트웨어 라이선싱에 공통된 한계입니다.

더 강한 보호가 필요하면 코드 난독화, 무결성 검사, USB 동글, 온라인 인증을 함께 검토합니다. 제품별 키 관리 정책과 발급 절차, 인증 창 문구는 운영 방식에 맞춰 구성해 납품합니다.

05 — USE CASES

배포한 프로그램이 지정한 곳에서만 돌아야 할 때

계측 · 시험 소프트웨어

장비와 함께 납품한 전용 프로그램이 계약된 장비에서만 실행되게 묶습니다.

사내 도구 보호

내부용으로 만든 도구가 외부로 흘러나가도 실행되지 않도록 최소한의 방어선을 둡니다.

평가판 운영

만료일이 들어간 라이선스로 기간 제한 평가판을 별도 빌드 없이 운영합니다.

다제품 라인업

제품마다 키페어를 분리해, 한 제품의 유출이 전체로 번지지 않게 합니다.

06 — CONTACT

도입 상담 및 시연을
요청해 주세요

기존 프로그램에 적용하는 절차와 키 관리 방안을 함께 정리해 드립니다.