KR101207434B1 - 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법 - Google Patents

이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법 Download PDF

Info

Publication number
KR101207434B1
KR101207434B1 KR1020100054910A KR20100054910A KR101207434B1 KR 101207434 B1 KR101207434 B1 KR 101207434B1 KR 1020100054910 A KR1020100054910 A KR 1020100054910A KR 20100054910 A KR20100054910 A KR 20100054910A KR 101207434 B1 KR101207434 B1 KR 101207434B1
Authority
KR
South Korea
Prior art keywords
application program
digital document
information
collision
protection
Prior art date
Application number
KR1020100054910A
Other languages
English (en)
Other versions
KR20100132930A (ko
Inventor
이동욱
전상일
김지연
Original Assignee
주식회사 마크애니
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 마크애니 filed Critical 주식회사 마크애니
Publication of KR20100132930A publication Critical patent/KR20100132930A/ko
Application granted granted Critical
Publication of KR101207434B1 publication Critical patent/KR101207434B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)

Abstract

충돌 방지 시스템 및 방법이 개시되어 있다. 충돌 방지 시스템은 어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보 및 어플리케이션 프로그램의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 검출하는 실행 모니터부와, 프로세스 생성 정보를 기반으로 어플리케이션 프로그램의 프로세스를 생성하고 그 생성되는 프로세스에 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션하여 보호 프로세스를 생성하는 런처부 및 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하고 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 필터링 드라이버부를 포함할 수 있다. 따라서, 이종의 디지털 문서 보호 시스템이 서로 간섭하지 않으면서 독자적으로 어플리케이션 프로그램을 동시에 제어할 수 있다.

Description

