KR20010029880A - 실행 모듈 및 연관 보호 서비스 제공자 모듈의 완전성 검사 - Google Patents

실행 모듈 및 연관 보호 서비스 제공자 모듈의 완전성 검사 Download PDF

Info

Publication number
KR20010029880A
KR20010029880A KR1020000037776A KR20000037776A KR20010029880A KR 20010029880 A KR20010029880 A KR 20010029880A KR 1020000037776 A KR1020000037776 A KR 1020000037776A KR 20000037776 A KR20000037776 A KR 20000037776A KR 20010029880 A KR20010029880 A KR 20010029880A
Authority
KR
South Korea
Prior art keywords
module
execution module
component
protection service
psp
Prior art date
Application number
KR1020000037776A
Other languages
English (en)
Other versions
KR100368947B1 (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 KR20010029880A publication Critical patent/KR20010029880A/ko
Application granted granted Critical
Publication of KR100368947B1 publication Critical patent/KR100368947B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

실행 모듈 및 연관 보호 서비스 제공자(protected service provider:PSP) 모듈중 적어도 하나의 완전성을 검사하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품이 제공되고, 상기 PSP 모듈은 보호 서비스 기능을 상기 실행 모듈에 제공한다. 상기 PSP 모듈 및 상기 실행 모듈중 적어도 하나의 완전성을 검사하기 위해 상보 모듈이 제공되고, 상기 상보 모듈은 상기 PSP 모듈과 별개의 모듈을 포함한다. 상기 PSP 모듈은 상기 상보 모듈의 완전성을 상호-검사하기 위한 코드를 포함하고, 상기 상보 모듈 검사 및 상기 PSP 모듈 상호-검사는 상기 실행 모듈 및 상기 PSP 모듈중 적어도 하나의 완전성을 함께 관찰한다. 더욱이, 상기 보호 서비스 기능은 적어도 제 1 구성요소 및 제 2 구성요소로 나누어질 수 있고, 상기 제 1 구성요소는 상기 PSP 모듈 내에 구현되고 상기 제 2 구성요소는 상기 상보 모듈 내에 구현될 수 있다.

Description

실행 모듈 및 연관 보호 서비스 제공자 모듈의 완전성 검사{Integrity checking an executable module and associated protected service provider module}
본 발명은 디지털 정보의 변화를 감지하는 분야에 관한 것으로, 더욱 상세하게는 보호 서비스 제공자(protected service provider:PSP) 모듈의 변경 방해(tamper-resistance)를 향상시키기 위한 기술은 물론 실행 모듈 및 보호 서비스 기능을 상기 실행 모듈에 제공하는 연관 PSP 모듈의 완전성을 검사하는 기법에 관한 것이다.
어떠한 데이터를 이용하여 어떤 연산이 수행되며, 데이터 또는 연산 혹은 그 모두가 비밀로 유지되어야 하는, 한 부류의 컴퓨터 어플리케이션이 존재한다. 일반적으로, 대부분의 사용자들은 단순히 상기 어플리케이션을 의도된 목적을 위해 사용하고 내부에 포함된 상기 비밀들에 무관심하기 때문에 이것은 문제가 되지 않는다. 그러나, 몇몇 사용자들(즉 "해커들")은 상기 내부 비밀들을 밝히거나 수정하기 위해서 상기 어플리케이션을 제한된 혹은 금지된 연산을 하도록 하는 방법으로 상기 어플리케이션 및 그 구성요소를 엿보려 시도한다. 일반적으로, 해커들은 그 연산을 배우기 위해 전형적으로 정적 분해 및 분석 혹은 주제 어플리케이션의 동적(live) 디버깅중 어느 하나를 사용한다. 한번 배우게 되면, 해커는 의도된 목적에 따라 상기 연산을 수정할 수 있다. 따라서, 이러한 해킹 시도들을 방해하기 위해 변경 방해 기법들이 어플리케이션에 종종 적용된다.
어플리케이션 및 그 구성요소들이 변경 방해를 할 수 있도록 다양한 수단들이 사용될 수 있다. 그 중의 하나는 상기 어플리케이션 및 그 이진 정보의 디지털 "지문(fingerprint)" 혹은 서명을 하는 것이다. 초기화시 또는 실행시간 동안(혹은 양자 모두), 상기 보호받는 어플리케이션의 수정은 상기 어플리케이션의 현재 이진 상태와 상기 디지털 지문을 비교하는 검사를 통해서 감지될 수 있다. 그러한 행위들 혹은 수정들이 감지되면, 보호받는 어플리케이션은 내부에 포함된 상기 비밀들이 드러나지 않는 방법으로 의도적으로 실패한다.
변경하는 행위들을 감지하는 믿을만한 수단들은 종종 구현하기 어렵고 해커들의 능숙함(sophistication)이 증가함에 따라 더욱 복잡해져야 한다. 본 발명은 이러한 요구를 충족시키는데 관련된 것이다.
본원 발명의 전술한 목적, 이점 및 특징뿐만 아니라 그 밖의 것은 다음의 도면과 결합하여 고려될 때, 뒤이어 나올 본원 발명의 몇몇 바람직한 실시예의 상세한 설명으로부터 더욱 쉽게 이해될 것이다.
도 1은 본원 발명의 원리에 따라 변경-방해 감시를 사용하기 위한 컴퓨터 시스템 하드웨어의 일 실시예에 대한 블록도이다.
도 2는 본원 발명의 원리에 따라 디지털 비디오 디스크 플레이어를 위한 디스크램블러(descrambler)같은 보호 서비스 제공자(210)에 접속되는 실행 모듈(201, 202, 203)을 포함하고, 보호 서비스 제공자(210)와 다수의 실행 모듈(201, 202, 203)은 모니터/완전성 검사기(204)에 접속되는 어플리케이션이 있는 시스템 개략도이다.
도 3a는 본원 발명의 원리에 따라 상보 코드의 완전성을 상호-검사하기 위해 상기 PSP 모듈에 의해 구현되는 코드의 일 실시예에 대한 흐름도이다.
도 3b는 본원 발명의 원리에 따라 상기 PSP 모듈상에서 상기 상보 모듈에 의해 수행되는 완전성 검사의 일 실시예에 대한 흐름도이다.
도 4는 본원 발명의 원리에 따라 상기 PSP 모듈 및 상기 상보 코드 사이의 완전성 검사 및 상호-검사는 물론, 상기 PSP 모듈 및 상기 상보 코드 사이에 보호 서비스 기능을 공유하기 위한 일 실시예에 대한 흐름도이다.
도 5는 본원 발명의 원리에 따라 일 실시예에서, 상기 보호 서비스 제공자 모듈 및 상기 상보 코드 내부에 각각의 실행 쓰레드(thread)로 구현된 제 1 및 제 2 구성요소로 보호 서비스 제공자 기능을 분할하는 것을 나타낸 도면이다.
도 6은 본원 발명의 원리에 따라 상기 보호 서비스 제공자 모듈 및 상기 상보 코드 사이에 완전성 검사 및 상호-검사는 물론 그들 사이에 보호 서비스 기능의 구현이 공유되게 구현한 또 하나의 일 실시예에 대한 흐름도이다.
간단히 요약하면, 하나의 관점에서, 실행 모듈 및 연관 보호 서비스 제공자(PSP) 모듈 중 적어도 하나의 완전성을 관찰하는 방법이 제공되고, 상기 PSP 모듈은 보호 서비스 기능을 상기 실행 모듈에 제공한다. 상기 방법은 상기 PSP 모듈과 상기 실행 모듈 중 적어도 하나의 완전성을 검사하기 위한 상보(symbiont) 모듈 - 상기 상보 모듈은 상기 PSP 모듈과 분리된 모듈을
포함함 - 을 제공하는 단계와, 상기 상보 모듈을 상호-검사하기 위하여 상기 PSP 모듈 내부에 코드를 제공하는 단계를 포함하고, 상기 상보 모듈 검사 및 상기 PSP 모듈 상호-검사는 상기 실행 모듈 및 상기 PSP 모듈 중 적어도 하나의 완전성을 더불어 감시한다.
다른 관점에서, 보호 서비스 기능을 메모리에 로드된 실행 모듈에 제공하는 방법이 설명되고, 상기 보호 서비스 기능은 제 1 구성요소 및 제 2 구성요소로 세분된다. 상기 방법은 상기 보호 서비스 기능의 상기 제 1 구성요소를 제 1 실행 모듈의 내부에 구현하는 단계와, 상기 보호 서비스 기능의 상기 제 2 구성요소를 제 2 실행 모듈의 내부에 구현하는 단계를 포함하며, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈들을 포함한다.
또 다른 관점에서, 보호 서비스 기능을 실행 모듈의 호출에 제공하기 위한 방법은, 제 1 구성요소 및 제 2 구성요소 - 상기 제 1 구성요소는 제 1 실행 모듈의 내부에 구현되고, 상기 제 2 구성요소는 제 2 실행 모듈의 내부에 구현되고, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈임 - 로 세분된 상기 보호 서비스 기능을 제공하는 단계와, 상기 제 1 실행 모듈을 처리하고 상기 제 2 구성요소의 완전성을 검사하는 단계와, 상기 제 2 구성요소의 완전성을 확인할 때 상기 보호 서비스 기능의 상기 제 2 구성요소를 수행하도록 상기 제 2 실행 모듈을 초기화하는 단계와, 상기 제 2 실행 모듈을 초기화할 때 상기 제 2 실행 모듈로부터 상기 제 1 구성요소의 완전성을 검사하고, 상기 제 1 구성요소의 완전성을 확인할 때 상기 제 2 실행 모듈을 처리하고 결과를 상기 제 1 실행 모듈 혹은 실행 모듈의 상기 호출 중 어느 하나에 되돌려 줌으로써 상기 보호 서비스 기능을 완료하는 단계를 포함하도록 제공된다.
상기-요약한 방법들에 상응하는 시스템들과 제조 물품들도 또한 설명되고 청구되어진다.
다시 말하면, 예를 들면, 실행 모듈과 연관된 보호 서비스 제공자(PSP) 모듈을 검사하거나 혹은 보호 서비스 기능을 실행 모듈에 제공하는 것 뿐만 아니라 운영 체제 로더(loader)에 의해 상기 실행 모듈을 메모리에 로드하는 것에 후속하여 어플리케이션 프로그램의 실행 모듈의 완전성 검사를 수행하는 다양한 기법들이 제공된다. PSP 모듈을 포함하는 코드와는 별개의 실행 모듈을 포함하며, 그로 인해 상기 모니터 개체가 쉽게 감지되거나 망가지는(defeat)것을 방해하며, 이에 따라 어플리케이션 모듈에 제공되는 변경 방해 보호를 증가시키는 독립적인 모니터 개체가 개시되어 있다. 상기 모니터 개체(또한 여기서 "상보 모듈"로 언급됨)는 상기 PSP 모듈과 결합하여 실행되고 상기 실행 모듈을 포함하는 상기 어플리케이션 혹은 예를 들면 초기화시의 상기 운영 체제중의 하나에 의해 장착될 수 있다. 그러므로, 이하에 더욱 상세히 설명된 것처럼, 상기 모니터 개체는 다양한 방법으로 시작될 수 있고 상기 운영 체제와 독립적으로 실행될 수 있다.
일반적으로, 본원 발명은 어플리케이션 - 더 상세하게는 상기 어플리케이션의 실행 모듈 - 의 유효성을 상기 어플리케이션의 실행 중에 검사하기 위해 상기 어플리케이션과 함께 실행되는 독립적인 소프트웨어인 "모니터" 개체(entity) 혹은 상보 모듈을 사용하도록 제안한다. 상보 코드는 상기 어플리케이션 그 자체의 내부에서도 구현할 수 있지만, 상기 결합된 어플리케이션의 디버깅을 더욱 어렵게 만들기 위해 상기 시스템의 독립적인 프로세스 혹은 쓰레드로서 별도로 존재할 수 있다.
개선된 실시예에 있어서, 보호 서비스 제공자(PSP) 모듈에 의해 상기 실행 모듈로 제공된 보호 서비스 기능은 제 1 구성요소 및 제 2 구성요소로 세분될 수 있고, 상기 제 1 구성요소는 상기 PSP 모듈과 함께 남아있고 상기 제 2 구성요소는 상기 상보 모듈 내부에 구현된다. 유리하게, 본 실시예에서, 상기 상보 모듈은 상기 PSP 모듈의 완전성을 검사하고, 반면에 상기 PSP 모듈은 상기 상보 모듈의 완전성을 상호-감시하며, 그 때문에 실행 모듈로의 권한이 없는 접근을 더욱 어렵게 함은 물론 상기 보호 서비스 기능의 유효성을 더욱 보장한다.
여기에 사용된 바와 같이, 다음의 용어들이 사용된다.
실행 모듈 -- 디지털 정보의 집합으로, 전형적으로 컴퓨터의 프로세서에 의해 수행될 데이터 및 명령어를 포함한다. 이런 정보의 집합은 종종 하드-드라이브 같은 어떠한 매체에 '파일'로서 종종 저장되고, 상기 매체로부터 메모리(또는 램,RAM)로 로드되고 실행된다. 실행 모듈들의 예들은(일반적인 명명법을 사용하여), '실행가능한 것들'(확장자가 .exe 혹은 com인 파일들), 동적 링킹 라이브러리들(확장자가 .dll), 그리고 장치 드라이버들(예를 들면 확장자가 .vxd, .drv, .sys 혹은 .mpd일 수 있는)을 포함하나, 이에 한정되지는 않는다.
디지털 서명 -- 디지털 데이터(실행 모듈의 전체 혹은 일부분 같은) 집합의 디지털 '지문'이다. 디지털 서명은 유용하기 위해서 전형적으로 다음의 속성들을 갖는다.
1) 디지털 서명은 간결하고, 잘 정의되어 있으며, 반복될 수 있는 (전형적으로 수학적인) 절차를 디지털 데이터 집합에 적용함으로써 생성된다.
2) 만약 상기 디지털 데이터 집합의 어느 부분 혹은 부분들이 변화하면 상기 디지털 서명은 변화될 매우 높은 가능성을 지닌다.
3) 디지털 서명이 효과적이기 위해서, 디지털 데이터의 어느 다른 배열과 같은 디지털 서명으로 끝나는 디지털 데이터의 어느 배열을 찾을 가능성이 거의 0이 되어야 한다.
4) 상기 디지털 서명은 상기 서명 생성 절차가 전형적으로 적용되는 상기 디지털 데이터 집합의 크기와 비교해 볼 때 상대적으로 작다. 상기 서명 생성 절차는 매우 기초적이고 파해하기 쉬운(체크섬 같은) 것으로부터 암호학적으로 견고하고 안전한 방법, 메시지 다이제스트 5 해쉬(Message Digest 5 hash:MD5)같은 방법, 에 이르기까지 매우 다양할 수 있다.
상보 모듈 혹은 모니터 -- 독립적인 실행 모듈, 혹은 실행 모듈의 일부분이고, 그 기능은 주기적으로 혹은 계속하여 하나 혹은 그 이상의 다른 실행 모듈들, 혹은 실행 모듈들의 일부분을 검사하고 그러한 모듈들 혹은 그 일부분들이 컴퓨터 메모리(램) 혹은 그 밖의 다른 곳에 나타날 때, 그들의 완전성을 확인하는 것이다. 임의로, 상기 상보 모듈은 또한 상보 모듈이 완전성을 검사하는 몇몇 다른 실행 모듈에 의해 주로 수행되는 계산에 참여할 수 있으며(즉, 상기 상보는 완전성 검사는 물론 기능을 제공할 수 있으며) 이로 인해 상보는 상기 검사받는 실행 모듈(들)과 단단히 결합할 수 있다. 상기 상보 실행 모듈 및 그 완전성 검사는, 독립적인 실행 쓰레드로서, 또는 검사중인 실행 모듈들의 하나 혹은 그 이상으로부터 호출되는 기능으로서(그 경우 그들의 실행 쓰레드 내부에서 동작함)의 두 모드중 하나로 구현될 수 있다. 후자의 경우에, 상기 상보와의 통신은 이 기술분야에서 숙련된 자들에게 알려진 신호(signaling) 기법의 몇몇 다른 형태(예를 들면, 공유 메모리, 세마포어(semaphore), 뮤텍스(mutex) 등)를 통해 이루어진다. 상기 완전성 검사는 실행 모듈 또는 실행 모듈의 일부분을 구성하는 상기 디지털 데이터 및 명령어로부터 디지털 서명의 생성을 필요로 할 수도 있고, 그리고는 상기 서명을 완전성이 좋은 것으로 알려진 같은 실행 모듈로부터 생성된 서명과 비교한다. 또한 상보 모듈은 실행 모듈 혹은 그 일부분의 다른 검사들을 수행할 수 있으며, 혹은 상기 운영체제에 문의하거나, 혹은 "해커"가 실행 모듈 내부에서 불법으로 상기 명령어들 혹은 데이터를 관찰, 수정 혹은 남용하는 것이 시도되는지 아닌지를 결정하기 위해 상기 컴퓨터 시스템의 내부에서 활동 속성들을 검사할 수 있다. 비록 이러한 모니터가 전형적으로 실행 모듈이 RAM에 나타날 때 상기 실행 모듈의 이미지를 검사할 지라도, 모니터가 실행 모듈 혹은 그 일부분의 상기 이미지를 RAM이 아닌 다른 매체들, 예를 들면, 하드 드라이브 혹은 프로세서 캐쉬에 저장될 때 검사하는 것도 배제되지 않는다.
보호 서비스 제공자 -- 비밀(secret)이고 기밀(confidential)이고 혹은 독점적(proprietary)이며 공적으로 만들어지도록 의도되지 않은 명령어들 혹은 데이터들을 포함하는 실행 모듈 혹은 실행 모듈의 일부분이다. 상기 보호 서비스 제공자는 보호 서비스 기능을 하나 혹은 그 이상의 실행 모듈들을 포함하는 어플리케이션에 제공한다.
방어 활동 -- 완전성 검사를 통해 보호 서비스 제공자의 완전성이 손상되었거나 손상되려 한다는 것이 드러날 때 상기 보호 서비스 제공자의 창작자 혹은 사용자의 재량으로 발생되는 임의의 활동이다. 이것은, 예를 들면, 상기 보호 서비스 제공자의 디지털 서명이 변화되거나, 디버거가 활동중이거나, 혹은 어떤 다른 인증되지 않거나 의심스러운 변화가 상기 시스템에서 발행한 것들을 의미할 수 있다. 방어 활동은 상기 보호 서비스 제공자의 실행을 종료하거나, 상기 사용자에게 불법 활동이 감지되었음을 통보하거나, 불법 활동이 감지되었음을 기록(logging)하거나, 상기 불법 활동의 내용을 (가능하다면) 다른 위치로 전송하거나, 상기 보호 서비스 제공자의 명령어 혹은 데이터를 잘못되거나 잘못 인도하는 결과를 산출하도록(그러나 실행은 지속되면서) 바꾸거나, 실행 실패를 유발시키거나, 컴퓨터를 재부팅하거나, 혹은 컴퓨터의 전원이 나가도록 명령하는 등의 활동중 임의의 조합을 포함할 수도 있으나 이에 제한되는 것은 아니다.
도면을 참조하여, 도 1은 본원 발명의 실시예에서 동작하는 컴퓨터 시스템(100)을 도시하는 블록 다이어그램이다. 상기 실시예는 하나 혹은 그 이상의 어플리케이션 프로그램들을 포함하고, 그 중의 한 프로그램(200)이 도 2에서의 예로써 도시된다. 어플리케이션 프로그램(102)의 다른 형태는 옵티마이저(106)를 포함하는 컴파일러(105)이다. 상기 컴파일러(105) 및 옵티마이저(106)는 (어플리케이션 프로그램(102)같은) 소스 프로그램을 최적화된 실행 코드로 변형하도록 만들어진다. 더 일반적으로, 상기 소스 프로그램은 최적화된 형태로 변형된 후에 실행 코드로 된다. 이 절차의 부분으로서, 컴파일러(105)는 데이터 저장 장치(118)로부터 상기 실행 모듈을 RAM(114)같은 메모리로 로드하기 위해 기본(default) 로드 주소를 할당한다.
상기 컴파일러(105) 및 옵티마이저(106)는 하드웨어 장치(112)를 포함하는 컴퓨터 플랫폼(104) 상에서 동작한다. 상기 하드웨어 장치(112)는 하나 혹은 그 이상의 중앙처리장치(CPU, 116), 램(RAM,114), 그리고 입출력 인터페이스(도시되지 않음)를 포함한다. 또한 마이크로 명령어 코드(110), 예를 들면, 감소된 명령어 세트(RISC)가 상기 플랫폼(104)에 포함될 수 있다. 데이터 저장 장치(118)를 포함하여, 다양한 주변 구성요소가 상기 컴퓨터 플랫폼(104)에 연결될 수 있다. 링크는 시스템(100)을 하나 혹은 그 이상의 유사한 시스템들(도시되지 않음)에 연결하기 위하여 포함될 수 있다.
운영 체제(108)는 상기 컴퓨터 시스템(100)의 상기 다양한 구성요소들의 상기 동작들을 조화시킨다. 이와 같은 컴퓨터 시스템(100)의 예는 IBM RISC 시스템/6000(RISC 시스템/6000은 IBM 주식회사의 상표이다.)이다. 그러나 단독 시스템이던지 혹은 네트워크로 연결된 시스템이든 이하에 설명된 개념이 다른 형태의 컴퓨터 시스템(100)에 적용가능하다는 것은 이 분야에 있어 숙련된 자들에 의해 쉽게 이해된다.
언급된 것처럼, 도 2는 본원 발명의 개념을 이용한 어플리케이션 프로그램의 일 실시예를 도시한다. 어플리케이션 프로그램(200)은 어플리케이션 그래픽 사용자 인터페이스(GUI,201), 제 1 어플리케이션 동적 링크 라이브러리(DLL, 202) 및 제 2 어플리케이션 DLL(203)을 포함한다. 이 예에서는, DLL들(202, 203)은 실행 모듈을 포함하고 모니터/완전성 검사기(204)는 물론 보호 서비스 제공자(210)와 접속한다. 보호 서비스 제공자(210)는 상기 어플리케이션의 부분이거나 상기 어플리케이션에 접속될 수 있고, 그 경우에 상기 보호 서비스 제공자는 제 2 어플리케이션을 포함할 수 있다.
상기 보호 서비스 제공자는 기밀 정보를 포함할 수 있고, 일 실시예에서 본원 발명의 원리에 따라 변경 방해 코드를 구현할 수 있다. 왜냐하면 어플리케이션 DLL들(202 및 203)이 상기 보호 서비스 제공자(210)와 접속하기 때문에, 상기 보호 서비스 제공자의 시작시의 불법적 사용 때문에 어느 DLL도 변경되지 않는 것을 보장하는 것이 바람직하다. 그러므로, 어플리케이션 DLL들(202 및 203)은 상기 보호 서비스 제공자에 접근하기 위한 전제조건으로써 검사를 받을 수 있고, 실행시간 동안 주기적으로 동적으로 재검사될 수 있다. 일 예를 들면, 상기 보호 서비스 제공자는 디지털 비디오 디스크 플레이어를 위한 디스크램블러(descrambler) 모듈을 포함할 수 있고, 이런 경우에, 상기 PSP 모듈에 의해 제공되는 상기 보호 서비스 기능은 디스크램블 기능을 포함할 수 있다.
또한 여기서 상보 코드로 언급된, 상기 모니터/완전성 검사기(204)는 상기 보호 서비스 제공자 혹은 상기 운영 체제에 의해 안착되고 상기 운영 체제(OS)내에서 독립적으로 실행되는 독립적인 모니터 프로그램을 되도록 포함한다. 상기 모니터 개체(entity)는 다양한 방법으로 시작될 수 있으며, 이하의 방법중 몇몇은 다른 것들보다 더 확고하다.
· 상기 어플리케이션은 상기 모니터 개체의 독립적 실행을 초기화하기 위해 쓰레드(혹은 독립된 프로세스)를 야기(spawn)할 수 있다. 윈도우즈 운영 체제에서, 예를 들면, 독립적인 쓰레드 혹은 프로세스 내부에서 코드열의 실행을 초기화하는 여러가지 방법이 있다. 그렇지만, 이런 관점에서 모니터를 위한 코드는 실제적으로 실행 모듈과 동시에 메모리에 로드된다.
· 상보 코드는 별개로 컴파일된 프로그램, 장치 드라이버, 혹은 서비스로서 생성될 수 있다. 이러한 실시예에서, 상기 상보 코드는 실제적으로 상기 운영 체제에 의해서, 예를 들면, 상기 운영체제가 부팅될 때, 시작된다. 어떤 의미에서는, 상기 상보 코드는 활동하지 않는 채로 있고, 상기 보호 서비스 제공자를 이용하는 어플리케이션이 초기화하고 실행을 시작하기를 기다리다가, 그 때 상기 상보 코드가 그 기능을 시작한다. 이러한 기법은 운영체제가 부팅될 때 로드하는 것으로 설치될 때 상보 코드는 전혀 어플리케이션의 일부처럼 보이지 않으므로 그 자체에 주의를 끌지 않는다는 점에서 더 강할 수 있다. 상기 어플리케이션과 상기 상보 코드 사이의 초기 통신은, 장치 드라이버 입/출력 제어 명령어들(IOCTLs), 공유 메모리, 네임드 파이프(named pipe) 혹은 소켓 통신 API들 등의 여러 방법으로 이루어질 수 있으나, 이에 제한되지는 않는다.
요약하면, 어플리케이션 DLL들(202 및 203)은 보호 서비스 기능로의 접근을 위해 보호 서비스 제공자 모듈(210)로 기능 호출을 한다. 모니터/완전성 검사기(204)는 완전성 검사 기능을, 예를 들면, 어플리케이션 DLL들(202 및 203)은 물론 상기 보호 서비스 제공자(210)의 양쪽 모두에 제공한다. 대안적인 실시예에서, 상기 보호 서비스 제공자 모듈(210)은 상기 모니터/완전성 검사기(204)로의 교차-검사기는 물론 상기 어플리케이션 DLL들(202 및 203)을 위한 완전성 검사기를 포함할 수 있다. 이하에 더욱 상세히 설명된 본원 발명의 다양한 실시예에서 상호 프로세스 통신 링크가 상기 PSP 모듈(210) 및 상기 모니터/완전성 검사기(204) 사이에 또한 존재할 수 있다.
더욱이, 일 실시예에서 모니터/완전성 검사기(204)는 보호 서비스 제공자 모듈이 보호 서비스 기능을 제공하는 특정 어플리케이션의 완전성을 검사하는 데에 전용되어 있다. 상기 특정 어플리케이션은 메모리에 있을 때 및 실행시에 완전성 검사를 받는다. 언급된 것처럼, 모니터(204)는 예를 들면, 운영체제의 부팅시에 로드되는 장치 드라이버로서 상기 어플리케이션과 독립적으로 야기될 수 있다.
도 3a는 상기 상보 코드(즉, 상기 모니터/완전성 검사기, 204)상에서 상기 PSP 메인 모듈에 의해 수행되는 완전성 상호-검사의 일 실시예의 흐름도를 설명하는 반면, 도 3b는 상기 PSP 모듈 상에서 상기 상보 코드에 의해 수행되는 완전성 검사의 일 실시예의 흐름도를 설명한다. 이 예는 상기 상보 코드가 상기 PSP 모듈을 실행하는 쓰레드와 별개의 쓰레드에서 실행하고 있다는 것을 가정한다. 도 3a에서 시작하면, 상기 상보 코드의 완전성 검사(이는 상기 PSP 메인 모듈(300)의 동작 흐름 처리순서 내부에 구현될 수 있음)는 처음에 상기 상보 쓰레드가 실행중인지 아닌지를 결정(310)한다. 상기 상보 코드는 유효하기 위해서는 반드시 실행중이어야 하고, 만약 상기 상보 쓰레드가 실행중이지 않다면 방어 활동이 발생한다는 것이 가정된다(320). 만약 상기 쓰레드가 실행중이면, 상기 PSP 모듈은 상기 PSP 메인 모듈을 검사하는 상기 상보 코드에 대한 완전성 검사를 수행하고, 상기 상보 코드가 유효한지 아닌지를 결정한다(340). 만약 "아니라면", 방어 활동이 다시 발생한다(350). 그렇지 않으면, 상기 상보 코드는 실행중이고 유효하며, 상기 PSP는 상기 주된 동작 흐름을 계속 진행한다.
도 3b에서 도시되는 것처럼, 본원 발명의 일 실시예에서, 상기 상보 코드는 후방 동작 흐름(355)으로 완전성 검사를 구현한다. 이 완전성 검사는 상기 PSP 모듈과는 분리되고 독립된 실행 쓰레드이다. 상기 상보 코드는, 상기 상보 코드를 검사하는 코드 그 자체를 포함하여, 상기 PSP 메인 모듈에 대한 완전성 검사를 수행한다(365). 선택적으로, 상기 상보 코드는 또한 상기 PSP 기능을 사용하고 있는 어플리케이션 x를 검사할 수 있다. 상기 상보 코드는 상기 PSP 모듈이 유효한지를 결정하고(375), 그렇지 않다면 방어 활동을 발생시킨다(385). 유효하다면, 상기 상보 코드는 상기 PSP 메인 모듈의 완전성 검사를 다시 수행하기 전에 한 주기의 시간동안 대기할 수 있다(395).
전술한 관찰 기법의 개선으로서, 하나 혹은 그 이상의 보호 서비스 기능을 수 개의 독립적인 실행 쓰레드로 세분하는 개념이 여기에 나타난다. 한 그룹의 서로 종속적인 상호-검사 모듈들은 더욱 변경하는 것을 방해할 것이다. 그러므로, 보호 서비스 기능은 둘 혹은 그 이상의 실행 쓰레드로 나뉠 수 있고, 각각의 실행 쓰레드는 각각의 모듈이 중요한 기능, 즉 보호 기능을 일 부분을 포함하여, 적어도 하나의 다른 모듈의 완전성을 검사할 수 있다. 도 4는 이 개념을 구현하기 위한 일 실시예를 설명한다.
초기에, 상기 보호 서비스 제공자의 주된 기능들이 결정되고(400), 하나 이상의 보호 서비스 기능이 둘 이상의 구성요소들로 세분된다(410). 예를 들면, 보호 서비스 기능 A는 제 1 구성요소 A'와 제 2 구성요소 A''로 세분된다. 제 1 구성요소 A'는 상기 PSP 메인 모듈 내부에 구현되고(420), 반면에 상기 제 2 구성요소 A''는 상기 PSP의 상보 코드 내부에 구현된다(430). 완전성 검사 코드는 상기 PSP 메인 모듈의 내부에 구현되고, 예를 들면, 상기 상보 코드의 내부에 구현된 상기 제 2 구성요소 A''의 완전성 검사를 위해 상기 제 1 구성요소 A' 그 자체에 구현될 수도 있다(440). 유사하게, 상기 상보 코드는, 예를 들면, 상기 제 2 구성요소 A''로부터 상기 PSP 메인 모듈 내부의 상기 제 1 구성요소 A'의 완전성 검사를 위해 구현된다(450). 일 실시예에서, 상기 PSP 상보는 그리고는 상기 운영 체제가 부팅될 때, 로드하는 장치 드라이버로서 설치될 수 있다(460).
도 5는 본원 발명의 일 관점에 따라 세분된 보호 서비스 기능의 개념을 그림으로 설명한 것이다. 각각의 보호 서비스 기능 A, B, C, ..., F의 제 1 구성요소인 A', B', C', ..., F'가 존재하는 상기 메인 보호 서비스 제공자(500)로 상기 보호 서비스 기능 A, B, C, ...,F을 위한 호출이 이루어진다. 상기 보호 서비스 기능은 일 실시예에서 상기 제 1 구성요소로부터 제 2 보호 서비스 제공자 모듈(510) 내부에 구현된 제 2 구성요소로의 기능 호출을 구현함으로써 수행된다. 묘사된 것처럼, 제 2 보호 서비스 제공자 모듈(510)은 제 2 구성요소 A'', B'', C'', ...,F''를 구현한다. 상기 제 1 구성요소로부터 상기 제 2 구성요소로의 상기 기능 호출과 동등하게, 상기 제 2구성요소는 상기 제 1 구성요소의 완전성을 검사하고, 상기 제 1 구성요소는 상기 제 2 구성요소의 완전성을 검사한다. 점선에서 설명되는 것처럼, 상기 제 1 보호 서비스 모듈(500) 및 상기 제 2 보호 서비스 모듈(510)은 되도록 독립적인 실행 모듈들을 포함한다. 여기에 사용된 것처럼, 상기 제 2 보호 서비스 제공자 모듈(510)은 상기 메인 보호 서비스 제공자 모듈(500)에 대한 상보 코드를 포함한다. 더욱이, 비록 여기에는 제 1 및 제 2 모듈(500, 510)에 관해 설명되었지만, 설명된 개념에 따라 이 분야에 숙련된 자들은 둘 이상의 각각의 실행 모듈을 쉽게 구현할 수 있다.
도 6은 본원 발명의 원리에 따라 결합된 보호 서비스 기능 분할 및 완전성 검사를 구현하기 위한 일 실시예를 표현한 흐름도이다. PSP 메인 모듈은 보호 서비스 기능 A를 위한 어플리케이션 x의 실행 모듈에 의해 호출된다(600). 상기 PSP 메인 모듈은 기능 A의 일 부분(즉, 제 1 구성요소 A')을 수행하면서 또한 상보 모듈에 존재하는 상기 제 2 구성요소 코드 A''의 완전성을 검사(610)한다. 이 절차에 따라 상기 제 2 구성요소 코드 A''가 옳은지 아닌지 결정(620)하여, 그렇지 않다면 방어 행동을 취한다(630). 상기 제 2 구성요소의 완전성이 옳다고 판단하면 보호 서비스 기능 A의 완료(즉, 제 2 구성요소 A''의 실행)를 위한 호출이 상기 상보 모듈에 요청된다.(명시적인 호출 또는 상기 상보가 그렇지 않으면 실행을 시작하도록 요청되는 것중의 하나이다, 640)
한번 호출되면, 상기 상보 코드는 PSP 메인 모듈내에서 상기 제 1 구성요소 A'의 완전성을 검사한다. 이 절차에 따라 제 1 구성요소 코드 A'의 완전성이 옳은지 아닌지를 결정하여(660), 만약 아니면 다시 방어 활동을 취한다(670). 만약 상기 제 1 구성요소 A'의 완전성이 옳다면, 상기 제 2 구성요소 코드 A''가 실행되고, 결과를 상기 PSP 메인 모듈에 돌려준다(680). 그리고는 상기 PSP 메인 모듈은 상기 보호 서비스 기능 호출의 결과를 어플리케이션 x에 돌려준다(690).
요약하면, 이 기술분야에서 숙련된 자들은 상기한 논의로부터 엄밀히 상기 어플리케이션에 관한 상기 모니터/완전성 검사기(즉, 상보 코드)의 활동은 다음중의 하나 혹은 모두라는 것을 알 수 있을 것이다.
· 상기 모니터는 엄밀히 상기 어플리케이션의 메모리 지역에 대한 주기적인 서명 분석을 수행한다. 이것은 로딩 전 혹은 실행시중 어느 한 때에 상기 어플리케이션의 허가없는 수정을 감지하는 것을 도와준다. 전자의 감지는 허가없는 연산을 수행하기 위해 '영구적인' 저장공간에서, 일반적으로 하드 드라이브에서 상기 어플리케이션이 정적으로 수정되는 "블랙 박스" 공격을 방해하는 것을 도와준다. 후자는 임의의 디버깅(debugging) 활동을 감지하는 것을 도와준다.(예를 들면, 상기 어플리케이션에 중지점(breakpoint)을 놓는 것은 실질적으로 상기 어플리케이션의 메모리 이미지의 이진 서명이 바뀌도록 한다. )
· 상기 모니터는 상기 어플리케이션의 보호 연산들의 일 부분을 수행한다. 그러므로, 상기 모니터 개체를 금지한다면 상기 어플리케이션은 "중단"될 것이고, 이는 어플리케이션이 올바르게 작동하는 것을 중단시킬 것이다.
· 상기 어플리케이션 및/또는 모니터는 가능한 관찰자(observer)를 속이기 위해 불필요하거나, 연산이 따르기 완곡하거나(circuitous) 어려운 호출을 포함하고 실행할 수 있다.
· 상기 모니터는 상기 어플리케이션으로부터의 호출이 실제적으로 상기 어플리케이션이 존재해야 하거나 존재하는 것으로 알려진 메모리의 주소 범위로부터 왔는지를 확인하고 그 반대의 경우도 마찬가지이다.
· 상기 어플리케이션은 또한 모니터 개체 상에서 완전성 검사(전자 서명 혹은 체크섬)를 수행할 수 있다.
· 상기 모니터는 허락되지 않은 디버깅 동작들을 감지하기 위해 상기 어플리케이션 그 자체로부터 떨어진, 상기 운영 체제의 부분들을 검사한다.
· 상기 모니터가 임의의 부적절한 활동이나 상기 어플리케이션 그 자체의 임의의 변화들을 감지한 경우에, 상기 모니터는 상기 바람직하지 못한 활동을 종료하기 위하여 상기 어플리케이션을 금지하거나, 상기 부적절한 디버깅 활동을 금지하거나, 또는 가능하면 심지어 재부팅하거나 그렇지 않으면 시스템을 중단하는 독립적인 행동을 취할 수 있다. 또는, 해커에게 이런 활동이 감지되었음을 명백하게 통지하지 않은 채로 그 동작을 할 수 있다. 공격의 반응은 상황에 따라 변화할 수 있고, 즉, 이 반응에 있어서 불예측성은 상기 어플리케이션/모니터의 쌍이 해킹당하기 더욱 어렵게 한다.
· 만약 네트웍 연결의 어떤 형태가 이용가능하면, 상기 모니터는 또한 상기 감지된 활동을 외부의 관찰자로 보고할 수도 있다. 이런 기법은 만약 상기 어플리케이션이 데이터를 인터넷상의 서버로부터 요청한다면(혹은 그 기능이 보호 데이터에 접근하는 것이라면) 유용할 것이다. 이런 경우에, 상기 불법적 활동에 대한 상기 보고는 상기 서버 데이터에 대한 일련의 접근으로부터의 공격을 막는 데에 사용될 수 있다.
· 전체 어플리케이션은 하나의 실행 개체(예를 들면 장치 드라이버, 프로세스, 쓰레드) 이상으로 구성되어 있음을 주목하라. 마찬가지로, 상기 모니터도 물론 하나의 실행 개체 이상으로 구성되어 있을 수 있다. 요지는 상기 어플리케이션 및 모니터가 별개이고, 상기 모니터는 상기 어플리케이션에만 "사용되도록" 되어있다는 것이다.
본원 발명은, 예를 들어, 컴퓨터 이용가능 매체를 갖는 제조 물품(예를 들어, 하나 혹은 그 이상의 컴퓨터 프로그램 제품)안에 포함될 수 있다. 이 매체는 예를 들면, 본원 발명의 특성을 제공하고 촉진하기 위한 컴퓨터 판독가능한 프로그램 코드를 그 안에 구현했다. 상기 제조 물품은 컴퓨터 시스템의 일부로 포함되거나 독립적으로 판매될 수 있다.
추가적으로, 본원 발명의 특성을 수행하기 위해, 기계에 의해 실행가능한 적어도 하나의 명령 프로그램을 실제적으로 구현한, 기계에 의해 판독가능한 적어도 하나의 프로그램 저장 장치가 제공될 수 있다.
여기에 설명된 흐름도들은 예로서 제공된다. 본원 발명의 본질을 벗어나지 않고 여기에 설명된 이 도면들 혹은 단계들(또는 동작들)에 변화가 있을 수 있다. 예를 들어, 어떤 경우에, 상기 단계들은 다른 순서로 수행될 수 있고, 혹은 단계들이 추가되거나, 삭제되거나 수정될 수 있다. 이 모든 변화들은 추가된 청구범위에서 언급되는 것처럼 본원 발명의 부분을 포함하는 것으로 참작된다.
본원 발명이 몇몇 선호되는 실시예들에 따라 여기에 자세히 설명된 반면, 그 안에서 많은 수정 및 변화들이 이 기술분야에서 숙련된 자들에 의해 초래될 수 있다. 따라서, 추가된 청구범위에서 본원 발명의 진짜 요지 및 범위내에서 일어나는 모든 그러한 수정 및 변화를 포함하도록 의도되어진다.
본원 발명에 의한 상기 모니터는 엄밀히 상기 어플리케이션의 메모리 지역에 대한 주기적인 서명 분석을 수행한다. 이것은 로딩 전 혹은 실행시중 어느 한 때에 상기 어플리케이션의 허가없는 수정을 감지하는 것을 도와준다. 전자의 감지는 허가없는 연산을 수행하기 위해 '영구적인' 저장공간에서, 일반적으로 하드 드라이브에서 상기 어플리케이션이 정적으로 수정되는 "블랙 박스" 공격을 방해하는 것을 도와준다. 후자는 임의의 디버깅(debugging) 활동을 감지하는 것을 도와준다.(예를 들면, 상기 어플리케이션에 중지점(breakpoint)을 놓는 것은 실질적으로 상기 어플리케이션의 메모리 이미지의 이진 서명이 바뀌도록 한다. )

Claims (20)

  1. 실행 모듈 및 연관 보호 서비스 제공자(protected service provider:PSP) 모듈중 적어도 하나의 완전성을 관찰하는 방법에 있어서, 상기 PSP 모듈은 보호 서비스 기능을 상기 실행 모듈에 제공하고, 상기 방법은
    (i) 상기 PSP 모듈 및 상기 실행 모듈중 적어도 하나의 완전성을 검사하기 위해 상보 모듈(Symbiont module) - 상기 상보 모듈은 상기 PSP 모듈과는 별개의 모듈을 포함함 - 을 제공하는 단계와,
    (ii) 상기 상보 모듈을 상호-검사하기 위해 상기 PSP 모듈 내부에 코드를 제공하는 단계를 포함하며, 상기 상보 모듈 검사 및 상기 PSP 모듈 상호-검사는 함께 상기 실행 모듈 및 상기 PSP 모듈중 적어도 하나를 관찰하는 완전성 관찰 방법.
  2. 제 1항에 있어서, 상기 PSP 모듈의 상기 보호 서비스 기능은 제 1 구성요소 및 제 2 구성요소로 나뉘고, 상기 방법은 상기 PSP 모듈 내에 상기 보호 서비스 기능의 상기 첫 번째 구성요소를 구현하고 상기 상보 모듈 내에 상기 보호 서비스 기능의 상기 두 번째 구성요소를 구현하는, 완전성 관찰 방법.
  3. 제 2항에 있어서, 상기 상보 모듈의 기능억제(disabling)는 상기 PSP 모듈에 의해 상기 실행 모듈에 제공되는 상기 보호 서비스 기능을 억제하는 완전성 관찰 방법.
  4. 제 1항에 있어서, 상기 보호 서비스 기능은 상기 PSP 모듈에 의해 상기 실행 모듈에 제공되는 복수의 기능중 한 기능을 포함하고, 상기 방법은 상기 복수의 기능중 적어도 몇몇 기능들의 각각을 제 1 구성요소 및 제 2 구성요소로 세분하는 단계 및 상기 적어도 몇몇 기능들의 각각에 대해 상기 PSP 모듈 내에 상기 제 1 구성요소를 구현하고 상기 상보 모듈 내에 상기 제 2 구성요소를 구현하는 단계를 더 포함하는 완전성 관찰 방법.
  5. 제 1항에 있어서, 상기 상보 모듈의 제공 단계는 상기 PSP 모듈의 로드와 독립적으로 상기 상보 모듈을 로드하는 단계를 포함하는 완전성 관찰 방법.
  6. 보호 서비스 기능을 메모리에 로드된 실행 모듈에 제공하는 방법에 있어서, 상기 방법은
    상기 보호 서비스 기능을 제 1 구성요소 및 제 2 구성요소로 세분하는 단계와,
    상기 보호 서비스 기능의 상기 제 1 구성요소를 제 1 실행 모듈 내에 구현하는 단계와,
    상기 보호 서비스 기능의 상기 제 2 구성요소를 제 2 실행 모듈 내에 구현하는 단계를 포함하며, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈들을 포함하는 보호 서비스 기능 제공 방법.
  7. 제 6항에 있어서, 상기 제 1 실행 모듈은 보호 서비스 제공자 모듈을 포함하고, 상기 제 2 실행 모듈은 상보 모듈을 포함하며, 상기 상보 모듈은 상기 보호 서비스 제공자 모듈의 로드와 별개로 로드되는 보호 서비스 기능 제공 방법.
  8. 제 7항에 있어서, 상기 상보 모듈의 완전성을 검사하기 위한 코드를 상기 보호 서비스 제공자 모듈에 통합하는 단계와 상기 보호 서비스 제공자 모듈의 완전성을 검사하기 위한 코드를 상기 상보 모듈에 통합하는 단계를 더 포함하는 보호 서비스 기능 제공 방법.
  9. 제 6항에 있어서, 상기 제 2 실행 모듈은 결과를 상기 제 1 실행 모듈에 제공하고, 상기 제 1 실행 모듈은 상기 보호 서비스 기능을 상기 실행 모듈에 제공하는 보호 서비스 기능 제공 방법.
  10. 보호 서비스 기능을 호출(calling) 실행 모듈에 제공하는 방법에 있어서, 상기 방법은
    제 1 구성요소 및 제 2 구성요소- 상기 제 1 구성요소는 제 1 실행 모듈 내에 구현되고 상기 제 2 구성요소는 제 2 실행 모듈 내에 구현되며 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈임 -로 세분된 상기 보호 서비스 기능을 제공하는 단계와,
    상기 제 1 실행 모듈을 처리하고 상기 제 2 구성요소의 완전성을 검사하는 단계와,
    상기 제 2 구성요소의 완전성을 확인할 때, 상기 보호 서비스 기능의 상기 제 2 구성요소를 수행하기 위해 상기 제 2 실행 모듈을 초기화하는 단계와,
    상기 제 2 실행 모듈을 초기화할 때, 상기 제 2 실행 모듈로부터 상기 제 1 구성요소의 완전성을 검사하고, 상기 제 1 구성요소의 완전성을 확인할 때, 상기 제 2 실행 모듈을 처리함으로써 상기 보호 서비스 기능을 완료하고 결과를 상기 제 1 혹은 상기 호출한 실행 모듈중의 하나에 돌려주는 단계를 포함하는 보호 서비스 제공 방법.
  11. 제 10항에 있어서, 만약 상기 제 2 구성요소가 상기 완전성 검사에 실패하는 경우, 그에 따라 방어 활동을 하고, 또는 만약 상기 제 1 구성요소가 상기 완전성 검사에 실패하는 경우 그에 따라 방어 활동을 하는 보호 서비스 제공 방법.
  12. 실행 모듈 및 연관 보호 서비스 제공자(PSP) 모듈 중 적어도 하나의 완전성을 관찰하기 위한 시스템에 있어서, 상기 PSP 모듈은 보호 서비스 기능을 상기 실행 모듈에 제공하고, 상기 시스템은
    상기 PSP 모듈 및 상기 실행 모듈 중 적어도 하나의 완전성을 검사하기 위한 상보 모듈 - 상기 상보 모듈은 상기 PSP 모듈과 별개의 모듈을 포함함 - 을 제공하기 위한 수단과,
    상기 상보 모듈을 상호-검사하기 위해 상기 PSP 모듈 내부에 코드를 제공하기 위한 수단을 포함하며, 상기 상보 모듈 검사 및 상기 PSP 모듈 상호-검사는 함께 상기 실행 모듈 및 상기 PSP 모듈 중 적어도 하나의 완전성을 관찰하는 완전성 관찰 시스템.
  13. 실행 모듈 및 연관 보호 서비스 제공자(PSP) 모듈중 적어도 하나의 완전성을 검사하기 위한 시스템에 있어서, 상기 PSP 모듈은 보호 서비스 기능을 상기 실행 모듈에 제공하고, 상기 시스템은
    상기 PSP 모듈 및 상기 실행 모듈중 적어도 하나의 완전성을 검사하기 위해 상보 모듈 - 상기 상보 모듈은 상기 PSP 모듈과 별개의 모듈을 포함함 - 을 구현하도록 적응된 계산 장치와,
    상기 상보 모듈을 상호-검사하기 위해 상기 PSP 모듈 내에 코드를 구현하도록 더 적응된 상기 계산 장치를 포함하며, 상기 상보 모듈 검사 및 상기 PSP 모듈 상호-검사는 상기 실행 모듈 및 상기 PSP 모듈중 적어도 하나의 완전성을 함께 관찰하는 완전성 검사 시스템.
  14. 메모리에 로드된 호출 실행 모듈에 보호 서비스 기능을 제공하기 위한 시스템에 있어서, 상기 보호 서비스 기능은 제 1 구성요소 및 제 2 구성요소로 세분되고, 상기 시스템은
    제 1 실행 모듈 내에 상기 보호 서비스 기능의 상기 제 1 구성요소를 구현하는 수단과,
    제 2 실행 모듈 내에 상기 보호 서비스 기능의 상기 제 2 구성요소를 구현하는 수단을 포함하며, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈들을 포함하는 보호 서비스 기능 제공 시스템.
  15. 보호 서비스 기능을 메모리에 로드된 실행 모듈에 제공하는 시스템에 있어서, 상기 보호 서비스 기능은 제 1 구성요소 및 제 2 구성요소로 세분되고, 상기 시스템은
    제 1 실행 모듈 내에서 상기 보호 서비스 기능의 상기 제 1 구성요소를 구현하도록 적응된 계산 장치와,
    제 2 실행 모듈 내에서 상기 보호 서비스 기능의 상기 제 2 구성요소를 구현하도록 적응된 계산장치를 포함하며, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈들을 포함하는 보호 서비스 제공 시스템.
  16. 보호 서비스 기능을 호출 실행 모듈에 제공하는 시스템에 있어서, 상기 시스템은
    제 1 구성요소 및 제 2 구성요소- 상기 제 1 구성요소는 제 1 실행 모듈 내에 구현되고 상기 제 2 구성요소는 제 2 실행 모듈 내에 구현되고, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈임 - 로 세분된 상기 보호 서비스 기능을 제공 하는 수단과,
    상기 제 1 실행 모듈을 처리하고 상기 제 2 구성요소의 완전성을 검사하는 수단과,
    상기 보호 서비스 기능의 상기 제 2 구성요소를 수행하기 위해, 상기 제 2 구성요소의 완전성을 확인할 때 상기 제 2 실행 모듈을 초기화하는 수단과,
    상기 제 2 실행 모듈을 초기화할 때 상기 제 2 실행 모듈로부터 상기 제 1 구성요소의 완전성을 검사하고, 상기 제 1 구성요소의 완전성을 확인할 때 상기 제 2 실행 모듈을 처리함으로써 상기 보호 서비스 기능을 완료하고 결과를 상기 제 1 실행 모듈 혹은 상기 실행 모듈의 호출중의 하나로 반환하는 수단을 포함하는, 보호 서비스 기능을 실행 모듈의 호출에 제공하는 시스템.
  17. 제 16항에 있어서, 만약 상기 제 2 구성요소가 상기 완전성 검사에 실패하는 경우 방어 활동을 발생시키는 수단 및 만약 상기 제 1 구성요소가 상기 완전성 검사에 실패하는 경우 방어 활동을 발생시키는 수단을 더 포함하는, 보호 서비스 기능을 실행 모듈의 호출에 제공하는 시스템.
  18. 실행 모듈 및 연관 보호 서비스 제공자(PSP) 모듈의 완전성을 감시하는데 사용되는 컴퓨터 판독가능한 프로그램 코드 수단을 내부에 포함하는 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품을 포함하는 제조물품에 있어서, 상기 PSP 모듈은 보호 서비스 기능을 상기 실행 모듈에 제공하고, 상기 컴퓨터 프로그램 제품 내부의 상기 컴퓨터 판독가능 프로그램 코드 수단은
    컴퓨터가 상보 모듈로부터 상기 PSP 모듈 및 상기 실행 모듈중 적어도 하나의 완전성을 검사하도록 하는 컴퓨터 판독가능한 프로그램 코드 수단과,
    컴퓨터가 상기 PSP 모듈 내의 코드로부터 상기 상보 모듈을 상호-검사하도록 하는 컴퓨터 판독가능한 프로그램 코드 수단을 포함하며, 상기 상보 모듈 검사 및 상기 PSP 모듈 상호-검사는 상기 실행 모듈 및 상기 PSP 모듈중 적어도 하나의 완전성을 함께 검사하는 제조물품.
  19. 보호 서비스 기능을 메모리에 로드된 실행 모듈에 제공하는데 사용되는 컴퓨터 판독가능한 프로그램 코드 수단을 내부에 포함하는 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품을 포함하는 제조물품에 있어서, 상기 보호 서비스 기능은 제 1 구성요소 및 제 2 구성요소로 세분되고, 상기 컴퓨터 프로그램 제품 내부의 상기 컴퓨터 판독가능 프로그램 코드 수단은
    컴퓨터가 제 1 실행 모듈 내에 상기 보호 서비스 기능의 상기 제 1 구성요소를 구현하도록 유발하는 컴퓨터 판독가능한 프로그램 코드 수단과,
    컴퓨터가 제 2 실행 모듈 내에 상기 보호 서비스 기능의 상기 제 2 구성요소를 구현하도록 유발하는 컴퓨터 판독가능한 프로그램 코드 수단을 포함하며, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈들을 포함하는 제조물품.
  20. 보호 서비스 기능을 호출 실행 모듈에 제공하는데 사용되는 컴퓨터 판독가능한 프로그램 코드 수단을 내부에 포함하는 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품을 포함하는 제조물품에 있어서, 상기 컴퓨터 프로그램 제품 내부의 상기 컴퓨터 판독가능 프로그램 코드 수단은
    컴퓨터가 제 1 구성요소 및 제 2 구성요소- 상기 제 1 구성요소는 제 1 실행 모듈 내에 구현되고, 상기 제 2 구성요소는 제 2 실행 모듈 내에 구현되고, 상기 제 1 실행 모듈 및 상기 제 2 실행 모듈은 별개의 실행 모듈임 -로 세분된 상기 보호 서비스 기능을 제공하도록 하는 컴퓨터 판독가능 프로그램 코드 수단과,
    컴퓨터가 상기 제 1 실행 모듈을 처리하고 상기 제 2 구성요소의 완전성을 검사하도록 하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 보호 서비스 기능의 상기 제 2 구성요소를 수행하기 위해, 상기 제 2 구성요소의 완전성을 확인할 때 컴퓨터가 상기 제 2 실행 모듈을 초기화하도록 하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 제 2 실행 모듈을 초기화할 때, 컴퓨터가 상기 제 2 실행 모듈로부터 상기 제 1 구성요소의 완전성을 검사하도록 하고, 상기 제 1 구성요소의 완전성을 확인할 때, 컴퓨터가 상기 제 2 실행 모듈을 처리함으로써 상기 보호 서비스 기능을 완료하고 결과를 상기 제 1 실행 모듈 혹은 상기 호출 실행 모듈로 반환하도록 하는 컴퓨터 판독가능 프로그램 코드 수단을 포함하는 제조물품.
KR10-2000-0037776A 1999-07-13 2000-07-03 실행 모듈 및 이에 연관된 보호 서비스 제공자 모듈의 무결성 검사 KR100368947B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/352,285 US6874087B1 (en) 1999-07-13 1999-07-13 Integrity checking an executable module and associated protected service provider module
US09/352,285 1999-07-13
US9/352,285 1999-07-13

Publications (2)

Publication Number Publication Date
KR20010029880A true KR20010029880A (ko) 2001-04-16
KR100368947B1 KR100368947B1 (ko) 2003-01-24

Family

ID=23384525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0037776A KR100368947B1 (ko) 1999-07-13 2000-07-03 실행 모듈 및 이에 연관된 보호 서비스 제공자 모듈의 무결성 검사

Country Status (3)

Country Link
US (1) US6874087B1 (ko)
JP (1) JP3657179B2 (ko)
KR (1) KR100368947B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008095143A1 (en) * 2007-01-31 2008-08-07 Microsoft Corporation Graph-based tamper resistance modeling for software protection

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6973577B1 (en) * 2000-05-26 2005-12-06 Mcafee, Inc. System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
US8001594B2 (en) * 2001-07-30 2011-08-16 Ipass, Inc. Monitoring computer network security enforcement
NZ531131A (en) * 2001-08-13 2005-12-23 Qualcomm Inc Using permissions to allocate device resources to an application
US20030115479A1 (en) * 2001-12-14 2003-06-19 Jonathan Edwards Method and system for detecting computer malwares by scan of process memory after process initialization
EP1338939A1 (en) * 2002-02-22 2003-08-27 Hewlett-Packard Company State validation device for a computer
US7181603B2 (en) * 2002-03-12 2007-02-20 Intel Corporation Method of secure function loading
JP2003271255A (ja) * 2002-03-12 2003-09-26 Ntt Comware Corp 実行プログラム作成システム、実行プログラム販売方法、実行プログラム作成システム用プログラム、実行プログラム作成システム用記録媒体
US7680743B2 (en) * 2002-05-15 2010-03-16 Microsoft Corporation Software application protection by way of a digital rights management (DRM) system
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US20050283826A1 (en) * 2004-06-22 2005-12-22 Sun Microsystems, Inc. Systems and methods for performing secure communications between an authorized computing platform and a hardware component
JP4728619B2 (ja) * 2004-10-01 2011-07-20 富士通株式会社 ソフトウェアの改竄検出装置、改竄防止装置、改竄検出方法及び改竄防止方法
US8347078B2 (en) 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US8176564B2 (en) 2004-11-15 2012-05-08 Microsoft Corporation Special PC mode entered upon detection of undesired state
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US8464348B2 (en) 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
US7360253B2 (en) * 2004-12-23 2008-04-15 Microsoft Corporation System and method to lock TPM always ‘on’ using a monitor
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
US9436804B2 (en) 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US8353046B2 (en) 2005-06-08 2013-01-08 Microsoft Corporation System and method for delivery of a modular operating system
US8019947B2 (en) * 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
JP4048382B1 (ja) * 2006-09-01 2008-02-20 富士ゼロックス株式会社 情報処理システムおよびプログラム
US20080295174A1 (en) * 2007-03-05 2008-11-27 Andrea Robinson Fahmy Method and System for Preventing Unauthorized Access and Distribution of Digital Data
US8266691B2 (en) * 2007-04-13 2012-09-11 Microsoft Corporation Renewable integrity rooted system
US8600896B2 (en) * 2008-03-28 2013-12-03 Panasonic Corporation Software updating apparatus, software updating system, invalidation method, and invalidation program
JP4932033B2 (ja) * 2008-03-28 2012-05-16 パナソニック株式会社 ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム
US8149085B2 (en) * 2008-05-02 2012-04-03 Research In Motion Limited Coordinated security systems and methods for an electronic device
JP5405986B2 (ja) * 2008-11-26 2014-02-05 パナソニック株式会社 ソフトウェア更新システム、管理装置、記録媒体及び集積回路
US10055251B1 (en) 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
WO2013176711A2 (en) 2012-02-15 2013-11-28 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
US9392017B2 (en) * 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
JP5177205B2 (ja) * 2010-10-29 2013-04-03 富士通株式会社 ソフトウェアの改竄防止装置及び改竄防止方法
US20130174214A1 (en) * 2011-12-29 2013-07-04 Imation Corp. Management Tracking Agent for Removable Media
WO2013101894A2 (en) 2011-12-29 2013-07-04 Imation Corp. Secure user authentication for bluetooth enabled computer storage devices
CN103116714A (zh) * 2013-03-01 2013-05-22 中标软件有限公司 一种Windows平台可执行文件双进程保护方法
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
WO2016118216A2 (en) 2014-11-06 2016-07-28 Intertrust Technologies Corporation Secure application distribution systems and methods

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5440723A (en) 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5398196A (en) 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
US5572590A (en) 1994-04-12 1996-11-05 International Business Machines Corporation Discrimination of malicious changes to digital information using multiple signatures
US5696822A (en) 1995-09-28 1997-12-09 Symantec Corporation Polymorphic virus detection module
US5765030A (en) 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5826013A (en) 1995-09-28 1998-10-20 Symantec Corporation Polymorphic virus detection module
JP3272283B2 (ja) * 1997-11-14 2002-04-08 富士通株式会社 電子データ保管装置
US5991399A (en) * 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
US6363486B1 (en) * 1998-06-05 2002-03-26 Intel Corporation Method of controlling usage of software components
US6105137A (en) * 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules
JP3056732B1 (ja) 1999-04-09 2000-06-26 コナミ株式会社 コンピュ―タシステム、コンピュ―タプログラムの実行方法及びコンピュ―タプログラム記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008095143A1 (en) * 2007-01-31 2008-08-07 Microsoft Corporation Graph-based tamper resistance modeling for software protection

Also Published As

Publication number Publication date
US6874087B1 (en) 2005-03-29
KR100368947B1 (ko) 2003-01-24
JP2001051742A (ja) 2001-02-23
JP3657179B2 (ja) 2005-06-08

Similar Documents

Publication Publication Date Title
KR100368947B1 (ko) 실행 모듈 및 이에 연관된 보호 서비스 제공자 모듈의 무결성 검사
EP2979219B1 (en) Suspicious program detection
RU2691187C1 (ru) Система и способы аудита виртуальной машины
Naumovich et al. Preventing piracy, reverse engineering, and tampering
CA2774728C (en) System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
CN104335220B (zh) 用于防止和检测安全威胁的方法和系统
Holz et al. Detecting honeypots and other suspicious environments
Salamat et al. Orchestra: intrusion detection using parallel execution and monitoring of program variants in user-space
US7587724B2 (en) Kernel validation layer
US20160357958A1 (en) Computer System Security
US8271803B2 (en) Anti-debugging protection of binaries with proxy code execution
US20020144153A1 (en) Systems and methods for preventing unauthorized use of digital content
US20090271867A1 (en) Virtual machine to detect malicious code
KR20180032566A (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
KR20070118074A (ko) 외래 코드 검출을 위한 시스템 및 방법
Main et al. Software protection and application security: Understanding the battleground
Gao et al. Borrowing your enemy’s arrows: the case of code reuse in android via direct inter-app code invocation
El-Harake et al. Blocking advertisements on android devices using monitoring techniques
Botacin et al. “VANILLA” malware: vanishing antiviruses by interleaving layers and layers of attacks
US8788845B1 (en) Data access security
Caillat et al. Prison: Tracking process interactions to contain malware
Kawakoya et al. Stealth loader: Trace-free program loading for analysis evasion
Srivastava et al. Secure observation of kernel behavior
Zaheri et al. Preventing reflective dll injection on uwp apps
Nanda et al. Foreign code detection on the windows/x86 platform

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: 20080103

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee