함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 243 함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 (A Novel Software Watermarking Scheme Based on Calling Convention) 전 철 정진만 김봉재 (Cheol Jeon) (Jinman Jung) (Bongjae Kim) 장준혁 조유근 홍지만 (Joonhyouk Jang) (Yookun Cho) (Jiman Hong) 요 약 통신망의 발전과 스마트폰의 대중화로 인해 소프트웨어의 배포와 유통은 지속적으로 증가해왔 다. 하지만 소프트웨어 불법복제가 만연한 상황에서 개발자의 권리와 수익은 보호받지 못하고 있다. 이러 한 상황을 극복하기 위해 소프트웨어 개발자의 지적재산권을 보호하기 위한 소프트웨어 워터마킹 기법이 제안되었지만 대부분의 제안된 기법이 코드 최적화, 코드 난독화 기법에 의해 쉽게 무력화 되었을 뿐만 아니라 복잡한 로직으로 구성되어 기존 프로그램과의 결합이 어려웠다. 이 문제를 해결하기 위해 본 논문 에서는 함수 호출 순서를 사용해 워터마크 값을 비트-스트링(bit-string) 형태로 인코딩하고 중국인의 나 머지 정리를 이용하여 공격에 의해 일부 워터마크 값이 변경되었을지라도 원래의 워터마크 값을 추출할 수 있는 스테가노그래피(steganography)와 오류정정(error-correction)기법을 결합한 형태의 새로운 워터 마킹 기법을 제안한다. 키워드 : 소프트웨어 워터마킹, 스테가노그래피 Abstract Software market has steadily increased with the expansion of network infrastructure and the popularization of smartphone. However, software piracy is common such that the rights and the profits of developers are not protected. In order to overcome this situation software watermarking schemes have been proposed. However, these schemes have the shortcomings such that not only the watermarks can be destroyed via straightforward semantics-preserving code transformations, but also the mark that consists of complex logic can be difficult to be combined with existing programs. In order to solve the problems the proposed scheme combines steganography and error-correction scheme. It enhances the resilience of watermarks with the chinese remainder theorem, where the watermark is encoded as bit-string based on function call sequence. In the case that the watermark can be defeated by attacks, we employ the chinese remainder theorem as error-correction scheme. Key words :Software watermarking, Steganography 본 연구는 문화체육관광부 및 한국저작권위원회의 2011년도 저작권 기술개발 사업의 연구결과로 수행되었음 이 논문은 제38회 추계학술발표회에서 함수 호출 규약을 이용한 새로운 소프 트웨어 워터마킹 기법 의 제목으로 발표된 논문을 확장한 것임 학생회원 : 서울대학교 컴퓨터공학부 cjeon@os.snu.ac.kr jmjung@os.snu.ac.kr bjkim@os.snu.ac.kr jhjang@os.snu.ac.kr 종신회원 : 서울대학교 컴퓨터공학부 교수 ykcho@os.snu.ac.kr 종신회원 : 숭실대학교 컴퓨터학부 교수 jiman@ssu.ac.kr (Corresponding author임) 논문접수 : 2011년 12월 5일 심사완료 : 2012년 3월 11일 CopyrightC2012 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작 물의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다. 이 때, 사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처 를 반드시 명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든 유형의 사용행위를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야 합니다. 정보과학회논문지: 시스템 및 이론 제39권 제4호(2012.8)
244 정보과학회논문지 : 시스템 및 이론 제 39 권 제 4 호(2012.8) 1. 서 론 오늘날 인터넷과 통신망의 발전으로 소프트웨어의 배 포와 유통은 크게 증가하였고 최근에는 스마트폰의 열 풍으로 많은 사용자들이 어플리케이션 마켓(애플:앱스토 어, 안드로이드:마켓)을 통해 손쉽게 소프트웨어를 다운 받아 사용 할 수 있는 환경이 만들어졌다. 이러한 환경 의 변화는 제품선택의 기준이 하드웨어에서 소프트웨어 로 넘어가는 결정적인 계기를 낳았다. 실례로, 소프트웨 어 기업인 애플 社 는 뛰어난 소프트웨어를 탑재한 아이 폰으로 기존 모바일폰 제조업체를 제치고 현재 전 세계 스마트폰 시장에서 점유율 1위를 차지하고 있다. 시장 점유율에 소프트웨어가 결정적인 역할을 함에 따라서 각 플랫폼 벤더(애플, 구글, 마이크로소프트 등)들은 사 용자에게 제공할 다양한 소프트웨어 컨텐츠를 확보하기 위해 개발자에게 각자의 플랫폼에서 손쉽게 개발을 할 수 있는 환경을 제공해 주고 있으며 또한 그 판매로 발 생된 이익을 분배해 주고 있다. 하지만 전 세계적으로 소프트웨어 시장이 팽창하고 있는 것과는 달리 그에 따 라서 소프트웨어 개발자들의 수익이 비례하는 것은 아 니다. 그 이유는 아이폰의 jailbreaking, 안드로이드의 rooting을 이용한 불법복제 앱의 사용 또한 급증하고 있기 때문이다. 2010년 BSA 보고서[1]를 기준으로 국내 의 불법복제 실태를 살펴보면 국내 소프트웨어 불법 복 제율은 41%로 나타났다. 또한 불법 복제로 인한 손실액 은 전년대비 25%나 급증하여 조사가 시작된 이래 가장 많은 7억2천2백만 달러를 기록했다. 측정하지 못한 저작 권 침해 건수까지 고려한다면 그 피해 현황은 더욱 심 각 할 것으로 예상된다. 이처럼 불법복제가 만연한 상황 에서 저작권자의 지적 재산권 보호문제가 중요하게 다 루어지게 되었고 그 결과로 소프트웨어 워터마킹, 핑거 프린팅(fingerprinting), 버스마크(birthmark) 등과 같은 기법들이 제안되었고 현재도 연구되어 지고 있다. 소프트웨어 워터마킹 기법은 저작권자의 정보를 프로 그램 내에 삽입하는 기술을 말한다. 이를 통해 저작권자 는 프로그램에 대한 자신의 소유권을 입증할 수 있으며 불법으로 배포되기 전 원래 사용자 정보를 얻기 위한 용도로도 사용할 수 있다. 하지만 소프트웨어 워터마킹 기법은 기존의 코드를 동일한 기능을 수행하는 새로운 코드로 변환시키는 의미-보존 코드 변환(semanticspreserving code transformation) 기법에 의해 쉽게 무 력화되는 경우가 많다. 예를 들어 의미-보존 코드 변환 기법의 부류인 코드 최적화와 코드 난독화 기법을 통해 프로그램의 기능은 그대로 유지하면서 워터마킹 정보는 왜곡되어지고 알 수 없는 형태로 변경이 가능하다. 따라 서 소프트웨어 워터마킹의 견고함은 의미-보존 코드 변 환 공격에 얼마나 회복력(resilience) 가지는가에 따라서 결정된다. 일반적으로 모든 가능한 공격에 대해서 완벽 한 워터마킹 기법을 고안하는 것은 불가능하다고 여겨 지고 있다. 따라서 공격자가 소프트웨어 워터마킹을 무 력화 하는데 시간과 노력이 많이 들게 하는 방향으로 워터마킹기법이 연구되고 있는 추세이다. 하지만 이러한 방식은 알고리즘이 복잡한 형태를 가지기 때문에 프로 그램과 결합하기 어려울 뿐만 아니라 프로그램의 크기 를 증가시키고 실행속도를 저하시키는 결과를 낳았다. 본 논문에서는 기존의 워터마킹 기법과 다르게 스테 가노그래피(steganography)와 오류정정(error-correction) 기법을 결합한 회복력(resilience)있고 신뢰성 있는 새로 운 형태의 워터마킹 기법을 제안한다. 본 논문의 구성은 다음과 같다. 2장에서는 관련연구 및 배경지식을 살펴보고 3장에서는 본 논문에서 제안한 소프트웨어 워터마킹 기법을 소개한다. 4장에서는 제안 한 워터마킹 기법에 대한 평가 및 분석을 하고 5장에서 본 논문의 결론 및 향후 연구 방향으로 끝을 맺는다. 2. 관련연구 및 배경지식 소프트웨어 워터마킹 기법은 저작권자의 정보를 프로 그램 내에 삽입하는 기술을 말하며 삽입된 형태에 따라 정적 워터마크, 동적 워터마크로 분류할 수 있다. 정적 워터마크는 프로그램의 실행상태와 무관하게 동일한 상 태를 유지하는 반면 동적 워터마크는 특정 프로그램의 입력과 실행상태에서만 생성되는 특징을 갖는다. 일반적 으로 소프트웨어 워터마킹 기법은 의미-보존 코드 변환 기법에 의해 쉽게 무력화되는 경우가 많기 때문에 워터 마크가 변경, 제거되는 경우에 프로그램의 실행을 차단 할 수 있는 tamper-proofing[2,3] 기법을 함께 사용하기 도 한다. 2.1 정적 소프트웨어 워터마킹 정적 소프트웨어 워터마킹은 어플리케이션 실행파일 자체에 정적인 형태로 저장되며 어플리케이션의 실행상 태와 무관하게 동일한 상태를 유지한다. 기존 연구를 살 펴보면 Moskowitz and Cooperman[4]는 생성한 워터 마킹 이미지를 프로그램의 정적 데이터 영역에 삽입하 는 방식을 제안 하였고 Davidson and Myhrvold[5]는 프로그램의 CFG(control flow graph)의 기본 블럭의 순서를 이용한 워터마킹 기법을 제안하였다. Venkatesan [6]은 기존 프로그램의 CFG에 워터마크 그래프를 결합 하여 새로운 형태의 CFG를 만드는 강력한 정적 워터마 킹 기법을 제안하였다. 이러한 정적 워터마킹 기법[4-6] 은 삽입과 추출이 간단하다는 장점이 있지만 프로그램 안에 정적인 형태로 존재하기 때문에 공격자의 의해 쉽 게 파악이 되고 제거 될 수 있으며 코드 난독화와 코드
함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 245 최적화 기술에 의해 쉽게 변조되어질 수 있는 단점이 있다. 2.2 동적 소프트웨어 워터마킹 동적 소프트웨어 워터마킹은 프로그램이 실행 중일 때 생성되며 프로그램 실행 상태 안에 저장된다. 그리고 이렇게 삽입된 워터마크는 의도된 일련의 특정 입력 순 서로 프로그램을 실행 할 때만 확인될 수 있다. 동적 소 프트웨어 워터마킹 기법은 아래의 4가지 분류로 나눌 수 있다. 2.2.1 Easter Egg 워터마크 특정 사용자 입력이 들어왔을 때 사용자에 의해 즉시 인지 될 수 있는 저작권 정보 창이나 이미지를 보여주 는 등의 행동을 취한다. 따라서 쉽게 워터마크의 위치가 파악되고 제거 될 수 있다. 2.2.2 Execution Trace 워터마크 실행상태추적 워터마크는 어떤 출력도 생성하지 않는 다. 프로그램이 특정한 입력으로 실행 중일 때의 명령이 나 주소 정보를 이용하여 워터마크를 생성한다. 코드 난 독화나 코드 최적화 기술을 통해 워터마크가 제거 될 수 있다. 2.2.3 Data Structure 워터마크 자료구조 워터마크는 실행상태추적 워터마크와 마찬 가지로 어떤 출력도 생성하지 않는다. 그 대신 프로그램 이 특정한 입력으로 실행 중일 때 워터마크가 프로그램 의 힙 혹은 스택 데이터 영역에 삽입되어진다. 하지만 코드 난독화 기술에 의해 변조 될 수 있다. 2.2.4 Dynamic Graph 워터마크. 동적 그래프 워터마크는 실행 시에 동적으로 생성되 는 그래프의 토플로지 안에 워터마크를 삽입하는 기법 이다. 이전의 워터마크 기법에 비해 분석하기 어렵고 코 드 최적화 기술과 코드 난독화 기술에 강한 특징을 갖 는다. 2.3 스테가노그래피(steganography) 스테가노그래피는 커버(cover) 데이터안에 의미있는 비밀정보를 삽입하여 제3자에게 비밀정보의 존재를 알 리지 않고 전송하는 비밀 통신기술이다. 비밀 정보를 삽 입할 디지털 매체로는 디지털 이미지, 오디오 클립, 그 리고 실행파일 등이 사용된다. 스테가노그래피에 대한 공격은 숨겨진 정보를 찾는 것과 숨겨진 비밀 정보를 파괴하는 것으로 볼 수 있다. 정보의 변형에 대해 사람이 인지할 수 있는 한계치가 있다고 가정하였을 때, 인식할 수 있는 정보의 양(q)과 정보를 변형하여도 인식할 수 없는 정보의 양(t) 두 부 분으로 나눌 수 있다. 정보를 삽입하기 위한 커버(C)는 아래의 식과 같이 표현될 수 있으며, t는 스테가노그래 피 시스템에서 사용될 수 있는 부분으로서 이 부분에 정보가 삽입되어 변형되어 진다. 일반적으로 스테가노그래피(steganography) 시스템을 적용하기 위해서는 아래와 같은 조건이 만족되어야 한다. (1) 비인지성(Imperceptibility): 삽입된 정보에 의한 원 본 데이터의 변형이 없어야 한다. (2) 비검출성(Undetectable): 공격자에 의해 삽입한 메 시지가 검출되지 않아야 한다. (3) 삽입용량(Capacity): 삽입될 정보를 숨기기 위한 충 분한 양의 데이터를 제공할 수 있어야 한다. (4) 견고성(Robustness): 삽입된 정보는 의도적 또는 비 의도적 데이터 변형에도 삭제 불가능해야 한다. 2.4 함수호출규약 본 논문에서는 워터마크를 비트-스트링 형태로 삽입 하기 위해 함수 호출 규약을 이용한다. 어떤 함수 호출 규약이 비트-스트링을 표현하는데 적합한지 알아보기 위해 표 1에서 x86 머신의 4가지 함수호출방식을 보여 주고 있다. 호출 규약 인자 전달 표 1 함수호출규약 스택 제거 특징 cdecl R -> L 호출자 가변인자 지원 stdcall R -> L 피호출자 Windows 표준 호출 규약 fastcall R -> L 피호출자 레지스터를 통해 인자 전달 thiscall R -> L 피호출자 ECX를 통해 this 포인터 전달 cdecl과 stdcall은 일반적으로 가장 많이 쓰는 함수 호출 규약이다. cdecl은 전통적으로 c언어에서 사용해오 던 방식이고 stdcall은 윈도우 API의 함수 호출 규약으 로 사용되는 방식이다. 두 방식 모두 스택을 이용한 동 일한 파라미터를 전달 방식을 사용하기 때문에 호출되 는 부분만으로 어떤 함수 호출 규약을 사용했는지 구분 하기 어렵다. 하지만 fastcall 방식은 표 1에서 처럼 파 라미터 전달 방식으로 레지스터를 사용하기 때문에 다 른 함수 호출 규약과 비교해서 쉽게 구분이 가능하다. 따라서 fastcall은 워터마크의 비트-스트링 1을 삽입하 고 추출하는데 적합한 특징을 갖는다. thiscall 방식은 C++언어에서 this pointer를 전달하기 위한 제한적인 방식이기 때문에 고려 대상에서 제외했다. 3. 제안기법 본 논문에서는 기존의 워터마킹 기법과는 다른 스테 가노그래피(steganography)와 오류정정(error-correction) 기법을 결합한 회복력(resilience)있고 신뢰성 있는 새로 운 형태의 워터마킹 기법을 제안한다. 스테가노그래피를
246 정보과학회논문지 : 시스템 및 이론 제 39 권 제 4 호(2012.8) 구현하는 방법으로 함수 호출 규약을 이용했고 오류정 정기능을 구현하는 방법으로는 중국인의 나머지 정리를 사용했다. 제안한 방식은 스테가노그래피 형태로 워터마 크를 삽입하기 때문에 기존에 제안된 워터마킹 기법처 럼 복잡한 코드를 작성할 필요가 없으며 프로그램 로직 과는 무관하기 때문에 코드 최적화와 코드 난독화 공격 에도 삽입된 워터마크가 쉽게 변조되지 않는다. 3.1 워터마크 생성 먼저 중국인의 나머지정리를 이용하여 워터마크를 생 성한다. 워터마크를 생성하는 방식은 C. Collberg[7]의 논문에서 제안한 방식과 유사한 구조를 갖는다. 워터마크 값 W는 다음과 같은 2 단계를 거쳐 몇 개 의 값들의 집합으로 바뀐 후에 삽입된다. 1 단계. 이 서로소이고 라고 가정 call graph에서 각 노드는 호출된 함수를 나타내며 루트에서 갈라진 각 경로는 하나의 워터마크 값을 표 시 한다. 2 단계. 그래프상의 각 경로를 따라가며 순차적으로 각 노드에 워터마크 값을 비트-스트링(bit-string) 형 태로 표시한다. 3 단계. 비트-스트링 값을 1로 갖는 함수 부분을 특 정 함수호출규약으로 변경한다. (x86 시스템인 경우에 는 fastcall 키워드를 사용한다.) 4 단계. 해당 소스코드를 컴파일하면 워터마크 삽입 이 완료 된다. 한다. W는 개의 조각으로 나누어지며 각 조 각은 mod 의 형태를 갖는다.(단, ) 2 단계. 각각의 mod 는 열거기법(enumeration scheme)에 의해 하나의 정수 값으로 변환된다. 열거기법은 아래와 같다. 그림 1은 1, 2 단계를 거쳐 워터마크가 생성되는 과 정을 나타낸다. 1의 과정에서 서로소인 를 정하 고 그 값을 이용해 워터마크 값(W=17)을 연립합동식의 형태로 분해한다. 2의 과정에서는 앞에서 설명한 열거 기법을 통해 여러 개의 워터마크 값을 생성한 후 프로 그램에 삽입한다. 그림 2 워터마크 삽입(2단계) 그림 3 워터마크 삽입(3단계) 그림 1 워터마크 생성과정 3.2 워터마크 삽입 인텔 x86시스템에서 제공하는 함수 호출 규약을 이용 하여 해당 워터마크 값에 대한 비트-스트링을 생성한다. 워터마크를 삽입할 때는 아래의 단계를 거쳐 비트-스트 링을 생성한다. 1 단계. 프로파일링 툴[8]을 통해 call graph를 그린다. 앞서 구했던 워터마크 값을 비트-스트링 형태로 인코 딩을 한다면 그림 2와 같이 표현 될 수 있다. 그림 2에 서 비트-스트링이 1로 표현된 함수인 A-3, A-5, B-2, B-3, B-5, C-1, C-4 함수는 fastcall 키워드를 사용해 서 함수 호출 규약을 변경해준다. 변경을 완료한 후 소 스코드를 컴파일하면 워터마킹 삽입이 완료된다. 3.3 워터마크 추출 소스코드 상에서 정적으로 이루어지는 삽입과는 다르 게 워터마크 추출은 동적분석을 통해 이루어진다. 어셈 블러 수준(assembler level)의 디버거[9,10]를 사용하여 프로그램을 수행하면서 call명령어가 수행될 때마다 fastcall 함수 호출 규약을 사용했는지 안 했는지에 따 라서 비트-스트링을 디코딩한다. 표 2에서처럼 fastcall
함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 247 표 2 x=sum(2, 3); 에 대한 각 함수호출규약별 어셈블리코드 호출규약 cdecl stdcall fastcall push 3 push 2 call _sum add esp, 8 push 3 push 2 call _sum add esp, 8 mov eax, 2 mov edx, 3 call @sum@8 어셈블리코드 4.1 워터마크 삽입 전, 후 실행시간 워터마크 삽입 후 실행시간의 변화를 살펴보기 위해 157MB 크기의 파일을 gzip 통해 압축하고 그 시간을 측정하였다. 그림 5를 보면 워터마크 삽입 후 프로그램 실행시간 은 삽입 전 보다 약 0.2초 정도 단축된 것을 알 수 있 다. 그 이유는 fascall 키워드를 사용하여 함수 호출 시 파라미터를 스택이 아닌 레지스터에 담아 전달하기 때 문이다. 그리고 전체 프로그램에서 빈번하게 호출되는 함수에 fastcall 키워드를 사용한다면 실행시간은 더 단 축될 것으로 예상된다. 그림 5 워터마크 삽입 전, 후 프로그램 실행시간 그림 4 워터마크 검증 함수 호출규약은 성능의 극대화를 위해 파라미터 전달 시에 레지스터를 사용하는 방식을 사용하기 때문에 스 택을 사용하는 다른 함수 호출 규약과 쉽게 구분할 수 있다. 비트-스트링(bit-string)을 디코딩하여 추출한 워터마 크의 일부가 공격에 의해 변형 되더라도 연립 합동식의 해를 구하는 중국인의 나머지정리 목적에 따라 최소 2 개의 워터마크 값이 온전한 상태로 존재한다면 원래의 워터마크 값을 구할 수 있다. 따라서 본 논문에서 제안 한 기법이 공격에 대해 회복성(resilience)이 있다고 말 할 수 있다. 4.2 워터마크 크기 워터마크 삽입 후 원본 프로그램의 크기와 비교하였 다. 그 실험 결과인 그림 6을 보면 워터마크 삽입 전, 후 프로그램의 크기가 93.7KB로 동일한 것을 알 수 있 다. 따라서 본 논문에서 제안한 기법은 프로그램 코드와 는 무관하게 스테가노그래피(Steganography)형태로 삽 입하기 때문에 프로그램의 크기를 증가시키지 않는 것 을 실험결과를 통해 확인할 수 있었다. 4. 실험 및 평가 실험은 하드웨어 사양이 Intel(R) Core(TM)2 Duo 2.33GHz이고 메모리 2GB인 PC에 리눅스 커널 2.6.38 버전을 사용하는 ubuntu 11.04와 gcc 4.5.2를 설치하여 진행하였다. 그리고 워터마크를 삽입할 대상 프로그램으 로는 유닉스/리눅스 계열 운영체제에서 많이 사용하는 압축 유틸리티인 gzip 1.2.4버전을 사용하였다. 그림 6 워터마크 삽입 전, 후 프로그램 크기
248 정보과학회논문지 : 시스템 및 이론 제 39 권 제 4 호(2012.8) 4.3 평가 기존 워터마킹 기법은 프로그램에 복잡한 워터마킹 코드를 삽입함으로써 공격자가 분석에 시간과 노력을 많이 들이도록 하는데 중점을 두었다. 하지만 그러한 복 잡한 워터마크는 프로그램 상에 관련 로직을 삽입하려 는 지적 재산권자에게도 큰 부담을 주었을 뿐만 아니라 프로그램의 크기도 증가시켰다. 본 논문에서 제안한 기 법은 함수 호출 규약을 이용해 비트-스트링(bit-string) 을 생성함으로써 복잡한 워터마킹 코드를 삽입할 필요 가 없다. 이렇게 프로그램 로직과 워터마크 사이의 의존 성을 제거함에 따라서 코드 최적화와 코드 난독화 공격 에도 삽입된 워터마크는 쉽게 변조되지 않는다. 그리고 추출한 워터마크의 일부가 공격에 의해 변경이 되었을 지라도 연립 합동식의 해를 구하는 중국인의 나머지 정 리에 의해서 최소 2개의 워터마크 값이 온전한 상태로 존재한다면 원래의 워터마크 값을 구할 수 있다. 따라서 본 논문에게 제안한 워터마킹 기법은 공격에 대한 높은 회복력(resilience)을 갖는다. 5. 결론 및 향후 연구 소프트웨어 워터마킹은 지적 재산권자의 보호를 위해 필요한 기법이다. 하지만 기존의 소프트웨어 워터마킹 기법은 의미-보존 코드 변환(semantics-preserving code transformation) 기법에 의해 쉽게 무력화 되거나 복잡 한 로직으로 프로그램 상에 워터마크를 삽입하는 것을 어렵게 만들었다. 그러나 본 논문에서 제안한 기법은 함 수 호출 규약을 이용해 스테가노그래피(steganography) 형태로 워터마크를 삽입하기 때문에 복잡한 코드를 작 성할 필요가 없어 프로그램의 수행시간과 크기에 영향 을 주지 않는다. 또한 중국인의 나머지정리를 이용한 오 류정정(error-correction)기법을 사용하여 워터마크의 회 복력(resilience)을 높였다. 하지만 본 논문에서 제안한 워터마크 기법은 함수 호출 규약을 이용하기 때문에 사 용언어와 컴퓨터 아키텍쳐에 영향을 받는다. 따라서 향 후 연구에서는 x86 시스템상의 C, C++ 언어에서 뿐만 아니라 여러 플랫폼과 언어 상에서 구현할 수 있는 워 터마크 기법을 연구할 예정이다. 참 고 문 헌 [1] Business Software Alliance (BSA), 2010 Privacy Study. http://portal.bsa.org/globalpiracy2010/downloads/study_pdf/2010_bsa_piracy_study-standard. pdf [2] D. Aucsmith, "Tamper Resistant Software: An Implementation," Information Hiding, First Int'l Workshop, pp.317-333, 1996. [3] D. Aucsmith and G. Graunke, "Tamper Resistant Methods andapparatus," US patent 5,892,899, Assignee: Intel Corporation, 1999. [4] S.A. Moskowitz and M. Cooperman, "Method for Stega-Cipher Protection of Computer Code," US Patent 5,745,569, Assignee: The Dice Company, 1996. [5] R. L. Davidson and N. Myhrvold, "Method and System for Generating and Auditing a Signature for a Computer Program," US Patent 5,559,884, Assignee: Microsoft Corporation, 1996. [6] R. Venkatesan, V. Vazirani, and S. Sinha, "A Graph Theoretic Approach to Software Watermarking," Proc. Fourth Int'l Information Hiding Workshop, 2001. [7] C. Collberg, E. Carter, S. Debray, A. Huntwork, C. Linn, and M. Step,.Dynamic path-based software watermarking, Proc. Conference on Programming Language Design and Implementation, pp. 107-118, 2004. [8] Intel vtune: performance profiler http://software.intel. com/en-us/articles/intel-vtune-amplifier-xe/ [ 9 ] OllyDbg: a 32-bit assembler level analysing debugger http://www.ollydbg.de/ [10] IDA Pro: diassembler and debugger http://www.hexrays.com/idapro/ 전 철 2011년 명지대학교 컴퓨터공학과 졸업 (학사). 2011년 현재 서울대학교 컴퓨터 공학부 석사 과정. 관심분야는 운영체제, 컴퓨터 보안, 임베디드 시스템 정 진 만 2008년 서울대학교 컴퓨터공학과 졸업 (학사). 2008년 현재 서울대학교 컴퓨터 공학부 박사 과정(수료). 관심분야는 운 영체제, 무선 네트워크, 임베디드 시스템, 시스템 보안 김 봉 재 2008년 광운대학교 컴퓨터공학부 졸업 (학사). 2008년~현재 서울대학교 컴퓨터 공학부 박사 과정(수료). 관심분야는 시 스템 및 운영체제, 센서 운영 체제, 임베 디드 시스템, 파일시스템
함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 249 장 준 혁 2009년 서울대학교 컴퓨터공학부 졸업 (학사). 2010년~현재 서울대학교 컴퓨터 공학부 박사 과정. 관심분야는 운영체제, 컴퓨터보안, 임베디드 시스템 조 유 근 1971년 서울대학교 졸업(학사). 1978년 미국 미네소타 대학교 컴퓨터 과학과 졸 업(박사). 1985년 미국 미네소타 대학교 방문 교수. 2001년 한국 정보과학회 회 장. 1979년~현재 서울대학교 컴퓨터공 학부 교수. 관심분야는 운영체제, 알고리 즘, 시스템 보안, 결함 허용 컴퓨팅 홍 지 만 2003년 서울대학교 컴퓨터공학부 졸업 (박사). 2004년~2007년 광운대학교 컴퓨 터공학부 조교수. 2007년~현재 숭실대 학교 컴퓨터 학부 교수. 관심분야는 임베 디드 운영체제, 결함 허용 컴퓨팅, 무선 센서 네트워크