이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법 {System and Method for Preventing Collision Between Different Digital Documents Protection System}
본 발명은 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법에 관한 것으로서, 좀더 상세하게는, 서로 다른 디지털 문서 보호 시스템 간에 상호 간섭하지 않으면서 각각의 디지털 문서 보호 시스템이 어플리케이션 프로그램의 프로세스를 용이하게 제어할 수 있게 하는 충돌 방지 기술에 관한 것이다.
일반적으로, 디지털 문서는 디지털 방식으로 컴퓨터에 의하여 생성, 처리 및 사용되는 정보를 의미할 수 있다. 디지털 문서는 그 특성상 편집, 저장, 복사 등이 용이하기 때문에 사용자에게 높은 편의성을 제공할 수 있다. 예를 들어, 사용자는 워드나 워크시트 등과 같은 어플리케이션 프로그램을 이용하여 자신이 원하는 문서를 열람하거나 새로운 문서를 생성할 수 있다.
이러한 디지털 문서는 정보의 손실 없이도 손쉬운 복제가 가능하기 때문에 불법적인 유출 및 사용에 쉽게 노출될 수 있다. 따라서 안전하고 신뢰성 있는 디지털 사용 환경을 보장하기 위해서는 디지털 문서를 불법적인 행위, 예컨대 허가되지 않은 복제나 사용 등으로부터 보호하기 위한 디지털 문서 보호 시스템이 필수적으로 요구된다.
디지털 문서 보호 시스템은 적법한 사용자에게만 그 사용자에게 허용된 권한에 따라 디지털 문서를 사용할 수 있도록 제한하는 보호 시스템을 의미할 수 있다. 디지털 문서 보호 시스템은 암호화/복호화, 정보 유출 방지 및 권한 제어 등과 같은 다양한 DRM(Digital Right Management) 요소 기술들에 의하여 구현될 수 있다. 디지털 문서 보호 시스템은 퍼스널 컴퓨터, 노트북, 포터블 단말기, 모바일 단말기 등과 같은 단말기에 설치되며 어플리케이션 프로그램에 의하여 처리되는 디지털 문서를 보호할 수 있다.
통상, 이러한 디지털 문서 보호 시스템은 디지털 문서를 안전하게 보호하기 위하여 디지털 문서를 처리하는 어플리케이션 프로그램의 프로세스를 제어할 수 있다. 이러한 제어를 위하여, 디지털 문서 보호 시스템은 어플리케이션 프로그램에 의하여 생성되는 프로세스(Process)에 그 프로세스를 제어하기 위한 다이내믹 링크 라이브러리(DLL : Dynamic Link Library)를 인젝션(Injection)할 수 있다.
한편, 기업 등의 업무 환경에서는 하나의 단말기에 종류가 다른 다수 개의 디지털 문서 보호 시스템을 설치하여 사용하는 경우도 있다. 예를 들어, 제 1 보호 솔루션 업체에 의하여 개발된 제 1 디지털 문서 보호 시스템과 제 2 보호 솔루션 업체에 의하여 개발된 제 2 디지털 문서 보호 시스템을 하나의 단말기에 설치하여 디지털 문서를 보호하는 것이다.
그런데, 이와 같은 경우 이종의 디지털 문서 보호 시스템 간에 충돌이 발생하여 어플리케이션 프로그램을 통한 작업 또는 보호 기능이 정상적으로 수행되지 않거나 에러의 발생으로 인하여 수행 자체가 불가능해지는 문제점이 발생할 수 있다. 예를 들어, 제 1 디지털 문서 보호 시스템과 제 2 디지털 문서 보호 시스템이 동일한 어플리케이션 프로그램의 동작을 제어하기 위하여 서로 충돌하고 그로 인하여 두 시스템 중 적어도 어느 하나가 정상적인 동작을 수행하지 못하거나 또는 동작 자체가 불가능하게 되는 것이다.
따라서, 이종의 디지털 문서 보호 시스템이 단말기 내에서 동일한 어플리케이션 프로그램을 제어할 때 서로 간에 간섭하지 않고 각각 정상적으로 동작할 수 있도록 하는 새로운 기술의 개발이 시급히 요구되고 있는 실정이다.
본 발명은 이러한 배경에서 창안된 것으로서, 본 발명이 해결하고자 하는 기술적인 과제는 이종의 디지털 문서 보호 시스템 간의 충돌을 방지할 수 있는 충돌 방지 시스템 및 방법을 제공하는데 있다.
또한, 본 발명이 해결하고자 하는 다른 기술적 과제는 다른 디지털 문서 보호 시스템과 충돌을 일으키지 않으면서도 디지털 문서를 보호함으로써 다른 디지털 문서 보호 시스템의 정상적인 동작에 영향을 주지 않고 독자적인 고유의 보호 기능을 제공할 수 있는 디지털 문서 보호 시스템을 제공하는데 있다.
이러한 기술적 과제를 해결하기 위하여 본 발명은 일 측면(Aspect)에서 충돌 방지 시스템을 제공한다. 상기 충돌 방지 시스템은, 어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보 및 상기 어플리케이션 프로그램의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 검출하는 실행 모니터부와; 상기 프로세스 생성 정보를 기반으로 상기 어플리케이션 프로그램의 프로세스를 생성하고, 상기 생성되는 프로세스에 상기 검출된 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션하여 보호 프로세스를 생성하는 런처부; 및 상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하고, 상기 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 필터링 드라이버부를 포함한다.
상기 충돌 방지 시스템은 어플리케이션 프로그램 별 우선 순위 정보, 충돌 방지 대상 어플리케이션 프로그램 정보 및 어플리케이션 프로그램 별 DRM 모듈 정보를 저장하는 데이터베이스부를 더 포함할 수 있다.
상기 데이터베이스부는, 각 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템인지의 여부를 나타내는 우선 순위 정보를 저장하는 우선 순위 정보 데이터베이스와; 충돌 방지의 대상이 되는 어플리케이션 프로그램의 정보를 저장하는 충돌 방지 대상 어플리케이션 프로그램 정보 데이터베이스; 및 어플리케이션 프로그램 별로 각 어플리케이션 프로그램의 프로세스에 삽입할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 저장하는 DRM 모듈 정보 데이터베이스를 포함할 수도 있다.
상기 실행 모니터부는 윈도우쉘을 통하여 요청된 어플리케이션 프로그램이 충돌 방지 대상 어플리케이션 프로그램인지의 여부를 판단할 수 있다. 상기 실행 모니터부는 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것인지 어플리케이션 프로그램 실행을 직접 요청한 것인지를 판단할 수 있다.
상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 어플리케이션 프로그램 실행을 직접 요청한 것일 경우, 상기 실행 모니터부는 데이터베이스부를 조회하여 상기 요청된 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 상기 제 1 디지털 문서 보호 시스템인지의 여부를 판단할 수 있다.
상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것일 경우, 상기 실행 모니터부는 상기 디지털 문서의 암호화 여부를 판단하고, 상기 디지털 문사가 암호화되어 있을 경우 상기 제 1 디지털 문서 보호 시스템에 의하여 암호화되어 있는지의 여부를 판단할 수도 있다.
상기 검출된 실행 모니터부는 상기 프로세스 생성 정보 및 제 1 디지털 문서 보호 시스템의 DRM 정보를 포함하는 프로세스 생성 요청을 상기 런처부로 전송할 수 있다. 상기 런처부는 상기 프로세스 생성 요청을 수신하여 상기 프로세스 생성 정보 및 제 1 디지털 문서 보호 시스템의 DRM 정보를 획득할 수 있다.
상기 런처부는 상기 어플리케이션 프로그램이 멀티 프로세스 실행을 지원하는 MDI(Multiple Document Interface) 어플리케이션 프로그램인지 싱글 프로세스 실행을 지원하는 SDI(Single Document Interface) 어플리케이션 프로그램인지를 판단할 수 있다.
상기 어플리케이션 프로그램이 SDI 어플리케이션 프로그램일 경우, 상기 런처부는 동일 프로세스의 실행 여부를 판단하기 위하여 사용되는 함수를 리다이렉션하고 상기 프로세스의 오브젝트 식별자를 수도 정보로 수정하여 상기 프로세스를 생성함으로써, 상기 어플리케이션 프로그램이 상기 생성되는 프로세스를 상기 어플리케이션 프로그램에 의해 생성되는 프로세스로 인지하지 못하도록 할 수 있다.
상기 어플리케이션 프로그램이 SDI 어플리케이션 프로그램일 경우, 상기 런처부는 상기 어플리케이션 프로그램의 동일 프로세스 실행 여부를 판단하기 위하여 사용되는 함수를 후킹하고, 상기 함수의 인자로 받는 정보 중 상기 프로세스의 오브젝트 식별자를 다른 정보로 수정하여 리턴할 수도 있다.
상기 런처부는 상기 생성되는 보호 프로세스를 상기 충돌 방지 보호 프로세스로 등록할 것을 요청하는 충돌 보호 프로세스 등록 요청을 상기 필터링 드라이버부로 전송할 수 있다. 필터링 드라이버부는 상기 충돌 보호 프로세스 등록 요청에 응답하여 상기 보호 프로세스를 충돌 보호 프로세스 목록에 등록할 수도 있다.
상기 필터링 드라이버부는, 다른 디지털 문서 보호 시스템의 DRM 모듈로부터의 접근을 보호하는 보호 프로세스들의 정보를 포함하는 충돌 보호 프로세스 목록; 및 상기 충돌 보호 프로세스로 접근 가능한 허용된 DRM 모듈의 정보를 포함하는 허용 DRM 모듈 정보 목록을 저장 및 관리할 수 있다.
상기 필터링 드라이버는 상기 등록된 충돌 보호 프로세스에 의하여 생성되는 자식 프로세스는 충돌 보호 프로세스로 간주하여 상기 충돌 보호 프로세스 목록에 등록할 수 있다. 상기 런처부는 상기 런처부의 프로세스를 충돌 보호 프로세스로 등록할 것을 요청하는 요청을 상기 필터링 드라이버로 전송할 수 있다. 상기 필터링 드라이버는 상기 요청에 응답하여 상기 런처부의 프로세스를 상기 충돌 보호 프로세스 목록에 등록할 수 있다.
한편, 상술한 본 발명의 기술적 과제를 해결하기 위하여 본 발명은 다른 측면에서 충돌 방지 방법을 제공한다. 상기 충돌 방지 방법은, 어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보를 검출하는 단계와; 상기 어플리케이션 프로그램의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 검출하는 단계와; 상기 검출된 프로세스 생성 정보를 기반으로 상기 어플리케이션 프로그램의 프로세스를 생성하는 단계와; 상기 생성되는 프로세스에 상기 검출된 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션하여 보호 프로세스를 생성하는 단계와; 상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하는 단계; 및 상기 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 단계를 포함할 수 있다.
상기 충돌 방지 방법은 윈도우쉘을 통하여 요청된 어플리케이션 프로그램이 충돌 방지 대상 어플리케이션 프로그램인지의 여부를 판단하는 단계를 더 포함할 수도 있다.
상기 충돌 방지 방법은 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것인지 어플리케이션 프로그램 실행을 직접 요청한 것인지를 판단하는 단계와; 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것일 경우, 상기 디지털 문서의 암호화 여부를 판단하는 단계; 및 상기 디지털 문사가 암호화되어 있을 경우 상기 제 1 디지털 문서 보호 시스템에 의하여 암호화되어 있는지의 여부를 판단하는 단계를 더 포함할 수도 있다.
상기 충돌 방지 방법은, 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 어플리케이션 프로그램 실행을 직접 요청한 것일 경우, 상기 실행 모니터부는 데이터베이스부를 조회하여 상기 요청된 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 상기 제 1 디지털 문서 보호 시스템인지의 여부를 판단하는 단계를 더 포함할 수도 있다.
상기 충돌 방지 방법은 상기 어플리케이션 프로그램이 멀티 프로세스 실행을 지원하는 MDI(Multiple Document Interface) 어플리케이션 프로그램인지 싱글 프로세스 실행을 지원하는 SDI(Single Document Interface) 어플리케이션 프로그램인지를 판단하는 단계를 더 포함할 수도 있다.
상기 충돌 방지 방법은, 상기 어플리케이션 프로그램이 SDI 어플리케이션 프로그램일 경우, 상기 어플리케이션 프로그램의 동일 프로세스 실행 여부를 판단하기 위하여 사용되는 함수를 후킹하는 단계; 및 상기 함수의 인자로 받는 정보 중 상기 프로세스의 오브젝트 식별자를 다른 정보로 수정하여 리턴하는 단계를 더 포함할 수도 있다.
한편, 상술한 본 발명의 다른 기술적 과제를 해결하기 위하여 본 발명은 또 다른 측면에서 충돌 방지 기능을 구비한 디지털 문서 보호 시스템을 개시한다. 상기 디지털 문서 보호 시스템은, 각각 디지털 문서를 보호하기 위한 프로세스 제어 기능을 구비하는 다수 개의 DRM 모듈과; 어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보 및 상기 다수 개의 DRM 모듈 중 상기 어플리케이션 프로그램의 프로세스에 인젝션할 상기 DRM 모듈의 정보를 검출하는 실행 모니터부와; 상기 프로세스 생성 정보를 기반으로 상기 어플리케이션 프로그램의 프로세스를 생성하고, 상기 검출된 DRM 모듈의 정보를 기반으로 상기 생성되는 프로세스에 상기 DRM 모듈을 인젝션하여 보호 프로세스를 생성하는 런처부; 및 상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하고, 상기 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 필터링 드라이버부를 포함할 수 있다.
이상 설명한 바와 같이, 본 발명에 따르면 이종의 디지털 문서 보호 시스템이 서로 간에 간섭하지 않으면서 각각 독립적으로 동일한 어플리케이션 프로그램을 동시에 제어할 수 있다. 따라서, 어플리케이션 프로그램에 의해 처리되는 디지털 문서를 보호하기 위하여 여러 업체의 디지털 문서 보호 솔루션이 동시에 구동하더라도 에러의 발생 없이 원활하게 보호 기능을 수행할 수 있게 된다.
도 1은 일반적인 디지털 문서 보호 시스템의 동작 구성을 설명하기 위한 블록도이다.
도 2는 본 발명의 바람직한 실시예에 따른 디지털 문서 보호를 위한 충돌 방지 시스템의 개념을 설명하기 위한 블록도이다.
도 3은 본 발명의 바람직한 실시예에 따른 충돌 방지 시스템의 구성을 나타내는 블록도이다.
도 4는 도 3에 도시된 충돌 방지 시스템의 동작을 개략적으로 설명하기 위한 예시도이다.
도 5는 충돌 방지 시스템의 데이터베이스부의 상세 구성을 설명하기 위한 블록도이다.
도 6는 윈도우쉘 확장 메커니즘을 통하여 등록된 실행 모니터부를 도시하는 예시도이다.
도 7은 충돌 방지 시스템의 실행 모니터부의 상세 동작 흐름을 설명하기 위한 흐름도이다.
도 8은 충돌 방지 장치에 구비되는 런처부의 동작 흐름을 설명하기 위한 흐름도이다.
도 9는 어플리케이션 프로그램들이 동일 프로세스의 수행을 확인하기 위한 오브젝트의 종류 및 이름을 나타내는 도표이다.
도 10에 도시된 도표는 SDI 어플리케이션 프로그램의 멀티 프로세스 생성을 위하여 리다이렉션하는 함수들의 목록을 예시적으로 나타내고 있다.
도 11은 충돌 방지 시스템에 구비되는 필터링 드라이버의 동작 흐름을 설명하기 위한 흐름도이다.
도 12는 충돌 보호 프로세스의 자식 프로세스를 충돌 보호 프로세스로 등록하는 과정을 도시하고 있다.
도 13은 'EPROCESS' 구조체가 어떻게 제거되어 프로세스를 숨시게 되는지를 나타내는 예시도이다.
이하, 본 발명이 속하는 분야에 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세히 설명한다. 이하에 설명할 본 발명의 바람직한 실시예에서는 내용의 명료성을 위하여 특정한 기술 용어를 사용한다. 하지만 본 발명은 그 선택된 특정 용어에 한정되지는 않으며, 각각의 특정 용어가 유사한 목적을 달성하기 위하여 유사한 방식으로 동작하는 모든 기술 동의어를 포함함을 미리 밝혀둔다.
도 1은 일반적인 디지털 문서 보호 시스템의 동작 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(1)는 운용 체제(OS : Operating System)를 구비한다. 예컨대 상기 운용 체제는 마이크로소프트사의 윈도우(Window) 운영체제 등일 수 있다. 이러한 운영 체제는 그래픽 유저 인터페이스(Graphic User Interface)를 제공할 수 있다. 상기 그래픽 유저 인터페이스는 예컨대 윈도우 운영체제의 경우 윈도우쉘(Window Shell)(5)을 의미할 수 있다. 상기 윈도우쉘(5)은 태스크바(Taskbar), 시작 메뉴(Start Menu), 탐색기(Explorer.exe) 등을 구비하고, 사용자가 원하는 파일 또는 어플리케이션 프로그램(7a)을 선택할 수 있는 트리 구조 및 아이콘 등을 제공한다. 본 실시예의 설명에서는 운영체제로서 윈도우 운영체제, 그래픽 유저 인터페이스로는 윈도우쉘(5)을 사용하는 것으로 가정하기로 한다. 그러나 이는 한정된 사항은 아님은 물론이다.
사용자는 어플리케이션 프로그램(7a)을 통해 파일을 사용(예컨대 리드(Read), 오픈(Open), 편집(Edit), 프린트(Print) 등)하기 위하여 해당 파일의 실행 아이콘 또는 어플리케이션 프로그램(7a)의 실행 아이콘을 클릭할 수 있다. 그러면 윈도우쉘(5)은 운용 체제의 프로세스 생성 함수(즉, API), 예컨대 윈도우의 'CreateProcess' API를 호출하고 실행 인자로서 어플리케이션 프로그램(7a)의 정보(예컨대 어플리케이션 프로그램(7a)의 이름 등)을 주어 어플리케이션 프로그램(7a)의 프로세스(7b)를 생성할 수 있다. 즉, 컴퓨터 시스템(1)의 하드디스크 등에 저장된 어플리케이션 프로그램(7a)의 데이터를 메모리(예컨대 RAM)로 로딩함으로써 프로세스(7b)를 생성하는 것이다.
디지털 문서 보호 시스템(3)은 상기 생성되는 프로세스(7b)에 상기 프로세스(7b)를 보호하기 위한 DRM 모듈(3a)을 인젝션할 수 있다. 상기 DRM 모듈(3a)은 프로세스(7b)를 불법적인 행위, 예컨대 허가되지 않은 복제, 열람, 편집, 저장, 프린트, 캡쳐 등으로부터 보호하기 위하여 프로세스(7b)를 제어하는 모듈일 수 있다. 예컨대 상기 DRM 모듈(3a)은 보호 기능을 수행하기 위한 함수들의 집합인 다이내믹 링크 라이브러리(DLL : Dynamic Link Library) 파일을 의미할 수 있다. 상기 프로세스(7a)에 상기 DRM 모듈(3a)이 인젝션되면 상기 프로세스(7a)는 상기 DRM 모듈(3a)의 기능에 의하여 보호되는 보호 프로세스가 된다.
도 2는 본 발명의 바람직한 실시예에 따른 디지털 문서 보호를 위한 충돌 방지 시스템의 개념을 설명하기 위한 블록도이다.
도 2를 참조하면, 컴퓨터 시스템(10)에는 디지털 문서를 처리할 수 있는 어플리케이션 프로그램(40)이 설치되어 있다. 상기 어플리케이션 프로그램(40)은 예컨대, MS 워드, MS 엑셀, MS 파워포인트, 아래한글, 노트패드 등과 같이 디지털 문서를 처리할 수 있는 어플리케이션 프로그램일 수 있다.
상기 컴퓨터 시스템(10)에는 상기 어플리케이션 프로그램(40)의 실행에 의하여 처리되는 디지털 문서를 보호하기 위하여 다수 개의 디지털 문서 보호 시스템, 예컨대 제 1 디지털 문서 보호 시스템(20)과 제 2 디지털 문서 보호 시스템(30)이 설치된다.
상기 제 1 디지털 문서 보호 시스템(20)은 상기 어플리케이션 프로그램(40)의 실행을 제어하기 위하여 상기 어플리케이션 프로그램(40)의 프로세스에 인젝션되어 보호 기능을 수행하는 제 1 DRM 모듈, 예컨대 제 1 DLL파일을 포함할 수 있다. 제 1 DRM모듈은 제 1 DRM 규칙에 따라 디지털 문서를 암호화/복호화하는 기능, 권한 제어 기능, 캡쳐 제한 기능, 프린트 제한 기능 등을 위하여 어플리케이션 프로그램(40)의 프로세스를 제어할 수 잇다.
상기 제 2 디지털 문서 보호 시스템(30)은 상기 어플리케이션 프로그램(40)의 프로세스에 인젝션되어 보호 기능을 수행하기 위한 제 2 DRM 모듈, 예컨대 제 2 DLL 파일을 포함할 수 있다. 제 2 DRM 모듈은 제 2 DRM 규칙에 따라 디지털 문서를 암호화/복호화하는 기능, 권한 제어 기능, 캡쳐 제한 기능, 프린트 제한 기능 등을 위하여 어플리케이션 프로그램(40)의 프로세스를 제어할 수 잇다.
상기 제 1 디지털 문서 보호 시스템(20)과 제 2 디지털 문서 보호 시스템(30)은 서로 다른 업체에 의하여 제공된 것이며, 동작 및 구조가 다른 이종의 시스템이라 가정한다. 따라서 제 1 디지털 문서 보호 시스템(20)과 제 2 디지털 문서 보호 시스템(30)이 동시에 어플리케이션 프로그램(40)의 동작을 제어하려 할 경우 서로 간의 충돌로 인하여 정상적인 프로세스가 수행될 수 없다.
예컨대 어플리케이션 프로그램(40)의 프로세스에 제 1 디지털 문서 보호 시스템(20)의 제 1 DRM 모듈이 인젝션되어 있는 상태(즉 제 1 디지털 문서 보호 시스템이 프로세스를 보호하고 있는 상태)에서 제 2 디지털 문서 보호 시스템(30)이 제 2 DRM 모듈을 어플리케이션 프로그램(40)의 프로세스에 인젝션하고자 하면 충돌로 인한 에러가 발생하여 프로세스가 정상적으로 수행되지 못하게 된다.
충돌 방지 시스템(100)은 제 1 디지털 문서 보호 시스템(20) 및 제 2 디지털 문서 보호 시스템(30)의 구동 시에 상호 충돌을 일으키지 않도록 함으로써, 제 1 디지털 문서 보호 시스템(20)과 제 2 디지털 문서 보호 시스템(30)이 동시에 정상적으로 어플리케이션 프로그램(40)의 실행을 제어할 수 있도록 한다. 예를 들면, 충돌 방지 시스템(100)은 제 1 디지털 문서 보호 시스템(20)이 다른 디지털 문서 보호 시스템, 예컨대 제 2 디지털 문서 보호 시스템(30) 등의 동작에 간섭을 주거나 받지 않고 독립적으로 어플리케이션 프로그램(40)의 실행을 제어할 수 있도록 충돌 방지 기능을 수행할 수 있다. 이하에서는 이러한 충돌 방지 시스템(100)의 구성 및 동작을 상세하게 살펴보기로 한다.
도 3은 본 발명의 바람직한 실시예에 따른 충돌 방지 시스템(100)의 구성을 나타내는 블록도이다.
도 2 내지 도 3을 참조하면, 본 발명의 바람직한 실시예에 따른 충돌 방지 시스템(100)은 컴퓨터 시스템(10)에 구비되며, 도 3에 도시된 바와 같이, 실행 모니터(Execution Monitor)부(110), 런처(Luncher)부(120), 데이터베이스부(140) 및 필터링 드라이버(Filtering Driver)부(130) 등을 포함할 수 있다.
상기 실행 모니터부(110) 및 런처부(120)는 유저 모드(User Mode)에서 실행되며, 상기 필터링 드라이버부(130)는 커널 모드(Kernel Mode)에서 실행될 수 있다. 즉, 실행 모니터부(110) 및 런처부(120)는 컴퓨터 시스템(10)의 유저 단에, 필터링 드라이버부(130)는 커널 단에 구비될 수 있다. 상기 데이터베이스부(140)는, 도 3을 도시함에 있어서, 실행 모니터(110) 및 런처부(120)와 구분된 별개의 요소로서 유저 모드에 구비된 것으로 도시하였으나 실시 환경에 따라서는 실행 모니터부(110) 또는 런처부(120) 중 적어도 하나에 분산된 형태로 구비될 수도 있다.
도 4는 도 3에 도시된 충돌 방지 시스템(100)의 동작을 개략적으로 설명하기 위한 예시도이다.
도 2 내지 도 4를 참조하면, 실행 모니터부(110)는 윈도우쉘(50) 내에 구비될 수 있다. 실행 모니터부(110)는 윈도우쉘(50)을 통하여 실행 요청된 어플리케이션 프로그램(40)의 프로세스를 생성하기 위한 프로세스 생성 정보 및 그 어플리케이션 프로그램(40)에 대응되는 제 1 디지털 문서 보호 시스템(20)의 DRM 모듈의 정보를 검출하고 검출된 정보들을 포함하는 프로세스 생성 요청을 런처부(120)로 전송할 수 있다.
런처부(120)는 실행 모니터부(110)로부터 전달된 프로세스 생성 정보를 기반으로 어플리케이션 프로그램(40)의 프로세스를 생성하고, 제 1 디지털 문서 보호 시스템(20)의 DRM 모듈의 정보를 기반으로 제 1 디지털 문서 보호 시스템(20)으로부터 DRM 모듈을 추출하고, 상기 생성되는 프로세스에 추출된 DRM 모듈을 인젝션하여 보호 프로세스를 생성할 수 있다. 또한 런처부(120)는 상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록할 것을 요청하는 충돌 보호 프로세스 등록 요청을 필터링 드라이버부(130)로 전송할 수 있다.
한편, 런처부(120)는 보호 프로세스의 생성 시에, 어플리케이션 프로그램(40)이 멀티 프로세스의 실행을 지원하는 MDI(Multi Document Interface) 어플리케이션 프로그램인지 단일 프로세스의 실행만을 지원하는 SDI(Single Document Interface) 어플리케이션 프로그램인지를 판단하여, SDI 어플리케이션 프로그램일 경우 동일 프로세스의 수행을 확인하기 위한 함수를 리다이렉션하여 생성되는 프로세스의 오브젝트 식별자를 수도 정보로 변경함으로써 SDI 어플리케이션 프로그램의 멀티 프로세스를 생성할 수도 있다.
필터링 드라이버부(130)는 충돌 보호 프로세스 목록 및 허용 DRM 모듈 목록을 관리하며, 상기 충돌 보호 프로세스 등록 요청에 응답하여 상기 생성된 보호 프로세스를 충돌 보호 프로세스 목록에 등록하고, 등록된 충돌 보호 프로세스로 허가되지 않은 DRM 모듈이 접근하는 것을 차단할 수 있다. 즉 다른 디지털 문서 보호 시스템, 예컨대 제 2 디지털 문서 보호 시스템(30)의 DRM 모듈이 제 1 디저털 문서 보호 시스템(20)의 DRM 모듈이 인젝션되어 있는 충돌 보호 프로세스로 접근하여 인젝션되는 것을 차단하는 것이다.
이하에서는, 이러한 충돌 방지 시스템(100)의 각 구성요소들(110~140)의 기능 및 동작을 세부적으로 상세히 설명하기로 한다.
1. 데이터베이스부(140)
데이터베이스부(140)는 충돌 방지 시스템(100)의 동작에 필요한 다양한 정보들을 저장하는 기능을 수행할 수 있다. 예를 들면, 데이터베이스부(140)는 우선 순위 정보, 충돌 방지 대상 어플리케이션 프로그램 정보, DRM 모듈 정보, 기타 정보 등을 저장한다.
도 5는 충돌 방지 시스템(100)의 데이터베이스부(140)의 상세 구성을 설명하기 위한 블록도이다.
도 5에 도시된 바와 같이, 데이터베이스부(140)는 우선 순위 정보 데이터베이스(141), 충돌 방지 대상 어플리케이션 프로그램 정보 데이터베이스(143), DRM 모듈 정보 데이터베이스(145), 기타 정보 데이터베이스(147) 등을 포함할 수 있다.
상기 우선 순위 정보 데이터베이스(141)는 어플리케이션 프로그램 별로 우선 순위 정보를 저장한다. 상기 우선 순위 정보는 각 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템(20)인지의 여부를 나타내는 정보를 의미할 수 있다.
상기 우선 순위 정보는 1비트의 정보 예를 들면, '1' 또는 '0'일 수 있다. 예를 들면, MS 워드에 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템(20)일 경우 MS 워드의 우선 순위 정보는 '1'이며, MS 엑셀에 우선적으로 적용할 디지털 문서 보호 시스템이 제 2 디지털 문서 보호 시스템(30)일 경우 MS 엑셀의 우선 순위 정보는 '0'일 수 있다. 실행 모니터부(110) 또는 각 디지털 문서 보호 시스템은 이러한 우선 순위 정보를 설정할 수 있도록 하는 사용자 인터페이스를 제공할 수도 있다. 또는 충돌 방지 시스템(100)은 이러한 우선 순위 정보를 설정할 수 있도록 하는 사용자 인터페이스를 더 구비할 수도 있다.
충돌 방지 대상 어플리케이션 프로그램 정보 데이터베이스(143)는 충돌 방지의 대상이 되는 어플리케이션 프로그램 정보를 저장할 수 있다. 예를 들어, 컴퓨터 시스템(10)에 MS 워드의 디지털 문서를 보호하기 위하여 제 1 디지털 문서 보호 시스템(20) 외에 다른 디지털 문서 보호 시스템(예컨대 제 2 디지털 문서 보호 시스템(30) 등)이 설치되어 있을 경우 MS 워드는 충돌 방지 대상 어플리케이션 프로그램으로 등록될 수 있다. 이 경우 충돌 방지 대상 어플리케이션 프로그램 정보 데이터베이스(143)는 MS 워드를 식별할 수 있는 식별자, 예컨대 어플리케이션 프로그램의 이름을 저장할 수 있다. 실행 모니터부(110)는 충돌 방지 대상 어플리케이션 프로그램 정보를 설정할 수 있는 사용자 인터페이스를 제공할 수 있다. 또는 충돌 방지 시스템(100)은 이러한 충돌 방지 대상 어플리케이션 프로그램 정보를 설정할 수 있도록 하는 사용자 인터페이스를 더 구비할 수도 있다.
DRM 모듈 정보 데이터베이스(145)는 어플리케이션 프로그램 별로 각 어플리케이션 프로그램의 프로세스에 삽입할 제 1 디지털 문서 보호 시스템(20)의 DRM 모듈의 정보를 저장할 수 있다. 상기 DRM 모듈의 정보는 DRM 모듈을 식별할 수 있는 식별 정보 등을 포함할 수 있다. 예를 들면, MS 워드에 대응되는 DRM 모듈은 'A.dll', MS 엑셀에 대응되는 DRM 모듈은 'b.dll' 등과 같이 저장될 수 있다.
한편 기타 정보 데이터베이스(147)는 충돌 방지 동작에 필요한 각종 부가 정보들을 저장할 수 있다.
2. 실행 모니터부(110)
실행 모니터부(110)는, 앞서도 언급했듯이, 윈도우 쉘(50)에 구비될 수 있다. 예컨대 실행 모니터부(110)는 충돌 방지 시스템(100)이 컴퓨터 시스템(10)에 설치될 때 윈도우쉘 확장 메커니즘을 통하여 윈도우쉘에 확장 기능으로 등록되고 윈도우쉘이 구동될 시 자동으로 윈도우쉘의(50) 프로세스에 인젝션될 수 있다. 도 6는 윈도우쉘 확장 메커니즘을 통하여 등록된 실행 모니터부(110)를 도시하는 예시도이다. 도 6에 도시된 바와 같이, 'Shell Monitor'라는 명칭의 실행 모니터부(110)가 윈도우쉘(50)의 확장 기능에 등록되어 있다.
한편, 윈도우쉘(50) 등과 같은 그래픽 유저 인터페이스에서 확장 기능을 제공하지 않는 경우(예컨대 윈도우 비스타(Vista) 버전 등)에는, 글로벌 윈도우 후킹(Global Window Hooking) 방식을 사용하여 어플리케이션 프로그램의 구동을 모니터링 할 수도 있다. 상기 글로벌 윈도우 후킹 방식은 글로벌 윈도우 후킹 모듈을 사용한다. 상기 글로벌 윈도우 후킹 모듈은 윈도우 쉘을 비롯하여 어플리케이션 프로그램을 구동할 수 있는 윈도우의 모든 프로세스에 강제로 실행 모니터를 인젝션을 삽입할 수 있다.
도 7은 충돌 방지 시스템(100)의 실행 모니터부(110)의 상세 동작 흐름을 설명하기 위한 흐름도이다.
도 7에 도시된 바와 같이, 먼저 사용자는 어플리케이션 프로그램(40)을 구동하여 디지털 문서를 사용하기 위하여, 윈도우쉘(50)을 통하여 어플리케이션 프로그램(40)의 실행을 요청할 수 있다(단계:S1). 예컨대 사용자는 상기 어플리케이션 프로그램(40)의 실행 아이콘을 클릭하거나 또는 상기 어플리케이션 프로그램(40)에 의하여 생성 및 저장된 디지털 문서의 실행 아이콘을 클릭할 수 있다. 이때 후자의 경우 디지털 문서의 파일 확장자를 확인하여 디지털 문서와 연결된 어플리케이션 프로그램의 종류를 확인할 수 있다.
윈도우쉘(50)이 프로세스 생성 함수를 호출하여 요청된 어플리케이션 프로그램의 프로세스를 생성하기 전에, 실행 모니터부(110)는 윈도우쉘을 통하여 실행 요청된 어플리케이션 프로그램(40)이 충돌 방지 대상 어플리케이션 프로그램인지를 판단할 수 있다(단계:S2). 예를 들어 실행 모니터부(110)는 윈도우쉘(50)로부터 상기 실행 요청된 어플리케이션 프로그램(40)의 식별자를 취득하고 이를 사용하여 데이터베이스부(140)의 충돌 방지 대상 어플리케이션 프로그램 정보 데이터베이스(143)를 조회함으로써 실행 요청된 어플리케이션 프로그램(40)이 충돌 방지 대상 어플리케이션 프로그램인지를 판단할 수 있다.
상기 요청된 어플리케이션 프로그램(40)이 충돌 방지 대상 어플리케이션 프로그램이 아닐 경우 실행 모니터부(110)는 동작을 종료한다(단계:S12). 이 경우 윈도우쉘(50)에 의하여 프로세스 생성 함수가 호출되고 호출된 함수에 의하여 어플리케이션 프로그램 프로세스가 생성되는 일반적인 절차가 수행되게 된다.
반면, 상기 요청된 어플리케이션 프로그램(40)이 충돌 방지 대상 어플리케이션 프로그램일 경우, 실행 모니터부(110)는 윈도우쉘을 통한 어플리케이션 프로그램(40)의 실행 요청이 디지털 문서의 요청에 따른 것인지 어플리케이션 프로그램(40)을 직접 요청한 것인지를 판단할 수 있다(단계:S3). 즉, 사용자가 디지털 문서의 실행 아이콘을 클릭한 것인지 어플리케이션 프로그램(40)의 실행 아이콘을 클릭한 것인지를 확인하는 것이다.
상기 어플리케이션 프로그램(40)의 실행 요청이 어플리케이션 프로그램(40)을 직접 요청한 것일 경우, 실행 모니터부(110)는 데이터베이스부(140)의 우선 순위 정보 데이터베이스(141)를 조회하여 상기 어플리케이션 프로그램(140)에 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템(20)인지의 여부를 판단한다(단계:S8 ~ S9).
이때 만약 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템(20)이 아닐 경우 실행 모니터부(110)는 동작을 종료한다(단계:S12). 이 경우 일반적인 절차에 따라 어플리케이션 프로그램(40)의 프로세스가 생성되고 다른 디지털 문서 보호 시스템, 예컨대 제 2 디지털 문서 보호 시스템(30)이 상기 생성된 프로세스에 DRM 모듈을 인젝션하여 디지털 문서를 보호할 수도 있다.
반면, 상기 어플리케이션 프로그램(40)에 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템(20)일 경우, 실행 모니터부(110)는 데이터베이스부(140)의 DRM 모듈 정보 데이터베이스(147)를 조회하여, 상기 어플리케이션 프로그램(40)에 대응하는 DRM 모듈의 정보, 즉 상기 어플리케이션 프로그램(40)의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템(20)의DRM 모듈의 정보를 검출할 수 있다(단계:S10).
이어서, 실행 모니터부(110)는 상기 어플리케이션 프로그램(40)의 프로세스를 생성하기 위한 프로세스 생성 정보 및 그 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템(20)의DRM 모듈의 정보를 포함하는 프로세스 생성 요청을 런처부(120)로 전송할 수 있다(단계:S11). 상기 프로세스 생성 정보는 어플리케이션 프로그램의 식별자(예컨대 Application name), 커멘드 정보 등을 포함할 수 있다. 상기 DRM 모듈의 정보는 해당 DRM 모듈의 식별자 등을 포함할 수 있다.
한편, 상기 단계 S3에서, 상기 어플리케이션 프로그램(40)의 실행 요청이 디지털 문서의 요청에 의한 것일 경우, 실행 모니터부(110)는 해당 디지털 문서가 암호화되어 있는지의 여부를 판단한다(단계:S4). 여기서 만약 상기 디지털 문서가 암호화되어 있지 않을 경우, 이는 곧 해당 디지털 문서에 적용된 디지털 문서 보호 시스템이 없다는 의미일 수 있으므로, 실행 모니터부(110)는 단계 S8로 천이하여 상기 디지털 문서와 연계된 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보안 시스템을 확인할 수 있다.
한편, 상기 디지털 문서가 암호화되어 있는 경우, 실행 모니터부(110)는 디지털 문서가 제 1 디지털 문서 보호 시스템(20)에 의하여 암호화, 즉 제 1 DRM 규칙에 따라 암호화되어 있는지의 여부를 판단할 수 있다(단계:S5). 이때 만약 상기 디지털 문서가 제 1 디지털 문서 보호 시스템(20)에 의하여 암호화되어 있지 않다면, 실행 모니터부(110)는 동작을 종료할 수 있다(단계:S12). 반면, 상기 디지털 문서가 제 1 디지털 문서 보호 시스템(20)에 의하여 암호화되어 있다면, 실행 모니터부(110)는 데이터베이스부(140)의 DRM 모듈 정보 데이터베이스(145)를 조회하여 상기 어플리케이션 프로그램(40)에 대응하는 DRM 모듈의 정보, 즉 상기 어플리케이션 프로그램(40)의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템(20)의DRM 모듈의 정보를 검출할 수 있다(단계:S6).
이어서, 실행 모니터부(110)는 상기 어플리케이션 프로그램(40)의 프로세스를 생성하기 위한 프로세스 생성 정보 및 그 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템(20)의DRM 모듈의 정보를 포함하는 프로세스 생성 요청을 런처부(120)로 전송할 수 있다(단계:S7). 상기 프로세스 생성 정보는 어플리케이션 프로그램의 식별자(예컨대 Application name), 커멘드 정보, 디지털 문서의 식별자 등을 포함할 수 있다. 상기 DRM 모듈의 정보는 해당 DRM 모듈의 식별자 등을 포함할 수 있다.
3. 런처부(120)
런처부(120)는 유저 단에 구비될 수 있으며, 실행 모니터부(110)로부터 전달된 프로세스 생성 정보를 기반으로 어플리케이션 프로그램(40)의 프로세스를 생성하는 기능, 제 1 디지털 문서 보호 시스템(20)의 DRM 모듈의 정보를 기반으로 상기 생성되는 프로세스에 상기 제 1 디지털 문서 보호 시스템(20)의 DRM 모듈을 인젝션하여 보호 프로세스를 생성하는 기능, 생성된 보호 프로세스를 충돌 보호 프로세스로 등록할 것을 요청하는 충돌 보호 프로세스 등록 요청을 필터링 드라이버부(130)로 전송하는 기능, 어플리케이션 프로그램(40)의 MDI 지원 여부를 체크하는 기능, SDI 어플리케이션 프로그램에 대한 멀티 프로세스 생성 기능 등을 수행할 수 있다. 이하, 이러한 런처부(120)의 상세 기능 및 동작 과정을 살펴보기로 한다.
도 8은 충돌 방지 장치에 구비되는 런처부(120)의 동작 흐름을 설명하기 위한 흐름도이다.
먼저, 런처부(120)는 실행 모니터부(110)로부터 프로세스 생성 요청을 수신할 수 있다(단계:S21). 상기 프로세스 생성 요청은, 앞서도 언급한 바와 같이 어플리케이션 프로그램(40)의 프로세스를 생성하는데 필요한 프로세스 생성 정보, 생성된 프로세스에 인젝션할 DRM 모듈의 정보를 포함할 수 있다.
런처부(120)는 수신된 프로세스 생성 정보의 어플리케이션 프로그램 식별자를 기반으로 실행 요청된 어플리케이션 프로그램(40)이 멀티 프로세스 실행을 지원하는 MDI 어플리케이션 프로그램인지의 여부를 판단할 수 있다(단계:S22).
현재 주로 사용되는 사무 자동화(OA : Office Automation) 어플리케이션 프로그램들은 한번에 하나의 프로세스만이 존재하는 SDI 어플리케이션 프로그램이 대부분이다. 예를 들어 MS의 파워포인트 문서가 열려 있을 때 또 다른 파워 포인트 문서를 열고 윈도우의 프로세스 목록을 확인해 보면 파워포인트 창이 두 개 열려 있음에도 불구하고 프로세스는 하나만 존재하는 것을 확인할 수 있다. 이와 관련해서는 차후 더욱 상세히 설명하게 될 것이다.
상기 판단에서, 어플리케이션 프로그램(40)이 멀티 프로세스 실행을 지원하는 MDI 어플리케이션 프로그램인 경우, 런처부(120)는 프로세스 생성 정보를 기반으로 어플리케이션 프로그램(40)의 프로세스를 생성하고, 생성되는 프로세스에 실행 모니터부(110)에 의해 검출된 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션함으로써 제 1 디지털 정보 보호 시스템(20)에 의하여 제어되는 보호 프로세스를 생성할 수 있다(단계:S23). 이어서 런처부(120)는 생성된 보호 프로세스를 충돌 보호 프로세스로 등록할 것을 요청하는 충돌 보호 프로세스 등록 요청을 필터링 드라이저부(130)로 전송할 수 있다(단계:S25). 이후 필터링 드라이버부(130)에 의하여 상기 충돌 보호 프로세스로 등록되는 보호 프로세스는 필터링 드라이버부(130)에 의하여 다른 디지털 문서 보호 시스템으로부터 보호된다.
한편 다른 디지털 문서 보호 시스템은 제 1 디지털 문서 보호 시스템(20)에 의하여 보호되는 프로세스가 실행되는 중 별도의 프로세스를 생성하여 디지털 문서의 보호를 위한 제어를 수행할 수 있다. 따라서 상호 간섭 없이 정상적인 수행이 가능하다.
한편, 단계 S22에서의 판단에서, 상기 어플리케이션 프로그램(40)이 멀티 프로세스 실행을 지원하지 않는 SDI 어플리케이션 프로그램일 경우, 어플리케이션 프로그램(40)의 프로세스를 생성한 후 DRM 모듈을 인젝션하여 보호 프로세스를 생성하여 실행하게 되면 제 1 디지털 문서 보호 시스템(20)에 의해 보호되는 보호 프로세스는 정상적인 실행이 가능하나, 이미 어플리케이션 프로그램(40)의 프로세스가 실행 중이기 때문에 다른 디지털 문서 보안 시스템은 어플리케이션 프로그램(40)을 제어할 수 없게 된다. 따라서, 런처부는 SDI 어플리케이션 프로그램이 MDI 어플리케이션 프로그램과 같이 멀티 프로세스의 실행을 지원할 수 있도록 멀티 프로세스 생성 기능을 제공할 수 있다.
즉, 상기 어플리케이션 프로그램(40)이 멀티 프로세스 실행을 지원하지 않는 SDI 어플리케이션 프로그램일 경우, 런처부(120) 프로세스 생성 시 동일 프로세스의 실행 여부를 판단하기 위하여 사용하는 함수(즉 API)를 리다이렉션하여 프로세스의 오브젝트 식별자(예컨대 오브젝트 이름)를 수도(Pseudo) 정보로 수정하여 프로세스를 생성하고, 생성되는 프로세스에 실행 모니터부(110)에 의해 검출된 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션함으로써 제 1 디지털 정보 보호 시스템(20)에 의하여 제어되는 보호 프로세스를 생성할 수 있다(단계:S24).
이러한 과정을 좀더 구체적으로 살펴보면,
통상, 멀티 프로세스 실행을 지원하지 않는 SDI 어플리케이션 프로그램에서는 하나의 프로세스, 예컨대 프로세스A가 실행 중일 때 동일한 프로세스인 프로세스B가 생성되면 생성되는 프로세스B는 실행 중이던 프로세스A에게 작업을 요청한 뒤 스스로 종료한다. 작업 요청을 수신한 프로세스A는 새로운 쓰래드를 생성하여 요청된 작업을 처리하게 된다. 즉 SDI 어플리케이션 프로그램은 프로세스의 생성 시에는 이미 실행 중인 자신의 다른 프로세스가 존재하는지의 여부를 판단하기 위하여 특정 API, 예컨대 'ZwOpenEvent' API 등을 호출한다.
런처부(120)는 상기 호출되는 API를 후킹하여 API의 인자로 받는 정보 중 프로세스의 오브젝트 식별자를 다른 정보로 수정하여 리턴한다. 즉 프로세스의 오브젝트 식별자를 수도 정보로 교체하여 어플리케이션 프로그램(40)을 속인다고 할 수 있다. 따라서 어플리케이션 프로그램(40)은 자신의 프로세스가 실행 중이더라도 그 프로세스가 실행 중인 것을 인지하지 못하게 된다. 따라서 SDI 어플리케이션 프로그램의 멀티 프로세스 생성이 가능해진다.
아래의 수도 코드는 API를 리다이렉션하기 위한 수도 코드로서, 'ZwOpenEvent' API를 리다이렉션하는 코드를 예시적으로 보여주고 있다.
NTSTATUS NTAPI
VM_ZwOpenEvent(NT::PHANDLE EventHandle,
NT::ACCESS_MASK DesiredAccess,
NT::POBJECT_ATTRIBUTES ObjectAttributes)
{
if objectAttributes has special event name
append "_ma" to event name
rv = Real_ZwOpenEvent(EventHandle, DesiredAccess, ObjectAttributes)
return rv
}
상기 코드를 참조하면, 프로세스의 오브젝트 네임에 '_ma'를 추가한 값을 리턴한다. 따라서 어플리케이션 프로그램(40)의 프로세스가 생성되더라도 상기 어플리케이션 프로그램(40)의 프로세스로서 식별되지 않기 때문에 해당 프로세스의 실행 중에 새로운 프로세스의 생성이 가능하게 된다. 즉 SDI 어플리케이션 프로그램이 멀티 프로세스 실행을 지원하는 것과 동일한 효과가 발생하는 것이다.
도 9는 어플리케이션 프로그램들이 동일 프로세스의 수행을 확인하기 위한 오브젝트의 종류 및 이름을 나타내는 도표이다.
도 9에 도시된 바와 같이, MS 파워포인트 2000, 2002, 2003, 2007 등의 경우 이미 생성된 프로세스가 존재하는지 확인하기 위하여 이벤트를 사용하고 오브젝트 종류는 오브젝트 이름은 각각 'PP9Running', 'PP10Running', 'Local\PP11Running_[userSID]', 'Local\PP12Running_[userSID]'이다. 한편 한글과 컴퓨터의 한글 또는 아크로배트 리더 등은 세마포어(Semaphore)를 사용함을 알 수 있다.
도 10에 도시된 도표는 SDI 어플리케이션 프로그램의 멀티 프로세스 생성을 위하여 리다이렉션하는 함수들의 목록을 예시적으로 나타내고 있다.
도 10에 도시된 바와 같이, 멀티 프로세스 생성을 위하여 리다이렉션하는 함수는 이벤트, 세마포어, 윈도우, DDE 관련 API 등을 포함할 수 있다. 한편 도시되지는 않았으나 상기 함수들의 목록에는 뮤텍스, 메일슬롯, 소켓 등의 API 등을 더 포함할 수도 있다.
4. 필터링 드라이버(130)
필터링 드라이버부(130)는 미니 필터(Mini-Filter) 형태로 구현될 수 있다. 이러한 필터링 드라이버부(130)는 충돌 보호 프로세스 목록 및 허용 DRM 모듈 정보 목록을 관리하며, 상기 충돌 보호 프로세스 등록 요청에 응답하여 상기 생성된 보호 프로세스를 충돌 보호 프로세스 목록에 등록하고, 등록된 충돌 보호 프로세스로 허가되지 않은 DRM 모듈이 접근하는 것을 차단할 수 있다. 즉 다른 디지털 문서 보호 시스템, 예컨대 제 2 디지털 문서 보호 시스템(30)의 DRM 모듈이 충돌 보호 프로세스로 접근하여 인젝션되는 것을 차단하는 것이다.
도 11은 충돌 방지 시스템(100)에 구비되는 필터링 드라이버(130)의 동작 흐름을 설명하기 위한 흐름도이다.
도 11에 도시된 바와 같이, 필터링 드라이버(130)는 런처부(120)로부터 충돌 보호 프로세스 등록 요청을 수신할 수 있다(단계:S31). 상기 충돌 보호 프로세스 등록 요청은 상기 런처부(120)에 의하여 생성된 보호 프로세스의 식별자 등을 포함할 수 있다.
필터링 드라이버부(130)는 충돌 보호 프로세스 목록 및 허용 DRM 모듈 정보 목록을 관리할 수 있다. 상기 충돌 보호 프로세스 목록은 허용되지 않은 DRM 모듈의 접근이 차단되는 보호 프로세스들의 정보를 포함한다. 상기 허용 DRM 모듈 정보는 접근이 허용되는 DRM 모듈을 식별하기 위한 정보를 포함한다. 예를 들면 허용 DRM 모듈 즉, DLL의 이름 문자열 등을 포함할 수 있다.
필터링 드라이버부(130)는 상기 런처부(120)로부터의 충돌 보호 프로세스 등록 요청에 응답하여 요청된 보호 프로세스를 충돌 보호 프로세스 목록에 등록할 수 있다.(단계:S32).
이후 필터링 드라이버부(130)는 등록된 충돌 보호 프로세스로 허가되지 않은 DRM 모듈이 접근하는 것을 차단할 수 있다(단계:S33). 즉 다른 디지털 문서 보호 시스템, 예컨대 제 2 디지털 문서 보호 시스템(30)의 DRM 모듈이 제 1 디지털 문서 보호 시스템(20)에 의해 제어되는 충돌 보호 프로세스로 접근하여 인젝션되는 것을 차단하는 것이다.
예를 들면, 필터링 드라이버(130)는 파일 생성 함수, 예컨대 'CreateFile'의 'Pre-Operation'의 문자열을 이용하여 허용되지 않는 DRM 모듈에 대한 필터링을 수행할 수 있다. 'CreateFile'의 'Pre-Operation' 동작에서는 접근하고자 하는 파일에 대한 경로를 구할 수 있다. 필터링 드라이버부(130)는 디지털 문서 파일에 접근하려는 프로세스가 허용 DRM 모듈 정보 목록에 없는 DRM 모듈로 접근하면 파일 접근 요청을 거절시킨다. 그러면 접근 거절된 DRM 모듈을 열수 없으므로 해당 프로세스에는 DRM 모듈이 인젝션되지 않게 된다. 이때, 사용되는 문자열은 예컨대, 아래와 같으며 이 문자열들은 CCF 설정 파일에 등록하여 사용될 수 있다.
1) Fasoo.com의 DLL 인젝션을 방지하기 위해 사용되는 문자열
- Fasoo;f_sps;f_pbrc;fsp2;f_crypto;f_ioh;f_ioh;f_ah;
2) SoftCamp의 DLL Injection 방지를 위해 사용되는 문자열
- softcamp;SCMsgBox;DSEDCon;ASCore;DSlpcAg;dscgru;
WRMK;DSCodec2;SDSHlpr;
이상 설명한 바와 같이, 충돌 방지 시스템(100)은 제 1 디지털 문서 보호 시스템(20)에 의하여 제어되는 충돌 보호 프로세스와, 다른 디지털 문서 보호 시스템(예컨대 제 2 디지털 문서 보호 시스템(30) 등)에 의하여 제어되는 보호 프로세스(또는 일반적인 호스트 프로세스)를 동시에 실행하고, 이 둘을 격리시켜 DLL 충돌을 방지하면서 프로세스를 보호할 수 있다. 따라서 다수 개의 디지털 문서 보호 시스템이 상호 충돌을 일으키지 않으면서 정상적으로 동시에 동작 가능하다.
한편, 런처부(120)의 요청에 의하여 충돌 보호 프로세스가 필터링 드라이버부(130)에 등록되면, 등록된 충돌 보호 프로세스에 의하여 생성되는 자식 보호 프로세스는 자동으로 충돌 보호 프로세스로 등록될 수 있다.
예를 들면, 런처부(120)는 최초 실행 시에 스스로(즉 런처부의 프로세스)를 필터링 드라이버부(130)에 의하여 보호되어야 하는 충돌 보호 프로세스로 등록해줄 것을 필터링 드라이버부(130)에 요청하고 필터링 드라이버부(130)는 런처부(120)의 프로세스를 충돌 보호 프로세스로서 등록한다. 그러면 그때부터 런처부(120)의 프로세스에 의하여 생성되는 자식 프로세스는 자동으로 충돌 보호 프로세스로 필터링 드라이버부(130)에 등록될 수 있다.
이런 동작을 위해서 필터링 드라이버부(130)는 쓰래드 생성 함수, 예컨대 'CreateThread'를 후킹할 수 있다. NtCreateThread()에서는 새로운 프로세스를 생성하는 프로세스(부모 프로세스)의 프로세스 식별자와 새로 생성되는 프로세스(자식 프로세스)의 식별자를 확인 할 수 있다. 필터링 드라이버부(130)는 두 프로세스 식별자를 확인한 후에 부모 프로세스가 충돌 보호 프로세스라면 그 자식 프로세스도 충돌 보호 프로세스로 등록한다. 도 12는 이와 같이 충돌 보호 프로세스의 자식 프로세스를 충돌 보호 프로세스로 등록하는 과정을 도시하고 있다.
한편, 필터링 드라이버부(130)는 현재 보호되고 있는 충돌 보호 프로세스를 숨기고 해당 프로세스의 DRM 모듈 정보, 예컨대 DLL 목록을 숨기는 충돌 보호 프로세스 정보 은닉 기능을 제공할 수 있다. 은닉된 충돌 보호 프로세스의 정보는 '작업 관리자'의 '프로세스' 탭이나 'Process Explorer'에 보이지 않게 된다.
충돌 보호 프로세스 정보 은닉 기능을 위하여 필터링 드라이버부(130)는 특정 함수, 예컨대 'PsGetCurrentProcess'를 사용할 수 있다. 그러면 그 주소는 현재 프로세스의 'EPROCESS'의 시작 주소가 된다. 여기서 'EPROCESS'는 프로세스에 대한 정보이며, 링크드 리스트(Linked List)에 연결된다. 그러면 모든 EPROCESS구조체를 탐색하여 방금 보호 되어야 할 충돌 보호 프로세스로 등록한 프로세스의 식별자를 확인하여 해당 프로세스의 'EPROCESS'를 링크드 리스트에서 제거한다. 따라서 해당 프로세스가 숨겨지게 된다. 이 링크를 제거하는 동작은 보호 프로세스를 생성하고 생성된 보호 프로세스를 충돌 보호 프로세스로 등록한 후 이어서 수행될 수 있다.
도 13은 'EPROCESS' 구조체가 어떻게 제거되어 프로세스를 숨시게 되는지를 나타내는 예시도이다.
도 13의 상단에 표현된 리스트 구조가 프로세스를 숨기지 않았을 때이고 하단에 표현된 리스트 구조가 가운데의 'EPROCESS'의 링크를 제거하여 해당 프로세스를 숨긴 모습이다. 'EPROCESS'는 프로세스에 대한 정보이며 링크드 리스트로 연결되어 있다. WinDbg에서 'EPROCESS'에서 다음 'EPROCESS'를 가리키는 'Flink'의 주소를 찾을 수 있는 offset(gdwFlinkOffset)과 'EPROCESS'에서 프로세스 식별자를 가리키는 offset(gdwPidOffset)을 운영체제 별로 미리 구해놓았다. 한편, DLL 은닉의 경우 프로세스를 보호하게 되면 DLL은 자연스럽게 감춰지게 된다.
한편, 필터링 드라이버부(130)는 다음과 같은 명령들을 수행할 수 있다.
1. 충돌 보호 프로세스 숨기기 : 충돌 보호 프로세스를 숨긴다. 이는 기본 설정일 수 있다.
2. 충돌 보호 프로세스 숨기지 않기 : 설정하면 이후 실행되는 충돌 보호 프로세스들은 은닉되지 않는다.
3. 보호 걸기 : 충돌 보호 프로세스들을 보호하면 그 프로세스의 DLL을 숨길 수 있게 된다.
4. 보호 풀기 : 설정하면 충돌 보호 프로세스에 대한 보호 기능을 해제하고 그렇게 되면 충돌 보호 프로세스에 숨겨진 DLL을 다시 볼 수 있게 된다.
이러한 명령들은 필터링 드라이버부(130)로 메시지 형태로 전달될 수 있으며 프로세스 은닉과 보호 기능을 활성화하는 역할을 하게 된다.
또한, 필터링 드라이버부(130)는 충돌 보호 프로세스가 적재된 메모리를 보호하는 메모리 보호 기능을 제공할 수도 있다. 런처부(120)는 디지털 정보 보호 시스템에서 열람 가능한 형태로 암호화된 문서를 열기 위한 어플리케이션 프로그램940)을 실행시킬 수 있다. 필터링 드라이버부(130)는 이렇게 실행된 어플리케이션 프로그램의 보호 프로세스(40)에 대한 접근을 제어하여 메모리를 보호하게 된다.
이상 본 발명에 대하여 그 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시켜 실시할 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 앞으로의 실시예들의 변경은 본 발명의 기술을 벗어날 수 없을 것이다.
20 : 제 1 디지털 문서 보호 시스템
30 : 제 2 디지털 문서 보호 시스템
50 : 윈도우쉘
100 : 충돌 방지 시스템
110 : 실행 모니터부
120 : 런처부
130 : 필터링 드라이버부

