[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20060083850A - 부분적인 이미지 해시들을 이용하여 실행가능한 파일무결성을 검증하기 위한 시스템 및 방법 - Google Patents

부분적인 이미지 해시들을 이용하여 실행가능한 파일무결성을 검증하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20060083850A
KR20060083850A KR1020050114676A KR20050114676A KR20060083850A KR 20060083850 A KR20060083850 A KR 20060083850A KR 1020050114676 A KR1020050114676 A KR 1020050114676A KR 20050114676 A KR20050114676 A KR 20050114676A KR 20060083850 A KR20060083850 A KR 20060083850A
Authority
KR
South Korea
Prior art keywords
hash
executable file
partial
memory
hashes
Prior art date
Application number
KR1020050114676A
Other languages
English (en)
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 KR20060083850A publication Critical patent/KR20060083850A/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

실행가능한 파일의 무결성을 검증하기 위한 시스템 및 방법이 개시된다. 일 양태에서, 복수의 부분적인 이미지 해시들이 생성되는데, 이것의 결합은 전체의 실행가능한 파일의 다이제스트(digest)를 나타낸다. 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 실행을 위해 실행가능한 파일의 일부분을 메모리에 페이징(paging)하라는 요구가 인터셉트(intercept)된다. 이 요구를 인터셉트하는 것에 응답하여, 실행을 위해 이 일부분을 메모리에 페이징하기 전에, 이 일부분의 검증 해시가 계산된다. 검증 해시는 복수의 부분적인 이미지 해시들 중 하나의 부분적인 해시에 비교되어, 이 일부분의 코드 무결성을 판정한다. 이 부분적인 해시는 이 일부분과 동일한 코드 세그먼트를 나타낸다.
파일 무결성, 부분적인 해시, 검증 해시, 코드 무결성

Description

부분적인 이미지 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR VALIDATING EXECUTABLE FILE INTEGRITY USING PARTIAL IMAGE HASHES}
도 1은 부분적인 해시를 이용하여 실행가능한 파일 무결성을 검증하기 위한 예시적인 시스템을 도시.
도 2는 부분적인 해시를 이용하여 실행가능한 파일 무결성을 검증하기 위한 예시적인 프로시저를 도시.
도 3은 부분적인 해시를 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법이 전체적으로 또는 부분적으로 구현될 수 있는 적합한 컴퓨팅 환경의 예를 도시.
<도면의 주요 부분에 대한 부호의 설명>
102 : 컴퓨팅 장치
104 : 프로그램 모듈
106 : 프로그램 데이터
108 : 부분적인 이미지 해시
110 : 부분별 바이너리 이미지 해싱 모듈
112 : 이미지 부분 무결성 검증 모듈
116 : 파일 시스템
120 : 시스템 카탈로그(들)
122 : 자가-서명된 파일(들)
124 : 메모리 관리자
본 발명은 데이터 인증 또는 검증에 관한 것이다.
사용자의 컴퓨터 상에서 실행되는 실행가능한 파일은 바이러스 또는 트로이 목마를 포함할 수 있다. 실행가능한 파일은 또한, 바이너리 이미지(binary image)라고 불리며, 예를 들어, PE(portable executable), 매크로, 비주얼 베이직 스크립트(VBS)와 같은 스크립트 등과 같은 임의의 실행가능한 객체를 포함한다. 바이러스는 일반적으로, 사용자의 바램과 반대로 사용자의 인식 없이 디스크 상의 바이너리 이미지를 변경하는 프로그램 또는 코드 부분이다. 바이러스는 또한, 자신을 복제할 수 있다. 자신을 계속해서 복사할 수 있는 단순한 바이러스는 비교적 만들기 쉽다. 그러한 단순한 바이러스도 모든 이용가능한 메모리를 빨리 사용하고 시스템을 멈추게 할 수 있기 때문에 위험하다. 다른 유형의 위험한 바이러스는 네트워크를 통해 자신을 전송하고 보안 시스템을 통과(bypass)할 수 있다. 바이러스와 달리, 트로이 목마는 자신을 복제하지 않지만, 종종 어플리케이션인 것처럼 가장하면서 파괴적일 수 있다. 예를 들어, 트로이 목마는 수상하지 않은 사용자에 의해 독 립적으로 런칭될 수 있다. 잠행성 유형의 트로이 목마는 컴퓨터에서 바이러스를 제거한다고 주장하지만 그 대신에 컴퓨터에 바이러스를 도입하는 프로그램이다. 따라서, 실행가능한 파일은 컴퓨터 상에서 실행되기에 위험할 수 있다.
예를 들어, 바이러스 또는 트로이 목마로 오염된 실행가능한 코드를 식별하기 위한 한가지 접근은, 컴퓨팅 장치 상에 실행가능한 파일을 설치하거나 다운로딩할 때 신뢰된 암호 해시(cryptographic hash)를 사용하는 것을 포함한다. 암호 해시, 또는 단순히 "해시"는 실행가능한 파일을 요약된 형태 또는 다이제스트(digest)로 컴파일한다. 신뢰된 해시는 해시의 생성 시에, 양호한 것으로 알려지거나, 오염되지 않은 코드를 나타낸다. 실행가능한 파일(즉, 바이너리 이미지, 실행가능한 코드, 스크립트, 매크로 등)에 대한 신뢰된 해시를 생성하기 위해, 데이터와 같은 관련된 자원을 포함한 실행가능한 파일에 대해 메시지 다이제스트 또는 검사합 계산이 수행되어, 그 실행가능한 파일을 한 위치에서 다른 위치로 전송하기 전에 제1 결과를 획득한다. 전송된 실행가능한 파일에 대해 동일한 계산이 행해져, 제2 결과를 획득한다. 제1 결과는 제2 결과에 비교되어, 수신된 실행가능한 파일이 원래 전송되었던 동일한 데이터인지를 판정한다. 예를 들어, 계산 전과 후의 결과가 매칭되는 경우, 수신된 데이터는 정확할 것이다. 매칭되지 않는 경우, 수신된 실행가능한 파일은 오염된 것이다. 이러한 방식으로, 전체 바이너리 이미지 해시의 사용은 오염된 바이너리 이미지의 다운로딩 또는 설치의 위험을 효과적으로 감소시킨다.
부분적인 이미지 해시들을 이용하여 실행가능한 파일의 무결성을 검증하기 위한 시스템 및 방법이 개시된다. 일 양태에서, 복수의 부분적인 이미지 해시들이 생성되는데, 이들의 결합은 전체의 바이너리 이미지의 다이제스트(digest)를 나타낸다. 바이너리 이미지를 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 실행을 위해 바이너리 이미지의 일부분을 메모리에 페이징(paging)하고자 하는 요구가 인터셉트(intercept)된다. 이 요구를 인터셉트하는 것에 응답하여, 실행을 위해 이 일부분을 메모리에 페이징하기 전에, 이 일부분의 검증 해시가 계산된다. 검증 해시는 복수의 부분적인 이미지 해시들 중 하나의 부분적인 해시에 비교되어, 이 일부분의 코드 무결성을 판정한다. 이 부분적인 해시는 그 일부분과 동일한 코드 세그먼트를 나타낸다.
도면에서, 컴포넌트 참조 번호의 최좌측의 숫자는 컴포넌트가 처음에 나타나는 특정 도면을 식별한다.
개요
코드를 실행하기 전의 임의의 한 시점에서 실행가능한 코드의 일부분만을 메모리에 맵핑하는 것은 주로 프로세싱 및 메모리 자원을 효과적으로 이용하기 위해 수행된다. 예를 들어, 페이징은 임의의 한 시점에서 실행가능한 파일(예를 들어, PE 파일)로부터의 특정 개수의 바이트만을 코드로서 저장 장치로부터 메모리로 로딩/맵핑하기 위해 가상 메모리 오퍼레이팅 시스템에 의해 사용되는 기술이다. 예를 들어, 컴퓨터-프로그램이 메인 메모리 내에 있지 않은 페이지를 필요로 할 때, 오퍼레이팅 시스템은 그 요구된 페이지를 메모리에 복사한다. 다른 예에서, VB 스크립트 엔진과 같은 스크립트 엔진은 코드로서 저장 장치로부터 메모리로 스크립트의 일부분(임의의 페이지 또는 페이지 크기 개념에 관계없는 부분)을 맵핑할 수 있다.
실행을 위해 서로 다른 유형과 양의 실행가능한 코드를 메모리에 로딩하는 데 사용되는 서로 다른 기술들의 관점에서, 그리고, 설명의 목적상, 이후의 "일부분"이라는 구문은 임의의 개수의 바이트를 나타내며, 바이트 개수는 수행되는 특정 코드-대-메모리 로딩 동작에 적절한 것이다. 예를 들어, 페이징 동작에 있어서, "일부분" 또는 "부분"이라는 문구는 페이지 경계(하나 이상의 페이지)에 의해 윤곽이 정해진 다수의 바이트들을 말한다. 다른 예에서, 비-페이징 동작(예를 들어, 스크립팅 엔진에 의해 수행되는 실행가능한 코드 메모리 로딩 동작)에 관하여, "일부분" 또는 "부분"이라는 문구는 후속적인 실행을 위해 코드/스크립트를 메모리에 이동시키는 데 사용되는 특정 구현에 적절한 다수의 바이트를 말한다. 실행을 위해 실행가능한 코드를 메모리에 로딩하는 데 어떤 기술이 사용되는지에 관계없이, 그러한 일부분 내의 바이트의 개수는 임의적이며, 일반적으로 완전한 실행가능한 파일 내의 바이트들의 개수보다 더 적고, 이것은 일반적으로, 구현되는 특정 실행가능한 코드 로딩 아키텍처의 펑션(function)이다.
메모리에 로딩하기 위한 실행가능한 코드의 일부분의 바이트 크기가 일반적으로 전체 실행가능한 파일 크기보다 더 작은 이유는, 특히, 실행가능한 파일의 작은 일부분(예를 들어, 하나 이상의 페이지)만이 실행을 위해 스케줄링될 때, 일반 적으로 전체 실행가능한 파일을 메모리에 로딩하기 위해 요구되는 메모리 및 프로세싱 자원의 제한적인 양 때문이다. 예를 들어, 실행가능한 파일이 데이터 저장 장치 상에 설치된 후, 전체 이미지(실행가능한 파일)의 단일의 해시가 실행을 위해 그 이미지의 제1 부분을 메모리에 로딩하기 직전에 검증된 경우, 메모리 및 프로세서 자원은 효과적으로 사용되지 못할 것이다. 이것은, 전체-이미지 해시를 계산하는 것은 전체 실행가능한 파일을 메모리에 페이징하는 것을 요구할 것이기 때문이다.
그러한 프로세스는, 보통의 페이징 동작 환경 하에서, 될 수 있다 하더라도, 그 특정 시점에서는 페이징-인(paging in)되지 않을 코드, 데이터 및/또는 자원의 조각들로 페이징하는 것을 요구한다. 마찬가지로, 그러한 부분 로딩 동작은 실제로 자원 및 수행 비용의 면에서 제한적일 것이다. 이러한 이유로, 실행을 위해 코드의 일부분을 메모리에 맵핑하여 그 부분에 관련된 코드가 오염되었는지를 판정할 때 전체-이미지 해시를 사용하는 것은 실용적이지 못하다. 따라서, 실행가능한 코드 로딩 아키텍처는 일반적으로 실행을 위해 전체 실행가능한 파일보다 훨씬 더 적은 부분을 메모리에 로딩한다. 이것은 그 메모리 및 프로세싱 자원이 효과적으로 사용될 것을 보장한다.
상술된 관점에서, 실행가능한 파일의 일부분이 메모리에 페이징될 때, 최종의 전체 실행가능한 파일 해시 무결성 검사가 이루어진 이후에 그 부분이 오염된 경우, 기존 시스템은 오염된 코드가 실행되는 이후까지는 오염된 코드를 검출하지 못할 것이다. 이때까지, 오염된 코드는 시스템의 하나 이상의 부분의 무결성을 손 상시켰을 수 있다. 다시 말하면, 전체-이미지 무결성 검사를 구현하는 임의의 기존 시스템은 검사 후에 페이지가 오염된 경우 문제에 부딪힐 수 있다. 이러한 이유로, 실행가능한 파일은 여전히 실행하기 매우 위험하다.
통상적인 코드 무결성 인프라구조와 반대로, 실행가능한 파일 무결성을 검증하기 위한 다음의 설명되는 시스템 및 방법은, 부분적인 해시들을 사용하여, 시스템 상에 설치된 후에 오염된 임의의 코드를, 실행을 위해 그 코드를 메모리에 이동(페이징 등)시키기 직전에 검출한다. 이 시스템 및 방법은 통상적인 시스템의 전체-이미지 해시 인프라구조에 의존하지 않고서 이것을 성취한다. 이 때문에, 이 시스템 및 방법은 각각의 실행가능한 파일에 대해 복수의 해시들을 생성한다. 각각의 개별적인 해시는 실행가능한 파일의 각각의 부분을 나타내어, 각각의 해시가 실행가능한 파일의 바이트 전부보다 더 적은 다이제스트(digest)가 되도록 한다. 이 구현예에서, 예를 들어, 각각의 해시는 실행가능한 파일의 각각의 페이지의 다이제스트, 즉, 페이지별 해시이다. (페이지 내의 바이트의 개수는 임의적이며, 특정의 구현된 페이징 아키텍처의 펑션이다) 다른 구현예에서, 각각의 해시는 페이지별 해시가 아니지만, 실행가능한 파일의 하나의 페이지보다 더 적거나 하나의 페이지보다 더 많은 다이제스트를 나타낸다.
이 시스템 및 방법이 실행가능한 파일의 일부분(예를 들어, 페이지 또는 기타)을 저장 장치로부터 메모리로 로딩할 때, 이 시스템 및 방법은 오직 그 부분의 무결성만을 검사한다. 이것은, 그 부분이 실행가능한 파일(예를 들어, 전체 실행가능한 파일)의 임의의 추가적인/이질적인 부분을 로딩하지 않고서 검증되기 때문 에, 거의 자원 또는 수행 충돌에 이르지 않는다.
부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법이 예를 들어, 인-페이지 동작의 일부로서, 메모리에 로딩되는 실행가능한 파일의 오염 부분을 식별할 때, 그 오염 부분은 실행을 위해 메모리에 맵핑되지 않는다. 일 구현예에서, 페이징 동작 동안 실행가능한 파일의 오염 부분이 식별될 때, 대응하는 인-페이지 동작은 실패하고, 이것은 일 구현예에서, 예외 처리를 야기할 것이다. 이러한 방식으로, 이 시스템 및 방법은 코드가 실행될 수 있기 전에 코드의 오염 페이지를 검출한다. 이것은 실제로, 실행가능한 파일을 실행하는 위험을 감소시키고, 이에 의해, 실행가능한 파일을 포함하는 바이러스, 트로이 목마 등에 대한 추가적인 보호를 제공한다.
부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법의 이러한 양태 및 그 외의 양태는 이제 더 상세하게 설명된다.
예시적인 시스템
요구되지는 않지만, 부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법은 개인용 컴퓨터와 같은 컴퓨팅 장치에 의해 실행되는 컴퓨터-실행가능 명령어들(프로그램 모듈들)의 일반적 문맥으로 설명된다. 프로그램 모듈은 일반적으로, 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 이 시스템 및 방법은 상술한 문맥으로 설명되지만, 이후에 설명되는 단계 및 동작은 하드웨어로도 구현될 수 있다.
도 1은 부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 예시적인 시스템(100)을 도시한다. 이 구현예에서, 시스템(100)은 클라이언트 컴퓨팅 장치(102)를 포함한다. 컴퓨팅 장치(102)는 개인용 컴퓨터, 랩탑, 서버, 소형 인수 모바일 컴퓨팅 장치(예를 들어, 셀룰러 폰, PDA 또는 핸드헬드 컴퓨터) 등과 같은 임의의 유형의 컴퓨팅 장치이다. 컴퓨팅 장치(102)는 프로그램 모듈(104) 및 프로그램 데이터(106)를 포함한다. 프로그램 모듈(102)은 예를 들어, 실행가능한 파일의 각각의 부분에 대해 복수의 암호 해시들(즉, 부분적인 이미지 해시(108)들)을 생성하는 하나 이상의 컴퓨터-프로그램 모듈, 및 코드 페이징(또는 부분 로딩) 동작 동안 복수의 암호 해시들의 각각의 해시를 이용하여 실행가능한 파일을 검증하는 프로그램 모듈을 포함한다. 예를 들어, 부분별 실행가능한 파일 해싱 모듈(110)은 실행가능한 파일의 각각의 부분들에 대해 부분 이미지 해시들(108)을 생성한다. 이 구현예에서 파일 시스템 플러그-인(예를 들어, 필터 드라이버)인 이미지 부분 무결성 검증 모듈(112)은 코드 페이징 동작 동안 생성된 암호 해시를 이용하여 실행가능한 파일을 검증한다. 설명의 목적상, 부분적인 이미지 해시들(108)을 생성하는 암호 해싱에 대한 실행가능한 파일(들)은 "기타 데이터"(114)의 각각의 부분으로서 도시된다.
설명의 목적상, 부분별 실행가능한 파일 해싱 모듈(110) 및 이미지 부분 무결성 검증 모듈(112)은 하나의 컴퓨팅 장치(102) 상에서 구현되는 것으로 도시된다. 그러나, 이러한 프로그램 모듈들은 컴퓨팅 장치(102)의 프로그램 모듈(104) 및 프로그램 데이터(106)의 전부 또는 부분집합을 갖는 서로 다른 컴퓨팅 장치들 상에서 구현될 수 있다. 예를 들어, 일 실시예에서, 제1 컴퓨팅 장치는 제2 컴퓨팅 장치로의 설치 및/또는 다운로딩을 위해 실행가능한 파일 및 대응하는 부분적인 이미지 해시들(108)을 포함하는 패키지를 생성하는 실행가능한 파일 해싱 모듈(110)을 구현한다. 제2 컴퓨팅 장치는 코드 페이징(또는 부분 로딩) 동작 동안 복수의 암호 해시들의 각각의 해시를 이용하여 실행가능한 파일을 검증하는 이미지 부분 무결성 검증 모듈(112)을 구현한다.
이제, 먼저 부분별 실행가능한 파일 해싱 모듈(110)의 예시적인 동작을 설명하고, 그 후, 이미지 부분 무결성 검증 모듈(112)의 예시적인 동작을 설명함으로써, 시스템(100)의 동작을 더 상세하게 설명한다.
예시적인 부분별 실행가능한 파일 암호 해싱
상술한 바와 같이, 부분별 실행가능한 파일 해싱 모듈(110)은 실행가능한 파일의 각각의 부분들에 대한 부분적인 이미지 해시들(108)을 생성한다. 부분적인 이미지 해시들(108)의 각각의 부분적인 해시(108)는 실행가능한 파일의 각각의 부분의 해시를 나타내어, 각각의 해시(108)가 (전체 실행가능한 파일의 크기가 부분 크기 이하이지 않는 한) 실행가능한 파일의 바이트 전부보다 더 적은 다이제스트가 되도록 한다. 일 구현예에서, 예를 들어, 각각의 해시(108)는 페이지별 해시가 아니지만, 실행가능한 파일의 하나의 페이지보다 작거나 큰 다이제스트(즉, 페이지 크기 경계에 기초하지 않은 다이제스트)를 나타낸다. 이 구현예에서, 설명의 목적상, 각각의 해시(108)는 실행가능한 파일의 각각의 페이지의 다이제스트, 즉, 페이지별 해시이다. (페이지 내의 바이트의 개수는 임의적이며, 특정의 구현된 페이징 아키텍처의 펑션이다) 복수의 부분적인 해시들(108)을 생성하기 위해 부분별 실행가능한 파일 해싱 모듈(110)에 의해 구현된 특정 해싱 알고리즘(들)은 임의적이며, 바이너리 코드의 해시를 생성하는 데 사용되는 임의의 알고리즘일 수 있다. 그러한 알고리즘의 예는 예를 들어, SHA-1 및 MD5를 포함한다.
시스템(110)은 다수의 서로 다른 방법으로 실행가능한 파일을 그것의 대응하는 부분적인 이미지 해시들(108)과 연계시킬 수 있다. 일 구현예에서, 예를 들어, 시스템(100)은 생성 또는 갱신 시스템 카탈로그 어플리케이션("기타 프로그램 모듈"(118) 참조)을 이용하여, 실행가능한 파일 및 그것의 대응하는 부분적인 이미지 해시들(108)을 시스템 카탈로그(120)로 패키징한다. 그러한 패키징은 시스템 카탈로그(120) 생성 동작의 일부분, 또는 시스템 카탈로그(102) 갱신 프로세스의 일부분으로서 수행될 수 있다. 일 구현예에서, 시스템 카탈로그(120)는 부분적인 이미지 해시들(108)도 포함하는 캐비넷 파일 구조에 기초한다. 시스템 카탈로그 사용이 흔하더라도, 통상적인 시스템 카탈로그는 임의의 실행가능한 파일의 부분적인 이미지 해시들(108)을 포함하지 않는다. 오히려, 통상적인 시스템 카탈로그가 임의의 유형의 실행가능한 파일 해시를 포함하는 경우, 실행가능한 파일 해시는 전체 실행가능한 파일에 대한 단일의 실행가능한 파일 해시일 것이다. 일 구현예에서, 시스템 카탈로그(120)는 부분적인 이미지 해시들(108) 및 전체 실행가능한 파일 해시를 포함하고, 전체 실행가능한 파일 해시는 통상적인 코드 무결성 인프라구조와의 역방향의 호환성을 위한 것이다.
다른 구현예에서, 시스템(100)은 암호 서명 어플리케이션("기타 프로그램 모 듈"(118)을 참조)을 이용하여, 그것의 대응하는 부분적인 이미지 해시들(108)을 갖는 실행가능한 파일을 자가-서명된 파일(122)로 패키징한다. 이 구현예에서, 자가 서명된 파일은 PKCS#7 데이터 포맷이며, 최종-사용자가 궁극적인 인증 기관에 관련된 서명 및 X.509 인증서를 추적하게 한다. 일 구현예에서, 자가-서명된 파일(122)은 부분적인 이미지 해시들(108) 및 전체 실행가능한 파일 해시를 포함하며, 전체 실행가능한 파일 해시는 통상적인 코드 무결성 인프라구조와의 역방향의 호환성을 위한 것이다.
예시적인 실행가능한 파일 무결성 검증
시스템(100)이 부분적인 이미지 해시들(108)을 대응하는 실행가능한 파일에 연계하는(예를 들어, 실행가능한 파일과 그것의 부분적인 해시(108)를 시스템 카탈로그(120) 또는 자가-서명된 파일(122) 내로 연계하는) 방법에 상관없이, 그러한 연계는 이미지 부분 무결성 검증 모듈(112)이 최소의 자원 및 수행 충돌로 코드 로딩 동작 동안 실행가능한 파일 검증을 수행하게 한다. 이것은, 실행가능한 파일의 개별 부분들이 후속하는 실행을 위해 페이징(또는 부분 로딩) 동작 동안 저장 장치로부터 메모리로 복사될 때, 그 개별 부분들에 관련된 부분적인 이미지 해시들(108)의 각각의 해시는 개별 부분들을 검증하는 데 사용되기 때문이다. (예시적인 RAM, ROM, 및 디스크 드라이브, CD-ROM, DVD 등과 같은 저장 장치가 도시되고, 도 3을 참조하여 이하에 설명된다) 이하에서 설명되는 바와 같이, 이것은 이질적/추가적인 코드 및 자원(예를 들어, 페이지 또는 스크립트)을 메모리 내에 넣을 어떤 필요에도 관계없이 성취된다.
파일 시스템(116), 메모리 관리자(124) 및 이미지 부분 무결성 검증 모듈(112)은 오퍼레이팅 시스템(OS) 페이징(또는 부분 로딩) 동작 동안 협력하여, 실행을 위해 메모리 내에 넣어지는 실행가능한 파일의 일부분들을 검증한다. (일 실시예에서, 메모리 관리자 및 파일 시스템은 오퍼레이팅 시스템의 각각의 부분들로서 구현된다) 이 때문에, 실행 코드("기타 프로그램 모듈"(118) 참조)가 후속하는 실행을 위해 저장 장치 상에 저장되는 실행가능한 파일의 일부분을 로딩하기를 원할 때, 메모리 관리자(124)는 실행가능한 파일을 섹션 생성 프로세스의 일부로서 오픈하라는 오픈 요구를 파일 시스템(116)에 전송한다. 후속적으로, 메모리 관리자는 실행을 위해 실행가능한 파일의 하나 이상의 페이지들을 메모리에 페이징 또는 맵핑하라는 하나 이상의 인-페이지(또는 인-부분(in-portion)) 요구를 파일 시스템(116)에 전달한다. 설명의 목적상, 페이징 동작 동안, "인-부분 요구"는 인-페이지 요구이다. 다른 구현예에서 "인-부분 요구"는 페이지 경계가 아니라 오히려 구현되는 코드 로딩 아키텍처(예를 들어, 스크립팅 엔진 로딩 아키텍처 등)에 의해 윤곽이 정해진 임의의 다른 개수의 바이트에 대한 요구이다. 오픈, 인-페이지 요구 및 인-부분 요구는 "기타 데이터"(114)의 각각의 부분들로서 도시된다.
코드의 실행 전에 코드의 이러한 하나 이상의 부분의 무결성을 검증하기 위해, 실행가능한 파일 부분 무결성 검증 모듈(112)은 그러한 요구를 인터셉트한다. 오픈 파일(예를 들어, 생성 요구)의 수신에 응답하여, 실행가능한 파일 부분 무결성 검증 모듈(112)은 오픈 요구에 의해 식별된 데이터(타겟)의 소스를 평가하여, 타겟이 데이터인지 코드인지를 판정한다. 데이터는 일반적으로, 코드로서 맵핑되 지 않으며, 반대로도 마찬가지다. 타겟이 코드로서 맵핑되는 경우, 실행가능한 파일 부분 무결성 검증 모듈(112)은 타겟에 관련된 부분적인 이미지 해시들(108)의 위치를 알아내고, 그 해시들 각각을 메모리에 맵핑한다. 일 구현예에서, 이것은 부분적인 이미지 해시들이 시스템 카탈로그(120) 내에 패키징되는지 아니면 자가-서명된 파일(122) 내에 패키징되는지의 판정에 의해 성취된다. 이것을 성취하기 위해, 실행가능한 파일 부분 무결성 검증 모듈(112)은 우선, 부분별 실행가능한 파일 해싱 모듈(110)에 의해 부분적인 이미지 해시들(108)을 생성하는 데 사용된 동일한 알고리즘을 이용하여 실행가능한 파일의 헤더의 해시를 계산한다. 계산된 해시는 부분적인 이미지 해시들(108) 각각과 동일한 구성가능한 바이트 크기이다. 설명의 목적상, 이 계산된 해시는 "기타 데이터"(114) 내의 "검증을 위해 계산된 해시들"의 각각의 해시로서 도시된다.
실행가능한 파일 부분 무결성 검증 모듈(112)은 계산된 해시를 시스템 카탈로그(120)에 저장된 부분적인 이미지 해시들(108)의 각각의 해시에 비교하여, 계산된 해시의 모든 비트들에 매칭되는 관련된 부분적인 이미지 해시(108)를 갖는 실행가능한 파일을 검색한다. 그러한 매칭되는 해시(108)가 발견되면, 관심있는 실행가능한 파일이 "카탈로그-서명되거나" 시스템 카탈로그(120)에 나타난다. 이 경우에, 실행가능한 파일 부분 무결성 검증 모듈(112)은 실행가능한 파일에 관련된 부분적인 이미지 해시들(108) 각각을 RAM에 판독해 낸다. 이러한 복사 동작은, 해시 리스트는 실행불가능한 데이터 파일로부터의 데이터이며 실행가능한 바이너리로부터 판독되거나 페이징-인되지 않기 때문에, 무결성-검사된 페이징(또는 기타 코드 부분 로딩) 동작이 아님을 유념한다.
관심있는 실행가능한 파일(타겟)이 서명된 카탈로그가 아니면, 실행가능한 파일 부분 무결성 검증 모듈(112)은 관심있는 실행가능한 파일이 예를 들어, 내장된 PKCS#7 서명된 컨텐츠를 이용하여 자가-서명되는지를 판정한다. 자가-서명된다면, 검증 필터(112)는 인증서 데이터를 판독하고, 인증서가 궁극적으로 공지된/신뢰된 인증서 루트의 집합 중 하나에까지 추적될 수 있음을 검증하고, 내장된 페이지별 해시들(108)의 리스트(타겟의 서명에 위치함)를 메모리에 복사한다. 일 구현예에서, 자가-서명된 파일은 또한, 통상적인 코드 무결성 검사를 수행하기 위해 실행가능한 파일의 전체 해시를 포함한다.
인터셉트에 응답하여, 실행가능한 파일 부분 무결성 검증 모듈(112)에 의해, "인-부분" 요구는 실행가능한 파일의 하나 이상의 부분에 대해 메모리 관리자(124)에 의해 파일 시스템(116)에 전달되었고(이 때, 실행가능한 파일은 이전의 오픈 파일 요구의 대상이었음), 실행가능한 파일 부분 무결성 검증 모듈(112)은 요구된 하나 이상의 부분의 각각의 부분의 무결성을 검증한다. 특히, 실행가능한 파일 부분 무결성 검증 모듈(112)은 인-페이지/인-부분 요구에 의해 식별된 각각의 페이지/부분에 대한 해시를 계산하고, 각각의 해시를 그 부분의 사전 계산된 대응하는 부분적인 이미지 해시(108)에 비교한다. (부분적인 이미지 해시들(108)은 상술된 바와 같이, 오픈 파일 요구에 응답하여 메모리에 복사되었다)
계산된 해시와 저장된 해시가 매칭되면, 실행가능한 파일 부분 무결성 검증 모듈(112)은 인-페이지/인-부분 동작이 완료하게 하여, 결국 요구된 부분이 실행을 위해 메모리에 맵핑되게 한다. 계산된 해시 및 대응하는 부분적인 이미지 해시(108)가 매칭되지 않으면, 실행가능한 파일 부분 무결성 검증 모듈(112)은 인-페이지/인-부분 요구를 실패시키고, 수정된/오염된/변경된 코드는 코드로서 메모리에 넣어지지 못하고, 따라서, 후속적으로 실행되지 못한다.
상술한 관점에서, 시스템(100)은 페이징 및 기타 메모리 코드 로딩 동작을 구현하여 실행가능한 파일의 일부분(예를 들어, 페이지)을 저장 장치로부터 메모리에 넣기 때문에, 시스템(100)은 넣어지는 코드의 그 부분만의 무결성을 검사한다. 실행가능한 파일의 임의의 추가적인/이질적인 부분을 로딩하지 않고서 그 부분만이 검색되기 때문에, 이것으로 인해, 자원 또는 수행 충돌이 거의 일어나지 않는다.
예시적인 프로시저
도 2는 부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 예시적인 프로시저(200)를 도시한다. 설명의 목적상, 프로시저의 동작은 도 1의 컴포넌트과 관련하여 설명된다. 컴포넌트 참조 번호의 최좌측 숫자는 그 컴포넌트가 처음으로 나타나는 특정 도면을 식별한다. 블럭(202)에서, 부분별 실행가능한 파일 해싱 모듈(도 1의 110)은 실행가능한 파일에 대한 부분적인 이미지 해시들(108)을 생성한다. 블럭(204)에서, 부분적인 이미지 해시들(108)은 실행가능한 파일에 관련된다. 일 구현예에서, 이것은 실행가능한 파일 및 부분적인 이미지 해시들(108)을 시스템 카탈로그(120)에 캡슐화함으로써 성취된다. 다른 구현예에서, 이것은 실행가능한 파일 및 부분적인 이미지 해시들(108)을 자가-서명된 파일(122)에 캡슐화함으로써 성취된다. 시스템 카탈로그(120) 및/또는 자가 서명된 파일 (122)은 상이한 컴퓨팅 장치 상에서 설치 또는 다운로딩될 수 있다.
블럭(206)에서, 이미지 부분 무결성 검증 모듈(도 1의 112)은 메모리 관리자(124)로부터 파일 시스템(116)으로의 파일 오픈(섹션 생성) 요구를 인터셉트한다. 블럭(208)에서, 파일 오픈 요구의 수신에 응답하여, 이미지 부분 무결성 검증 모듈(112)은 요구의 타겟 데이터 소스를 평가하여, 그것이 코드(실행가능한 파일)인지 데이터(실행가능한 파일이 아님)인지를 판정한다. 타겟이 실행가능한 파일이면, 이미지 부분 무결성 검증 모듈(112)은 타겟에 관련된 각각의 부분적인 이미지 해시(108)의 위치를 알아내고, 빠른 액세스(예를 들어, 부분적인 이미지 해시들(108) 중 하나 이상에 관련된 인-페이지 요구가 수신될 때의 액세스)를 위해 그것들을 메모리에 복사한다. 블럭(210)에서, 메모리 관리자(124)에 의해 파일 시스템(116)에 전달된 인-페이지 또는 인-부분 요구를 인터셉트하는 것에 응답하여, 이미지 부분 무결성 검증 모듈(112)은 인터셉트된 요구에 의해 타겟된 코드의 부분에 대해 해시(검증을 위해 계산된 해시)를 계산한다. 그 코드의 부분은, 그 부분이 후속적으로 오염되지 않은 것으로서 검증되는 경우, 실행을 위해 메모리에 넣어지기 위해 파일 시스템에 의해 데이터 저장 위치에서 벗어났다.
이 때문에, 블럭(212)에서, 이미지 부분 무결성 검증 모듈(112)은 계산된 해시를 대응하는 하나의 부분적인 이미지 해시(108)에 비교하여, 인터셉트된 요구를 통해 요구된 그 코드의 부분을 검증한다(블럭 210). 블럭(214)에서, 그 코드의 부분이 오염되지 않은 것으로 판정된 경우(즉, 계산된 해시가 대응하는 하나의 부분적인 이미지 해시(108)에 매칭되는 경우), 이미지 부분 무결성 검증 모듈(112)은 후속적인 실행을 위해 페이징 동작 동안 그 코드의 부분이 메모리에 맵핑되게 한다. 그와 달리, 블럭(216)에서, 그 코드의 부분이 오염된 것으로 판정된 경우(즉, 계산된 해시가 대응하는 하나의 부분적인 이미지 해시(108)에 매칭되지 않는 경우), 이미지 부분 무결성 검증 모듈(112)은 인터셉트된 요구를 실패시켜, 그 코드의 부분이 실행을 위해 메모리에 맵핑되지 못하도록 한다.
예시적인 오퍼레이팅 환경
도 3은 부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법이 전체적으로 또는 부분적으로 구현될 수 있는 적합한 컴퓨팅 환경(300)의 예를 도시한다. 예시적인 컴퓨팅 환경(300)은 도 1의 예시적인 시스템 및 도 2의 예시적인 동작에 적합한 컴퓨팅 환경의 일례일 뿐이며, 여기에 설명된 시스템 및 방법의 사용 또는 기능의 범위에 대하여 어떤 제한도 제시하지 않는 것으로 의도된다. 컴퓨팅 환경(300)은 컴퓨팅 환경(300)에서 설명되는 컴포넌트들 중 임의의 하나 또는 그의 조합에 관하여 어떤 의존성 또는 요구조건을 갖는 것으로 해석되어서는 안된다.
본 명세서에서 설명된 방법 및 시스템은 다수의 기타 범용 또는 특수 목적 컴퓨팅 시스템, 환경 또는 구성과 함께 동작가능하다. 사용에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예는 개인용 컴퓨터, 랩탑, 스몰 폼 팩터(small form factor) 모바일 컴퓨팅 장치(예를 들어, 셀룰러 폰, PDA 또는 핸드헬드 컴퓨터), 서버 컴퓨터, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상술된 시스템 또는 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이것으로 제한되지 않는다. 프레임워크의 컴팩트 또는 서브셋 버전도 핸드헬드 컴퓨터 또는 기타 컴퓨팅 장치와 같은 제한된 자원의 클라이언트에서 구현될 수 있다. 본 발명은 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬과 원격 메모리 저장 장치 모두에 배치될 수 있다.
도 3을 참조하면, 예시적인 시스템(300)은 부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법이 전체적으로 또는 부분적으로 구현될 수 있는 적합한 컴퓨팅 환경의 예를 도시한다. 시스템(300)은 예를 들어, 도 1의 클라이언트 컴퓨터(102)를 구현하는 컴퓨터(310) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(310)의 컴포넌트는 프로세싱 유닛(들)(320), 시스템 메모리(330), 및 시스템 메모리를 포함한 다양한 시스템 컴포넌트들을 프로세싱 유닛(320)에 연결하는 시스템 버스(321)를 포함할 수 있지만, 이것으로 제한되지 않는다. 시스템 버스(321)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처들 중 임의의 것을 사용한 로컬 버스를 포함하는 다양한 유형의 버스 구조들 중 임의의 것일 수 있다. 예를 들어, 그러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌 버스로도 알려진 PCI(Peripheral Component Interconnect) 버스를 포함할 수 있지만, 이것으로 제한되지 않는다.
컴퓨터(310)는 일반적으로 다양한 컴퓨터-판독가능 매체를 포함한다. 컴퓨터-판독가능 매체는 컴퓨터(310)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 둘 다를 포함한다. 예를 들어, 컴퓨터-판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이것으로 제한되지 않는다. 컴퓨터 저장 매체는 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 선택적인 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 요구된 정보를 저장하는 데 사용될 수 있고 컴퓨터(310)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만, 이것으로 제한되지 않는다.
통신 매체는 일반적으로, 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 또는 기타 전송 메커니즘과 같은 변조된 데이터 신호로 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 설정 또는 변경된 특징들 중 하나 이상을 갖는 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하지만, 이것으로 제한되지 않는다. 상술된 것들 중 임의의 조합도 컴퓨터-판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리(330)는 ROM(331) 및 RAM(332)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시작할 때 등에, 컴퓨터(310) 내의 구성요소들 간의 정보의 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(333)(BIOS)은 일반적으로 ROM(331)에 저장된다. RAM(332)은 일반적으로 프로세싱 유닛(320)에 의해 즉시 액세스가능하고/하거나 현재 동작 중인 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들어, 도 1은 오퍼레이팅 시스템(334), 어플리케이션 프로그램(335), 기타 프로그램 모듈(336) 및 프로그램 데이터(337)를 도시하지만, 이것으로 제한되지 않는다.
컴퓨터(310)는 또한, 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 3은 비분리형, 비휘발성 자기 매체에 대해 판독 또는 기입하는 하드 디스크 드라이브(341), 분리형, 비휘발성 자기 디스크(352)에 대해 판독 또는 기입하는 자기 디스크 드라이브(351), 및 CD ROM 또는 기타 광 매체와 같은 분리형, 비휘발성 광 디스크(356)에 대해 판독 또는 기입하는 광 디스크 드라이브(355)를 도시한다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이것으로 제한되지 않는다. 하드 디스크 드라이브(341)는 일반적으로, 인터페이스(340)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(321)에 접속되고, 자기 디스크 드라이브(351) 및 광 디스크 드라이브(355)는 일반적으로, 인터페이스(350)와 같은 분리형 메모리 인터페이스에 의해 시스템 버 스(321)에 접속된다.
상술되고 도 3에 도시된 드라이브 및 관련 컴퓨터 저장 매체는 컴퓨터(310)에 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 3에서, 예를 들어, 하드 디스크 드라이브(341)는 오퍼레이팅 시스템(344), 어플리케이션 프로그램(345), 기타 프로그램 모듈(346) 및 프로그램 데이터(347)를 저장하는 것으로서 도시된다. 이러한 컴포넌트는 오퍼레이팅 시스템(334), 어플리케이션 프로그램(335), 기타 프로그램 모듈(336) 및 프로그램 데이터(337)와 동일하거나 상이할 수 있음을 유념한다. 어플리케이션 프로그램(335)은 예를 들어, 도 1의 프로그램 모듈(104)을 포함한다. 프로그램 데이터(337)는 예를 들어, 도 1의 프로그램 데이터(106)를 포함한다. 오퍼레이팅 시스템(344), 어플리케이션 프로그램(345), 기타 프로그램 모듈(346) 및 프로그램 데이터(347)는 그것들이 적어도 서로 다른 복사본이라는 것을 나타내기 위해 본 명세서에서 서로 다른 번호들을 부여 받는다.
사용자는 키보드(362), 및 주로 마우스, 트랙볼 또는 터치 패드라고 불리는 포인팅 장치(361)와 같은 입력 장치를 통해 컴퓨터(310)에 명령어 및 정보를 입력할 수 있다. 기타 입력 장치(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스(321)에 연결된 사용자 입력 인터페이스(360)를 통해 프로세싱 유닛(320)에 접속되지만, 병렬 포트, 게임 포트 또는 USB와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다.
모니터(391) 또는 기타 유형의 디스플레이 장치도 비디오 인터페이스(390)와 같은 인터페이스를 통해 시스템 버스(321)에 접속된다. 모니터 외에, 컴퓨터는 또한, 출력 주변장치 인터페이스(395)를 통해 접속될 수 있는 프린터(396) 및 오디오 장치(397)와 같은 기타 주변 출력 장치도 포함할 수 있다.
컴퓨터(310)는 원격 컴퓨터(380)와 같은 하나 이상의 원격 컴퓨터로의 논리 접속을 이용한 네트워크 환경에서 동작한다. 일 구현예에서, 원격 컴퓨터(380)는 코드 페이징 동작 동안의 이미지 부분 무결성 검증 모듈(112)의 로컬 구현으로, 후속적인 실행가능한 파일 부분에 대해 도 1의 실행가능한 파일 및 부분적인 이미지 해시들(108)을 설치 또는 다운로딩하는 컴퓨팅 장치를 나타낸다. 원격 컴퓨터(380)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 공통 네트워크 노드일 수 있으며, 도 3에는 메모리 저장 장치(381)만이 도시되었지만, 그것의 특정 구현의 기능으로서, 컴퓨터(102)에 관해 상술된 구성요소들(예를 들어, 프로그램 모듈(들)(104) 및 프로그램 데이터(106) 등) 중 다수 또는 전부를 포함할 수 있다. 도 3에 도시된 로컬 접속은 LAN(371) 및 WAN(373)을 포함하지만, 기타 네트워크도 포함할 수 있다. 그러한 네트워크 환경은 사무실, 기업형 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔하다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(310)는 네트워크 인터페이스 또는 어댑터(370)를 통해 LAN(371)에 접속된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(310)는 일반적으로 인터넷과 같은 WAN(373)을 통해 통신을 설정하기 위한 모뎀(372) 또는 기타 수단을 포함한다. 내장 또는 외장일 수 있는 모뎀(372)은 사용 자 입력 인터페이스(360) 또는 기타 적절한 메커니즘을 통해 시스템 버스(321)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(310)에 관해 도시된 프로그램 모듈, 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예를 들어, 도 3은 원격 어플리케이션 프로그램(385)을 메모리 장치(381) 상에 상주하는 것으로서 도시하지만, 이것으로 제한되지 않는다. 도시된 네트워크 접속은 예시적이며, 컴퓨터들 간의 통신 링크를 설정하는 기타 수단이 사용될 수 있다.
결론
부분적인 해시들을 이용하여 실행가능한 파일 무결성을 검증하기 위한 시스템 및 방법은 구조적 특징 및/또는 방법론적 동작 또는 액션에 특수한 언어로 설명되었지만, 첨부된 청구범위 내에 정의된 구현은 설명된 이러한 특정 특징 또는 액션으로 반드시 제한되지 않는다는 것을 이해한다. 예를 들어, 이미지 부분 무결성 검증 모듈(112)은 플러그-인으로서 파일 시스템(116)에 통합되는 것으로 도시되지만, 프로그램 모듈(112)은 파일 시스템 외에 프로그램 모듈에도 플러그-인 아니면 통합될 수 있다. 예를 들어, 일 구현예에서, 이미지 부분 무결성 검증 모듈(112)의 동작은 메모리 관리자(124)에 의해 (플러그-인 또는 그 외의 것으로서) 직접 액세스된다. 따라서, 특정 특징 및 동작은 특허청구된 주제를 구현하는 예시적인 형태로서 개시된다.
부분적인 해시를 이용하여 실행가능한 파일 무결성을 검증하기 위한 본 발명의 시스템 및 방법은, 실행가능한 파일을 실행하는 위험을 감소시키고, 이에 의해, 실행가능한 파일을 포함하는 바이러스, 트로이 목마 등에 대한 추가적인 보호를 제공한다.

Claims (20)

  1. 컴퓨터-구현된 방법으로서,
    실행가능한 파일을 나타내는 복수의 부분적인 이미지 해시들을 생성하는 단계 - 상기 복수의 부분적인 이미지 해시들의 각각의 부분적인 해시는 상기 실행가능한 파일의 바이트 전부보다 적은 바이트를 나타냄 - ;
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 실행을 위해 상기 실행가능한 파일의 일부분을 메모리에 페이징(paging)하라는 요구를 인터셉트하는 단계;
    상기 요구를 인터셉트하는 것에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하기 전에,
    상기 일부분의 검증 해시를 계산하는 단계; 및
    상기 검증 해시를, 상기 복수의 부분적인 이미지 해시들 중에서 상기 일부분과 동일한 코드 세그먼트를 나타내는 하나의 부분적인 해시에 비교하여 상기 일부분의 코드 무결성을 판정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 부분적인 이미지 해시들은 상기 실행가능한 파일을 상기 컴퓨팅 장치 상에 로딩하기 전에 계산되는 방법.
  3. 제1항에 있어서,
    상기 복수의 부분적인 이미지 해시들은 시스템 카탈로그 또는 자가-서명된(self-signed) 암호 파일 내에 저장되는 방법.
  4. 제1항에 있어서,
    상기 검증 해시가 상기 부분적인 해시에 매칭된다고 판정하는 단계; 및
    상기 판정에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하는 단계
    를 더 포함하는 방법.
  5. 제1항에 있어서,
    상기 검증 해시가 상기 부분적인 해시에 매칭되지 않는다고 판정하는 단계; 및
    상기 판정에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하라는 요구를 실패시키는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 상기 실 행가능한 파일에 대한 코드 세그먼트를 생성하라는 오픈 요구를 인터셉트하는 단계;
    상기 오픈 요구를 인터셉트하는 것에 응답하여,
    상기 실행가능한 파일의 헤더의 식별 해시를 계산하는 단계;
    상기 식별 해시를 시스템 카탈로그 내에 저장된 복수의 부분적인 실행가능한 파일 해시들 각각에 비교하여, 상기 헤더에 매칭되는 복수의 부분적인 바이너리 해시들 중 하나의 해시를 식별하는 단계 - 상기 해시는 상기 복수의 부분적인 이미지 해시들 중 제1 해시임 - ; 및
    상기 해시의 위치를 알아내는 것에 응답하여, 실행을 위해 상기 실행가능한 파일의 하나 이상의 부분들을 메모리에 페이징하는 것에 응답하는 후속적인 부분적인 이미지 해시 코드 무결성 검증 동작을 위해, 상기 실행가능한 파일의 복수의 부분적인 이미지 해시들을 상기 시스템 카탈로그로부터 메모리로 복사하는 단계
    를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 상기 실행가능한 파일에 대한 코드 세그먼트를 생성하라는 오픈 요구를 인터셉트하는 단계; 및
    상기 오픈 요구를 인터셉트하는 것, 및 상기 실행가능한 파일이 자가-서명된 암호 파일이라고 판정하는 것에 응답하여, 실행을 위해 상기 실행가능한 파일의 하 나 이상의 부분들을 메모리에 페이징하는 것에 응답하는 후속적인 부분적인 이미지 해시 코드 무결성 검증 동작을 위해, 상기 복수의 부분적인 이미지 해시들을 상기 자가-서명된 암호 파일로부터 메모리로 복사하는 단계
    를 더 포함하는 방법.
  8. 프로세서에 의해 실행가능한 컴퓨터-프로그램 명령어들을 포함하는 컴퓨터-판독가능 매체로서, 상기 컴퓨터-프로그램 명령어들은,
    실행가능한 파일의 다이제스트(digest)를 나타내는 복수의 부분적인 이미지 해시들을 생성하고 - 상기 복수의 부분적인 이미지 해시들의 각각의 부분적인 해시는 상기 실행가능한 파일의 바이트 전부보다 적은 바이트를 나타냄 - ,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 실행을 위해 상기 실행가능한 파일의 일부분을 메모리에 페이징하라는 요구를 인터셉트하고,
    상기 요구를 인터셉트하는 것에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하기 전에,
    상기 일부분의 검증 해시를 계산하고,
    상기 검증 해시를, 상기 복수의 부분적인 이미지 해시들 중에서 상기 일부분과 동일한 코드 세그먼트를 나타내는 하나의 부분적인 해시에 비교하여 상기 일부분의 코드 무결성을 판정하는 컴퓨터-판독가능 매체.
  9. 제8항에 있어서,
    상기 복수의 부분적인 이미지 해시들은 상기 실행가능한 파일을 상기 컴퓨팅 장치 상에 로딩하기 전에 계산되는 컴퓨터-판독가능 매체.
  10. 제8항에 있어서,
    상기 복수의 부분적인 이미지 해시들은 시스템 카탈로그 또는 자가-서명된 암호 파일 내에 저장되는 컴퓨터-판독가능 매체.
  11. 제8항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 검증 해시가 상기 부분적인 해시에 매칭된다고 판정하고,
    상기 판정에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하는
    명령어들을 더 포함하는 컴퓨터-판독가능 매체.
  12. 제8항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 검증 해시가 상기 부분적인 해시에 매칭되지 않는다고 판정하고,
    상기 판정에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하라는 요구를 실패시키는
    명령어들을 더 포함하는 컴퓨터-판독가능 매체.
  13. 제8항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 상기 실행가능한 파일에 대한 코드 세그먼트를 생성하라는 오픈 요구를 인터셉트하고,
    상기 오픈 요구를 인터셉트하는 것에 응답하여,
    상기 실행가능한 파일의 헤더의 식별 해시를 계산하고,
    상기 식별 해시를 시스템 카탈로그 내에 저장된 복수의 부분적인 실행가능한 파일 해시들 각각에 비교하여, 상기 헤더에 매칭되는 복수의 부분적인 바이너리 해시들 중 하나의 해시를 식별하고 - 상기 해시는 상기 복수의 부분적인 이미지 해시들 중 제1 해시임 - ,
    상기 해시의 위치를 알아내는 것에 응답하여, 실행을 위해 상기 실행가능한 파일의 하나 이상의 부분들을 메모리에 페이징하는 것에 응답하는 후속적인 부분적인 이미지 해시 코드 무결성 검증 동작을 위해, 상기 실행가능한 파일의 복수의 부분적인 이미지 해시들을 상기 시스템 카탈로그로부터 메모리로 복사하는
    명령어들을 더 포함하는 컴퓨터-판독가능 매체.
  14. 제8항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 상기 실 행가능한 파일에 대한 코드 세그먼트를 생성하라는 오픈 요구를 인터셉트하고,
    상기 오픈 요구를 인터셉트하는 것, 및 상기 실행가능한 파일이 자가-서명된 암호 파일이라는 판정하는 것에 응답하여, 실행을 위해 상기 실행가능한 파일의 하나 이상의 부분들을 메모리에 페이징하는 것에 응답하는 후속적인 부분적인 이미지 해시 코드 무결성 검증 동작을 위해, 상기 복수의 부분적인 이미지 해시들을 상기 자가-서명된 암호 파일로부터 메모리로 복사하는
    명령어들을 더 포함하는 컴퓨터-판독가능 매체.
  15. 컴퓨팅 장치로서,
    프로세서; 및
    상기 프로세서에 연결되어 있고, 상기 프로세서에 의해 실행가능한 컴퓨터-프로그램 명령어들을 포함하는 메모리
    를 포함하고,
    상기 컴퓨터-프로그램 명령어들은,
    실행가능한 파일의 다이제스트를 나타내는 복수의 부분적인 이미지 해시들을 생성하고 - 상기 복수의 부분적인 이미지 해시들의 각각의 부분적인 해시는 상기 실행가능한 파일의 바이트 전부보다 적은 바이트를 나타냄 - ,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 실행을 위해 상기 실행가능한 파일의 일부분을 메모리에 페이징하라는 요구를 인터셉트하고,
    상기 요구를 인터셉트하는 것에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하기 전에,
    상기 일부분의 검증 해시를 계산하고,
    상기 검증 해시를, 상기 복수의 부분적인 이미지 해시들 중에서 상기 일부분과 동일한 코드 세그먼트를 나타내는 하나의 부분적인 해시에 비교하여 상기 일부분의 코드 무결성을 판정하는 컴퓨팅 장치.
  16. 제15항에 있어서,
    상기 복수의 부분적인 이미지 해시들은 시스템 카탈로그 또는 자가-서명된 암호 파일 내에 저장되는 컴퓨팅 장치.
  17. 제15항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 검증 해시가 상기 부분적인 해시에 매칭된다고 판정하고,
    상기 판정에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하는
    명령어들을 더 포함하는 컴퓨팅 장치.
  18. 제15항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 검증 해시가 상기 부분적인 해시에 매칭되지 않는다고 판정하고,
    상기 판정에 응답하여, 실행을 위해 상기 일부분을 메모리에 페이징하라는 요구를 실패시키는
    명령어들을 더 포함하는 컴퓨팅 장치.
  19. 제15항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 상기 실행가능한 파일에 대한 코드 세그먼트를 생성하라는 오픈 요구를 인터셉트하고,
    상기 오픈 요구를 인터셉트하는 것에 응답하여,
    상기 실행가능한 파일의 헤더의 식별 해시를 계산하고,
    상기 식별 해시를 시스템 카탈로그 내에 저장된 복수의 부분적인 실행가능한 파일 해시들 각각에 비교하여, 상기 헤더에 매칭되는 복수의 부분적인 바이너리 해시들 중 하나의 해시를 식별하고 - 상기 해시는 상기 복수의 부분적인 이미지 해시들 중 제1 해시임 - ,
    상기 해시의 위치를 알아내는 것에 응답하여, 실행을 위해 상기 실행가능한 파일의 하나 이상의 부분들을 메모리에 페이징하는 것에 응답하는 후속하는 부분적인 이미지 해시 코드 무결성 검증 동작을 위해, 상기 실행가능한 파일의 복수의 부분적인 이미지 해시들을 상기 시스템 카탈로그로부터 메모리로 복사하는
    명령어들을 더 포함하는 컴퓨팅 장치.
  20. 제15항에 있어서,
    상기 컴퓨터-프로그램 명령어들은,
    상기 실행가능한 파일을 컴퓨팅 장치 상에 로딩하는 것에 후속하여, 상기 실행가능한 파일에 대한 코드 세그먼트를 생성하라는 오픈 요구를 인터셉트하고,
    상기 오픈 요구를 인터셉트하는 것, 및 상기 실행가능한 파일이 자가-서명된 암호 파일이라고 판정하는 것에 응답하여, 실행을 위해 상기 실행가능한 파일의 하나 이상의 부분들을 메모리에 페이징하는 것에 응답하는 후속적인 부분적인 이미지 해시 코드 무결성 검증 동작을 위해, 상기 복수의 부분적인 이미지 해시들을 상기 자가-서명된 암호 파일로부터 메모리로 복사하는
    명령어들을 더 포함하는 컴퓨팅 장치.
KR1020050114676A 2005-01-18 2005-11-29 부분적인 이미지 해시들을 이용하여 실행가능한 파일무결성을 검증하기 위한 시스템 및 방법 KR20060083850A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/037,566 2005-01-18
US11/037,566 US7577848B2 (en) 2005-01-18 2005-01-18 Systems and methods for validating executable file integrity using partial image hashes

Publications (1)

Publication Number Publication Date
KR20060083850A true KR20060083850A (ko) 2006-07-21

Family

ID=36293551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050114676A KR20060083850A (ko) 2005-01-18 2005-11-29 부분적인 이미지 해시들을 이용하여 실행가능한 파일무결성을 검증하기 위한 시스템 및 방법

Country Status (10)

Country Link
US (1) US7577848B2 (ko)
EP (1) EP1681609A1 (ko)
JP (1) JP2006202270A (ko)
KR (1) KR20060083850A (ko)
CN (1) CN1808326A (ko)
AU (1) AU2005234683A1 (ko)
BR (1) BRPI0506192A (ko)
CA (1) CA2530099A1 (ko)
MX (1) MXPA05013801A (ko)
RU (1) RU2005140018A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101320680B1 (ko) * 2011-10-26 2013-11-21 (주)유성글로벌 소프트웨어의 무결성 검사 장치 및 방법
KR20140130196A (ko) * 2012-03-29 2014-11-07 인텔 코오퍼레이션 블록 압축 이미지들의 압축 해제를 위한 시스템, 방법, 및 컴퓨터 프로그램 제품

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7627761B2 (en) * 2002-07-22 2009-12-01 Xerox Corporation System for authentication of JPEG image data
US7552342B1 (en) * 2005-02-16 2009-06-23 Rennie Glen Software, Llc Method and system for increasing the tamper resistance of a software application
US7490352B2 (en) 2005-04-07 2009-02-10 Microsoft Corporation Systems and methods for verifying trust of executable files
US8060860B2 (en) * 2005-04-22 2011-11-15 Apple Inc. Security methods and systems
US7669242B2 (en) * 2005-06-30 2010-02-23 Intel Corporation Agent presence monitor configured to execute in a secure environment
US7953980B2 (en) 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US8839450B2 (en) 2007-08-02 2014-09-16 Intel Corporation Secure vault service for software components within an execution environment
WO2007027427A2 (en) * 2005-08-29 2007-03-08 Wms Gaming Inc. On-the-fly encryption on a gaming machine
JP2007066271A (ja) * 2005-09-02 2007-03-15 Canon Inc 情報処理装置及びその制御方法、データ処理装置、並びにプログラム
JP4527640B2 (ja) * 2005-09-15 2010-08-18 株式会社ソニー・コンピュータエンタテインメント データ読出装置
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US20070157321A1 (en) * 2006-01-04 2007-07-05 Stephen Errico Method to improve the integrity of internet programs, websites and software
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7594136B2 (en) * 2006-04-19 2009-09-22 Microsoft Corporation Paging-triggered corrupted file recovery
US7730302B2 (en) * 2006-05-05 2010-06-01 Microsoft Corporation Secure and modifiable configuration files used for remote sessions
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US8963932B1 (en) 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8976008B2 (en) 2006-08-24 2015-03-10 Privacydatasystems, Llc Cross-domain collaborative systems and methods
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7802050B2 (en) * 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
WO2008056700A1 (fr) * 2006-11-09 2008-05-15 Panasonic Corporation Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals
GB0623933D0 (en) * 2006-11-29 2007-01-10 Ibm Apparatus and method for synchronizing controller firmware download
US8495383B2 (en) 2006-12-14 2013-07-23 Nokia Corporation Method for the secure storing of program state data in an electronic device
US20080163212A1 (en) * 2006-12-29 2008-07-03 Zimmer Vincent J Paralleled management mode integrity checks
US8375458B2 (en) 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
US8701187B2 (en) * 2007-03-29 2014-04-15 Intel Corporation Runtime integrity chain verification
US9092629B2 (en) * 2007-04-16 2015-07-28 The Directv Group, Inc. Method and apparatus for authenticating a code image upon starting a device
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8677241B2 (en) * 2007-09-10 2014-03-18 Vantrix Corporation Method and system for multimedia messaging service (MMS) to video adaptation
US8311058B2 (en) * 2008-05-10 2012-11-13 Vantrix Corporation Modular transcoding pipeline
US8220051B2 (en) * 2007-09-28 2012-07-10 Vantrix Corporation Generation and delivery of multimedia content-adaptation notifications
US9424266B2 (en) 2007-10-01 2016-08-23 Microsoft Technology Licensing, Llc Efficient file hash identifier computation
GB0719250D0 (en) * 2007-10-02 2007-11-14 Iti Scotland Ltd Anti-hack method
US8375219B2 (en) * 2007-10-24 2013-02-12 Microsoft Corporation Program and operation verification
US20090113166A1 (en) * 2007-10-31 2009-04-30 Agere Systems Inc. Hashing method for nand flash memory
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8171167B2 (en) * 2007-11-13 2012-05-01 Vantrix Corporation Intelligent caching of media files
US8099718B2 (en) * 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
WO2009065997A1 (en) * 2007-11-23 2009-05-28 Nokia Corporation Method for secure program code execution in an electronic device
US20090193211A1 (en) * 2008-01-24 2009-07-30 Broadcom Corporation Software authentication for computer systems
JP4944812B2 (ja) * 2008-02-20 2012-06-06 株式会社リコー 情報処理システムと情報処理方法とプログラム
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US9081962B2 (en) 2008-04-30 2015-07-14 Graeme Harkness Anti-tamper techniques
US8087086B1 (en) * 2008-06-30 2011-12-27 Symantec Corporation Method for mitigating false positive generation in antivirus software
US8108686B2 (en) * 2008-09-18 2012-01-31 Oracle America, Inc. Method and system for detecting modified pages
JP5255991B2 (ja) * 2008-10-24 2013-08-07 株式会社日立製作所 情報処理装置、及びコンピュータプログラム
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
US8839458B2 (en) * 2009-05-12 2014-09-16 Nokia Corporation Method, apparatus, and computer program for providing application security
US20110107325A1 (en) * 2009-11-03 2011-05-05 Jack Matthew Early Detection of Errors in a Software Installation
CN102771080B (zh) 2009-12-01 2016-03-16 万特里克斯公司 使用缓存的高效媒体传送的系统和方法
US10114678B2 (en) * 2010-03-19 2018-10-30 Micro Focus Software Inc. Techniques for managing service definitions in an intelligent workload management system
CN101901323B (zh) * 2010-07-22 2015-04-22 湖北盛天网络技术股份有限公司 一种监控程序模块加载活动的系统过滤方法
US8745750B2 (en) 2011-04-21 2014-06-03 Microsoft Corporation Origination verification using execution transparent marker context
US8584235B2 (en) 2011-11-02 2013-11-12 Bitdefender IPR Management Ltd. Fuzzy whitelisting anti-malware systems and methods
EP2626804B1 (en) * 2012-02-09 2017-09-13 Inside Secure Method for managing memory space in a secure non-volatile memory of a secure element
US8959362B2 (en) * 2012-04-30 2015-02-17 General Electric Company Systems and methods for controlling file execution for industrial control systems
US8973124B2 (en) 2012-04-30 2015-03-03 General Electric Company Systems and methods for secure operation of an industrial controller
US8964973B2 (en) 2012-04-30 2015-02-24 General Electric Company Systems and methods for controlling file execution for industrial control systems
US9046886B2 (en) 2012-04-30 2015-06-02 General Electric Company System and method for logging security events for an industrial control system
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US9112922B2 (en) 2012-08-28 2015-08-18 Vantrix Corporation Method and system for self-tuning cache management
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
EP2793160A1 (en) 2013-04-19 2014-10-22 Thomson Licensing Method and device for verification of an application
US9792436B1 (en) * 2013-04-29 2017-10-17 Symantec Corporation Techniques for remediating an infected file
US9471456B2 (en) 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US9270467B1 (en) * 2013-05-16 2016-02-23 Symantec Corporation Systems and methods for trust propagation of signed files across devices
US9852290B1 (en) * 2013-07-12 2017-12-26 The Boeing Company Systems and methods of analyzing a software component
EP2840492A1 (en) * 2013-08-23 2015-02-25 British Telecommunications public limited company Method and apparatus for modifying a computer program in a trusted manner
JP6244759B2 (ja) * 2013-09-10 2017-12-13 株式会社ソシオネクスト セキュアブート方法、半導体装置、及び、セキュアブートプログラム
US9479521B2 (en) 2013-09-30 2016-10-25 The Boeing Company Software network behavior analysis and identification system
JP6162652B2 (ja) 2014-06-20 2017-07-12 株式会社東芝 メモリ管理装置、プログラム、及び方法
JP6181004B2 (ja) * 2014-06-20 2017-08-16 株式会社東芝 メモリ管理装置、プログラム、及び方法
JP6584823B2 (ja) 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
US9836604B2 (en) 2015-01-30 2017-12-05 International Business Machines Corporation File integrity preservation
US9965639B2 (en) 2015-07-17 2018-05-08 International Business Machines Corporation Source authentication of a software product
US10922418B2 (en) 2015-10-01 2021-02-16 Twistlock, Ltd. Runtime detection and mitigation of vulnerabilities in application software containers
US10223534B2 (en) * 2015-10-15 2019-03-05 Twistlock, Ltd. Static detection of vulnerabilities in base images of software containers
US10567411B2 (en) 2015-10-01 2020-02-18 Twistlock, Ltd. Dynamically adapted traffic inspection and filtering in containerized environments
US10943014B2 (en) 2015-10-01 2021-03-09 Twistlock, Ltd Profiling of spawned processes in container images and enforcing security policies respective thereof
US10693899B2 (en) 2015-10-01 2020-06-23 Twistlock, Ltd. Traffic enforcement in containerized environments
US10599833B2 (en) 2015-10-01 2020-03-24 Twistlock, Ltd. Networking-based profiling of containers and security enforcement
US10664590B2 (en) 2015-10-01 2020-05-26 Twistlock, Ltd. Filesystem action profiling of containers and security enforcement
US10706145B2 (en) 2015-10-01 2020-07-07 Twistlock, Ltd. Runtime detection of vulnerabilities in software containers
US10586042B2 (en) 2015-10-01 2020-03-10 Twistlock, Ltd. Profiling of container images and enforcing security policies respective thereof
US10778446B2 (en) 2015-10-15 2020-09-15 Twistlock, Ltd. Detection of vulnerable root certificates in software containers
GB2545409B (en) * 2015-12-10 2020-01-08 Advanced Risc Mach Ltd Wear levelling in non-volatile memories
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US10616197B2 (en) 2016-04-18 2020-04-07 Atmel Corporation Message authentication with secure code verification
SI3295349T1 (sl) * 2016-05-13 2018-11-30 nChain Holdings Limited Postopek in sistem za verifikacijo integritete digitalnega sredstva z uporabo distribuirane hash tabele in peer-to-peer distribuiranega dnevnika
KR20180002349A (ko) * 2016-06-29 2018-01-08 에스프린팅솔루션 주식회사 화상 형성 장치에서 실행 파일의 위변조를 검증하는 방법 및 이를 이용하는 화상 형성 장치
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
JP6766598B2 (ja) * 2016-10-31 2020-10-14 セイコーエプソン株式会社 画像処理装置、画像処理方法および制御プログラム
US10567399B2 (en) 2017-03-28 2020-02-18 Cisco Technology, Inc. Fragmented malware hash lookup in cloud repository
GB2562079B (en) * 2017-05-04 2021-02-10 Arm Ip Ltd Continuous hash verification
CN109710315B (zh) * 2017-10-25 2022-05-10 阿里巴巴集团控股有限公司 Bios刷写方法及bios镜像文件的处理方法
US11190357B2 (en) * 2018-05-18 2021-11-30 Avive Solutions, Inc. Framework for ensuring software components are not corrupted
US11640372B2 (en) * 2018-06-12 2023-05-02 Sylabs Inc. System and method for providing a container environment in a single file
CN110955916B (zh) * 2018-09-26 2023-09-05 深信服科技股份有限公司 一种数据完整性保护方法、系统及相关设备
CN111310172B (zh) * 2018-12-12 2022-03-11 北京忆芯科技有限公司 通过反汇编验证处理器执行轨迹的方法及控制部件
EP3935511A4 (en) * 2019-03-04 2022-12-07 Saferide Technologies Ltd. EXECUTABLE MEMORY PAGE VALIDATION SYSTEM AND METHOD
TWI772648B (zh) * 2019-06-03 2022-08-01 銓鴻資訊有限公司 基於集體驗證的部分資料驗證方法
KR102415005B1 (ko) * 2019-08-21 2022-07-01 한국전자통신연구원 실행코드를 검증하는 하드웨어 보안모듈 및 그것을 갖는 디바이스 및 그것의 동작 방법
US11528276B2 (en) 2020-04-16 2022-12-13 Bank Of America Corporation System for prevention of unauthorized access using authorized environment hash outputs
US11423160B2 (en) * 2020-04-16 2022-08-23 Bank Of America Corporation System for analysis and authorization for use of executable environment data in a computing system using hash outputs
US11481484B2 (en) 2020-04-16 2022-10-25 Bank Of America Corporation Virtual environment system for secure execution of program code using cryptographic hashes
US11263109B2 (en) 2020-04-16 2022-03-01 Bank Of America Corporation Virtual environment system for validating executable data using accelerated time-based process execution
US11372982B2 (en) 2020-07-02 2022-06-28 Bank Of America Corporation Centralized network environment for processing validated executable data based on authorized hash outputs
US11895129B2 (en) * 2021-06-29 2024-02-06 Juniper Networks, Inc. Detecting and blocking a malicious file early in transit on a network
US12093401B2 (en) * 2021-10-27 2024-09-17 Dell Products L.P. Securing data storage by slicing swapped data portions into data fragments and shuffling physical storage location of data fragments
US20230179607A1 (en) * 2021-12-03 2023-06-08 Juniper Networks, Inc. Blocking or allowing a file stream associated with a file based on an initial portion of the file
CN114567496B (zh) * 2022-03-03 2024-02-20 浪潮云信息技术股份公司 一种进行云服务器镜像完整性校验的方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5892904A (en) 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
CN1307503C (zh) * 2002-04-23 2007-03-28 松下电器产业株式会社 服务器装置及程序管理系统
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US8332464B2 (en) * 2002-12-13 2012-12-11 Anxebusiness Corp. System and method for remote network access
US7565551B2 (en) 2003-02-19 2009-07-21 Microsoft Corporation Enhancing software integrity through installation and verification
US6961852B2 (en) * 2003-06-19 2005-11-01 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
US7103779B2 (en) * 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
US20050188214A1 (en) * 2004-02-23 2005-08-25 Worley John S. Authenticatable software modules
US7461259B2 (en) * 2004-06-30 2008-12-02 Nokia Corporation Method and apparatus to provide secure mobile file system
US7805765B2 (en) * 2004-12-28 2010-09-28 Lenovo (Singapore) Pte Ltd. Execution validation using header containing validation data
US7490352B2 (en) * 2005-04-07 2009-02-10 Microsoft Corporation Systems and methods for verifying trust of executable files

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101320680B1 (ko) * 2011-10-26 2013-11-21 (주)유성글로벌 소프트웨어의 무결성 검사 장치 및 방법
KR20140130196A (ko) * 2012-03-29 2014-11-07 인텔 코오퍼레이션 블록 압축 이미지들의 압축 해제를 위한 시스템, 방법, 및 컴퓨터 프로그램 제품

Also Published As

Publication number Publication date
BRPI0506192A (pt) 2006-09-19
US7577848B2 (en) 2009-08-18
CN1808326A (zh) 2006-07-26
RU2005140018A (ru) 2007-07-20
MXPA05013801A (es) 2007-11-14
CA2530099A1 (en) 2006-07-18
US20060161761A1 (en) 2006-07-20
AU2005234683A1 (en) 2006-08-03
JP2006202270A (ja) 2006-08-03
EP1681609A1 (en) 2006-07-19

Similar Documents

Publication Publication Date Title
US7577848B2 (en) Systems and methods for validating executable file integrity using partial image hashes
AU2006235153B2 (en) Systems and methods for verifying trust of executable files
US9832226B2 (en) Automatic curation and modification of virtualized computer programs
US9229881B2 (en) Security in virtualized computer programs
US9332021B2 (en) Methods and systems for preventing security breaches
US8352484B1 (en) Systems and methods for hashing executable files
US7337471B2 (en) Selective detection of malicious computer code
US7836504B2 (en) On-access scan of memory for malware
Alzahrani et al. An analysis of conti ransomware leaked source codes
US8656494B2 (en) System and method for optimization of antivirus processing of disk files
US8572730B1 (en) Systems and methods for revoking digital signatures
RU101235U1 (ru) Система проверки на присутствие вредоносного программного обеспечения с изменяемыми настройками проверки
KR101563059B1 (ko) 안티 멀웨어 시스템 및 안티 멀웨어 시스템에서의 데이터 처리 방법
CN116522343B (zh) 一种Native函数防御攻击的方法及装置
Halim et al. A lightweight binary authentication system for windows
RU85249U1 (ru) Аппаратный антивирус
Zhang et al. DRSA: Debug Register-Based Self-relocating Attack Against Software-Based Remote Authentication
Grebenyuk et al. Mac OS X Malware Vulnerabilities (November 2008)

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid