들어가며
이번 프로젝트가 Open Beta 출시를 앞두고,
HW USB 동글을 활용한 보안 기능 개발을 담당하게 되었다.
프로젝트는 MuLiN이라는 SW PLC로,
- Windows
- Linux
- ARM 기반 HW
환경에서 동작하며,
USB 동글이 꽂혀 있을 때 인증을 통해 Application이 활성화되는 구조를 목표로 한다.
단순한 파일 체크 방식이 아닌,
상용 동글 솔루션 기반의 보안 구조를 이해하고 개발 방향성을 정리해 보았다.
USB 동글 기반 보안 시스템, 전체 흐름 이해하기
USB 동글을 이용한 보안은 흔히 생각하는 "USB에 파일을 넣고 프로그램이 읽어서 비교하는 방식" 과는 전혀 다르다.
동글 솔루션은 보통 다음 구조를 가진다.
- OS에 동글 런타임(드라이버/서비스)이 설치된다.
- 동글이 USB에 연결된다.
- 애플리케이션이 API를 통해 권한 확인 요청을 한다.
- 런타임이 동글 내부 보안 엔진과 통신한다.
- 동글 내부에서 암호 기반 검증을 수행해 인증한다.
- 인증결과를 런타임 → 애플리케이션으로 반환한다.
즉 검증 로직은 애플리케이션이 아니라 동글 내부에서 수행된다.
이 구조 덕분에 단순한 바이너리 패치나 역공학으로는 우회하기 어렵다.
역할 분리와 책임
동글 기반 보안 시스템은 역할이 분리되어 있다.
- 동글 (하드웨어 키)
라이선스 / Feature / 옵션 / 기간 정보를 저장
내부 보안 엔진 포함
외부에서 직접 데이터 읽기 불가 → "보안 컨테이너" 역할 - 런타임 (드라이버 / 서비스)
OS에서 동글과 통신하고 로직을 수행하며, 애플리케이션 요청을 처리 - 애플리케이션 (사용자 프로그램)
API를 호출하여 권한확인 결과를 받아 정책을 실행 (ex. 실행 차단, 기능 잠금/해제) - 프로비저닝 버닝 환경 (운영/제조)
제품 ID / Feature / 옵션 / 사용기간을 설정하고, 실제 동글에 기록(버닝)
동글 솔루션에서 제공하는 프로그램을 통해 USB 동글을 굽는다.

애플리케이션 역할 (보안 정책 구현)
런타임 서비스에서 검증로직을 수행하기 때문에, 애플리케이션에서는 다음과 같은 요청을 던진다.
- USB 동글이 꽂혀있나?
- 동글에 내 제품 권한이 있나?
- 동글에 등록된 SW권한이 있나?
그리고 API 호출 결과로 통과인지 실패인지 값을 확인할 수 있다.
동글 솔루션은 검증을 런타임/동글 내부로 밀어 넣어 검증 API요청에 따른 안전한 검증을 할 수 있고,
개발자는 "정책"을 구현에 집중할 수 있다.
SW 정책이란?
- USB 동글 체크 시점 ex) App실행 시에만 or 2시간 마다 or 1달에 한번 실행시
- 제한기능 ex) 동글이 없다면 전체 기능 차단 or 핵심 기능만 차단
- 동글의 Feature설계 ex) Word/Excel/PPT 제품 각각 지원인지 번들(Word+Excel+PPT) 제품인지
Sentinel 동글 솔루션 분석
우리 회사는 기존 HMI 제품에서
Sentinel USB 동글 솔루션을 사용하고 있다.
다른 보안솔루션도 비슷하겠지만 Sentinel의 보안 스택은 다음과 같다.

보안스택을 보면 RTE라는 요청을 전달받아 동글에 들어있는 엔진으로 인증을 하는 과정을 알 수 있다.
실제로 관련 문서를 찾아보면
Linux / ARM에서는 "aksusbd" 와 "hasplmd" 백그라운드 데몬,
Windows에서는 "Sentinel License Manager" 서비스가 실행 중이어야 하는 것을 알 수 있다.

회고
개발에 들어가기 전, USB KeyLock이라고도 불리는 동글 기반 보안 시스템에 대해 간단히 정리해 보았다.
처음에는 도킹스테이션으로 HDD를 복제하듯
"USB를 그대로 복제하면 위험하지 않을까?"라는 단순한 의문을 가졌다.
하지만 보안 스택의 구조를 살펴보며,
동글 내부 보안 엔진과 런타임 기반 검증 구조가
이 문제를 비교적 단순하면서도 효과적으로 해결하고 있다는 것을 이해하게 되었다.
특히 인상 깊었던 점은,
애플리케이션이 직접 보안을 책임지는 것이 아니라
정책(Policy)에 집중하도록 설계되어 있다는 점이었다.
Application개발자로서 검증 로직 자체보다는
언제, 어떻게, 어디까지 제한할 것인가를 고민하는 것이 더 중요하다는 관점 전환을 할 수 있었다.
*sw정책은 제품 가격 전략, 라이선스 구조, 영업 정책과도 밀접하게 연관되어, 영업이나 경영과 함께 신경 써야 한다는 계획도 잡을 수 있었다.
다음 글에서는
SW PLC 프로젝트에 적용할 보안 정책을 설계해 보고 실무에서 고려해야 할 부분들을 정리해 보려고 한다.
직접 공부해서 다음 글로 정리해 보려고 합니다.
'개발' 카테고리의 다른 글
| AI와 공장 자동화(FA)연동 따라하기 - PLC 예제로 구현한 MCP (0) | 2026.02.26 |
|---|---|
| 구글 Antigravity 사용 후기 - QML프로젝트로 AI IDE 특징 알아보기 (0) | 2026.02.17 |
| OPC UA란 무엇인가 ㅡ 개발자의 시선으로 정리한 산업 자동화 표준 (0) | 2026.01.30 |
| CI 입문 ㅡ Jenkins로 C++ 빌드·유닛 테스트 자동화 따라하기 (0) | 2026.01.21 |
| 시스템 시간 변경 후 빌드가 깨진 이유 ㅡ 증분 빌드와 타임스탬프 문제 (0) | 2026.01.09 |