Claims (23)

  1. 어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보 및 상기 어플리케이션 프로그램의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 검출하는 실행 모니터부;
    상기 프로세스 생성 정보를 기반으로 상기 어플리케이션 프로그램의 프로세스를 생성하고, 상기 생성되는 프로세스에 상기 검출된 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션함으로써 상기 제 1 디지털 문서 보호 시스템에 의하여 보호되는 보호 프로세스를 생성하는 런처부; 및
    상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하고, 상기 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 필터링 드라이버부를 포함하는 것을 특징으로 하는 충돌 방지 시스템.
  2. 제 1 항에 있어서, 어플리케이션 프로그램 별 우선 순위 정보, 충돌 방지 대상 어플리케이션 프로그램 정보 및 어플리케이션 프로그램 별 DRM 모듈 정보를 저장하는 데이터베이스부를 더 포함하는 것을 특징으로 하는 충돌 방지 시스템.
  3. 제 2 항에 있어서, 상기 데이터베이스부는,
    각 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 제 1 디지털 문서 보호 시스템인지의 여부를 나타내는 우선 순위 정보를 저장하는 우선 순위 정보 데이터베이스;
    충돌 방지의 대상이 되는 어플리케이션 프로그램의 정보를 저장하는 충돌 방지 대상 어플리케이션 프로그램 정보 데이터베이스; 및
    어플리케이션 프로그램 별로 각 어플리케이션 프로그램의 프로세스에 삽입할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 저장하는 DRM 모듈 정보 데이터베이스를 포함하는 것을 특징으로 하는 충돌 방지 시스템.
  4. 제 1 항에 있어서, 상기 실행 모니터부 및 런처부는 유저 모드에서 동작하며, 상기 필터링 드라이버부는 커널 모드에서 동작하는 것을 특징으로 하는 충돌 방지 시스템.
  5. 제 1 항에 있어서, 상기 실행 모니터부는 윈도우쉘을 통하여 요청된 어플리케이션 프로그램이 충돌 방지 대상 어플리케이션 프로그램인지의 여부를 판단하는 것을 특징으로 하는 충돌 방지 시스템.
  6. 제 5 항에 있어서, 상기 실행 모니터부는 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것인지 어플리케이션 프로그램 실행을 직접 요청한 것인지를 판단하는 것을 특징으로 하는 충돌 방지 시스템.
  7. 제 6 항에 있어서, 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 어플리케이션 프로그램 실행을 직접 요청한 것일 경우, 상기 실행 모니터부는 데이터베이스부를 조회하여 상기 요청된 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 상기 제 1 디지털 문서 보호 시스템인지의 여부를 판단하는 것을 특징으로 하는 충돌 방지 시스템.
  8. 제 6 항에 있어서, 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것일 경우, 상기 실행 모니터부는 상기 디지털 문서의 암호화 여부를 판단하고, 상기 디지털 문사가 암호화되어 있을 경우 상기 제 1 디지털 문서 보호 시스템에 의하여 암호화되어 있는지의 여부를 판단하는 것을 특징으로 하는 충돌 방지 시스템.
  9. 제 1 항에 있어서, 상기 검출된 실행 모니터부는 상기 프로세스 생성 정보 및 제 1 디지털 문서 보호 시스템의 DRM 정보를 포함하는 프로세스 생성 요청을 상기 런처부로 전송하고, 상기 런처부는 상기 프로세스 생성 요청을 수신하여 상기 프로세스 생성 정보 및 제 1 디지털 문서 보호 시스템의 DRM 정보를 획득하는 것을 특징으로 하는 충돌 방지 시스템.
  10. 제 1 항에 있어서, 상기 런처부는 상기 어플리케이션 프로그램이 멀티 프로세스 실행을 지원하는 MDI(Multiple Document Interface) 어플리케이션 프로그램인지 싱글 프로세스 실행을 지원하는 SDI(Single Document Interface) 어플리케이션 프로그램인지를 판단하는 것을 특징으로 하는 충돌 방지 시스템.
  11. 제 10 항에 있어서, 상기 어플리케이션 프로그램이 SDI 어플리케이션 프로그램일 경우, 상기 런처부는 동일 프로세스의 실행 여부를 판단하기 위하여 사용되는 함수를 리다이렉션하고 상기 프로세스의 오브젝트 식별자를 수도 정보로 수정하여 상기 프로세스를 생성함으로써, 상기 어플리케이션 프로그램이 상기 생성되는 프로세스를 상기 어플리케이션 프로그램에 의해 생성되는 프로세스로 인지하지 못하도록 하는 것을 특징으로 하는 충돌 방지 시스템.
  12. 제 10 항에 있어서, 상기 어플리케이션 프로그램이 SDI 어플리케이션 프로그램일 경우, 상기 런처부는 상기 어플리케이션 프로그램의 동일 프로세스 실행 여부를 판단하기 위하여 사용되는 함수를 후킹하고, 상기 함수의 인자로 받는 정보 중 상기 프로세스의 오브젝트 식별자를 다른 정보로 수정하여 리턴하는 것을 특징으로 하는 충돌 방지 시스템.
  13. 제 1 항에 있어서, 상기 런처부는 상기 생성되는 보호 프로세스를 상기 충돌 방지 보호 프로세스로 등록할 것을 요청하는 충돌 보호 프로세스 등록 요청을 상기 필터링 드라이버부로 전송하고, 상기 필터링 드라이버부는 상기 충돌 보호 프로세스 등록 요청에 응답하여 상기 보호 프로세스를 충돌 보호 프로세스 목록에 등록하는 것을 특징으로 하는 충돌 방지 시스템.
  14. 제 1 항에 있어서, 상기 필터링 드라이버부는,
    다른 디지털 문서 보호 시스템의 DRM 모듈로부터의 접근을 보호하는 보호 프로세스들의 정보를 포함하는 충돌 보호 프로세스 목록; 및
    상기 충돌 보호 프로세스로 접근 가능한 허용된 DRM 모듈의 정보를 포함하는 허용 DRM 모듈 정보 목록을 저장 및 관리하는 것을 특징으로 하는 충돌 방지 시스템.
  15. 제 14 항에 있어서, 상기 필터링 드라이버는 상기 등록된 충돌 보호 프로세스에 의하여 생성되는 자식 프로세스는 충돌 보호 프로세스로 간주하여 상기 충돌 보호 프로세스 목록에 등록하는 것을 특징으로 하는 충돌 방지 시스템.
  16. 제 15 항에 있어서, 상기 런처부는 상기 런처부의 프로세스를 충돌 보호 프로세스로 등록할 것을 요청하는 요청을 상기 필터링 드라이버로 전송하고, 상기 필터링 드라이버는 상기 요청에 응답하여 상기 런처부의 프로세스를 상기 충돌 보호 프로세스 목록에 등록하는 것을 특징으로 하는 충돌 방지 시스템.
  17. 충돌 방지 시스템에 의하여 수행되는 충돌 방지 방법에 있어서,
    어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보를 검출하는 단계;
    상기 어플리케이션 프로그램의 프로세스에 인젝션할 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보를 검출하는 단계;
    상기 검출된 프로세스 생성 정보를 기반으로 상기 어플리케이션 프로그램의 프로세스를 생성하는 단계;
    상기 생성되는 프로세스에 상기 검출된 제 1 디지털 문서 보호 시스템의 DRM 모듈의 정보에 대응하는 DRM 모듈을 인젝션함으로써 상기 제 1 디지털 문서 보호 시스템에 의하여 보호되는 보호 프로세스를 생성하는 단계;
    상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하는 단계; 및
    상기 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 단계를 포함하는 것을 특징으로 하는 충돌 방지 방법.
  18. 제 17 항에 있어서, 윈도우쉘을 통하여 요청된 어플리케이션 프로그램이 충돌 방지 대상 어플리케이션 프로그램인지의 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 충돌 방지 방법.
  19. 제 18 항에 있어서, 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것인지 어플리케이션 프로그램 실행을 직접 요청한 것인지를 판단하는 단계;
    상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 디지털 문서의 요청에 따른 것일 경우, 상기 디지털 문서의 암호화 여부를 판단하는 단계; 및
    상기 디지털 문사가 암호화되어 있을 경우 상기 제 1 디지털 문서 보호 시스템에 의하여 암호화되어 있는지의 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 충돌 방지 방법.
  20. 제 19 항에 있어서, 상기 윈도우쉘을 통한 어플리케이션 프로그램 실행 요청이 어플리케이션 프로그램 실행을 직접 요청한 것일 경우, 상기 실행 모니터부는 데이터베이스부를 조회하여 상기 요청된 어플리케이션 프로그램에 우선적으로 적용할 디지털 문서 보호 시스템이 상기 제 1 디지털 문서 보호 시스템인지의 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 충돌 방지 방법.
  21. 제 17 항에 있어서, 상기 어플리케이션 프로그램이 멀티 프로세스 실행을 지원하는 MDI(Multiple Document Interface) 어플리케이션 프로그램인지 싱글 프로세스 실행을 지원하는 SDI(Single Document Interface) 어플리케이션 프로그램인지를 판단하는 단계를 더 포함하는 것을 특징으로 하는 충돌 방지 방법.
  22. 제 21 항에 있어서, 상기 어플리케이션 프로그램이 SDI 어플리케이션 프로그램일 경우, 상기 어플리케이션 프로그램의 동일 프로세스 실행 여부를 판단하기 위하여 사용되는 함수를 후킹하는 단계; 및
    상기 함수의 인자로 받는 정보 중 상기 프로세스의 오브젝트 식별자를 다른 정보로 수정하여 리턴하는 단계를 더 포함하는 것을 특징으로 하는 충돌 방지 방법.
  23. 각각 디지털 문서를 보호하기 위한 프로세스 제어 기능을 구비하는 다수 개의 DRM 모듈;
    어플리케이션 프로그램의 프로세스를 생성하기 위한 프로세스 생성 정보 및 상기 다수 개의 DRM 모듈 중 상기 어플리케이션 프로그램의 프로세스에 인젝션할 상기 DRM 모듈의 정보를 검출하는 실행 모니터부;
    상기 프로세스 생성 정보를 기반으로 상기 어플리케이션 프로그램의 프로세스를 생성하고, 상기 검출된 DRM 모듈의 정보를 기반으로 상기 생성되는 프로세스에 상기 DRM 모듈을 인젝션함으로써 디지털 문서 보호 시스템의 상기 인젝션된 DRM 모듈의 기능에 의하여 보호되는 보호 프로세스를 생성하는 런처부; 및
    상기 생성된 보호 프로세스를 충돌 보호 프로세스로 등록하고, 상기 등록된 충돌 보호 프로세스에 다른 디지털 문서 보호 시스템의 DRM 모듈이 인젝션되는 것을 차단하는 필터링 드라이버부를 포함하는 것을 특징으로 하는 충돌 방지 기능을 구비한 디지털 문서 보호 시스템.
