서지주요정보
Software theft detection through analysis of the semantic units of program = 프로그램의 의미 단위 분석을 통한 소프트웨어의 도용 탐지 방법
서명 / 저자 Software theft detection through analysis of the semantic units of program = 프로그램의 의미 단위 분석을 통한 소프트웨어의 도용 탐지 방법 / Hyun-il Lim.
저자명 Lim, Hyun-il ; 임현일
발행사항 [대전 : 한국과학기술원, 2009].
Online Access 원문보기 원문인쇄

소장정보

등록번호

8020821

소장위치/청구기호

학술문화관(문화관) 보존서고

DCS 09017

SMS전송

도서상태

이용가능

대출가능

반납예정일

초록정보

Software is an intellectual property of the developers. Nevertheless, software piracy is one of the major obstacles to the growth of software industries. In order to cope with this problem, several researches are ongoing, such as software watermark, code obfuscation, code encryption, source code plagiarism detection, and software birthmark. A software birthmark refers to program`s inherent characteristics that can be used to identify a program. Similarities measured by comparing birthmarks of programs can provide a guideline for detecting software thefts. In this thesis, we present approaches to detecting software thefts through software birthmarks based on semantic units of programs. A semantic unit refers to a cohesive fragment in a program code that shows meaningful behavior of the program. So, a semantic unit may correspond to a basic behavior for performing some arranged tasks in a program. Detecting software theft is accomplished by comparing such semantic units between programs. We propose two approaches to analyzing semantic units of programs. First, the control flow-based approach is presented. The control flow information shows the structural characteristics and the possible behaviors while a program is executed. Flow paths and their behaviors in Java programs are formally described, and a set of behaviors of flow paths is used as a software birthmark. Second, the stack simulation-based approach is presented for Java programs. Because operand stack manipulations are fundamental operations among instructions in Java programs, they can show coherent relations among instructions. Stack behaviors are analyzed by statically simulating operand stack variations of Java programs. A set of stack behaviors of a Java program is used as a birthmark of the program. Similarity between two birthmarks is calculated by comparing and matching the similar elements of the birthmarks. Experiments are performed on the proposed methods with respect to credibility and resilience. The experiments measure the detection capability for copied programs under semantic-preserving transformations. Their performances are evaluated by analyzing their F-measure curves. The experimental results show that the proposed birthmarks are more effective measures compared to earlier approaches for detecting copied programs, even in cases when such programs are aggressively modified.

컴퓨팅 환경의 발전과 더불어 소프트웨어의 중요성이 대두되고 있다. 소프트웨어는 개발자의 지적 재산권으로 라이센스와 저작권법 등으로 보호 받고 있다. 하지만, 소프트웨어 도용 및 표절 문제는 지속적으로 증가하고 있으며, 소프트웨어 산업 발전에 가장 큰 걸림돌이 되고 있다. 이러한 문제에 대처하기 위해서, 소스 코드 표절 탐지, 소프트웨어 워터마크, 코드 난독화, 코드 암호화, 소프트웨어 버스마크 등의 연구가 진행되고 있다. 소프트웨어 버스마크(software birthmark)는 개개의 프로그램이 가지는 내재된 특징들을 통해서 그 프로그램을 식별하는 한 방법이다. 프로그램의 버스마크들을 비교한 유사도를 측정함으로써 그 프로그램들 사이의 도용 여부를 판단하는 기준이 된다. 본 논문에서는 프로그램의 의미 단위에 기반한 소프트웨어 버스마크를 통해서 소프트웨어의 도용을 탐지하는 방법을 제시한다. 프로그램의 의미 단위는 프로그램에서의 의미를 가지는 행동 양식(behavior)을 보여주는 응집력 있게 구성된 프로그램 코드 조각을 의미한다. 즉, 프로그램의 의미 단위는 각 프로그램에서 수행하는 작업들을 구성하는 기본 단위가 된다. 이러한 프로그램들의 의미 단위를 분석하고 비교함으로써 소프트웨어의 도용 탐지에 활용할 수 있다. 본 논문에서는 프로그램의 의미 단위를 분석하는 방법으로 두 가지 접근 방법을 제안한다. 첫째로, 프로그램의 제어 흐름에 기반한 분석 방법을 제안한다. 프로그램의 제어 흐름 정보를 통해서 프로그램의 구조적 특성 및 실행 시간의 가능한 행동 양식을 예측할 수 있다. 자바 프로그램에서의 흐름 경로(flow path)와 그 행동 양식을 공식적으로 기술하고, 흐름 경로의 행동 양식들의 집합을 프로그램의 버스마크로 이용하였다. 둘째로, 자바 프로그램에서의 스택 시뮬레이션에 기반한 의미 단위 분석 방법을 제안한다. 자바 프로그램은 스택 기계(stack machine)에 기반한 명령어들로 구성되기 때문에, 프로그램의 실행 시 연산자 스택(operand stack)은 명령어 실행에 중요한 역할을 하고, 명령어 사이의 연관 관계를 보여주는 중요한 단서가 된다. 자바 프로그램의 연산자 스택의 움직임을 정적 시간에 시뮬레이션 함으로서 스택 행동 양식(stack behavior)을 분석할 수 있고, 이러한 스택 행동 양식들의 집합을 프로그램의 버스마크로 활용하였다. 두 프로그램의 버스마크 사이의 유사도는 버스마크의 원소들을 서로 비교하고 유사한 원소들을 매칭함으로써 구할 수 있다. 본 논문에서 제안한 소프트웨어 도용 탐지 방법의 성능을 평가하기 위해서 신뢰도(credibility)와 강인도(resilience)를 평가하는 실험을 수행하였다. 실험은 의미 유지 변환(semantic-preserving transformation)들을 이용해 변경된 프로그램을 찾아내는 도용 탐지 능력을 측정하였고, 버스마크의 성능은 실험 결과 나타나는 F-measure 곡선을 분석함으로써 평가하였다. 실험 결과, 여러 번의 연속된 변환을 적용한 열악한 환경에서도 본 논문에서 제안한 방법들은 기존의 도용 탐지 방법들에 비해서 보다 안정적이고 효과적인 성능을 보여주었다.

서지기타정보

서지기타정보
청구기호 {DCS 09017
형태사항 ix, 127 p. : 삽도 ; 26 cm
언어 영어
일반주기 저자명의 한글표기 : 임현일
지도교수의 영문표기 : Tai-Sook Han
지도교수의 한글표기 : 한태숙
수록잡지정보 : "A Method for Detecting the Theft of Java Programs through Analysis of the Control Flow Information". Information and Software Technology, (2009)
수록잡지정보 : "Detecting Theft of Java Applications via a Static Birthmark Based on Weighted Stack Patterns". IEICE Transactions on Information and Systems, v.E91-D no.9, pp. 2323-2332(2008)
학위논문 학위논문(박사) - 한국과학기술원 : 전산학전공,
서지주기 References : p. 119-127
주제 software theft detection, ;software protection, ;program analysis, ;software birthmark, ;Java bytecode analysis
소프트웨어 도용 탐지, ;소프트웨어 보호, ;프로그램 분석, ;소프트웨어 버스마크, ;자바 바이트코드 분석
QR CODE qr code