KR100939328B1 - 보안민감명령들의 제한실행을 위한 방법 및 장치 - Google Patents

보안민감명령들의 제한실행을 위한 방법 및 장치 Download PDF

Info

Publication number
KR100939328B1
KR100939328B1 KR1020047008536A KR20047008536A KR100939328B1 KR 100939328 B1 KR100939328 B1 KR 100939328B1 KR 1020047008536 A KR1020047008536 A KR 1020047008536A KR 20047008536 A KR20047008536 A KR 20047008536A KR 100939328 B1 KR100939328 B1 KR 100939328B1
Authority
KR
South Korea
Prior art keywords
security
processor
instructions
instruction
executed
Prior art date
Application number
KR1020047008536A
Other languages
English (en)
Other versions
KR20050027084A (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 KR20050027084A publication Critical patent/KR20050027084A/ko
Application granted granted Critical
Publication of KR100939328B1 publication Critical patent/KR100939328B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

보안민감명령들의 실행을 제한하기 위한 방법 및 장치. 제1보안ID(identification)는 프로세서(305)에 의해 실행될 복수의 명령들 각각 또는 명령들의 세트에 관련되어진다. 프로세서(305)상에서 실행되는 소프트웨어 코드는 복수의 명령들 중의 적어도 하나 또는 명령들의 세트를 실행하는 것을 요구한다. 프로세서(305)는 실행하는 소프트웨어 코드와 관련된 제2보안ID를 획득하며 제2보안ID를 제1보안ID와 비교한다. 프로세서(305)는 제2보안ID가 제1보안ID와 매칭되는 경우 상기 요구된 명령 또는 명령들의 세트를 실행한다.
보안민감명령, 보안ID

Description

보안민감명령들의 제한실행을 위한 방법 및 장치{METHOD AND APPARATUS FOR RESTRICTED EXECUTION OF SECURITY SENSITIVE INSTRUCTIONS}
본 발명은 일반적으로 컴퓨터에 관한 것이며, 더 구체적으로는 컴퓨터시스템의 보안동작을 확립하기 위한 방법 및 장치에 관한 것이다.
개인용 컴퓨터들과 같은 일반적인 목적의 컴퓨터시스템들은 단일 태스크(task)를 수행하는 단계로부터 동시에 실행되는 복수의 태스크들을 수행하는 단계에까지 발달하였다. 다중태스크(multitask)의 시스템은 사용자의 프로세스(process)들로부터 오퍼레이팅시스템(operating system)을 보호하며 서로의 프로세스들을 보호하기 위해 보안 및 보호서비스들을 요구한다. 보호가 없다면, 예를 들어 악성(rogue)프로그램이 오퍼레이팅시스템 또는 또 다른 프로세스에 속하는 메모리공간의 프로그램코드 또는 데이터를 의도치않게 파괴할 수 있다.
전형적으로, x86의 마이크로프로세서환경에는, 가변적인 특권레벨(privilege level)들을 제공함으로써 악성프로그램의 가능성을 줄이도록 보안피쳐(feature)들이 구현되어 있다. 상이한 형태들의 소프트웨어들이 이런 가변적인 특권레벨들에서 동작하고, 따라서 컴퓨터시스템의 자원에 대해 변동하는 액세스를 가진다. 도 1에 도시된 바와 같이, 컴퓨터의 오퍼레이팅시스템은 전형적으로 최상위 특권레벨(즉, 레벨 0)에서 동작하며, 이 최상위 특권레벨은 일반적으로 오퍼레이팅시스템이 컴퓨터시스템의 거의 모든 시스템자원들에 자유롭게 액세스하는 것을 허용한다. 소프트웨어 드라이버들은 또한 최상위 특권레벨에서 동작하는 것이 허용된다. 다른 한편으로, 응용프로그램들은 전형적으로 최하위 특권레벨(즉, 레벨 3)에서 동작하며, 이 최하위 특권레벨은 일반적으로 오퍼레이팅시스템의 허락에 의해서만 시스템자원들에 대한 액세스를 허용한다. 따라서, 적어도 이론적으로 오퍼레이팅시스템은 또 다른 응용프로그램에 할당된 시스템자원들에 대해 임의의 응용프로그램이 액세스하는 것을 방지한다. 예를 들어, 오퍼레이팅시스템은 지원프로그램들을 위해 물리적메모리의 공간을 할당하며, 이 프로그램들은 할당된 공간에서만 판독 및 기입이 자유롭다. 즉, 오퍼레이팅시스템은 정상적으로 임의의 응용프로그램이 또 다른 응용프로그램에 할당된 물리적 메모리의 일부 콘텐츠(contents)를 변경하는 것을 방지한다.
하지만, 보안결함들 및 버그들이 필연적으로 오퍼레이팅시스템 및 드라이버들로 침투한다. 따라서, 악성프로그램들 또는 드라이버들이 이런 보안결함들 및 버그들을 우연히 또는 의도적으로 사용하여 액세스가 배제되도록 의도된 메모리 부분들에 액세스할 수 있게 된다. 프로그램 또는 드라이버가 보호된 메모리에 액세스하게 되면, 이 프로그램 또는 드라이버는 그와 관련된 여타의 주변디바이스들을 비롯한 타겟(target)소프트웨어의 동작을 방해하거나 또는 그 동작에 대한 권한을 탈취하게 된다. 예를 들어, 데이터 프로세서의 모뎀동작은 본질적으로 모뎀에 관련된 응용프로그램 또는 드라이버의 메모리공간에 대한 액세스를 얻은 악성프로그램에 의해 파괴될 수 있다. 그후 악성프로그램은 전화네트워크상에 무단의 권한이 없거나 바람직하지 않은 호출들(calls)을 걸거나, 아니면 전화네트워크의 올바른 동작을 방해하도록 모뎀에 지시한다.
마이크로소프트의 윈도우오퍼레이팅시스템의 가장 최근 버젼인 윈도우 2000은 현재, 그의 커널(kernel) 및 관련 커널-모드 드라이버들에 포함된 일백만개 이상의 코드라인을 가진다. 따라서, 일백만개 이상의 코드라인들은 일반적으로 시스템자원들에 대해 자유로운 액세스를 가진다. 따라서, 이 오퍼레이팅시스템의 순전히 사이즈(sheer size)때문에, 부가적인 결함들 및 버그들이 필연적으로 나타난다. 따라서, 악성프로그램들은 상기 결함 및 버그들로부터 차폐되도록 의도된 메모리부분들에 대한 액세스를 우연히 또는 의도적으로 얻기 위해, 아직 발견되지 않은 보안결함들 및 버그들을 계속 이용하게 될 것이다.
본 발명은 전술한 하나이상의 문제점들의 영향들을 극복하거나 적어도 감소시키는 것을 목적으로 한다.
본 발명의 일 양상에서, 방법이 제공된다. 이 방법은 제1보안 ID(identification)를 프로세서에 의해 실행될 복수의 명령들 각각 또는 일 세트의 명령들과 관련시키는 단계를 포함한다. 프로세서상에서 동작되는 소프트웨어 코드에 의해 복수의 명령들중 적어도 하나 또는 일 세트의 명령들을 실행토록하는 요구가 행해진다. 프로세서상에서 동작하는 소프트웨어코드와 관련된 제2보안ID가 획득된다. 제2보안ID 및 제1보안ID간에 비교가 이루어진다. 제2보안ID가 제1보안ID와 매칭하는 경우, 요구된 명령 또는 명령들의 세트가 실행된다.
본 발명의 또 다른 양상에서, 장치가 제공된다. 이 장치는, 코드를 실행하고 그리고 제1보안ID를 프로세서에 의해 실행될 복수의 명령들 각각 또는 일 세트의 명령들에 관련시키는 프로세서를 포함한다. 이 프로세서는 이 프로세서상에서 실행되는 코드에 의해 상기 복수의 명령들중 적어도 하나 또는 일 세트의 명령들을 실행토록 하는 요구를 수신하고, 상기 코드와 관련된 제2보안ID를 획득하며, 제2보안ID를 제1보안ID와 비교하며, 그리고 제2보안ID가 제1보안ID와 매칭하는 경우 상기 요구된 명령 또는 명령들의 세트를 실행한다.
본 발명의 또 다른 양상에서, 물품이 제공된다. 이 물품은 실행시 프로세서로 하여금 제1보안ID를 이 프로세서가 실행할 복수의 명령들 각각 또는 명령들의 세트에 관련시킬 수 있게 하고, 상기 프로세서상에서 실행하는 소프트웨어 코드에 의해 상기 복수의 명령들 중 적어도 하나 또는 명령들의 세트를 실행토록 요구하는 명령들을 수록하고 있는 하나이상의 컴퓨터판독 가능한 저장매체를 포함한다. 프로세서상에서 실행되는 소프트웨어코드와 관련된 제2보안ID가 획득된다. 제2보안ID와 제1보안ID간에 비교가 이루어진다. 제2보안ID가 제1보안ID와 매칭되는 경우, 상기 요구된 명령 또는 명령들의 세트가 실행된다.
본 발명은 첨부된 도면들과 관련한 이하의 상세한 설명을 참조함으로써 이해될 수 있을 것이며, 참조번호들에서 가장 왼쪽의 자리수(들)는 그 참조번호들이 나타나는 가장 처음 도면을 가리킨다.
도 1은 컴퓨터시스템에서 수행되는 통상적인 보안체제의 일 실시예를 대략적으로 도시하는 도면이다.
도 2는 본 발명의 일 실시예에 따른 보안 액세스체제를 적용한 프로세서 유닛을 포함하는 컴퓨터시스템의 개략 블록도이다.
도 3은 도 2에서 제공된 프로세서 유닛의 상세 설명도이다.
도 4는 도 3에서 제공된 시스템메모리제어기의 상세 설명도이다. 그리고,
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 보안민감명령들(security sensitive instructions)의 실행을 제한하기 위한 프로세스를 도시하는 도면이다.
비록 본 발명은 여러가지 변형물 및 대안적인 형태들이 가능하지만은 본 발명의 특정 실시예들을 예시로서 도면들로 도시하고 이를 상세히 설명한다. 하지만, 여기의 특정 실시예들은 본 발명을 개시된 각각의 형태로 제한하도록 의도된 것이 아니며, 첨부된 청구항들에 의해 정의된 바와 같이 본 발명의 개념 및 범위내에 속하는 모든 변형물, 균등물 및 대안물을 포괄하도록 의도된 것임을 이해해야한다.
본 발명의 예시적인 실시예들이 이하 기술된다. 명료성을 위하여, 실제 구현의 모든 피쳐들(features)이 본 명세서에서 기술되지는 않았다. 물론 이런 여타의 실제 실시예의 개발에서, 개발자들의 특정목적들- 예컨대 시스템과 관련되고 업무와 관련된 제한에 부합되는 목적-들을 달성하기 위해 수많은 구현별 특정결정이 행해야 한다는 점이 명백하다. 또한, 이런 개발노력은 복잡하고 시간소모가 될 수 있지만, 본 개시의 장점을 가지는 기술분야의 당업자에게는 일상적인 것이라는 점은 명백하다.
도면들에서, 도 2를 참조하면 본 발명의 일 실시예를 따르는 보안민감명령들의 실행을 제한하기 위한 컴퓨터시스템(200)의 개략 블록도가 보여진다. 예시적인 실시예에서, 가장 간단한 형태들중의 하나인 컴퓨터시스템(200)은 프로세서 유닛(205), 적어도 하나의 입력디바이스(210) 및 적어도 하나의 출력디바이스(215)를 포함한다. 입력디바이스(210)는 예를 들어 키보드, 마우스, 터치패드(touchpad), 터치스크린(touchscreen) 등을 포함할 수 있다. 출력디바이스(215)는 모니터, 프린터, 및/또는 프로세서 유닛(205)에 의해 처리되는 정보를 시스템(200)의 사용자에게 전달하기 위한 여러가지 다른 디바이스들을 포함할 수 있다.
예시된 실시예에 의하면, 프로세서 유닛(205)은 보안액세스체제를 채용하고, 이 보안액세스체제는 시스템(200)이 프로세스 유닛(205)에 의해 어떤 형태들의 보안민감명령들을 실행하는 것을 제한한다. 보안민감명령들은 프로세서 유닛(205)상에서 실행되는 그 어떤 타입의 코드에 의해서도 실행되지 않도록 제한되는 것이 요망되는 명령들 또는 명령들의 세트를 포함할 수 있다.
입력디바이스(210)를 통한 시스템(200)의 사용자에 의한 입력은 프로세서 유닛(205)에서의 하나이상의 소프트웨어 구조들 또는 코드들의 실행을 개시할 수 있다. 그후, 여러가지 소프트웨어구조들 또는 코드들을 실행하기 위해 프로세서 유닛(205)에 상주하는 메모리에 액세스가 이루어져, 원하는 태스크를 수행하게 된다. 프로세서 유닛(205)에 의해 채용된 보안액세스체제는 그 내부에 프로그램된 소정의 보안엔트리들(entries)에 기초하여, 프로세서(205)에 의해 수행될 수 있는 몇개의 보안민감명령들의 실행을 제한할 수 있고, 따라서 어떤 컴퓨팅 태스크들이 프로세서 유닛(205)에 의해 실행되는 것을 방지할 수 있다.
도 3에서, 시스템(200)의 프로세서 유닛(205)의 상세도가 제공된다. 본 발명의 일 실시예에 있어서, 프로세서 유닛(205)은 도시된 실시예에서 마이크로프로세서의 방식을 취하는 프로세서(305)를 포함한다. 하지만, 프로세서(305)는 여러가지 다른 프로세서 형태들의 방식을 취할 수 있고 본 발명의 개념 및 범위를 벗어남이 없이 다수의 프로세서들을 또한 포함할 수 있다. 프로세서 유닛(205)은 시스템 메모리 제어기(310) 및 메모리모듈(315)을 더 포함할 수 있다. 도시된 실시예에 따르면, 메모리모듈(315)은 SDRAM(synchronous dynamic random access memory) 또는 DDRAM(double-rate dynamic random access memory)의 방식을 취하는 물리적 메모리(350)를 포함한다. 하지만, 물리적 메모리(350)는 여러가지 다른 메모리형태들의 방식을 취할 수 있고, 따라서 전술된 예시들에 한정될 필요는 없다.
프로세서(305)는 호스트버스(330)를 거쳐 시스템 메모리 제어기(310)를 통해 메모리모듈(315)과 통신한다. 일 실시예에 따르면, 시스템 메모리 제어기(310)는 메모리어드레스들 및 로직신호들을 메모리 모듈(315)에 제공하여 프로세서(305)에 의해 요망되는 메모리 트랜젝션들(transactions)을 정의한다.
주변디바이스들(345)과 통신하기 위해 사용되는 1차버스(335)는 또한 호스트브릿지(340)를 통해 호스트버스(330)에 결합된다. 일 실시예에서, 1차버스(335)는 PCI(peripheral component interconnect)버스(PCI명세서, Rev. 2.1를 참조)의 방식을 취한다. 프로세서 유닛(205)은 또한 본 발명의 개념 및 범위를 벗어남이 없이 예컨대, 제2PCI버스(도시않됨) 또는 여러가지 다른 주변 디바이스들(도시않됨)과 같은 다른 버스들을 포함하도록 구성될 수 있다.
일 실시예에서, 프로세서(305)는 실행가능한 명령들에 기초하여 복수의 컴퓨터처리동작들을 실행한다. 프로세서(305)상에서 동작되는 소프트웨어 코드에 의한 특정명령실행요구에 응답하여, 프로세서(305)는 상기 코드에 의해 요구된 실행을 수행하기 위해 메모리 액세스과정을 수행한다. 프로세서(305)는 시스템메모리제어기(310)를 통해 메모리 액세스를 수행하는바, 이 시스템메모리제어기(310)는 특정 명령의 실행하에서 상기 요구된 태스크를 실행하기 위한 메모리모듈(315)의 물리적 메모리(350)로의 액세스를 제공한다.
도 4에서, 본 발명의 일 실시예를 따르는 시스템메모리제어기(310)의 상세도가 제공된다. 시스템메모리제어기(310)는 가상메모리액세스테이블(405) 및 가상메모리(410)를 포함한다. 프로세서(305)는 가상(또는 선형)메모리 어드레스를 도출하기 위해 가상메모리액세스테이블(405)을 사용하며, 이 가상(또는 선형)메모리 어드레스는 가상메모리(410)내의 특정장소를 지시한다. 특정 가상메모리 어드레스가 결정되면, 가상메모리(410)는 가상메모리액세스테이블(405)로부터 획득된 가상메모리어드레스에 대응하는 물리적메모리어드레스를 결정하기 위해 액세스되어진다. 가상메모리(410)로부터 획득된 물리적 메모리 어드레스는 물리적 메모리(350)내의 특정 메모리장소를 지시하며, 이 물리적 메모리(350)는 프로세서(305)상에서 현재 실행되는 소프트웨어코드에 의해 상기 요망되는 명령을 수행하는데 필요한 메모리공간을 제공한다. (전술된 바와 같은) 가상메모리어드레스를 획득하기 위한 과정이 가장 간단한 형태로 제공되고, 가상메모리액세스테이블(405)이외에 가상메모리어드레스를 도출하기 위한 여러가지 다른 테이블들이 액세스되어질 수 있다는 점이 이해될 것이다. 가상메모리어드레스를 도출하기 위한 이런 특별과정들은 당업자에게는 공지되어 있다. 따라서, 이런 과정들에 대한 상세한 설명은 본 발명을 불명확하게 할 수 있으므로 생략한다.
삭제
일 실시예에 따르면, 보안ID는 프로세서(305)에 의해 실행될 수 있는 특정 보안민감명령 또는 명령들의 세트와 관련될 수 있다. 일 실시예에서, 보안ID는 고정된 값이 될 수 있고, 대안적으로 프로세서(305)에 상주될 수 있는 프로그램가능 레지스터(도시않됨)에 저장될 수도 있다. 도시된 실시예에서, 보안민감명령들은 가상메모리베이스(base)를 정의하는 CR3로의 이동명령들, 프로세서(305)의 동작모드를 정의하는 CR0로의 이동명령들, 및/또는 프로세서(305)의 여러가지 서브-모드들을 정의하는 CR4로의 이동명령들을 포함한다. 부가적으로, 여러가지 실행가능한 명령들에 관한 보안ID를 정의하는 프로그램가능한 레지스터를 수정하기 위해 구성된 여타의 명령들이 보안민감명령으로서 또한 고려될 수 있다. 전술된 예들은 반드시 완벽한 예가 아님이 이해되어야 한다. 따라서, 프로세서(305)에 의해 수행되는 여러가지 다른 형태들의 명령들은 보안민감명령으로 간주될 수 있고, 따라서 전술한 예시들에 한정될 필요는 없다.
프로세서(305)에 의해 현재 실행되는 소프트웨어 코드(예를 들어, 드라이버, 서비스, 커널 루틴(kernel routine), 응용코드, 등)와 관련되는 보안ID는 코드가 실행하기를 원하는 보안민감명령 또는 명령들의 세트에 대응하는 가상메모리테이블(405)의 어드레스를 참조하여 획득된다. 특정 보안민감 명령이 프로세서(305)상에서 현재 실행되는 코드에 의해 요구될 때, 가상메모리테이블(405)의 어드레스를 참조하여 획득된 현재 실행중인 코드의 보안ID는, 프로세서(305)에 의해서, 상기 코드가 실행하기를 요망하는 특별한 보안민감명령 또는 명령들의 세트에 관한 보안ID와 비교된다. 상기 언급한 바와같이, 보안민감명령(들)의 보안ID는 고정값이거나 또는 변경가능하며, 프로그램가능 레지스터에 저장될 수 있다. 만약 보안ID들의 매칭이 존재한다면, 프로세서(305)는 프로세서(305)상에서 실행되는 소프트웨어코드에 의해 요구된 보안민감명령 또는 명령들의 세트를 실행한다. 다른 한편으로는, 현재 실행되는 코드의 보안ID와 요망되는 보안민감명령(들)의 보안ID가 매칭되지 않는다면, 프로세서(305)는 프로세서(305)상에서 실행되는 소프트웨어코드에 의해 요구된 보안민감명령 또는 명령들의 세트의 실행을 거부한다.
도 5에서, 일 실시예에 따라 프로세서(305)상에서 실행되는 코드에 의해 보안민감명령들을 제한하기 위한 프로세서(500)가 제공된다. 프로세서(500)는 블록(505)에서 시작되며, 이 블록(505)에서 명령 또는 명령들의 세트는 보안민감명령으로서 분류되고 이런 명령 또는 명령들의 세트 각각은 프로세서(305)에서 보안ID와 관련된다. 일 실시예에 따르면, 보안ID는 보안민감명령(들)과 관련된 고정값이 될 수 있다(즉, 보안민감명령들이 고정된 보안ID를 가질 수 있다). 대안적인 실시예에서, 보안민감명령의 보안ID는 프로세서(305)에서 프로그램가능 레지스터(도시않됨)에 저장될 수 있고, 프로세서(305)상에서 실행되는 오퍼레이팅시스템이 보안민감명령의 보안ID를 변경할 수 있다. 본 발명의 개념 및 범위에 벗어나지 않고 전술한 예시들에 부가하여, 보안ID를 보안민감명령(들)과 관련시키기 위한 다른 방법들이 수행될 수 있다.
블록(510)에서, 프로세서(305)는 현재 실행되는 소프트웨어코드가 보안민감으로서 분류된 명령의 실행을 시도하는지를 결정한다. 일 실시예에서, 프로세서(305)는 예를 들어, 보안ID가 그와 관련이 있는지를 알기 위해 프로세서(305)의 프로그램가능 레지스터를 참조함으로써, 상기 요구된 명령이 보안민감명령인지를 결정한다. 만약 블록(510)에서 프로세서(305)상에서 현재 실행되는 소프트웨어코드가 보안민감명령의 실행을 시도하지 않는다면(즉, 어떤 보안ID도 상기 요구된 명령과 관련되지 않는다면), 프로세서(305)는 블록(515)에서 보안절차를 요구하지 않고 명령을 실행한다(즉, 명령은 일반적인 방식으로 프로세서(305)에 의해 실행된다). 하지만, 만약 블록(510)에서 프로세서(305)상에서 현재 실행되는 소프트웨어코드가 보안민감명령의 실행을 시도한다면, 블록(520)에서 프로세서(305)에 의해 보안절차가 요구되어지고 프로세서(305)상에서 실행되는 코드가 보안민감명령을 실행하도록 허용되었는지 여부를 결정한다.
프로세스(500)는 블록(525)에서 계속되며, 여기서 코드가 실행하기를 요망하는 보안민감명령(들)에 대응하는 가상메모리테이블(405)의 어드레스를 참조함으로써 프로세서(305)상에서 실행되는 소프트웨어코드의 보안ID가 획득된다. 프로세서(305)상에서 실행되는 소프트웨어코드와 관련된 보안ID를 획득한 후에, 프로세서(305)는 블록(530)에서 코드가 실행하기를 요망하는 보안민감명령(들)의 보안ID를 획득한다. 일 실시예에서, 보안민감명령(들)의 보안ID는 프로그램가능 레 지스터(도시되지 않음)로부터 획득될 수 있다.
가상메모리테이블(405)로부터 특정명령과 관련된 보안ID를 검색하는 것에 이어서, 프로세서(305)는 블록(535)에서 프로세서(305)상에서 실행되는 코드와 관련된 보안ID와 상기 특정명령과 관련된 보안ID를 비교한다. 블록(540)에서, 프로세서(305)는 이 프로세서(305)에서 실행되는 코드와 관련된 상기 보안ID가 상기 코드가 실행하려고 하는 특정명령과 관련된 상기 보안ID와 매칭하는지 여부를 결정한다.
만약 이 프로세서상에서 실행되는 코드와 관련된 보안ID와 특정명령과 관련된 보안ID가 매칭되지 않는다면, 프로세서(305)는 블록(545)에서, 프로세서(305)에서 실행되는 소프트웨어코드에 의한 보안민감명령의 실행을 거부한다. 만약 이 프로세서상에서 실행되는 코드와 관련된 보안ID와, 보안민감명령과 관련된 보안ID가 매칭된다면, 프로세서(305)는 블록(550)에서 보안민감명령을 실행한다. 일 실시예에 따르면, 상기 보안ID들이 매칭될 때 프로세서(305)에 의해 실행될 소프트웨어코드에 대응되는 가상메모리어드레스는 가상메모리액세스테이블(405)로부터 획득되고, 그 물리적 어드레스는 가상메모리어드레스를 사용하여 가상메모리(410)로부터 획득되며, 그리고 물리적 메모리(350)내의 메모리공간이 프로세서(305)에서 액세스될 수 있게 되어, 상기 요망된 보안민감명령을 실행할 수 있게 된다.
일 실시예에 따르면, 프로세서(305)에 의해 보안민감명령을 실행하기 위해서 보안ID들간의 정확한 매칭이 필요로 된다. 하지만, 대안적으로 보안ID들은 필드들로 분산될 수 있어, 따라서 다중층의 보안체제가 제공됨을 이해할 수 있을 것이다. 따라서, 비록 소프트웨어코드들 및 보안민감명령들이 모두 고유의 보안ID들을 가질 수 있지만, 보안ID내의 공통 필드 또는 컴포넌트가 상기 요망되는 보안민감명령의 실행을 허용할 수도 있다. 따라서, 상기 보안ID는 클라스들(classes:집단), 패밀리들(families) 또는 다른 그룹정보를 설정하고 표시하도록 구성될 수 있으며, 따라서 이들의 보안ID들의 일부분이 매칭되기 때문에 코드들의 특정클라스가 특정명령 또는 명령들의 세트를 실행할 수 있게 된다.
예를 들어, 일 실시예에서, 보안ID가 임의의 클라스 및 서브클라스(subclass)필드를 포함할 수 있고, 만약 보안ID들의 클라스 필드가 매칭된다면, 보안ID들간의 비교목적들을 위해서 보안ID들의 서브클라스필드는 무시될 수 있다. 따라서, 이 특정 실시예에서 적어도 보안ID들의 클라스필드들이 매칭되는 경우 프로세서(305)에 의한 보안민감명령들의 실행이 허용될 수 있다. 또 다른 실시예에서, 보안ID들(또는 예컨대 클라스필드와 같은 것의 일부)의 비교는 필수적으로 정밀한 산술적 매칭이 될 필요는 없다. 예를 들어, 만약 프로세서(305)상에서 실행되는 코드와 관련된 보안ID의 클라스필드가 보안민감명령(들)과 관련된 보안ID의 클라스코드보다 크거나(또는 대안적으로 보다 작거나) 또는 균등하다면, 보안민감명령의 실행은 허용될 수 있다. 하지만, 보안ID들에 대한 특정 포맷(format: 형식)이 전술한 예시들에 반드시 한정될 필요는 없다는 것이 이해된다.
본 발명이 상이하게 수정되고 실시될 수 있지만 당업자들에게는 명백하게 균등방식들이 되듯이, 전술된 특정 실시예들은 단지 예시이다. 또한, 이하 청구항들에서 기술된 것 이외에, 보여진 설명 또는 목적의 상세한 설명에 본 발명을 한정하 려는 의도는 아니다. 그러므로, 전술된 특정실시예들이 개조되거나 수정될 수 있으며 모든 이런 변화들은 본 발명의 개념 및 범위내에서 이해된다는 점은 명백하다. 따라서, 요구되는 보호범위는 이하 청구항들에서 설명된다.

Claims (10)

  1. 제1 보안ID(identification)를, 프로세서(305)에 의해 실행될 복수의 명령들 각각 또는 명령들의 세트에 관련시키는 단계와;
    프로세서(305)상에서 실행하는 소프트웨어 코드에 의해 복수의 명령들 중 적어도 하나 또는 명령들의 세트를 실행할 것을 요구하는 단계와;
    프로세서(305)상에서 실행되는 소프트웨어 코드와 관련된 제2 보안ID를 가상메모리 테이블(405)로부터 획득하는 단계와;
    상기 제2 보안ID를 상기 제1 보안ID와 비교하는 단계와; 그리고
    상기 제2 보안ID가 상기 제1 보안ID와 매칭되는 경우 상기 요구된 명령 또는 명령들의 세트를 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서, 상기 제2 보안ID와 상기 제1 보안ID가 매칭되지 않는 경우 상기 요구된 명령 또는 명령들의 세트의 실행을 거부하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 1항 또는 제 2항에 있어서, 상기 제1 보안ID를 관련시키는 단계는 상기 제1 보안ID를 프로세서(305)에 의해 실행될 복수의 명령들 각각 또는 명령들의 세트와 함께 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 1항 또는 제 2항에 있어서, 상기 제1 보안ID를 관련시키는 단계는,
    프로세서(305)에 의해 실행될 복수의 명령들로부터 적어도 하나의 명령 또는 명령들의 세트를 보안 민감 명령으로서 분류하는 단계와; 그리고
    상기 제1 보안ID를 상기 보안 민감 명령으로서 분류된 각각의 명령들 또는 명령들의 세트에 관련시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 4항에 있어서, 상기 프로세서(305)상에서 실행되는 소프트웨어 코드와 관련된 제2 보안ID를 획득하는 단계는 요구된 명령이 보안 민감 명령으로서 분류되었는지 여부를 결정하는 단계와; 그리고
    상기 요구된 명령이 보안 민감 명령인 것으로 결정되는 경우 프로세서(305)상에서 실행하는 소프트웨어 코드와 관련된 제2 보안ID를 획득하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 프로세서(305)상에서 코드를 실행하고, 제1 보안ID를 프로세서(305)에 의해 실행될 복수의 명령들 각각 또는 명령들의 세트에 관련시키기 위한 프로세서(305)와, 그리고
    가상 메모리 테이블(405)을 포함하며,
    상기 프로세서(305)는 상기 프로세서(305)상에서 실행하는 코드에 의해 복수의 명령들 중의 적어도 하나 또는 명령들의 세트를 실행하기 위한 요구를 수신하고, 상기 코드와 관련된 제2 보안ID를 상기 가상 메모리 테이블(405)로부터 획득하며, 상기 제2 보안ID를 상기 제1 보안ID와 비교하며, 그리고 상기 제2 보안ID가 상기 제1 보안ID와 매칭되는 경우 상기 요구된 명령 또는 명령들의 세트를 실행하는 것을 특징으로 하는 장치.
  7. 제 6항에 있어서, 상기 프로세서(305)는 상기 제2 보안ID와 상기 제1 보안ID가 매칭되지 않는 경우 상기 요구된 명령 또는 명령들의 세트의 실행을 거부하는 것을 특징으로 하는 장치.
  8. 제 6항 또는 제 7항에 있어서, 상기 프로세서(305)는 프로그램가능 레지스터내에 상기 제1 보안ID를 프로세서에 의해 실행될 복수의 명령들 각각 또는 명령들의 세트와 함께 저장하는 것을 특징으로 하는 장치.
  9. 제 6항 또는 제 7항에 있어서, 상기 프로세서(305)는 실행될 복수의 명령들로부터 적어도 하나의 명령 또는 명령들의 세트를 보안 민감 명령으로서 분류하고, 그리고 상기 제1 보안ID를 상기 보안 민감 명령으로서 분류된 각각의 명령들 또는 명령들의 세트에 관련시키는 것을 특징으로 하는 장치.
  10. 제 9항에 있어서, 상기 프로세서(305)는 요구된 명령이 보안 민감 명령으로서 분류되었는지 여부를 결정하고; 그리고 상기 요구된 명령이 보안 민감 명령인 것으로 결정되는 경우 프로세서(305)상에서 실행하는 소프트웨어 코드와 관련된 상기 제2 보안ID를 획득하는 것을 특징으로 하는 장치.
KR1020047008536A 2001-12-03 2002-09-12 보안민감명령들의 제한실행을 위한 방법 및 장치 KR100939328B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/005,248 US7865948B1 (en) 2001-12-03 2001-12-03 Method and apparatus for restricted execution of security sensitive instructions
US10/005,248 2001-12-03

Publications (2)

Publication Number Publication Date
KR20050027084A KR20050027084A (ko) 2005-03-17
KR100939328B1 true KR100939328B1 (ko) 2010-01-28

Family

ID=21714930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047008536A KR100939328B1 (ko) 2001-12-03 2002-09-12 보안민감명령들의 제한실행을 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US7865948B1 (ko)
EP (1) EP1451665A2 (ko)
JP (1) JP3830942B2 (ko)
KR (1) KR100939328B1 (ko)
CN (1) CN1307502C (ko)
AU (1) AU2002333566A1 (ko)
TW (1) TWI263132B (ko)
WO (1) WO2003048908A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1698958A1 (fr) * 2005-02-25 2006-09-06 Axalto SA Procédé de sécurisation de l'ecriture en mémoire contre des attaques par rayonnement ou autres
US8352713B2 (en) * 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US8245307B1 (en) 2006-12-18 2012-08-14 Nvidia Corporation Providing secure access to a secret
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
CN104272317B (zh) * 2012-06-01 2017-09-15 英特尔公司 在更安全的执行环境中标识并执行多个指令的子集
CN104601353B (zh) * 2013-10-31 2018-07-06 北京神州泰岳软件股份有限公司 一种网络安全生产设备的运维操作方法和***
CN111382429B (zh) * 2018-12-27 2022-12-27 华为技术有限公司 指令的执行方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949238A (en) 1987-02-18 1990-08-14 Kabushiki Kaisha Toshiba Apparatus for detecting memory protection violation
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JP2000181898A (ja) 1998-12-14 2000-06-30 Nec Corp フラッシュメモリ搭載型シングルチップマイクロコンピュータ
KR100652538B1 (ko) 2003-10-01 2006-12-06 가부시끼가이샤 도시바 마이크로 컴퓨터

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US494238A (en) * 1893-03-28 Windmill
US5027273A (en) 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4962538A (en) * 1989-02-13 1990-10-09 Comar, Inc. Image analysis counting system
US4962533A (en) 1989-02-17 1990-10-09 Texas Instrument Incorporated Data protection for computer systems
US5469556A (en) * 1989-12-12 1995-11-21 Harris Corporation Resource access security system for controlling access to resources of a data processing system
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5802590A (en) * 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
KR19980701566A (ko) * 1995-11-20 1998-05-15 요트.게.아. 롤페즈 컴퓨터 프로그램을 분배하는 시스템
US5835594A (en) 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
FI991134A (fi) * 1999-05-18 2000-11-19 Sonera Oyj Ohjelmiston testaus
US7178031B1 (en) * 1999-11-08 2007-02-13 International Business Machines Corporation Wireless security access management for a portable data storage cartridge
FR2802666B1 (fr) * 1999-12-17 2002-04-05 Activcard Systeme informatique pour application a acces par accreditation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949238A (en) 1987-02-18 1990-08-14 Kabushiki Kaisha Toshiba Apparatus for detecting memory protection violation
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JP2000181898A (ja) 1998-12-14 2000-06-30 Nec Corp フラッシュメモリ搭載型シングルチップマイクロコンピュータ
KR100652538B1 (ko) 2003-10-01 2006-12-06 가부시끼가이샤 도시바 마이크로 컴퓨터

Also Published As

Publication number Publication date
JP3830942B2 (ja) 2006-10-11
CN1307502C (zh) 2007-03-28
WO2003048908A2 (en) 2003-06-12
KR20050027084A (ko) 2005-03-17
EP1451665A2 (en) 2004-09-01
AU2002333566A8 (en) 2003-06-17
WO2003048908A3 (en) 2004-04-22
JP2005512182A (ja) 2005-04-28
CN1613039A (zh) 2005-05-04
TW200300880A (en) 2003-06-16
TWI263132B (en) 2006-10-01
AU2002333566A1 (en) 2003-06-17
US7865948B1 (en) 2011-01-04

Similar Documents

Publication Publication Date Title
US7631160B2 (en) Method and apparatus for securing portions of memory
US5469556A (en) Resource access security system for controlling access to resources of a data processing system
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
KR100975981B1 (ko) 보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트
EP2748753B1 (en) Method and apparatus for controlling access to a resource in a computer device
US7130977B1 (en) Controlling access to a control register of a microprocessor
US7571318B2 (en) Method and apparatus for improved security in a data processor
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
EP1440373B1 (en) Method and apparatus for physical address-based security to determine target security
US7512768B2 (en) Dynamically sharing a stack between different code segments
KR100939328B1 (ko) 보안민감명령들의 제한실행을 위한 방법 및 장치
KR100941743B1 (ko) 타겟 보안을 이용한 입력/출력 디바이스들의 다중-테이블액세싱을 위한 방법 및 장치
US10942870B1 (en) Circuitry and method
US7698522B1 (en) Method and apparatus for linear address based page level security scheme to determine current security context
WO2023061607A1 (en) Regulating access to memory
KR20040057256A (ko) 메모리보호장치 및 그 제어방법

Legal Events

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

Payment date: 20121227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150106

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 11