KR1020100054910A 2009-06-10 2010-06-10 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법 KR101207434B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020090051629 2009-06-10
KR20090051629 2009-06-10

Publications (2)

Publication Number Publication Date
KR20100132930A KR20100132930A (ko) 2010-12-20
KR101207434B1 true KR101207434B1 (ko) 2012-12-03

Family

ID=43508444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100054910A KR101207434B1 (ko) 2009-06-10 2010-06-10 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101207434B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101394369B1 (ko) * 2012-11-13 2014-05-13 주식회사 파수닷컴 가상 폴더를 이용한 보안 콘텐츠 관리 장치 및 방법
KR101310070B1 (ko) * 2013-06-26 2013-09-24 (주)지란지교소프트 프로그램간의 충돌을 예방하는 방법 및 그 방법이 기록된 기록매체
CN108062460B (zh) * 2017-11-17 2019-03-19 深圳市易达恒通供应链管理有限公司 一种嵌入式软件进程权限管理方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100881386B1 (ko) 2008-01-24 2009-02-02 주식회사 파수닷컴 프로세스 분리 실행을 통한 drm 클라이언트 충돌 방지 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100881386B1 (ko) 2008-01-24 2009-02-02 주식회사 파수닷컴 프로세스 분리 실행을 통한 drm 클라이언트 충돌 방지 방법

