KR100752067B1 - 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 - Google Patents
동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR100752067B1 KR100752067B1 KR1020037001132A KR20037001132A KR100752067B1 KR 100752067 B1 KR100752067 B1 KR 100752067B1 KR 1020037001132 A KR1020037001132 A KR 1020037001132A KR 20037001132 A KR20037001132 A KR 20037001132A KR 100752067 B1 KR100752067 B1 KR 100752067B1
- Authority
- KR
- South Korea
- Prior art keywords
- executable image
- digital signature
- pointers
- authenticity
- executable
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
실행 가능한 이미지들의 무결성(integrity)을 증명하기 위한 시스템 및 방법이 개시된다. 시스템은, 프로그램 로더에 의해 픽스업되는 실행 가능한 이미지들의 부분들을 배제한 디지털 서명의 콘텐츠를 이용하여, 실행 가능한 이미지를 대한 기준 디지털 서명을 결정하는 런타임 확인기를 포함한다. 실행 가능한 이미지의 로딩에 후속하는 런타임 확인기는, 실행 가능한 이미지가 부적절하게 수정되지 않았음을 증명하기 위한 무결성 디지털 서명을 결정한다. 부가하여, 런타임 확인기는 실행 가능한 이미지 내의 포인터들 각각이 부적절하게 변경되지 않았음을 보증한다.
런타임 확인기, 디지털 서명, 임포트 테이블, 코드 섹션
Description
본 발명은 컴퓨터 시스템들에 관한 것이다. 특히, 본 발명은 동적으로 연결 가능한 실행 가능 이미지들의 진정성(authenticity)을 증명하는 시스템 및 방법에 관한 것이다.
이제, 새로운 객체 모델들(object models)은 런 타임(run time)에서 소프트웨어 애플리케이션들의 동적 통합(dynamic integration)을 제공한다. 예컨대, Microsoft Inc.에 의해 인가된 오퍼레이팅 시스템인 Windows는, 소프트웨어 애플리케이션의 실행 동안, 동적 링크 라이브러리를 갖는 소프트웨어 애플리케이션의 동적 통합을 허용한다. 소프트웨어 애플리케이션의 실행을 사용자가 요청하는 경우, 프로그램 로더는 "처리 이미지(process image)"를 생성하기 위하여 디스크 저장 장치로부터 메인 메모리로 애플리케이션의 "디스크 이미지"를 복사한다. 디스크 이미지는 그것이 로딩되기 전에 실행 가능한 이미지를 참조하는 반면, 처리 이미지는 그것이 메모리에 로딩된 후에 실행 가능한 이미지를 참조한다. 디스크 이미지 및 처리 이미지는 모두 전형적으로, 소프트웨어의 어느 부분들이 런 타임에서 동적 링크 라이브러리를 참조하기 위하여 픽스업(fix-up)될 필요가 있는지를 식별하는 픽스업 섹션을 포함한다.
로딩 후에, 처리 이미지는 디스크 이미지와 상당히 상이하다. 그러므로, 디스크 이미지에 관하여 준비된 체크섬(checksum)은, 비록 처리 이미지가 부적절하게 변질되지 않았을지라도, 처리 이미지의 체크섬과 더 이상 매칭하지 않는다.
그러므로, 동적 로딩 환경에서 소프트웨어 애플리케이션의 동일성(identity)을 증명할 수 있는 시스템에 대한 필요가 있다. 특히, 시스템은, 다른 데이터 객체에 동적으로 접속된 소프트웨어 애플리케이션이 소프트웨어 애플리케이션의 실행 뒤에 변질되었는지의 여부를 결정할 수 있어야 한다.
본 발명의 한 실시예는, 실행 가능한 이미지의 진정성(authenticity)을 결정하기 위한 시스템을 포함하고, 상기 시스템은 하나 이상의 포인터를 갖는 실행 가능한 이미지와, 포인터 각각을 배제한 실행 가능한 이미지의 선택된 콘텐트에 기초하여 기준 디지털 서명(reference digital signature)을 제 1 시점에서 발생시킬 수 있는 확인기를 포함하고, 확인기는 포인터 각각을 배제한 실행 가능한 이미지의 선택된 콘텐트에 기초하여 제 2 시점에서 진정성 디지털 서명(authenticity digital signature)을 발생시키며, 확인기는 기준 디지털 서명이 진정성 디지털 서명과 매칭하는지 여부를 결정한다.
본 발명의 다른 실시예는 실행 가능한 이미지의 진정성을 결정하기 위한 시스템을 포함하고, 상기 시스템은 하나 이상의 포인터를 갖는 실행 가능한 이미지를 포함하며, 실행 가능한 이미지는 포인터 각각이 실행 가능한 이미지 내에 있는 위치들을 참조하는지 여부를 지정하는 정보와, 포인터 각각이 실행 가능한 이미지 내에 있는 각각의 위치를 참조하는지 여부를 결정할 수 있는 확인기를 포함한다.
본 발명의 또 다른 실시예는 실행 가능한 이미지의 진정성을 결정하기 위한 시스템을 포함하고, 상기 시스템은, 제 1 실행 가능한 이미지, 제 1 실행 가능한 이미지 내의 위치를 참조하는 포인터를 포함하는 제 2 실행 가능한 이미지와, 포인터가 제 1 실행 가능한 이미지 내의 위치를 참조하는지 여부를 결정할 수 있는 확인기를 포함한다.
본 발명의 또 다른 실시예는 실행 가능한 이미지의 진정성을 결정할 수 있는 시스템을 포함하고, 상기 시스템은, 제 1 실행 가능한 이미지, 제 1 실행 가능한 이미지의 식별자와 하나 이상의 외부 포인터를 포함하는 임포트 테이블(import table)을 포함하는 제 2 실행 가능한 이미지로서, 외부 포인터 각각이 제 1 실행 가능한 이미지 내의 위치를 참조하는, 상기 제 2 실행 가능한 이미지, 기계 코드와 하나 이상의 임포트 포인터(import pointer)를 포함하는 코드 섹션으로서, 임포트 포인터 각각은 임포트 테이블 내의 위치를 참조하는, 상기 코드 섹션과, 실행 가능한 이미지의 선택된 콘텐트에 기초하여 기준 디지털 서명을 제 1 시점에서 발생시킬 수 있는 확인기로서, 선택된 콘텐트들이 임포트 포인터 및 외부 포인터 각각을 배제한, 상기 확인기를 포함하고, 확인기는 하나 이상의 포인터 각각을 배제한 실행 가능한 이미지의 선택된 콘텐트에 기초하여 제 2 시점에서 진정성 디지털 서명을 발생시키고, 확인기는 기준 디지털 서명이 진정성 디지털 서명과 매칭하는지 여부를 결정하고, 확인기는 임포트 포인터 각각이 제 1 실행 가능한 이미지 내의 위치를 참조하는지 여부를 결정하며, 확인기는 임포트 포인터는 제 1 실행 가능한 이미지 내의 위치를 참조하는지 여부를 결정한다.
도 1은 하나 또는 그 이상의 소스들로부터 실행 가능한 이미지를 수신하는데 적응되는 본 발명의 컴퓨터를 도시하는 블록도.
도 2는 도 1의 컴퓨터 상에 존재하는 하나 또는 그 이상의 실행 가능한 이미지들의 진정성을 결정할 수 있는 확인기(validator)를 도시하는 블록도.
도 3은 도 2의 실행 가능한 이미지들 중 하나의 내부 구조를 도시하는 블록도.
도 4는 로딩 프로세스 후에 링크되는 도 2의 2개의 실행 가능한 이미지들을 도시하는 블록도.
도 5는 도 2에 도시된 실행 가능한 이미지들 중 하나의 진정성 조사 동안 도 2의 확인기에 의해 실행된 프로세스를 도시하는 흐름도.
도 6은 도 2에 도시된 실행 가능한 이미지들 중 하나의 진정성 조사 동안 도 2의 확인기에 의해 실행된 다른 프로세스를 도시하는 흐름도.
본 발명의 상세한 설명
다음의 상세한 설명은 본 발명의 어떤 특정한 실시예들에 관한 것이다. 그 러나, 본 발명은 청구항들에 의해 정의되고 커버되는 것과 같이 다수의 상이한 방식들에 구현될 수 있다.
시스템 개요
도 1은 컴퓨터(90)를 도시하는 고레벨 블록도이다. 컴퓨터(90)는 컴퓨터(90) 상에 실행 중인 하나 이상의 실행 가능한 이미지들(100)에 대해 진정성 조사를 할 수 있게 한다.
컴퓨터(90)는 펜티엄®프로세서, 펜티엄®프로 프로세서, 8051 프로세서, MPS®프로세서, 파워 PC®프로세서, 또는 ALPHA®프로세서와 같은 임의의 종래 일반적인 목적의 단일 또는 멀티칩 마이크로프로세서를 이용할 수 있다. 부가하여, 컴퓨터(90)는 디지털 신호 프로세서 또는 그래픽 프로세서와 같은 임의의 종래 특별한 목적의 마이크로프로세서를 이용할 수 있다.
컴퓨터(90)는 오퍼레이팅 시스템(95)과 메모리(108)를 포함한다. 오퍼레이팅 시스템은 어떠한 오퍼레이팅 시스템 벤더(operating system vendor)에 의해서도 제공될 수 있고, UNIX, LINUX, Disk Operating System(DOS), OS/2, Windows 3.X, Windows 95, Windows 98과, Windows NT를 포함할 수 있다. 설명의 편의를 위해, Windows 95에 관한 본 발명의 실시예가 아래에 설명된다.
컴퓨터(90)는 실행 가능한 이미지(100)를 컴퓨터(90)에 제공하는 하나 이상의 실행 가능한 이미지 소스(107)와 통신한다. 도 1에 도시된 바와 같이, 예시적인 실행 가능한 이미지 제공자들은 서버 I(10), 인터넷(114), 데이터베이스(118), 네트워크(122), 하드웨어 장치(126), 및/또는 제거 가능한 저장 장치(130)를 포함한다.
실행 가능한 이미지(100)는 스스로 또는 다른 실행 가능한 이미지들과 함께 하나 이상의 소프트웨어 애플리케이션들을 규정할 수 있는 데이터 객체이다. 소프트웨어 애플리케이션들은, 예컨대, 워드 프로세서, 데이터베이스, 디지털 권리들 관리 시스템(digital rights management system), 개인용 재무 유틸리티(personal finance utility), 그래픽 툴, 인터넷 브라우저, 컴퓨터 게임, 통신 프로그램, 인증 프로그램(authorization program), 전자 지갑(electronic wallet), 멀티미디어 재생기(multi-media renderer) 또는 계약 관리자(contract manager)를 포함할 수 있다. 또한, 실행 가능한 이미지(100)는 다른 실행 가능한 이미지들과 동적으로 접속 가능하다. 예컨대, Windows 95와 함께 사용하기 위해 개발되는 본 발명의 실시예에서, 실행 가능한 이미지는 동적 링크 라이브러리(DLL)이다.
인터넷(114)은 공중 인터넷(public internet), 개인 인터넷, 보안 인터넷, 개인 네트워크, 공중 네트워크, 부가가치 네트워크(value-added network), 인트라넷(intranet) 등과 같은 네트워크 변형들을 포함한다.
네트워크(122)는, 예컨대, 다음의 네트워크들, 인트라넷, 로컬 영역 네트워크들(LAN), 또는 광역 네트워크들(WAN)을 포함하는 컴퓨터들의 전기적으로 접속된 그룹의 어떤 타입을 포함할 수 있다. 부가하여, 네트워크에의 접속성은, 예컨대, 원격 모뎀, 이더넷(Ethernet)(IEEE 802.3), 토큰 링(Token Ring)(IEEE 802.5), 파 이버 분산형 데이터링크 인터페이스(Fiber Distributed Datalink Interface; FDDI) 또는 비동기 전송 모드(ATM)일 수 있다. 컴퓨팅 장치들이 데스크탑, 서버, 휴대용, 핸드헬드(hand-held), 셋탑(set-top), 또는 임의의 다른 원하는 타입의 구성일 수 있음을 주목한다. 하드웨어 장치(126)는 논리 칩, ROM, RAM, 스마트 카드(smart card), 또는 중앙 처리 유닛일 수 있다. 제거 가능한 매체 저장 장치(130)는 플로피 디스크, 컴팩트 디스크, 하드디스크, 테이프 드라이브, ROM, 또는 다른 영구적인 저장 매체일 수 있다.
도 2는 확인기(validator; 204)를 도시하는 블록도이다. 본 발명의 한 실시예에서, 확인기(204)는 실행 가능한 이미지(100)와 통합된다. 본 발명의 다른 실시예에서, 확인기(204)는 프로그램 로더(program loader; 208)와 통합된다. 프로그램 로더(208)의 한 기능은 저장 장치(105)(도 1)로부터 메모리(108)에 실행 가능한 이미지(100)를 복사하고, 실행 가능한 이미지(100)의 실행 전에 코드 및 데이터 포인터들을 적절한 어드레스에 바인딩하는 것이다. 설명의 편의를 위해, 다음의 설명은 확인기(204)가 실행 가능한 이미지(100) 및 프로그램 로더(208)로부터 별개인 분리된 애플리케이션이라고 가정한다.
확인기(204)는 아래에 더 상세하게 설명되는 선택된 조건들 하에서 실행 가능한 이미지(100)의 진정성(authenticity)을 증명한다. 당업자에 의해 인식될 수 있는 것과 같이, 확인기(204) 및 프로그램 로더(208)는 다양한 서브루틴들, 프로시저들(procedures), 명령문들(statements), 및 전형적으로 단일 실행 가능한 프로그램으로 개별적으로 컴파일되고 링크되는 매크로들(macros)로 구성된다. 그러므로, 다음의 설명은 이들 아이템들의 기능성(functionality)을 설명하는 데 편의상 이용된다.
확인기(204) 및 프로그램 로더(도 1)는 C, C++, BASIC, Pascal, Java, 및 FORTRAN과 같은 임의의 프로그램 언어로 기록될 수 있다. C, C++, BASIC, Pascal, Java, 및 FORTRAN은 많은 상업용 컴파일러들 및 인터프리터들(interpreters)이 실행 가능한 코드를 생성하는 데 이용될 수 있는 산업 표준 프로그래밍 언어들이다.
도 2는 실행 가능한 이미지(200)에 접속된 후에 실행 가능한 이미지(100)을 도시한다. 실행 가능한 이미지(200)이 실행 가능한 이미지(100)에 관하여 상술된 바와 같이 데이터 객체들의 동일한 타입들을 포함할 수 있음은 주목된다. 확인기(204)의 한 기능은, 실행 가능한 이미지들이 메모리(108)에 로딩된 후에, 실행 가능한 이미지(100) 및 실행 가능한 이미지(200)과 같은 실행 가능한 이미지들의 진정성을 증명하는 것이다.
실행 가능한 이미지들의 진정성을 증명하기 위한 프로세스는 도 5 및 도 6을 참조하여 상세하게 설명된다. 그러나, 요컨대 확인기(204)는 실행 가능한 이미지(100)가 메모리(180)에 로딩되기 전에 실행 가능한 이미지(100)를 분석하고, 실행 가능한 이미지(100)에 관하여 기준 디지털 서명(reference digital signature)을 발생시킨다. 실행 가능한 이미지(100)가 로딩된 후에, 확인기(204)는 실행 가능한 이미지(100)가 변질(tamper)되지 않았음을 보증하도록 진정성 디지털 서명(authenticity digital signature)을 발생시킨다. 부가하여, 확인기(204)는, 실행 가능한 이미지(100)와의 바인딩(binding)이 다른(another) 실행 가능한 이미지에 부적절하게 다시 관련되지 않음을 보증하기 위해, 실행 가능한 이미지 100과 실행 가능한 이미지 200 사이의 바인딩을 시험한다.
도 3은 동적으로 링크된 라이브러리(DLL)로서 수립되고, 저장 장치(105)(도 1) 상에 저장된 실행 가능한 이미지(100)의 한 실시예의 내부 구조를 더 상세하게 도시하는 블록도이다.
실행 가능한 이미지(100)는 헤더 섹션(300), 코드 섹션(304), 데이터 섹션(308), 임포트 테이블(import table), 재배치 테이블(relocation table; 312), 및 익스포트 테이블(export table)을 포함하는 다수의 섹션들을 포함한다. 또한, 실행 가능한 이미지(100)가 아래에 더 상세하게 설명되는 다수의 포인터들을 포함하는 것은 주목된다. 그러나, 일반적으로, 포인터는 메모리(108)(도 1)에 관하여 절대적으로 또는 다른 위치(location)에 관하여 상대적으로 메모리(108) 내의 위치를 지정하는 기준(reference)이다.
헤더 섹션(300)은 실행 가능한 이미지(100) 내에 있는 테이블들 및/또는 다른 섹션들의 상대적인 위치를 나타낸다. 코드 섹션(304)은 실행 가능한 이미지(100)를 위한 컴파일된 기계 코드를 포함한다. 예컨대, 코드 섹션(304)은 컴퓨터(90)(도 1)를 위한 기계 명령들(machine instructions)을 포함한다. 도 3에 도시된 바와 같이, 코드 섹션(304)은 실행 가능한 이미지(100) 외뿐만 아니라 실행 가능한 이미지(100) 내의 다른 섹션들을 참조하는 명령들을 포함한다. 블록(320)에 의해 도시된 바와 같이, 코드 섹션(304)은 글로벌 변수(global variable) "i"에 "2"를 할당하는 명령들을 포함한다. 그러나, 실행 가능한 이미지(100)가 아직 메모리(108)(도 1)에 로딩되지 않았기 때문에, 저장 장치(105)(도 1) 상에 저장된 변수 "i"의 실제 어드레스(actual address)는 메모리(108)에서 정의되지 않는다. 더욱이, 코드 섹션(304)은 함수 f00()을 호출하는 명령을 포함한다. 프로시져 foo()에 대한 호출은 임포트 테이블(312) 내의 위치를 참조하는 임포트 포인터를 포함한다.
데이터 섹션(308)은 코드 섹션(304)에서 확인된 임의의 글로벌 변수의 콘텐츠를 저장하는데 이용된다. 임포트 테이블(312)은 실행 가능한 이미지(100)를 다른 실행 가능한 이미지에 접속함에 있어 프로그램 로더(208)(도 2)를 보조하기 위한 다양한 아이템의 정보를 포함한다. 임포트 테이블(312)은, 다른 실행 가능한 이미지들에 의해 유지되는 프로시져들 각각에 대한 명칭과 같은 식별자, 실행 가능한 이미지의 명칭, 및 외부적으로 유지되는 프로시져들의 어드레스를 참조하는 하나 이상의 외부 포인터들을 포함한다. 저장 장치(105)(도 1) 상에 저장되는 임포트 테이블(312)은 프로시져 foo()의 메모리 어드레스를 아직 참조하지 않는다.
재배치 테이블(relocation table; 316)은 실행 가능한 이미지(100)의 로딩 시 "픽스업(fixing-up)"될 필요가 있는 코드 섹션(304)의 부분들 각각의 위치를 나타낸다. 본 명세서에 사용되는 용어 픽스업은 임의의 미정의 포인터들(unresolved pointers)이 적절한 데이터 및/또는 코드 위치들을 참조하도록 메모리에서 실행 가능한 이미지(100)를 수정하는 프로세스를 가리킨다. 포인터가 프로그램 로더(208)에 의해 픽스업된 후, 그것은 선택된 어드레스에 "바인딩 되었다"고 한다.
익스포트 테이블(320)은 실행 가능한 이미지(100)에 의해 공중에 이용 가능하게 된 프로시져들 각각을 나타낸다. 실행 가능한 이미지(100)가 로딩 및/또는 링킹 프로세스(linking process)를 보조하는 다른 테이블 또는 디버그 정보(debug information)와 같은 다른 정보를 포함할 수 있음은 주목된다.
확인기(204)(도 2)는 저장 장치(105) 상에 저장될 때 실행 가능한 이미지(100)에 관한 기준 디지털 서명을 결정한다. 기준 서명을 발생시키기 위한 프로세스는 도 6과 관련하여 더 상세하게 설명된다. 본 발명의 한 실시예에서, 확인기(204)는 프로그램 로더(208)(도 2)에 의한 픽스업을 필요로 하는 임의의 포인터들을 배제한 전체 실행 가능한 이미지(100)에 관한 기준 디지털 서명을 결정한다. 본 발명의 다른 실시예에서, 확인기(204)는 프로그램 로더(208)에 의한 픽스업을 필요로 하는 임의의 어드레스들을 배제한 실행 가능한 이미지(100)의 임포트 테이블(312) 및/또는 코드 섹션(304)과 같은 선택된 섹션들에 관한 기준 디지털 서명을 결정한다.
도 4는 실행 가능한 이미지(200)에 관하여 픽스업된 후 실행 가능한 이미지(100)를 도시하는 블록도이다. 도 4를 통해 알 수 있는 바와 같이, 변수 "i"에 대한 데이터 포인터는 재배치 테이블(316) 내에 포함된 픽스업 정보에 따라 데이터 섹션(308) 내의 어드레스에 바인딩된다. 또한, 임포트 테이블(312)에서의 외부 포인터는 실행 가능한 이미지(200)에 바인딩된다. 제 2 실행 가능한 이미지(200)의 익스포트 테이블 내의 참조된 어드레스에서의 익스포트 포인터(export pointer)는 실행 가능한 이미지(200) 내에 존재하는 프로시져 foo()의 실제 위치에 바인딩된다.
픽스업된 후에, 확인기(204)(도 2)는 실행 가능한 이미지(100)에 관하여 다 양한 진정성 조사들을 실행한다. 이들 진정성 조사들의 각각은 도 5 및 도 6과 관련하여 더 상세하게 기술된다. 요약하면, 확인기(204)는 다음 기술된 기능들을 실행한다.
첫째로, 확인기(204)는 기준 디지털 서명을 발생시키는 데 이용된 것과 동일한 어드레스에 관한 진정성 디지털 서명을 결정한다. 진정성 디지털 서명이 기준 디지털 서명과 상이하면, 확인기(204)(도 2)는 실행 가능한 이미지(100)가 변질되었다고 가정한다.
둘째로, 확인기(204)는 임포트 테이블에 의해 참조되는 어드레스들이 변질되지 않았음을 확인하기 위해 임포트 테이블(312)의 바인딩들 각각을 시험한다. 임포트 테이블이 부적절하게 수정되면, 선택된 함수에 대한 호출은 실행 가능한 이미지(100)의 제공자에 의해 의도된 루틴 이외의 신뢰되지 않은 루틴(untrusted routine)에 재 라우팅(rerouted)될 수 있다. 그런 신뢰되지 않은 루틴은 오류(false) 또는 다른 해로운 데이터(injurious data)를 실행 가능한 이미지(100)에 우연히 또는 고의로 리턴할 수 있다.
도 5는 실행 가능한 이미지(100)의 진정성을 증명하기 위한 프로세스를 도시하는 흐름도이다. 스테이트 600에서, 확인기(204)(도 2)는 실행 가능한 모듈(100)(도 1)의 진정성을 결정하기 위한 요청을 수신한다. 본 발명의 한 실시예에서, 요청은 프로그램 로더(208)에 의해 발생된다. 본 발명의 다른 실시예에서, 요청은 오퍼레이팅 시스템(95)(도 1)에 의해 발생된다. 본 발명의 또 다른 실시예에서, 요청은 확인기(204)에서의 루틴에 의해 발생된다.
스테이트 604로 계속하면, 확인기(204)(도 2)는 픽스업을 필요로 하는 실행 가능한 이미지(100) 내의 포인터들 각각을 식별한다. 본 발명의 한 실시예에서, 실행 가능한 이미지(100)에서 선택된 섹션들만의 진정성이 결정되면, 확인기(204)는 실행 가능한 이미지(100)의 선택된 섹션들 내에 포함된 포인터들만을 식별한다. 예컨대, 확인기(204)는 코드 섹션(304)(도 3) 또는 임포트 테이블(312)(도 3) 내에 포함된 포인터들만을 식별하도록 구성될 수 있다.
본 발명의 한 실시예에서, 확인기(204)는 이들 포인터들(도 3) 각각을 식별하도록 재배치 테이블(316)을 파싱(parse)한다. 도 3에 관하여 앞서 논의된 바와 같이, 재배치 테이블(316)은 실행 가능한 이미지(100)의 기초에 대해 상대적인 어드레스의 위치를 나타낸다. 재배치 테이블(316)을 조사함으로써, 확인기(204)는 코드 섹션(304)의 어느 부분들이 로딩 동안 프로그램 로더(208)에 의해 수정되는지를 식별할 수 있다.
스테이트 608로 계속하면, 확인기(204)(도 2)는 실행 가능한 이미지(100)(도 1)에 관한 기준 디지털 서명을 발생시킨다. 본 명세서에 이용된 디지털 서명은 데이터의 선택된 세트의 콘텐츠를 동일성을 확인하기 위한 어떤 방법론이라도 포함하는 것으로 규정된다. 그 가장 단순한 형태에서, 디지털 서명은 서명되는 데이터의 선택된 세트의 완전한 카피를 포함할 수 있다. 그러나, 디지털 서명은 데이터의 선택된 세트에 적용된 해싱 함수(hashing function)의 결과들을 또한 포함할 수 있다. 또한, 디지털 서명은 디지털 증명(digital certificate)일 수 있다. 임의의 다수의 표준 해싱 함수들 중 하나가 기준 디지털 서명을 발생시키는 데 이용될 수 있음을 당업자는 이해할 수 있을 것이다.
또한, 스테이트(state) 608을 참조하면, 본 발명의 한 실시예에서, 확인기(604)는 프로그램 로더(208)(도 2)에 의한 픽스업을 필요로 하는 임의의 어드레스들을 배제한 전체 실행 가능한 이미지(100)의 콘텐츠에 기초한 기준 디지털 서명을 결정한다. 본 발명의 다른 실시예에서, 확인기(204)는, 프로그램 로더(208)에 의한 픽스업을 필요로 하는 임의의 어드레스들을 배제한 임포트 테이블(312) 및/또는 코드 섹션(304)과 같은 선택된 섹션들의 콘텐트에 기초하여, 기준 디지털 서명을 결정한다.
스테이트 612로 진행하면, 확인기(204)(도 2)는 나중의 검색을 위해 기준 디지털 서명을 저장한다. 본 발명의 한 실시예에서, 확인기(204)는 저장 장치에 기준 디지털 서명을 저장한다. 본 발명의 다른 실시예에서, 확인기(204)는 자원 테이블(도시 안됨)과 같은 실행 가능한 이미지(100)의 선택된 섹션에 기준 디지털 서명을 저장한다. 본 발명의 또 다른 실시예에서, 기준 디지털 서명은 실행 가능한 이미지(100)에 추가된다. 본 발명의 또 다른 실시예에서, 기준 디지털 서명은 데이터베이스, 웹 서버에, 또는 네트워크(122)(도 1) 상에 저장된다. 본 발명의 또 다른 실시예에서, 기준 디지털 서명은 실행 가능한 이미지(100)가 컴퓨터(90)에 제공되기 전에 생성된다. 이 실시예에서, 기준 디지털 서명은 상술된 방식들 어느것에 의해서도 발생될 수 있다.
다음 스테이트 614에서, 확인기(204)(도 2)는, 실행 가능한 이미지(100)가 메모리(108)(도 2)에 프로그램 로더(208)에 의해 로딩된 후 또는 그 전에, 실행 가능한 이미지(100)의 진정성 서명을 결정한다. 이 단계에서, 확인기(204)는 스테이트 608 동안 확인기(204)에 의해 적용되었던 해싱 함수를 다시 적용한다. 확인기(204)는 실행 가능한 이미지(100)가 요청되는 경우 또는 하나 이상의 선택된 조건들이 발생하는 경우, 예컨대 타이머의 종료, 실행 가능한 이미지(100)의 진정성 자체 테스트, 컴퓨터(90)(도 1)의 휴지 시간(idle time)과 같은 경우 등에, 진정성 디지털 서명을 결정하도록 구성될 수 있다.
결정 스테이트 618로 계속하면, 확인기(204)(도 2)는 기준 디지털 서명(스테이트 608에서 발생된)이 진정성 디지털 서명(스테이트 614에서 발생된)과 매칭하는지 여부를 결정한다. 기준 디지털 서명이 진정성 디지털 서명과 매칭하지 않으면, 확인기(204)는 스테이트 622로 진행하여 보안 경보(security alert)를 시작한다. 스테이트 622에서, 확인기(204)는 복수의 기능들, 예컨대 실행 가능한 이미지(100)의 언로딩(unload), 저장 장치(105)(도 1)로부터 메모리(108)(도 1)로의 실행 가능한 이미지(100)의 새로운 카피의 로딩, 네트워크(122)로부터 실행 가능한 이미지(100)의 새로운 버전의 로딩, 저장 장치(105)로부터 실행 가능한 이미지(100)의 삭제, 컴퓨터(90)(도 1)에 존재하는 사용자에 대한 경고의 디스플레이, 네트워크(122)를 통한 원격 컴퓨터(도시 안됨)로의 에러 메시지의 송신, 또는 실행 가능한 이미지(100)에 의해 실행된 하나 이상의 액션들의 비실행(undo) 등과 같은 기능들을 실행할 수 있다.
결정 스테이트 618을 다시 참조하면, 확인기(204)(도 2)가 기준 디지털 서명이 진정성 디지털 서명과 매칭하는 것으로 결정하는 경우, 확인기(204)는 종료 스테이트 624로 진행한다. 실시예에 따라서, 확인기(204)(도 2)는 선택된 조건들의 발생 시, 진정성 디지털 서명을 재결정하도록 스테이트 614로 리턴할 수 있다.
도 6은, 도 2에 도시된 실행 가능한 이미지들 중 하나의 진정성을 조사하는 동안, 도 2의 확인기(204)에 의해 실행되는 다른 프로세스를 도시하는 흐름도이다. 도 6에 의해 실행된 프로세스는, 도 5에 의해 실행된 프로세스와 구별되고, 도 5에 의해 실행된 프로세스와 분리하여 또는 관련하여 실행될 수 있다. 특히, 도 6은 실행 가능한 이미지에서의 포인터들 각각이 적당한 위치에 바인딩됨을 증명하기 위한 프로세스를 도시한다. 다음 텍스트는 코드 섹션(304)에서의 임포트 포인터들 및 실행 가능한 이미지(100)의 임포트 테이블(312)에서의 익스포트 포인터들에 관한 진정성 조사 프로세스를 기술한다. 그러나, 유사한 프로세스가 실행 가능한 이미지(100) 내의 다른 타입의 포인터들에 관하여 적용될 수 있음을 당업자는 이해할 수 있을 것이다.
스테이트 700을 시작하면, 확인기(204)(도 2)는 요청자로부터 실행 가능한 모듈(100)(도 1)의 진정성을 결정하기 위한 요청을 수신한다. 본 발명의 한 실시예에서, 요청자는 프로그램 로더(208)(도 2)이다. 본 발명의 다른 실시예에서, 요청자는 오퍼레이팅 시스템(95)(도 1)이다. 본 발명의 또 다른 실시예에서, 요청자는 컴퓨터(90)(도 1) 상에 실행하는 실행 가능한 이미지(도시 안됨)이다. 본 발명의 또 다른 실시예에서, 요청자는 확인기(204) 내의 루틴이다. 또한, 요청은 하나 이상의 선택된 조건들의 발생하는 경우 요청자들 중 하나에 의해 시작될 수 있다. 상기 선택된 조건들은 예컨대, 타이머의 종료, 컴퓨터(90)(도 1)에 관한 휴지 시간의 검출, 및/또는 은행거래와 같은 중요한 동작의 실행 전 등을 포함한다.
스테이트 704로 계속하면, 확인기(204)(도 2)는 코드 섹션(304) 내의 임포트 포인터들 각각을 식별한다. 본 발명의 한 실시예에서, 확인기(204)는 이들 임포트 포인터들(도 3) 각각을 식별하도록 재배치 테이블(316)을 파싱한다.
다음에, 스테이트 708에서, 확인기(204)(도 2)는, 임포트 포인터들 각각이 임포트 테이블(312) 내의 위치에 바인딩되는지 여부를 결정하기 위하여, 코드 섹션(320)내의 임포트 포인터들 각각을 조사한다. 이 스테이트에서, 본 발명의 한 실시예에서, 확인기(204)는 임포트 테이블(312)의 헤더(300)를 판독하여 시작 및 종료 어드레스를 결정한다.
임포트 포인터들 각각이 임포트 테이블(312)(도 3) 내의 위치에 바인딩되지 않으면, 확인기(204)(도 2)는 스테이트 714로 진행하고, 확인기(204)는 보안 경보를 개시한다. 스테이트 714에서, 확인기(204)는 복수의 기능들, 예컨대 실행 가능한 이미지(100)의 언로딩, 저장 장치(105)(도 1)로부터 메모리(108)(도 1)로의 실행 가능한 이미지(100)의 새로운 카피의 로딩, 저장 장치(105)로부터 실행 가능한 이미지(100)의 삭제, 컴퓨터(90)(도 1)에 존재하는 사용자에 대한 경고의 디스플레이, 네트워크(122)를 통해 원격 컴퓨터(도시 안됨)에 에러 메시지의 송신, 또는 실행 가능한 이미지(100)에 의해 실행된 하나 이상의 액션들의 비실행 등과 같은 기능들을 실행할 수 있다. 프로세스 흐름은 종료 스테이트 715로 이동하고 종료한다.
결정 스테이트 712를 다시 참조하면, 확인기(204)(도 2)가 코드 섹션(304) 내의 임포트 포인터들 각각이 임포트 테이블(312)(도 3)에 바인딩되어 있는 것으로 결정하면, 확인기(204)는 스테이트 716으로 진행한다. 스테이트 716에서, 확인기(204)는 임포트 테이블(312) 내의 외부 포인터들 각각을 식별한다.
스테이트 720으로 진행하면, 확인기(204)(도 2)는 임포트 테이블(312)(도 2) 내의 외부 포인터들의 바인딩 위치들을 결정한다. 본 발명의 한 실시예에서, 확인기(204)는 확인기(204)에 의해 유지되는 외부 포인터 테이블(도시 안됨)에 바인딩 위치들을 저장한다.
결정 스테이트 722로 계속하면, 확인기(204)는 외부 포인터들의 바인딩 위치들이 임포트 테이블(312)(도 2)에 의해 식별되는 실행 가능한 이미지들 중 하나 이내에 존재하는지 여부를 결정한다. 설명의 편의를 위해, 임포트 테이블(312)에 의해 식별된 실행 가능한 이미지들은 총괄적으로 익스포트 실행 가능한 이미지들(exporting executable images)이라고 불린다.
본 발명의 한 실시예에서, 확인기(204)는 메모리(108)(도 1) 내에 익스포트 실행 가능한 이미지들의 위치를 결정하도록 오퍼레이팅 시스템(95)(도 1)을 호출한다. 예컨대, Windows 95는 실행 가능한 이미지의 명칭이 주어진 실행 가능한 이미지의 베이스 어드레스를 리턴하는 "GetModuleHandle()"로 명명된 프로시져 호출을 제공한다. 베이스 어드레스를 이용하여, 확인기(204)는 익스포트 실행 가능한 이미지들의 다른 섹션들뿐만 아니라 헤더의 위치들을 식별할 수 있다.
스테이트 722를 다시 참조하면, 확인기(204)가 외부 포인터들 각각이 익스포트 실행 가능한 이미지들에 바인딩되지 않은 것으로 결정하면, 확인기(204)는 위에 더 상세하게 기술된 스테이트 714로 진행한다. 그러나, 확인기(204)가 외부 포인터들 각각이 익스포트 실행 가능 이미지들에 바인딩된 것으로 결정하면, 확인기(204)는 종료 스테이트 715로 진행하고 종료한다.
유리하게, 본 발명은 실행 가능한 이미지의 진정성의 정적, 동적 및 런타임 증명을 가능하게 하고, 실행 가능한 이미지의 소스 또는 객체 코드에 대한 변화들을 요구하지 않는다. 본 발명은 실행 가능한 이미지가 진정한 것이고 그것이 로딩된 후에 변질되지 않았음을 보증한다. 기준 디지털 서명이 결정된 후에, 확인기(204)는 데이터 객체가 수정되지 않음을 보증하기 위해 진정성 디지털 서명을 연속적으로 발생시킬 수 있다. 또한, 확인기(204)는 실행 가능한 이미지에서의 포인터들 각각이 정확한 위치에 바인딩되는지 여부를 결정할 수 있다.
예컨대, 코드 섹션(304) 내의 데이터 포인터에 관하여, 확인기(204)는 데이터 포인터가 데이터 섹션(308) 내의 위치를 참조하는 것을 확인하기 위하여 재배치 테이블(316)을 검사할 수 있다. 또한, 예컨대, 임포트 테이블(312) 내의 외부 포인터에 관하여, 확인기(204)는 외부 포인터는 그 명칭이 임포트 테이블(312)에 포함되어 있는 신뢰된 실행 가능한 이미지를 참조하는 것을 보증할 수 있다. 실행 가능한 이미지의 명칭이 프로그램 로더(208)(도 2)에 의해 수정되지 않기 때문에, 확인기(204)는 신뢰된 실행 가능한 이미지의 명칭이 기준 및 진정성 디지털 서명들의 이용에 의해 변화되지 않았음을 또한 보증할 수 있다.
비록 상술된 설명이 다양한 실시예들에 추가된 것처럼 본 발명의 새로운 특징들을 도시하고, 기술하고, 지적하였을지라도, 예시된 장치 또는 프로세스의 형태 및 상세들에서 다양한 생략들, 대용들, 및 변화들이 본 발명의 사상으로부터 벗어나지 않고 당업자들에 의해 이루어질 수 있음은 이해될 것이다. 본 발명의 범위는 앞의 상세한 설명이 아니라 첨부된 청구항들에 의해 지시된다. 청구항들과 동등한 의미 및 범위 내에 들어오는 모든 변화들은 그 범위 내에 포함된다.
Claims (34)
- 실행 가능한 이미지의 진정성(authenticity)을 결정하기 위한 시스템에 있어서:프로그램 로더(program loader)에 의해 픽스업(fixing-up)될 필요가 있는 하나 이상의 포인터들을 갖는 실행 가능한 이미지와;상기 포인터들 각각을 배제한 상기 실행 가능한 이미지의 선택된 콘텐트에 기초하여 제 1 시점에서 기준 디지털 서명(reference digital signature)을 발생시킬 수 있는 확인기(validator)로서, 상기 포인터들 각각을 배제한 상기 실행 가능한 이미지의 상기 선택된 콘텐트에 기초하여 제 2 시점에서 진정성 디지털 서명(authenticity digital signature)을 발생시키며, 상기 기준 디지털 서명이 상기 진정성 디지털 서명에 매칭하는지의 여부를 결정하는 상기 확인기를 포함하는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 기준 디지털 서명은 상기 실행 가능한 이미지 내에 저장될 수 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 기준 디지털 서명은 네트워크 상에 저장될 수 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 기준 디지털 서명은 데이터베이스에 저장될 수 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 기준 디지털 서명은 상기 확인기에 저장될 수 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 제 1 시점은 상기 프로그램 로더에 의해 처리되는 상기 실행 가능한 이미지의 앞에(prior to) 있고,상기 제 2 시점은 상기 프로그램 로더에 의해 처리되는 상기 실행 가능한 이미지의 뒤에(subsequent to) 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 제 1 시점은 상기 프로그램 로더에 의해 처리되는 상기 실행 가능한 이미지의 앞에 있고,상기 제 2 시점도 상기 프로그램 로더에 의해 처리되는 상기 실행 가능한 이미지의 앞에 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 제 1 시점은 상기 프로그램 로더에 의해 처리되는 상기 실행 가능한 이미지의 뒤에 있고,상기 제 2 시점도 상기 프로그램 로더에 의해 처리되는 상기 실행 가능한 이미지의 뒤에 있는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 확인기는 상기 기준 디지털 서명이 상기 진정성 디지털 서명에 매칭하지 않는다고 결정될 때 경고를 발생시키는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 확인기는 상기 기준 디지털 서명이 상기 진정성 디지털 서명에 매칭하지 않는다고 결정될 때, 상기 실행 가능한 이미지의 소스에 대해 경고를 발생시키는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 확인기는 상기 기준 디지털 서명이 상기 진정성 디지털 서명에 매칭하지 않는다고 결정될 때, 상기 확인기의 소스에 대해 경고를 발생시키는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 선택된 콘텐트는 코드 섹션(code section)과, 상기 실행 가능한 이미지 내에 있는 임포트 테이블(improt table)을 참조하는 하나 이상의 상기 포인터들을 포함하는, 실행 가능한 이미지의 진정성 결정 시스템.
- 제 1 항에 있어서,상기 선택된 콘텐트는 임포트 테이블과, 다른 실행 가능한 이미지 내의 어드레스를 참조하는 하나 이상의 상기 포인터들을 포함하는, 실행 가능한 이미지의 진정성 결정 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 실행 가능한 이미지의 진정성을 결정하기 위한 시스템에 있어서:메모리에 로딩될 수 있는 제 1 실행 가능한 이미지와;상기 메모리에 로딩될 수 있는 제 2 실행 가능한 이미지로서,상기 제 1 실행 가능한 이미지의 식별자와 픽스업될 필요가 있는 하나 이상의 외부 포인터들을 포함하는 임포트 테이블로서, 상기 외부 포인터들 각각은 상기 제 1 실행 가능한 이미지 내의 위치를 참조하는, 상기 임포트 테이블, 및기계 코드(machine code)와 픽스업될 필요가 있는 하나 이상의 임포트 포인터들을 포함하는 코드 섹션으로서, 상기 임포트 포인터들 각각은 상기 임포트 테이블 내의 위치를 참조하는, 상기 코드 섹션을 포함하는, 상기 제 2 실행 가능한 이미지와;상기 제 2 실행 가능한 이미지의 선택된 콘텐트에 기초하여 기준 디지털 서명을 제 1 시점에서 발생시킬 수 있는 확인기로서, 상기 선택된 콘텐트는 상기 임포트 포인터들 및 상기 외부 포인터들 각각을 배제하는, 상기 확인기를 포함하고,상기 확인기는, 상기 하나 이상의 포인터들 각각을 배제한 상기 제 2 실행 가능한 이미지의 선택된 콘텐트에 기초하여 제 2 시점에서 진정성 디지털 서명을 발생시키고, 상기 기준 디지털 서명이 상기 진정성 디지털 서명에 매칭하는지의 여부를 결정하고, 상기 임포트 포인터들 각각이 상기 제 1 실행 가능한 이미지 내의 위치를 참조하는지의 여부를 결정하는, 실행 가능한 이미지의 진정성 결정 시스템.
- 실행 가능한 이미지의 진정성을 결정하는 방법에 있어서:상기 실행 가능한 이미지 내의 하나 이상의 위치들을 식별하는 단계로서, 상기 식별된 위치들 각각은 프로그램 로더에 의해 픽스업될 필요가 있는, 상기 식별 단계와;상기 하나 이상의 식별된 위치들을 배제한 상기 실행 가능한 이미지의 선택된 콘텐트에 기초하여 기준 디지털 서명을 발생시키는 단계와;상기 하나 이상의 식별된 위치들을 배제한 상기 실행 가능한 이미지의 상기 선택된 콘텐트에 기초하여 진정성 디지털 서명을 발생시키는 단계와;상기 진정성 디지털 서명이 상기 기준 디지털 서명에 매칭하는지의 여부를 결정하는 단계를 포함하는, 실행 가능한 이미지의 진정성 결정 방법.
- 제 23 항에 있어서,상기 진정성 디지털 서명이 상기 기준 디지털 서명에 매칭하지 않는다고 결정될 때, 경고를 발생시키는 단계를 더 포함하는, 실행 가능한 이미지의 진정성 결정 방법.
- 제 23 항에 있어서,상기 진정성 디지털 서명이 상기 기준 디지털 서명에 매칭하지 않는다고 결정될 때, 상기 실행 가능한 이미지의 제공자에 대해 경고를 발생시키는 단계를 더 포함하는, 실행 가능한 이미지의 진정성 결정 방법.
- 제 23 항에 있어서,상기 선택된 콘텐트는 상기 실행 가능한 이미지 전체를 포함하는, 실행 가능한 이미지의 진정성 결정 방법.
- 제 23 항에 있어서,상기 선택된 콘텐트는 기계 코드의 섹션을 포함하는, 실행 가능한 이미지의 진정성 결정 방법.
- 제 23 항에 있어서,상기 선택된 콘텐트는 상기 실행 가능한 이미지 내에 존재할 수 있는 임포트 테이블을 포함하는, 실행 가능한 이미지의 진정성 결정 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2000/020182 WO2002008873A1 (en) | 2000-07-25 | 2000-07-25 | System and method of verifying the authenticity of dynamically connectable executable images |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067027687A Division KR100728517B1 (ko) | 2006-12-28 | 2000-07-25 | 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20030045015A KR20030045015A (ko) | 2003-06-09 |
KR100752067B1 true KR100752067B1 (ko) | 2007-08-28 |
Family
ID=21741611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020037001132A KR100752067B1 (ko) | 2000-07-25 | 2000-07-25 | 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 |
Country Status (10)
Country | Link |
---|---|
EP (1) | EP1303802B1 (ko) |
JP (1) | JP4698925B2 (ko) |
KR (1) | KR100752067B1 (ko) |
CN (2) | CN100394385C (ko) |
AU (2) | AU2000263715B2 (ko) |
BR (1) | BRPI0017287B1 (ko) |
CA (1) | CA2416304C (ko) |
HK (2) | HK1057115A1 (ko) |
MX (1) | MX237690B (ko) |
WO (1) | WO2002008873A1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2391965B (en) * | 2002-08-14 | 2005-11-30 | Messagelabs Ltd | Method of, and system for, heuristically detecting viruses in executable code |
US8037515B2 (en) * | 2003-10-29 | 2011-10-11 | Qualcomm Incorporated | Methods and apparatus for providing application credentials |
CN1918556A (zh) | 2004-02-05 | 2007-02-21 | Kings情报通信 | 使用安全输入装置驱动器的计算机安全装置和方法 |
US7526805B2 (en) * | 2004-06-12 | 2009-04-28 | Microsoft Corporation | Thread protection |
WO2006001683A1 (en) * | 2004-06-29 | 2006-01-05 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting/receiving control message related to packet call service in an ip multimedia subsystem |
US8156488B2 (en) * | 2004-10-20 | 2012-04-10 | Nokia Corporation | Terminal, method and computer program product for validating a software application |
JP4898790B2 (ja) * | 2005-05-05 | 2012-03-21 | サーティコム コーポレーション | ファームウェアへの認証の追加実装 |
KR100938672B1 (ko) * | 2007-11-20 | 2010-01-25 | 한국전자통신연구원 | 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법 |
JP5740573B2 (ja) * | 2010-05-13 | 2015-06-24 | パナソニックIpマネジメント株式会社 | 情報処理装置および情報処理方法 |
US8543841B2 (en) | 2011-06-30 | 2013-09-24 | Oracle International Corporation | Secure hosted execution architecture |
KR101630214B1 (ko) | 2015-01-19 | 2016-06-14 | 김종근 | 전지의 기능검사용 클램핑 장치 |
US11244054B2 (en) | 2017-11-03 | 2022-02-08 | Nokia Technologies Oy | Method and apparatus for trusted computing |
US11055105B2 (en) * | 2018-08-31 | 2021-07-06 | Micron Technology, Inc. | Concurrent image measurement and execution |
JP7262269B2 (ja) * | 2019-03-27 | 2023-04-21 | キヤノン株式会社 | 情報処理装置、及び情報処理装置の制御方法、プログラム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940020238A (ko) * | 1993-02-26 | 1994-09-15 | 윌리암 티.엘리스 | 실행가능 프로그램에 대한 메모리 할당 관리 시스템, 실행가능 루틴의 동적 로딩 방법 및 컴퓨터 프로그램 제품 |
US5559884A (en) * | 1994-06-30 | 1996-09-24 | Microsoft Corporation | Method and system for generating and auditing a signature for a computer program |
EP0778520A2 (en) * | 1995-12-08 | 1997-06-11 | Sun Microsystems, Inc. | System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources |
WO2000014631A2 (de) * | 1998-09-02 | 2000-03-16 | Infineon Technologies Ag | Verfahren zum linken von in einen arbeitsspeicher eines prozessors nachgeladenen programmodulen auf einer chipkarte |
KR20020064185A (ko) * | 2001-01-31 | 2002-08-07 | 가부시키가이샤 히타치세이사쿠쇼 | 진정성 출력 방법 및 그 실시 장치와 그 처리 프로그램 |
-
2000
- 2000-07-25 KR KR1020037001132A patent/KR100752067B1/ko not_active IP Right Cessation
- 2000-07-25 WO PCT/US2000/020182 patent/WO2002008873A1/en not_active Application Discontinuation
- 2000-07-25 JP JP2002514509A patent/JP4698925B2/ja not_active Expired - Lifetime
- 2000-07-25 AU AU2000263715A patent/AU2000263715B2/en not_active Ceased
- 2000-07-25 CN CNB2005100894378A patent/CN100394385C/zh not_active Expired - Fee Related
- 2000-07-25 BR BRPI0017287A patent/BRPI0017287B1/pt not_active IP Right Cessation
- 2000-07-25 AU AU6371500A patent/AU6371500A/xx active Pending
- 2000-07-25 EP EP00950637A patent/EP1303802B1/en not_active Expired - Lifetime
- 2000-07-25 CN CNB00819775XA patent/CN1222854C/zh not_active Expired - Fee Related
- 2000-07-25 CA CA2416304A patent/CA2416304C/en not_active Expired - Lifetime
- 2000-07-25 MX MXPA03000727 patent/MX237690B/es active IP Right Grant
-
2003
- 2003-12-23 HK HK03109337A patent/HK1057115A1/xx not_active IP Right Cessation
-
2006
- 2006-03-24 HK HK06103685A patent/HK1083653A1/xx not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940020238A (ko) * | 1993-02-26 | 1994-09-15 | 윌리암 티.엘리스 | 실행가능 프로그램에 대한 메모리 할당 관리 시스템, 실행가능 루틴의 동적 로딩 방법 및 컴퓨터 프로그램 제품 |
US5559884A (en) * | 1994-06-30 | 1996-09-24 | Microsoft Corporation | Method and system for generating and auditing a signature for a computer program |
EP0778520A2 (en) * | 1995-12-08 | 1997-06-11 | Sun Microsystems, Inc. | System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources |
KR100433319B1 (ko) * | 1995-12-08 | 2004-08-09 | 선 마이크로시스템즈 인코퍼레이티드 | 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법 |
WO2000014631A2 (de) * | 1998-09-02 | 2000-03-16 | Infineon Technologies Ag | Verfahren zum linken von in einen arbeitsspeicher eines prozessors nachgeladenen programmodulen auf einer chipkarte |
KR20020064185A (ko) * | 2001-01-31 | 2002-08-07 | 가부시키가이샤 히타치세이사쿠쇼 | 진정성 출력 방법 및 그 실시 장치와 그 처리 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
CN1722091A (zh) | 2006-01-18 |
WO2002008873A1 (en) | 2002-01-31 |
HK1083653A1 (en) | 2006-07-07 |
AU2000263715B2 (en) | 2004-11-04 |
HK1057115A1 (en) | 2004-03-12 |
EP1303802B1 (en) | 2013-01-16 |
CN1222854C (zh) | 2005-10-12 |
AU6371500A (en) | 2002-02-05 |
EP1303802A1 (en) | 2003-04-23 |
CN100394385C (zh) | 2008-06-11 |
JP2004505343A (ja) | 2004-02-19 |
CA2416304A1 (en) | 2002-01-31 |
BR0017287A (pt) | 2003-06-24 |
CA2416304C (en) | 2010-11-30 |
BRPI0017287B1 (pt) | 2016-11-01 |
MX237690B (es) | 2006-06-12 |
MXPA03000727A (es) | 2004-03-26 |
KR20030045015A (ko) | 2003-06-09 |
JP4698925B2 (ja) | 2011-06-08 |
CN1454338A (zh) | 2003-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6802006B1 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
US7650504B2 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
US6978018B2 (en) | Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment | |
US6662359B1 (en) | System and method for injecting hooks into Java classes to handle exception and finalization processing | |
US6910128B1 (en) | Method and computer program product for processing signed applets | |
US6922782B1 (en) | Apparatus and method for ensuring data integrity of unauthenticated code | |
US8781971B2 (en) | Method and apparatus for enforcing software licenses | |
KR100752067B1 (ko) | 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 | |
EP1577767B1 (en) | Code rewriting | |
JP4263476B2 (ja) | ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム | |
US6851108B1 (en) | Verifying intermediate language code | |
US7237236B2 (en) | Method and apparatus for automatically determining optimum placement of privileged code locations in existing code | |
US7114152B2 (en) | Method, apparatus, and program to determine the mutability of an object at loading time | |
US5257381A (en) | Method of intercepting a global function of a network operating system and calling a monitoring function | |
US20060123430A1 (en) | Inter-process interference elimination | |
US20080163375A1 (en) | Embedding and patching integrity information in a program file having relocatable file sections | |
KR100728517B1 (ko) | 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 | |
EP2434399A1 (en) | Inter-process interference elimination | |
JP2007128537A (ja) | 動的に接続可能な実行イメージの真正性検証システム及び方法 | |
RU2258252C2 (ru) | Система и способ проверки подлинности динамически подключаемых исполняемых образов | |
CN116484360B (zh) | 一种基于rasp的注入方法、装置、介质及设备 | |
JP7012922B2 (ja) | 認証子管理装置、認証子管理プログラム及び認証子管理方法 | |
Sodan | CICS Problem Support | |
Frame Jr | PERSONAL COMPUTER and WORKSTATION A OPERATING SYSTEMS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
A107 | Divisional application of patent | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
G170 | Publication of correction | ||
FPAY | Annual fee payment |
Payment date: 20120802 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20130801 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20150717 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160720 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |