[논문 리뷰] Advanced Software Protection Now
이 논문은 라이선스 강제 및 트레이서 트레이싱을 위해 보안 트리거와 코드 오브스큐리피케이션을 조합한 하드웨어를 요구하지 않는 소프트웨어 보호 프레임워크를 제안한다. 중요한 코드 세그먼트를 암호화하고 트리거를 통해 동적 지문을 통합함으로써, 역설계 및 해킹의 비용을 비가능한 수준으로 높여, 공격자가 전체 프로그램 플로우를 분석하지 않고서는 모든 보호 메커니즘을 신뢰성 있게 탐지하거나 제거할 수 없게 한다.
Software digital rights management is a pressing need for the software development industry which remains, as no practical solutions have been acclamaimed succesful by the industry. We introduce a novel software-protection method, fully implemented with today's technologies, that provides traitor tracing and license enforcement and requires no additional hardware nor inter-connectivity. Our work benefits from the use of secure triggers, a cryptographic primitive that is secure assuming the existence of an ind-cpa secure block cipher. Using our framework, developers may insert license checks and fingerprints, and obfuscate the code using secure triggers. As a result, this rises the cost that software analysis tools have detect and modify protection mechanisms. Thus rising the complexity of cracking this system.
연구 동기 및 목표
- 소프트웨어 도용의 지속적인 문제를 해결하기 위해, 전적으로 소프트웨어 기반으로 설계된 실용적인 보호 시스템을 개발하여 라이선스를 강제하고 유출된 소프트웨어의 추적을 가능하게 한다.
- 기존 솔루션의 보안에 대한 오해나 전용 하드웨어 의존성 등에 기인한 한계를 극복하여, 일반적으로 보안성이 떨어지거나 경제적으로 비현실적인 문제를 해결한다.
- 암호학적 원리를(보안 트리거) 소프트웨어 공학 기법과 융합하여, 역설계 및 코드 수정에 강건한 시스템을 구축한다.
- 모든 실행 경로를 분석하고 모든 암호화된 트리거 블록을 식별하는 데에 기하급수적인 복잡성이 요구되므로, 자동화된 해킹이 비현실적이며 불가능하다는 것을 입증한다.
제안 방법
- 시스템은 IND-CPA 보장이 있는 블록 암호 기반의 암호학적 원리인 보안 트리거를 사용하여 핵심 코드 세그먼트를 암호화하고, 런타임에만 복호화되도록 한다.
- 라이선스 체크와 지문 정보는 이러한 암호화된 블록 내부에 통합되어 있어 정적 분석 도구에서는 탐지할 수 없다.
- 동적 지문은 최소한 의미 있는 것처럼 보이는 임의의 코드 결정을 사용하여 생성되며, 최적화 조건에서도 정상적인 논리와 구분하기 어려운 수준이다.
- 빌드 간 코드 차이를 분석함으로써 트레이서 트레이싱을 지원한다. 각 빌드당 사전의 20~30% 범위에서 고유한 문자열 패턴을 통해 고정밀도의 기원 식별이 가능하다.
- 코드 재최적화나 컷-앤드-페이스트 공격을 시도하는 공격자는 변수 할당 및 트리거 논리의 일관성 결여로 실패한다.
- 공격자가 모든 암호화된 블록을 역설계하기 위해 모든 가능한 실행 경로를 분석해야 하므로, 시스템은 자동화된 해킹을 방지한다. 이는 휠러 문제의 난이도와 동일한 난이도의 문제이다.
실험 결과
연구 질문
- RQ1표준 소프트웨어 기술만을 사용하여 전용 하드웨어나 네트워크 연결 없이도 소프트웨어 보호 시스템을 구축할 수 있는가?
- RQ2보안 트리거와 코드 오브스큐리피케이션을 통해 실제로 역설계 및 해킹을 비가능하게 만들 수 있는 정도는 어느 정도인가?
- RQ3최적화나 코드 조작에 저항하는 오브스큐어한 코드를 통해 동적으로 지문을 통합했을 때, 트레이서 트레이싱의 효과는 어느 정도인가?
- RQ4암호화된 트리거 보호 코드 세그먼트를 사용할 경우, 컷-앤드-페이스트 공격이 지문을 성공적으로 제거할 수 있는가?
- RQ5전체 프로그램의 정적 및 동적 분석 없이도 자동화된 도구가 모든 라이선스 체크를 식별하고 비활성화할 수 있는가?
주요 결과
- 1.2MB 크기의 Win32 실행 파일에 12개의 지문이 부여된 빌드를 적용한 결과, 사전에 포함된 440,000개의 고유한 10바이트 문자열 중 약 20~30%가 각 빌드에 고유하게 존재하여 고정밀도의 트레이서 트레이싱이 가능했다.
- 440,000개의 사전 항목 중 약 182,000개는 모든 빌드에 공통으로 존재하여 핵심 功能의 일관성을 확인했고, 나머지 항목들은 고유 식별 마커로 기능했다.
- 변수 할당 및 트리거 논리의 일관성 결함으로 인해 컷-앤드-페이스트 공격은 실패했으며, 특히 서로 다른 빌드의 코드를 혼합할 경우 더욱 심각한 문제 발생.
- 시스템의 강건성은 공격자가 모든 실행 경로를 분석하여 모든 트리거 보호 블록을 복호화해야 하므로, 이는 휠러 문제를 해결하는 것과 동일한 난이도의 과제임을 반영한다.
- 자동화된 도구를 사용하더라도, 암호화된 코드가 점진적으로 노출되기 때문에 모든 라이선스 체크를 식별하고 비활성화하는 것은 불가능하다. 또한, 가짜 트리거를 신뢰성 있게 탐지하기 위해서는 전체 코드 이해가 필수적이다.
- 지문과 트리거를 추가한 후 컴파일 시간은 약 몇 분 정도만 증가하여 런타임 및 개발 오버헤드가 매우 낮음을 확인했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.