Also Published As

Publication number Publication date
KR20100132930A (ko) 2010-12-20

Similar Documents

Publication Publication Date Title
US8650578B1 (en) System and method for intercepting process creation events
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
CN109558211B (zh) 保护可信应用与普通应用的交互完整性和保密性的方法
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
KR100645983B1 (ko) 불법 프로세스 검출 모듈 및 그 방법
KR101740224B1 (ko) 불법 모드 변경처리
AU2006210698B2 (en) Intrusion detection for computer programs
JP4048382B1 (ja) 情報処理システムおよびプログラム
US8887150B2 (en) Methods for dynamic mobile application behavior modification subject to a behavior policy
US11822654B2 (en) System and method for runtime detection, analysis and signature determination of obfuscated malicious code
CN107908958B (zh) SELinux安全标识符防篡改检测方法及系统
US20100132053A1 (en) Information processing device, information processing method and program
KR20010109271A (ko) 데이터보안 제공을 위한 시스템과 방법
WO2012148080A2 (ko) Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법
US20060053492A1 (en) Software tracking protection system
US20110271350A1 (en) method for protecting software
CN102194078A (zh) 用于应用程式档案输入及输出的安全性的方法及系统
GB2552966A (en) Methods and apparatus for protecting domains of a device from unauthorised accesses
CN101414329B (zh) 删除正在运行中的病毒的方法
JP5159896B2 (ja) プロセス分離実行を通じたdrmクライアント衝突防止システム及び方法
KR101207434B1 (ko) 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법
CN114692134A (zh) 一种基于linux内核进程监控来保护代码及数据的系统和方法
CN106557687A (zh) 一种应用程序安装过程的权限控制方法及装置
WO2016126206A1 (en) Method for obfuscation of code using return oriented programming
KR101956725B1 (ko) 인가된 실행 파일 및 동적 라이브러리 파일 기반 서버 접근 통제 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151125

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161128

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171110

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181122

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191024

Year of fee payment: 8