본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도 면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다.
반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 실시 예에 따른 소프트웨어 보안 방법을 설명하기 위한 데이터 흐름을 나타낸다.
도 2를 참조하면, 소프트웨어 배포자(또는 판매자)의 시스템(예컨대, 컴퓨터 또는 서버, 미도시)에는 상기 소프트웨어를 구성하는 복수의 파일들(1)이 저장되어 있을 수 있다.
상기 복수의 파일들(1)은 상기 소프트웨어를 구성하는 파일들의 일부분뿐만 아니라, 상기 소프트웨어를 구성하는 파일들을 포함하는 폴더를 포함하는 의미로 사용될 수 있다.
상기 복수의 파일들(1) 중에는 상기 소프트웨어를 사용자 단말기에서 실행시 키도록 하는 적어도 하나의 실행 파일과 상기 적어도 하나의 실행 파일이 상기 소프트웨어를 구동하는데 필요한 데이터 파일 또는 라이브러리 등의 데이터 파일이 존재할 수 있다.
본 발명의 실시 예에 따른 소프트웨어 보안 방법은 상기 복수의 파일들(1)을 패키징하여 설치 파일을 생성할 수 있는 인스톨 파일 제작 도구(2)를 제공할 수 있으며, 상기 소프트웨어 배포자는 상기 인스톨 파일 제작 도구(2)를 이용하여 상기 복수의 파일들(1)을 패키징할 수 있다. 상기 인스톨 파일 제작 도구(2)는 인스톨 파일(예컨대, setup0.exe, 3)을 생성하기 위한 종래의 도구(예컨대, Install Shield 등)에서 제공하는 패키징 기능뿐만 아니라, 패키징시에 배포자가 원하는 소정의 보안기능을 추가적으로 제공할 수 있다.
상기 인스톨 파일 제작 도구(2)는 소프트웨어 배포자로부터 상기 배포자의 시스템에 있는 다수의 파일들 중 상기 소프트웨어를 구성하는 상기 복수의 파일들(1)을 선택하는 정보를 소정의 행위(예컨대, 클릭 및/또는 드래그)를 통해 제공받는다.
또한, 상기 배포자는 상기 인스톨 파일 제작 도구(2)를 통하여 상기 복수의 파일들(1)을 선택하고, 상기 복수의 파일들(1) 중 적어도 일부분의 파일에 보안기능을 설정할 수 있다.
또한, 보안 기능이 설정된 상기 적어도 일부분의 파일에 대한 정보 및 상기 보안 기능에 대한 정보는 설정 파일(예컨대, info.ini)에 저장될 수 있다. 그리고, 상기 보안 기능 각각을 수행하기 위한 보안 모듈(예컨대, *.dll 등)과 상기 설정 파일은 후술하는 바와 같이 사용자 단말기의 보안영역에 설치될 수 있다.
예컨대, 상기 보안 기능은 도 2에 도시된 바와 같이 화면보호 기능, 화면캡춰방지 기능, 또는 클립보드 보안 기능 등과 같이 다양할 수 있으며, 본 발명의 권리범위가 이에 한정되지는 않는다.
예컨대, 상기 소프트웨어 배포자는 상기 복수의 파일들(1)중 파일1이 디스플레이 될 때에는 화면캡춰 방지 기능을 수행토록 설정할 수 있다. 또는, 상기 소프트웨어 배포자는 상기 복수의 파일들(1)중 파일2가 실행되는 도중에는 클립보드기능을 디스에이블 시키도록 설정할 수 있다.
이와 같은 보안기능의 설정 정보 및 보안을 설정할 파일들에 대한 리스트는 전술한 바와 같이 설정 파일에 저장될 수 있다. 물론, 보안을 설정할 파일에 대한 리스트와 상기 보안기능의 설정정보는 별도의 파일에 저장될 수도 있다.
상기 각각의 보안 기능을 수행하는 보안 모듈들(예컨대, 1.dll, 2.dll, 또는 3.dll 등)은 상기 인스톨 파일 제작 도구(2)를 통해 상기 복수의 파일들(1)과 함께 패키징될 수 있다.
이렇게 패키징 된 인스톨 파일(예컨대, setup0.exe, 3)은 도 2에 도시된 바와 같이, 상기 복수의 파일들(1), 상기 보안 모듈들(예컨대, 1.dll, 2.dll, 또는 3.dll 등), 및 상기 설정 파일(예컨대, info.ini)을 포함할 수 있다.
본 발명의 실시 예에 따른 소프트웨어 보안 방법은 이미지 생성 도구(4)를 통해 생성된 상기 인스톨 파일(3)에 상기 소프트웨어 보안 방법을 수행하기 위한 소정의 에이전트(agent, 예컨대, 제어모듈 등)를 더 포함시킬 수 있다. 또한, 상기 소프트웨어의 사용권한에 대한 정보를 가지는 정책 파일들 및/또는 후술할 보안영역을 마운트하기 위한 VDD(Virtual Device Driver) 등을 더 포함시킬 수 있다.
상기 이미지 생성 도구(4)는 생성된 상기 인스톨 파일(3)과 제어모듈(controller), 정책파일, 또는 VDD 중 적어도 하나를 포함하여 설치 파일(5)로 생성할 수 있다. 또한, 상기 설치 파일(5)에는 후술할 바와 같이 본 발명의 실시 예에 따른 소프트웨어 보안 방법에 따라 유저 영역과 보안 영역 각각에 상응하는 파일들을 설치하기 위한 스플리터(splitter, 미도시) 및/또는 각종 헤더(header)가 더 포함될 수 있음은 물론이다. 또한, 상기 설치 파일은 가상 드라이브 이미지 파일일 수 있다.
본 출원인이 출원한 등록특허 "가상디스크 구동방법 및 이를 위한 기록매체"(등록번호 10-0692964)에는 가상 디스크 이미지와 VDD가 하나로 패키징 된 파일이 실행되는 경우, 자동으로 VDD가 사용자 단말기에 설치되고 상기 가상 디스크 이미지가 마운트 되는 가상 디스크 구동방법에 대해 상세히 개시되어 있으며, 상기 등록특허 "가상디스크 구동방법 및 이를 위한 기록매체"(등록번호 10-0692964)의 명세서에 개시된 발명 및 내용은 본 명세서의 레퍼런스로 포함된다.
결국, 상기 설치 파일은 가상 드라이브(또는 디스크) 이미지 파일로 생성될 수 있으며, 상기 이미지 생성 도구(4)는 상기 설치 파일(5)을 이러한 가상 드라이브 이미지 파일로 생성하기 위한 도구로 사용될 수 있다.
상기 설치 파일(5)에는 상기 인스톨 파일(3) 및 본 발명의 실시 예에 따른 소프트웨어 보안 방법을 수행하기 위한 제어모듈과 사용권한을 규정하기 위한 적어 도 하나의 정책 파일, 및/또는 등록특허에서 개시된 바와 같이 VDD를 포함할 수 있다.
결국, 소프트웨어 배포자는 상기 설치 파일(5)을 소정의 저장장치(예컨대, 디스크, CD 등)을 통해 사용자에게 배포하거나, 인터넷을 통해 내려받기 가능한 형태로 사용자에게 제공할 수 있다.
사용자는 상기 설치 파일(5)을 사용자 단말기에 저장하거나, 인터넷을 통해 내려받는 경우 임시로 저장한 상태에서 상기 설치 파일(5)을 실행할 수 있다.
상기 설치 파일(5)이 실행되는 경우, 본 발명의 실시 예에 따른 소프트웨어 보안 방법의 핵심적인 기술적 사상은 기본적으로 상기 사용자 단말기의 유저 영역에는 도 1에서 설명한 유저영역(또는 도 3에서 설명할 유저영역)에 가상 파일들을 설치하고, 보안 영역에 실제로 설치될 파일들이 설치된다는 것이다.
여기서 보안 영역이라 함은, 본 출원인이 출원한 한국특허출원(출원번호 10-2007-0060408, 이하 '이전출원')"컨텐츠 보안 방법 및 그 장치"에 기재된 가상 드라이브와 같이 가상 드라이브에 접근하는 사용자 프로세스가 호출하는 함수들을 API 후킹(hooking)을 통해 제어하는 방법을 통해 사용자의 무단 사용 및/또는 복제를 방지할 수 있고, 인가된 프로세스만을 접근시킬 수 있도록 제어가 가능한 모든 영역을 포함할 수 있다. 즉, 이전 출원에 개시된 바와 같이 가상 디스크 드라이브뿐만 아니라, 사용자의 로컬 디스크라도 사용자 프로세스가 접근하기 위해 호출하는 함수들을 체크하여 후킹을 통해 보안 기능을 제공할 수 있는 데이터 저장 가능한 모든 영역을 포함하는 의미로 사용될 수 있다.
이전출원의 명세서에 기재된 발명 및 내용은 본 명세서의 레퍼런스로 포함된다.
또한, 본 명세서에서는 설명의 편의를 위해, 가상 드라이브를 예를 들어 상기 보안 영역을 설명하며, 본 발명의 권리범위가 이에 한정되지는 않는다.
결국, 도 2에 도시된 상기 설치 파일(5)을 사용자가 실행하면 도 3에 도시된 바와 같이 파일들이 설치된다.
상기 설치 파일(5)을 실행하면, 종래의 소프트웨어 설치 방법과 같이 시리얼 넘버를 통해 인증 절차를 거칠 수 있음은 물론이고, 인터넷을 통해 상기 소프트웨어 배포자가 운영하는(또는 상기 소프트웨어 배포자를 위해 운영하는) 웹 페이지로의 등록절차를 거칠 수 있다.
정상적으로 등록절차를 마치는 경우, 상기 웹 페이지의 서버와 상기 소프트웨어를 설치한 단말기 간에는 DRM 솔루션을 통한 사용권한 등의 인증절차를 거칠 수 있으며, 이에 대해서는 후술한다.
도 3은 본 발명의 실시 예에 따른 소프트웨어 보안 방법에 따라 소프트웨어를 설치한 후의 상태를 나타낸다.
도 3을 참조하면, 사용자가 상기 설치 파일(5)을 실행(예컨대, 더블 클릭 또는 엔터 등을 통해)하면, 상기 설치 파일(5)에 포함된 스플리터는 사용자 단말기의 유저영역(100)에는 상기 복수의 파일들(1)에 상응하는 가상의 파일들을 설치하고, 보안영역(200)에는 상기 복수의 파일들(1) 및 제어모듈을 설치할 수 있다.
상기 유저영역(100)에 설치되는 가상의 파일들은 적어도 하나의 가상 실행 파일(예컨대, C0.exe)과 상기 가상 실행 파일의 구동시에 필요한 적어도 하나의 가상 데이터 파일들(예컨대, A0.dat, B0.dat 등)을 포함할 수 있다. 상기 가상 데이터 파일들은 크기가 0 byte인 아무런 내용이 없는 파일들 또는 구현 예에 따라 상기 소프트웨어의 실행과는 관련이 없는 특정 정보를 포함하는 파일들 일 수 있다.
결국, 사용자가 임의로 접근 가능한 유저영역에 설치된 파일은 가상의 파일이므로, 사용자가 무단으로 복사하는 경우에도 소프트웨어는 실행되지 않는다.
또한, 상기 가상 실행 파일은 유저가 실행하는 경우 간접적으로 상기 소프트웨어를 구동시킬 수 있는 파일인 것이 바람직하다. 이에 대해서는 후술한다.
또한, 상기 보안영역(200)에는 상기 복수의 파일들(예컨대, A0.dat, B0.dat, 또는 C.exe 등)이 상기 설치 파일(5)내에 포함된 인스톨 파일(3)을 통해 설치될 수 있으며, 제어모듈 및/또는 전술한 보안 모듈과 설정 파일이 더 설치될 수 있다.
도 3에서는 설명의 편의를 위해 상기 유저영역(100)에 설치되는 파일의 이름과 상기 보안영역(200)에 설치되는 파일의 이름을 달리 표시하였지만, 각각의 파일의 이름이 동일할 수 있음은 물론이다. 또한, 도 2에서 설명한 인스톨 파일(3) 생성 전의 상기 복수의 파일들(1)과도 파일의 이름은 같을 수도 있다. 결국, 사용자의 입장에서는 유저 영역(100)에 종래의 소프트웨어 설치방법에 따라 설치한 것과 동일한 상태로 파일들이 설치된 것과 같은 효과가 있다.
또한, 보안 영역(200)이 가상 디스크 드라이브이고, 상기 설치 파일(5)이 본 출원인의 등록특허에 개시된 바와 같이 자동으로 상기 가상 디스크 드라이브를 마운트 하는 경우에는 이러한 효과는 증진된다.
또한, 본 명세서에서는 설명의 편의를 위해 상기 복수의 파일들(1)의 갯수와 동일한 수의 가상 파일들이 상기 유저 영역(100)에 설치되는 것을 예를 들어 설명하지만 반드시 이에 한정되지는 않음은 물론이다.
도 4는 본 발명의 실시 예에 따른 소프트웨어 보안 방법을 설명하기 위한 개략적인 메모리 상태 및 데이터 흐름을 나타낸다.
도 3 및 도 4를 참조하여, 본 발명의 실시 예에 따른 소프트웨어 보안 방법을 설명하면, 사용자는 상기 소프트웨어를 실행하기 위해 상기 유저영역(100)에 저장된 가상 실행 파일(C0.exe)을 실행할 수 있다.
사용자가 상기 가상 실행 파일(C0.exe)을 실행하면 결국에는 상기 소프트웨어를 구동시키는 실행파일(C.exe)이 실행되기는 하지만, 실제로는 상기 가상 실행 파일(C0.exe)은 상기 소프트웨어의 실행 시의 사용권한의 인증기능을 수행한다.
상기 가상 실행 파일(C0.exe)이 실행되면(S100), 상기 가상 실행 파일(C0.exe)은 상기 보안 영역(200)에 저장된 정책파일에 기초하여 소정의 사용권한 인증기능을 수행할 수 있다(S100).
상기 사용권한 인증기능에는 사용자 자체의 인증, 사용 횟수의 인증, 또는 사용 기간의 인증 중 적어도 하나를 포함할 수 있으나, 이는 예시에 불과하며 본 발명의 권리범위가 이에 한정되지는 않는다.
상기 정책 파일은 소프트웨어 배포자(또는 판매자)에 의해 생성될 수 있으며, 상기 정책팔일은 DRM 시스템에 일반적으로 사용되는 규칙(예컨대, 확장형 권리 마크업 언어(Xrml) 등) 또는 별도로 규정된 규칙에 의해 정의될 수 있다.
또한, 상기 가상 실행 파일(C0.exe)이 실행되면(S100), 사용자 단말기는 전술한 소프트웨어 배포자의 웹 페이지의 서버 또는 별도의 인증 서버와 인터넷을 통해 연결됨으로써 DRM 솔루션을 통해 상기 정책파일 등에 의한 사용자 인증 등이 수행될 수도 있다(S100).
결국, 상기 가상 실행 파일(C0.exe)은 사용자에게는 실행 파일로 보이지만 소프트웨어 실행 시의 인증 기능을 수행하는 역할을 한다. 따라서, 소프트웨어 배포자는 소프트웨어가 설치된 후에도 사용권한의 제어가 가능하게 된다. 그러므로, 상기 설치 파일(5) 자체를 배포하고, 사용자들에게 복사를 가능하게 할 수도 있으므로, 다양한 판매모델 및 유료정책의 적용이 가능할 수 있다.
인증 기능을 수행한 후(S100), 상기 가상 실행 파일(C0.exe)은 상기 보안 영역(200)에 저장된 제어모듈을 활성화할 수 있다(S200).
또한, 상기 가상 실행 파일(C0.exe)은 상기 제어모듈이 실제 실행 파일(C.exe)을 실행시킬 수 있도록 상기 실행 파일(C.exe)의 이름 또는 상기 실행파일(C.exe)의 상기 보안영역(200)에서의 경로에 대한 정보를 상기 제어모듈로 전달할 수 있다. 왜냐하면, 상기 가상 실행 파일(C0.exe)은 상기 실행 파일(C.exe)에 대응되는 가상 파일이므로 원래의 상기 실행 파일(C.exe)에 대한 정보를 포함하고 있을 수 있기 때문이다.
한편, 상기 실행 파일(C.exe)에 대한 정보를 전달받은 상기 제어모듈은 상기 실행 파일(C.exe)을 실행시킬 수 있다(S300).
상기 실행 파일(C.exe)이 실행되는 중에도 상기 제어모듈은 계속 활성화되어 있는 상태로 상기 실행 파일(C.exe)을 제어하는 역할을 수행한다.
예컨대, 상기 실행 파일(C.exe)이 데이터 파일(예컨대, A.dat)을 참조하기 위해 소정의 함수를 호출한 경우(S400), 상기 실행 파일(C.exe)이 참조하고자 하는 데이터 파일(예컨대, A.dat)의 경로에는 실제로는 가상 데이터 파일(A0.dat)이 존재하므로, 상기 제어모듈은 상기 실행 파일(C.exe)로부터 사용자 단말기의 OS(또는 파일시스템)로 호출되는 함수를 API 후킹을 통해 후킹할 수 있다(S500).
그리고, 상기 제어모듈은 후킹한 함수의 경로를 실제 데이터 파일(예컨대, A.dat)에 대한 경로로 변경하여 출력할 수 있다. 따라서, 상기 실행 파일(C.exe)은 정상적으로 데이터 파일(예컨대, A.dat)을 참조할 수 있다.
결국, 상기 실행 파일(C.exe)은 정상적으로 모든 데이터 파일들을 참조할 수 있게 된다.
한편, 상기 실행 파일(C.exe)이 수행되는 동안 전술한 바와 같이, 인스톨 파일 생성시에 설정한 보안 기능의 설정 정보에 상응하는 이벤트(또는 동작)가 발생하면, 즉, 상기 설정 정보에 상응하는 보안 모듈에 접근하고자 한다면 상기 제어모듈은 상기 설정 정보에 상응하는 보안 모듈을 활성화시킴으로써 대응되는 보안 기능을 수행할 수 있다.
예컨대, 소프트웨어 배포자가 A.dat 파일을 참조하는 경우, 화면캡춰를 방지하는 기능을 설정하였다면, 이에 상응하는 정보가 설정파일(예컨대, info.ini)에 저장될 수 있다. 따라서, 상기 제어모듈은 API 후킹을 통해 상기 실행파일이 A.dat 파일을 참조하는 경우를 알 수 있으므로, 상기 설정파일(예컨대, info.ini)에 저장 된 정보에 기초하여 상기 제어모듈은 화면 캡춰 방지 기능에 대응되는 보안모듈(예컨대, 1.dll)을 활성화할 수 있다.
상기 보안 모듈들(예컨대, 클립보드, 화면 캡춰 방지, 화면보호 등) 각각의 기능 역시 인젝션(injection)에 의한 API 후킹을 통해 수행할 수 있다. 예컨대, 상기 보안 모듈들 각각은 상기 보안 영역(200)에 접근하고자 하는 프로세스 또는 OS에서 호출되는 함수(또는 메시지)를 후킹하고, 상기 보안 모듈들 각각에 의해 인정되는 함수들만 상기 보안 영역(200)에 접근시키고 그렇지 않은 함수에 대해서는 널 리턴을 출력함으로써 구현될 수 있다. 상기 보안 모듈들의 상세한 기능에 대해서는 본 출원인의 이전출원인 한국특허출원(출원번호,10-2007-0060408)"컨텐츠 보안 방법 및 그 장치"에 상세히 개시되어 있으므로 상세한 설명은 생략한다.
또한, 본 발명의 실시예에 따른 소프트웨어 보안 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드 디스크, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.