KR101255593B1 - 보안 코드의 런-타임 완전성을 체크하기 위한 방법들 및 시스템들 - Google Patents

보안 코드의 런-타임 완전성을 체크하기 위한 방법들 및 시스템들 Download PDF

Info

Publication number
KR101255593B1
KR101255593B1 KR1020117001179A KR20117001179A KR101255593B1 KR 101255593 B1 KR101255593 B1 KR 101255593B1 KR 1020117001179 A KR1020117001179 A KR 1020117001179A KR 20117001179 A KR20117001179 A KR 20117001179A KR 101255593 B1 KR101255593 B1 KR 101255593B1
Authority
KR
South Korea
Prior art keywords
execution
page
memory
pages
code
Prior art date
Application number
KR1020117001179A
Other languages
English (en)
Other versions
KR20110068968A (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
Priority claimed from US12/485,089 external-priority patent/US8639943B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20110068968A publication Critical patent/KR20110068968A/ko
Application granted granted Critical
Publication of KR101255593B1 publication Critical patent/KR101255593B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Abstract

CPU의 메모리 관리 유닛(MMU)에서 기존의 하드웨어 자원들을 이용하고 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하도록 지정된 공격들에 대하여 보호할 수 있는 방법들 및 시스템들이 개시된다. 특정 실시예들에서, 메모리의 그 페이지들이 이전에 안전한 것으로 인증되었었음을 표시하는 허가 엔트리들은 변호나 색인 버퍼(TLB)에 유지되고, 외부 페이지에 존재하는 명령을 수행하는 경우 체크된다. 허가가 무효임을 표시하는 TLB 허가 엔트리는 액세스된 페이지의 온-디맨드(on-demand) 인증을 유발한다. 인증되면, TLB의 허가 엔트리는 페이지가 인증되었음을 반영하기 위해 업데이트된다. 다른 예로서, 특정 실시예에서, 최근에 인증된 페이지들의 페이지는 유지되고, 외부 페이지에 존재하는 명령을 수행하면 체크된다.

Description

보안 코드의 런-타임 완전성을 체크하기 위한 방법들 및 시스템들{METHODS AND SYSTEMS FOR CHECKING RUN-TIME INTEGRITY OF SECURE CODE}
본 출원은 미국 가출원 번호 61/061,738 인, 2008년 6월 16일에 출원된 미국 가출원의 이익을 주장하며, 이는 여기에 참조된다.
본 명세서의 분야는 프로세서-기반 시스템에서 보안 코드(secure code)의 인증과 관련되며, 더 구체적으로는 보안 코드의 런-타임(run-time) 완전성(integrity)을 체크하는 것에 영향을 주는 메모리 관리 유닛(MMU) 허가 하드웨어를 사용하기 위한 방법들 및 시스템들에 관련된 것이다.
임베디드(embeded) 마이크로프로세서-기반 시스템(예를 들어, 모바일 전화기)에서, 시스템 하드웨어는 두 가지 모드들:보안 및 비-보안 중 하나에서 마이크 프로세서상의 프로그램을 실행하기 위한 메커니즘을 제공할 수 있다. 보안 모드에서 실행되는 프로그램들은 디지털 권리 관리를 위한 키 레지스터들, 및 무선 하드웨어의 제어를 위한 레지스터와 같은 민감성(sensitive) 하드웨어 자원들에 액세스하기 위해 허가를 받는다; 비-보안 모드에서 실행되는 프로그램들은 이러한 자원들에 액세스하는 것을 거부당한다.
일반적으로 보안 코드가 디바이스의 제조자에 의해 생산되고 배포되며, 제공된 코드의 블록이 신뢰되는 권위자(authority)에 의해 생성되었으며, 보안 코드에 부여(grant)된 통상의 허가들을 이용하여 안전하게 실행될 수 있음을 보증하는 디지털 시그너쳐(signature)와 함께 제공된다. 그러나, 보안 코드가 프로세서 집적 회로 외부의 오프-칩(off-chip) 메모리에 존재하는 경우, 공격자들은 이러한 오프-칩, 보안, 인증된 코드를 안전하지 않은 비인증된 코드로 교체하려고 시도할 수 있다. 이러한 공격자들을 방지하기 위해 알려진 방법은 오프-칩 메모리에 저장된 임의의 보안 코드를 주기적으로 재-인증하는 것, 또는 온-칩 메모리로 보안 코드를 페이징 하는 것, 요구-페이징된 시스템이 페이지들을 디스크로부터 메인 메모리로 교환하는 방법, 및 칩에 페이지가 호출될 때마다 페이지를 인증하는 것을 포함한다.
디지털 시그너쳐들이 일반적으로 인증되는 데이터에 비교하여 상대적으로 짧기 때문에, 아마도 보안 코드의 일 섹션을 인증하는 것은 최소 12개 및 아마도 수천 바이트들의 인증 요소(granule)가 주어지는 사소하지 않은 양의 시간이 걸릴 것이다. 이러한 코드는 주기적으로 인증되는 경우, 보안 코드의 실행이 시도되지 않는 긴 인터벌들이 존재할 수 있으며, 따라서, 그 인터벌 동안 임의의 주기적 인증은 시간 및 에너지를 소비할 것이다. 또한, 온-칩 메모리에 보안 코드를 페이징하는 것은 프로그램이 각 페이지의 몇몇 라인들만을 필요로 하는 경우 필요한 것 보다 더 많은 코드를 로딩하고 인증할 것이며, 따라서, 코드의 대부분을 로드하고 인증하는데 요구되는 온-칩 공간 및 전력을 소비할 것이다.
따라서, 오프-칩 메모리에 존재하는 프로그램 코드를 인증하고 제조자 또는 다른 인증된 소스에 의해 배포된 코드에 대해 비인증된 코드로 교체하는 것을 시도할 수 있는 공격자들에 대하여 보호하기 위한 시스템들 및 방법들이 요구된다.
프로세서의 메모리 관리 유닛(MMU)에서 기존의 하드웨어 자원들을 이용하고 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하도록 지정된 공격들에 대하여 보호할 수 있는 방법들 및 시스템들이 개시된다. 특정 실시예들은 메모리에 저장된 보안 또는 비-보안 명령 코드를 실행할 수 있는 프로세서를 가진 시스템을 포함한다. 프로세서가 보안 명령 코드를 가진 개별 메모리 페이지로부터 명령을 액세스하는 동안, 로직은 그 페이지가 보안 코드의 인증된 소스인 것으로 인증하도록 구현된다. 시스템은 또한 메모리 페이지들에 저장된 명령들에 대한 실행 허가들을 포함하는, 메모리 페이지들의 속성들의 캐시를 유지하는 메모리 관리 유닛("MMU")을 가진다. 메모리 페이지가 인증되면, MMU는 이러한 명령들의 실행을 허가하도록 그 페이지 상의 명령에 대한 실행 허가들을 설정할 수 있다.
설명적인 실시예는 여기에 설명된 발명 개념들을 제한하거나 정의하고자 언급된 것이 아니며, 이들의 이해를 돕기 위한 예시로서 제공된 것이다. 본 명세서의 다른 양상들, 이점들, 및 특징들이 다음 섹션들: 도면의 간략한 설명, 상세한 설명, 청구항들을 포함하는 전체 출원을 검토한 후에 더 명백해질 것이다.
본 명세서의 이러한 다른 특징들, 양상들 및 이점들은 다음의 상세한 설명이 첨부된 도면들을 참조하여 읽는 경우 더 잘 이해된다:
도 1은 예시적인 시스템의 일 부분의 그래픽적인 도면이다.
도 2는 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 3은 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 4는 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 5는 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 6은 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 7은 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 8은 특정 실시예에 따른 방법을 도시하는 플로우 차트이다.
도 9는 특정 실시예들에 따라 인증 시스템을 포함할 수 있는 예시적인 휴대 통신 디바이스를 도시하는 다이어그램이다.
도 10은 특정 실시예들에 따라 인증 시스템을 포함할 수 있는 예시적인 셀룰러 전화기를 도시하는 다이어그램이다.
도 11은 특정 실시예들에 따라 인증 시스템을 포함할 수 있는 예시적인 무선 인터넷 프로토콜 전화기를 도시하는 다이어그램이다.
도 12는 특정 실시예들에 따라 인증 시스템을 포함할 수 있는 예시적인 휴대용 디지털 어시스턴트를 도시하는 다이어그램이다.
도 13은 특정 실시예들에 따라 인증 시스템을 포함할 수 있는 예시적인 오디오 파일 플레이어를 도시하는 다이어그램이다.
상세한 실시예들이 여기에 설명된다. 그러나, 개시된 실시예들은 단순히 설명을 위한 것이며 상이한 실시예들이 가능함을 이해할 것이다. 도면들은 필요적으로 스케일(scale)되지 않았을 수 있으며, 임의의 도면들은 특정 컴포넌트들의 세부내용들을 보여주기 위해 과장되거나 축소될 수 있다. 따라서, 여기에 설명되는 구체적인 구조 및 기능들은 제한하는 것으로서 해석되지 않을 것이며, 단순히 당업자가 다양하게 본 발명을 사용하도록 지시하는 청구항들의 기초 및 대표들의 기초로서 해석된다.
보안 모드에서 비-보안 코드가 실행되는 것을 방지하기 위해, 시스템은 시스템 리셋에서, 또는 특별 시스템 명령의 실행 시에만 보안 모드로 진입하도록 구성될 수 있으며, 특별 시스템 명령은 비-보안 모드에서 실행될 수 있다. 다른 경우에, 모드는 보안으로 변경되고, 프로그램 실행 플로우는 보안 코드를 포함하는 것으로 알려진, 고정 메모리 어드레스로 전달된다. 기존의 시스템들에 공통적으로, 메모리는 (예를 들어, 부팅(boot)을 위한) 온-칩 판독 전용 메모리("ROM"), 또는 보안 프로그램을 이용하여, 그리고 보안 프로그램에 의해 이전에 초기화되었던 온-칩 랜덤 액세스 메모리("RAM")에서 구현된다. 온-칩 메모리에 포함된 보안 프로그램 코드는 오프-칩 메모리에 있는 것 보다 악의적인 간섭(malicious tampering)에 훨씬 덜 취약한데, 이는 온-칩 프로그램 스토리지 및 프로세서 사이의 상호연결이 보호된 집적 회로 패키지 외부로 노출되지 않기 때문이다.
파워-온 리셋이후에, 시스템은 보안 모드에서 실행을 시작한다. 이는 일반적으로 안전한 것으로 알려진 온-칩 부트스트랩(bootstrap) ROM으로부터의 코드들을 실행하는데, 이는 부트스트랩 ROM이 제조자에 의해 프로그램되었으며 일반적으로 제조 이후에 변경될 수 없기 때문이다. 부트 ROM의 프로그램 코드의 부분은 오프-칩 메모리로부터 온-칩 메모리로 코드를 로딩하고 표준 디지털 사이닝 기술을 이용하여 이를 인증할 수 있는 보안 코드 로더이다.
보안 코드가 온 칩인 경우, 칩은 보안 코드로서 이를 취급하도록 구성되며, 그 코드는 보안 코드에 대한 비인증된 코드를 교체하기 위한 시도로부터 논리적으로 안전하다. 그러나, 이러한 시스템에 대해 요구될 수 있는 보안 프로그램 코드의 양이 온-칩 메모리의 용량을 초과하는 경우, 임의의 보안 코드는 반드시 오프-칩 메모리에 존재해야한다. 이러한 코드는 일반적으로 인증될 수 있으나, 인증이 수행된 이후에 프로세서 및 오프-칩 메모리 사이에 간섭하는 공격자들에 의해 변경되거나 교체될 수 있다.
예시적인 실시예는 주기적으로 오프-칩 프로그램 메모리의 페이지들을 인증하나, 페이지들이 사용중이고 그리고 최근에 (임의적으로) 인증되지 않았던 경우에만 페이지들의 인증을 요청하는 소프트웨어와 함께 기존의 MMU 하드웨어를 이용함으로써 "블라인드(blind)" 알고리즘보다 훨씬 더 효율적으로 인증한다. 이러한 "온-디맨드(on-demand)" 인증은 실행될 모든 코드가 빈번하게 임의적으로 인증되는 것을 보장하나, 실행되지 않을 코드가 필요 이상으로 인증되지 않는다.
기존의 시스템들에서 공통적으로, 메모리 속성들의 캐시인, 변환 색인 버퍼(translation lookaside buffer, "TLB")가 TLB에서 각각의 엔트리에 대한 "실행" 허가를 저장한다. 실행을 불허하도록 마킹된 엔트리들은 물리 어드레스들을 및 데이터-사이드 메모리 액세스들에 대한 허가를 해결하기 위해 사용되나, 실행 허가가 없는 페이지로부터 명령들을 펫칭(fetch)하고 실행하기 위한 프로세서에 의한 시도는 예외 및 인터럽트를 유발할 것이다. 각각의 페이지에 대한 (보안 메모리에 저장된, 보안 페이지들에 대한) 페이지 테이블 엔트리는 일반적으로 페이지가 실행 허가를 가지고 있는지 여부 및 그것이 안전한지 또는 안전하지 않은지 여부를 표시할 것이다.
외부 페이지들의 인증 히스토리를 추적하는 것은 "최근에" 인증되었던 보안, 오프-칩 페이지들을 유지하는 것에 의해 특정 실시예들에서 달성된다. 리스트는 외부 간섭으로부터 리스트를 보호하기 위해 온-칩 메모리에 유지된다. 리스트는 상대적으로 작은 메모리를 사용하는데, 이는 리스트가 각각의 인증된 페이지에 대한 메모리 포인터 및 가능하게는 리스트 크기만을 가지기 때문이다. 외부 보안 페이지들의 인증이 수행되기 이전에, 리스트는 초기에 비어있으며, 또한 초기에 이러한 페이지들에 실행 허가를 부여(grant)하는 유효한 TLB 엔트리들이 존재하지 않는다.
도 1은 TLB(130) 및 온-칩 메모리(140)를 관리하기 위한 메모리 관리 유닛(120) 및 프로세서(110)를 가지는 집적 회로 칩(105)을 포함하는 예시적인 인증 시스템(100)을 도시한다. 인증 시스템(100)은 타이머(160) 및, 전술한 바와 같이, 보안 코드가 가능하게는 저장될 수 있는, 오프-칩 메모리(150) 또한 포함한다. 온-칩 메모리(140) 및 오프-칩 메모리(160)는 프로세서(110)에 의해 액세스가능 한 하나 이상의 컴퓨터-판독가능한 매체를 나타낸다. 특정한 실시예들에서, 타이머(160)는 온-칩에 존재할 수 있으나, 모든 실시예들에서 그러할 필요는 없다.
여기에 설명된 인증 시스템의 실시예들은 예를 들어, 휴대용 통신 디바이스, 셀룰러 전화기, 무선 인터넷 프로토콜 전화기, 휴대용 디지털 어시스턴트, 오디오 파일 플레이어 또는 다른 전자 시스템과 같은 다양한 디바이스들에 배치될 수 있다.
특정 실시예들에 따르는 방법은 도 2의 플로우차트(200)에 더 전체적으로 도시된다. 블록(210)에서, 펫칭 및 실행을 위한 명령 코드 어드레스가 프로세서(110)에 의해 선택된다. 블록(211)에서, MMU(120)는 TLB(130)에서 이 어드레스를 룩업하며, 블록(212)에서 TLB(130)의 페이지에 대한 유효 엔트리가 존재하는지 여부를 알기 위해 체크한다. 유효 엔트리가 존재하면, MMU(120)는 실행이 허가되는지 여부를 알기 위해 블록(213)에서 TLB(130)를 체크한다. 실행이 허가되면, 실행 플로우는 블록(222)에서 페이지로 진행한다.
실행이 허가되지 않으면, 프로세서(110)는 하드웨어 테이블 워크(walk) 머신 또는 소프트웨어 테이블 워크(walk) 루틴을 사용하여, 블록(214)에서 인터럽트 서비스 루틴("ISR")의 형태로 인터럽트를 수행하고 페이지 테이블 룩업을 구현한다. 실행은 TLB(130)가 페이지에 대하여 유효한 엔트리를 가지지 않거나 또는 실행 허가 없는 유효한 엔트리를 가질 것이기 때문에 허가되지 않는다. 페이지가 유효 TLB 엔트리를 가지지 않는 경우 ISR은 하나를 설정하도록 시도한다. 먼저 ISR은 블록(214)에서 페이지 테이블의 실행 허가를 체크한다. 보안 페이지 테이블이 다양한 메모리 페이지들에 대한 실행 허가를 포함하며, 온-칩 메모리(130)에 존재하거나 또는 유사한 방식으로 인증됨을 유의한다. 실행이 허가되지 않으면, 일반적인 에러 제어 제어(handle) 절차들이 블록(216)에서 호출(invoke)된다. 실행이 페이지 테이블에 의해 허가되면, ISR은 페이지가 블록(217)에서 인증을 요구하는지 여부를 확인(ascertain)한다. 이러한 결정을 내리기 위한 로직은 모든 코드 페이지들이 인증을 요구하도록 하는 것만큼 간단할 수 있으나, 페이지가 안전하고 오프-칩 메모리(150)로 매핑되는지 여부에 대한 평가(assessment)를 포함할 수도 있다. 페이지 테이블 엔트리는 페이지가 안전한지 아닌지 여부를 말해주는 비트를 가질 수 있으며, 물리적 위치는 물리적 어드레스 및 시스템 메모리 맵의 지식으로부터 추론될 수 있다.
페이지가 인증을 요구하지 않는 경우, ISR은 MMU(120)로 하여금 TLB(130)에 새로운 엔트리를 배치하도록 하거나, 블록(221)에서 (적절하게) 기존의 엔트리를 업데이트하도록 하며, 그리고 나서 실행 플로우는 블록(222)에서 페이지로 진행한다. 페이지가 인증을 요구하는 경우, ISR은 블록(218)에서 표준 디지털 기술들을 이용하여 페이지를 인증하도록 시도한다. ISR은 그리고나서 페이지가 인증된(authentic) 것인지 여부에 대한 결정을 내린다. 그렇지 않은 경우, 일반 에러 제어 절차들이 블록(220)에서 호출된다. 페이지가 인증된 것인 경우, ISR은 MMU(120)로 하여금 TLB(130)에 새로운 엔트리를 배치하도록 하거나, 블록(221)에서 (적절하게) 기존의 엔트리를 업데이트하도록 하며, 그리고 나서 실행 플로우는 블록(222)에서 페이지로 진행한다.
도 3은 선택적인 실시예를 도시하는 플로우차트를 보여주며, 여기서 도 2의 블록 번호들에 대응하는 번호들을 가진 블록들은 전술한 바와 동일한 역할을 수행한다. 이 실시예에서, 페이지가 블록(217)에서 인증을 요구하는 경우, ISR은 시험중인(in question) 페이지가 인증되었는지 여부를 알기 위해 블록(230)에서 온-칩 메모리(140)에 존재하는 최근에 인증된 페이지들의 리스트("RAPL")을 체크한다. 페이지가 RAPL상에 이미 존재하는 경우, 이는 재-인증되지 않으며, ISR은 MMU(120)로 하여금 블록(221)에서 TLB(130)에서 실행 허가를 가지는 엔트리를 설정하거나 또는 업데이트하도록 한다. 실행 플로우는 그리고나서 블록(222)에서 페이지로 진행한다. 페이지가 RAPL상에 존재하지 않으면, ISR은 전술한 바와 같이 블록(218)에서 특별 하드웨어(미도시)를 가지고 또는 가지지 않고, 표준 디지털 시그너쳐 기술들을 이용하여 페이지를 인증하도록 시도한다. 페이지가 인증될 수 없는 경우, 일반 에러 제어 기술들이 블록(220)에서 호출된다. 페이지가 인증될 수 있는 경우, 블록(231)에서 ISR은 온-칩 메모리(140)에 존재하는 RAPL 상에 페이지 어드레스를 기록하고, 그리고 블록(221)에서 부여되는 실행 허가를 가지는 TLB(130)의 엔트리를 설정하고 업데이트하며, 그 이후에 실행 플로우는 블록(222)에서 페이지로 진행한다. 특정 실시예들에서 프로세서(110)에 의해 수행되는 ISR 또한 안전하며, 시스템 초기화시에, 이전에 인증되었던 이후에 온-칩 메모리(140)에서 가장 편리하게 유지됨을 유의한다. 실행은 진행하고, ISR은 MMU(120)로 하여금 오프-칩 메모리(150)에서 각각의 보안 페이지를 인증하도록 하고, 제 1 시도가 그 페이지로부터의 명령을 실행하도록 수행되자마자, 이를 RAPL상에 알린다. 메모리 관리 소프트웨어는 RAPL뿐 아니라, 메모리 맵이 변경되는 경우, TLB(130)또한 업데이트하고 무효화함을 유의하여야 한다.
도 4는 선택적인 실시예를 도시하는 플로우 차트(400)를 도시하며, 전술한 바와 같이 여기서 도 2 및 3의 블록 번호들에 대응하는 번호들을 가지는 블록들은 동일한 역할을 수행한다. 다양한 실시예들에서, TLB(130)의 엔트리가 블록(213)에서 명령의 실행을 허가하지 않는 경우, ISR은 블록(232)에서 RAPL을 체크한다. 페이지가 이미 RAPL 상에 존재하는 경우, 실행 플로우는 블록(221)에서 페이지로 진행한다. 페이지가 RAPL 상에 존재하지 않는 경우, 방법은 블록(214)에서 페이지 테이블 룩업으로 진행하며, 이후에 전술한 바와 같이 도 3의 플로우 차트(300)의 논의에 따라 진행한다.
당업자는 위의 플로우차트들(200, 300, 및 400)에 설명된 블록들의 실행 순서가 다양한 방법으로 구현될 수 있음을 이해할 것이다. 위의 예시에서 나타난 블록들의 순서는 가변될 수 있다 ― 예를 들어, 블록들은 재-정렬되고, 결합되고 그리고/또는 서브-블록들로 분리될 수 있다. 특정한 블록들 또는 프로세스들은 병렬로 수행될 수 있다.
도 5의 플로우차트(500)에서 도시된 바와 같이, 특정 실시예들에서, 프로세서(110)는 블록(510)에서 도시된 바와 같이 타이머(160)를 설정한다. 블록(520)에서 타이머(160)가 만료되면, 결과 인터럽트에 응답하는 프로세서(110)에 의해 수행되는 (보안) ISR은 MMU(120)로 하여금 블록(530)에서 TLB(130)에서 모든 엔트리들의 실행 허가를 무효화하거나 제거함으로써 오프-칩 메모리(150)에 존재하는 인증된 페이지들의 리스트를 무효화하도록 한다. 시간 길이의 길이는 임의적으로 길거나 짧을 수 있으나, 시스템 메모리에 물리적 공격을 가하는(mount)데 걸릴 수 있는 시간 및 인증되는 코드 페이지들의 리스트를 유지하는 오버헤드를 최소화하고자 하는 의도 사이의 균형을 맞추가 위해, 특정 실시예는 몇 십초분의 일에서 몇 초 단위이다.
도 6 상의 플로우 차트(600)는 다양한 실시예들을 도시하며, 여기서 도 5의 블록 번호들에 대응하는 번호들을 가진 블록들은 전술한 바와 동일한 역할을 수행한다. 일 실시예에서, ISR은 MMU(120)로 하여금 오프-칩 메모리(150)에서 존재하는 페이지들에 대해서만 TLB(130)의 엔트리들의 실행 허가를 무효화하거나 또는 제거하도록 한다.
도 7의 플로우 차트(700)는 다양한 실시예들을 도시하며, 여기서 도 5 및 6의 블록 번호들에 대응하는 번호들을 가진 블록들은 전술한 바와 동일한 역할을 수행한다. 이 실시예에서, ISR은 MMU(120)로 하여금 블록(540)에서 오프-칩 메모리(150)에 존재하는 페이지들에 대한 TLB(130)의 엔트리들에 대한 실행 허가의 무효화 또는 제거 이후에 블록(550)에서 RALP을 무효화시키도록 한다.
도 8상의 플로우 차트(800)는 다른 실시예를 도시하며, 여기서 도 5의 블록 번호들에 대응하는 번호들을 가진 블록들은 전술한 바와 동일한 역할을 수행한다. 이 실시예에서, 블록(560)에서 ISR은 MMU(120)로 하여금 RAPL을 트래버스(traverse)하고 TLB(130)의 각각의 페이지의 엔트리에 대해 탐색하도록 하고, 발견된 경우, 이를 무효화하거나 또는 (특정 실시예들에서) 엔트리를 유효한 것으로 유지되나 실행 허가를 가지지 않도록 블록(560)에서 재설정할 수 있다. ISR은 그리고나서 블록(570)에서 RAPL을 무효화한다.
추가적이고 선택적인 보안 측정으로서, 프로세서(110)에 의해 동작되는 보안 커널(kernel)은 오프-칩 메모리(150)에 존재하는 보안 코드에 대한 호출(call)이 완료되고 제어는 비-보안 코드로 리턴하려고 하는 경우 오프-칩 메모리(150)에 존재하는 인증 페이지들의 리스트를 무효화하도록 프로그램될 수 있다. 즉, 오프-칩 메모리(150)를 이용하는 보안 태스크가 완료되면, 보안 코드는 보안 메모리 오프-칩 메모리(150) 상의 공격에 취약한 기간을 단축하기 위해 타이머(160)가 만료하는 것을 대기하지 않고 오프-칩 메모리(150)의 인증 상태를 무효화할 수 있다.
여기에 설명된 방법들은, 당업자에게 잘 알려진 바와 같이, 하드웨어, 소프트웨어, 또는 이들 둘의 임의의 조합을 포함하는 프로그램 코드로 다양하게 구현될 수 있다.
전술한-특징들을 포함하는 예시적인 디바이스들
도 9는 휴대용 통신 디바이스(900)의 예시적인 실시예를 도시하는 다이어그램이다. 도 9의 일반 다이어그램에 도시된 바와 같이, 휴대용 통신 디바이스는 디지털 신호 프로세서(DSP)(904)를 포함하는 온-칩 시스템(902)을 포함한다. 도 9의 일반적인 다이어그램은 또한 디지털 신호 프로세서(DSP)(904) 및 디스플레이(908)와 연결되는 디스플레이 컨트롤러(906)를 도시한다. 또한, 입력 디바이스(910)는 DSP(904)에 연결된다. 도시된 바와 같이, 메모리(912)는 DSP(904)에 연결된다. 추가적으로, 코더/디코더(CODEC)(914)는 DSP(904)에 연결될 수 있다. 스피커(916) 및 마이크로폰(918)은 CODEC(914)에 연결될 수 있다.
도 9의 일반 다이어그램은 디지털 신호 프로세서(904) 및 무선 안테나(922)에 연결된 무선 컨트롤러(920)를 추가적으로 도시한다. 특정 실시예에서, 파워 서플라이(924)는 온-칩 시스템(902)에 연결된다. 디스플레이(908), 입력 디바이스(910), 스피커(916), 마이크로폰(918), 무선 안테나(922) 및 파워 서플라이(924)는 온-칩 시스템(902)의 외부일 수 있다. 그러나, 각각은 온-칩 시스템(902)의 컴포넌트에 연결될 수 있다.
특정 실시예에서, 디지털 신호 프로세서(904)는 도 1-8을 참조하여 설명된 바와 같이, 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하고자 하는 공격들에 대해 보호하기 위한 보안 코드의 인증을 관리할 수 있는 MMU(962)를 포함한다.
도 10은 셀룰러 전화기(1000)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 셀룰러 전화기(1000)는 함께 연결된 아날로그 기저대역 프로세서(1006) 및 디지털 기저대역 프로세서(1008)를 포함하는 온-칩 시스템(1002)을 포함한다. 특정 실시예에서, 디지털 기저대역 프로세서(1004)는 디지털 신호 프로세서이다. 도 10의 일반 다이어그램에 도시된 바와 같이, 디스플레이 컨트롤러(1008) 및 터치스크린 컨트롤러(1010)는 디지털 기저대역 프로세서(1004)에 연결된다. 차례로, 온-칩 시스템(1002) 외부의 터치스크린 디스플레이(1012)는 디스플레이 컨트롤러(1008) 및 터치스크린 컨트롤러(1010)에 연결된다.
도 10의 일반 다이어그램은 디지털 기저대역 프로세서(1004)에 연결되는, 비디오 인코더(1014)(예를 들어, 위상 변조 라인(PAL) 인코더, SECAM(sequential couleur a memorie) 인코더, 또는 NTSC(national television systems(s) committee) 인코더)를 도시한다. 추가적으로 비디오 증폭기(816)는 비디오 인코더(1014) 및 터치스크린 디스플레이(1012)에 연결된다. 또한, 비디오 포트(1018)는 비디오 증폭기(1016)에 연결된다. 범용 직렬 버스(USB) 컨트롤러(1020)는 디지털 기저대역 프로세서(1004)에 연결된다. 또한, USB 포트(1022)는 USB 컨트롤러(1020)에 연결된다. 메모리(1024) 및 가입자 식별 모듈(SIM) 카드(1026)는 디지털 기저대역 프로세서(1004)에 연결될 수 있다. 또한, 도 10의 일반 다이어그램에 도시된 바와 같이, 디지털 카메라(1028)는 디지털 기저대역 프로세서(1004)에 연결될 수 있다. 예시적인 실시예에서, 디지털 카메라(1028)는 CCD(charge-coupled device) 카메라 또는 CMOS(complementary metal-oxide semiconductor) 카메라이다.
도 10의 일반 다이어그램에서 추가적으로 도시되는 바와 같이, 스테레오 오디오 CODEC(1030)은 아날로그 기저대역 프로세서(1006)에 연결될 수 있다. 또한, 오디오 증폭기(1032)는 스테레오 오디오 CODEC(1030)에 연결될 수 있다. 예시적인 실시예에서, 제 1 스테레오 스피커(1034) 및 제 2 스테레오 스피커(1036)는 오디오 증폭기(1032)에 연결된다. 마이크로폰 증폭기(1038)는 스테레오 오디오 CODEC(1030)에 연결될 수도 있다. 추가적으로, 마이크로폰(1040)은 마이크로폰 증폭기(1038)에 연결될 수 있다. 특정 실시예에서, 주파수 변조 라디오 튜너(1042)는 스테레오 오디오 CODEC(1030)에 연결될 수 있다. FM 안테나(1044)는 FM 라디오 튜너(1042)에 연결될 수 있다. 추가적으로, 스테레오 헤드폰들(1046)은 스테레오 오디오 CODEC(1030)에 연결될 수 있다.
도 10의 일반 다이어그램은 아날로그 기저대역 프로세서(1006)와 연결될 수 있는 무선 주파수(RF) 트랜시버(1048)를 추가적으로 도시한다. RF 스위치(1050)는 RF 트랜시버(1048) 및 RF 안테나(1052)에 연결될 수 있다. 키패드(1054)는 아날로그 기저대역 프로세서(1006)에 연결될 수 있다. 또한, 마이크로폰(1056)을 가진 모노 헤드셋은 아날로그 기저대역 프로세서(1006)에 연결될 수 있다. 또한 바이브레이터 디바이스(1058)는 아날로그 기저대역 프로세서(1006)에 연결될 수 있다. 도 10의 일반 다이어그램은 또한, 온-칩 시스템(1002)에 연결될 수 있는 파워 서플라이(1060)를 도시한다. 특정 실시예에서, 파워 서플라이(1060)는 셀룰러 전화기(1000)에 다양한 컴포넌트들에 전력을 제공하는 직류 전류(DC) 파워 서플라이이다. 또한, 특정한 실시예에서, 파워 서플라이는 충전가능한 DC 배터리이거나 도는 AC 전력 소스와 연결되는 교류 전류(AC) 대 DC 변압기로부터 유도되는 DC 파워 서플라이이다.
도 10의 일반 다이어그램에서 도시된 바와 같이, 터치스크린 디스플레이(1012), 비디오 포트(1018), USB 포트(1022), 카메라(1028), 제 1 스테레오 스피커(1034), 제 2 스테레오 스피커(1036), 마이크로폰(1040), FM 안테나(1044), 스테레오 헤드폰들(1046), RF 스위치(1050), RF 안테나(1052), 키패드(1054), 모노 헤드셋(1056), 바이브레이터(1058), 파워 서플라이(1060)는 온-칩 시스템(1002)의 외부일 수 있다.
특정 실시예에서, 디지털 신호 프로세서(1004)는 도 1-8을 참조하여 설명된 바와 같이, 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하고자 하는 공격들에 대해 보호하기 위한 보안 코드의 인증을 관리할 수 있는 MMU(1062)를 포함한다.
도 11은 무선 인터넷 프로토콜(IP) 전화기(1100)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 무선 IP 전화기(1100)는 디지털 신호 프로세서(DSP)(1104)를 포함하는 온-칩 시스템(1102)을 포함한다. 디스플레이 컨트롤러(1106)는 DSP(1104)에 연결될 수 있으며, 디스플레이(1108)는 디스플레이 컨트롤러(1106)에 연결된다. 예시적인 실시예에서, 디스플레이(1108)는 LCD(liquid crystal display)이다. 도 11은 키패드(1110)가 DSP(1104)에 연결될 수 있음을 추가적으로 보여준다.
플래시 메모리(1112)는 DSP(1104)에 연결될 수 있다. 동기화 동작 랜덤 액세스 메모리(SDRAM)(1114), 정적 랜덤 액세스 메모리(SRAM)(1116) 및 전기적으로 삭제가능한 프로그램가능한 판독 전용 메모리(EEPROM)(1118)는 또한 DSP(1104)에 연결될 수 있다. 도 11의 일반 다이어그램은 또한 발광 다이오드(LED)(1120)가 DSP(1104)에 연결될 수도 있음을 보여준다. 추가적으로, 특정 실시예에서, 음성 CODEC(1122)는 DSP(1104)에 연결될 수 있다. 증폭기(1124)는 음성 CODEC(1122)에 연결될 수 있으며, 모노 스피커(1126)는 증폭기(1124)에 연결될 수 있다. 도 11의 일반 다이어그램은 음성 CODEC(1122)에 연결된 모노 헤드셋(1128)을 추가적으로 도시한다. 특정한 실시예에서, 모노 헤드셋(1128)은 마이크로폰을 포함한다.
무선 로컬 영역 네트워크(WLAN) 기저대역 프로세서(1130)는 DSP(1104)에 연결될 수 있다. RF 트랜시버(1132)는 WLAN 기저대역 프로세서(1130)에 연결될 수 있으며, RF 안테나(1134)는 RF 트랜시버(1132)에 연결될 수 있다. 특정 실시예에서, 블루투스 컨트롤러(1136)는 또한 DSP(1104)에 연결될 수 있으며, 블루투스 안테나(1138)는 컨트롤러(1136)에 연결될 수 있다. 도 11의 일반 다이어그램은 또한 USB 포트(1140)가 DSP(1104)에 연결될 수 있음을 보여준다. 또한, 파워 서플라이(1142)는 온-칩 시스템(1102)에 연결되며, 무선 IP 전화기(1100)의 다양한 컴포넌트들에 전력을 제공한다.
도 11의 일반 다이어그램에 도시된 바와 같이, 디스플레이(1108), 키패드(1110), LED(1120), 모노 스피커(1126), 모노 헤드셋(1128), RF 안테나(1134), 블루투스 안테나(1138), USB 포트(1140), 및 파워 서플라이(1142)는 온-칩 시스템(1102)의 외부에 있을 수 있으며, 온-칩 시스템(1102)의 하나 이상의 컴포넌트들에 연결될 수 있다.
특정 실시예에서, 디지털 신호 프로세서(1104)는 도 1-8을 참조하여 설명된 바와 같이, 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하고자 하는 공격들에 대해 보호하기 위한 보안 코드의 인증을 관리할 수 있는 MMU(1162)를 포함한다.
도 12는 휴대용 디지털 어시스턴트(PDA)(1200)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, PDA(1200)는 디지털 신호 프로세서(DSP)(1204)를 포함하는 온-칩 시스템(1202)을 포함한다. 플래시 메모리(1214)는 DSP(1204)에 연결될 수 있다. 판독 전용 메모리(1216), 동기화 동작 랜덤 액세스 메모리(SDRAM)(1218), 및 전기적으로 삭제가능한 프로그램가능한 판독 전용 메모리(EEPROM)(1220)은 또한 DSP(1204)에 연결될 수 있다. 터치스크린 컨트롤러(1206) 및 디스플레이 컨트롤러(1208)는 DSP(1204)에 연결된다. 추가적으로, 터치스크린 디스플레이(1210)는 터치스크린 컨트롤러(1206) 및 디스플레이 컨트롤러(1208)에 연결된다. 도 12의 일반 다이어그램은 또한 DSP(1204)에 연결될 수 있는 키패드(1212)를 표시한다.
특정 실시예에서, 스테레오 오디오 CODEC(1226)은 DSP(1204)에 연결될 수 있다. 제 1 스테레오 증폭기(1228)는 스테레오 오디오 CODEC(1226)에 연결될 수 있으며, 제 1 스테레오 스피커(1230)는 제 1 스테레오 증폭기(1228)에 연결될 수 있다. 추가적으로, 마이크로폰 증폭기(1032)는 스테레오 오디오 CODEC(1226)에 연결될 수 있으며, 마이크로폰(1234)은 마이크로폰 증폭기(1232)에 연결될 수 있다. 도 12의 일반 다이어그램은 스테레오 오디오 CODEC(1226)에 연결될 수 있는 제 2 스테레오 증폭기(1236) 및 제 2 스테레오 증폭기(1236)에 연결될 수 있는 제 2 스테레오 스피커(1238)를 추가적으로 보여준다. 특정한 실시예에서, 스테레오 헤드폰들(1240)은 또한 스테레오 오디오 CODEC(1226)에 연결될 수 있다.
도 12의 일반 다이어그램은 DSP(1204)에 연결될 수 있는 802.11 컨트롤러(1242) 및 802.11 컨트롤러(1242)에 연결될 수 있는 802.11 안테나(1244)를 도시한다. 또한, 블루투스 컨트롤러(1246)는 DSP(1204)에 연결될 수 있으며, 블루투스 안테나(1248)는 블루투스 컨트롤러(1246)에 연결될 수 있다. USB 컨트롤러(1250)는 DSP(1204)에 연결될 수 있고, USB 포트(1252)는 USB 컨트롤러(1250)에 연결될 수 있다. 추가적으로, 스마트 카드(1254)(예를 들어, 멀티미디어 카드(MMC), 또는 보안 디지털 카드(SD))는 DSP(1204)에 연결될 수 있다. 또한, 파워 서플라이(1256)는 온-칩 시스템(1202)에 연결될 수 있으며, PDA(1200)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
도 12의 일반 다이어그램에 나타난 바와 같이, 디스플레이(1210), 키패드(1212), IrDA 포트(1222), 디지털 카메라(1224), 제 1 스테레오 스피커(1230), 마이크로폰(1234), 제 2 스테레오 스피커(1238), 스테레오 헤드폰들(1240), 802.11 안테나(1244), 블루투스 안테나(1248), USB 포트(1252), 및 파워 서플라이(1256)는 온-칩 시스템(1202)의 외부에 있을 수 있으며, 온-칩 시스템(1202)의 하나 이상의 컴포넌트들에 연결될 수 있다.
특정 실시예에서, 디지털 신호 프로세서(1204)는 도 1-8을 참조하여 설명된 바와 같이, 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하고자 하는 공격들에 대해 보호하기 위한 보안 코드의 인증을 관리할 수 있는 MMU(1262)를 포함한다.
도 13은 오디오 파일 플레이어(예를 들어, MP3 플레이어)(1300)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 오디오 파일 플레이어(1300)는 디지털 신호 프로세서(DSP)(1304)를 포함하는 온-칩 시스템(1302)을 포함한다. 디스플레이 컨트롤러(1306)는 DSP(1304)에 연결될 수 있으며, 디스플레이(1308)는 디스플레이 컨트롤러(1306)에 연결된다. 예시적인 실시예에서, 디스플레이(1308)는 LCD(liquid crystal display)이다. 키패드(1310)는 DSP(1304)에 연결될 수 있다.
도 13의 일반 다이어그램에서 추가적으로 도시된 바와 같이, 플래시 메모리(1312) 및 판독 전용 메모리(ROM)(1314)는 DPS(1304)에 연결될 수 있다. 추가적으로, 특정 실시예에서, 오디오 CODEC(1316)은 DSP(1304)에 연결될 수 있다. 증폭기(1318)는 오디오 CODEC(1316)에 연결될 수 있으며, 모노 스피커(1320)는 증폭기(1318)에 연결될 수 있다. 도 13의 일반 다이어그램은 마이크로폰 입력(1322) 및 스테레오 입력(1324)이 오디오 CODEC(1316)에 연결될 수 있음을 표시한다. 특정 실시예에서, 스테레오 헤드폰들(1326)은 오디오 CODEC(1316)에 또한 연결될 수 있다.
USB 포트(1328) 및 스마트 카드(1330)는 DSP(1304)에 연결될 수 있다. 추가적으로, 파워 서플라이(1332)는 온-칩 시스템(1302)에 연결될 수 있으며, 오디오 파일 플레이어의 다양한 컴포넌트들에 전력을 제공할 수 있다.
도 13의 일반 다이어그램에 나타난 바와 같이, 키패드(1310), 모노 스피커(1320), 마이크로폰 입력(1322), 스테레오 입력(1324), 스테레오 헤드폰들(1326), USB 포트(1328), 및 파워 서플라이(1332)는 온-칩 시스템(1302)의 외부에 있으며, 온-칩 시스템(1302)의 하나 이상의 컴포넌트들에 연결된다.
특정 실시예에서, 디지털 신호 프로세서(1304)는 도 1-8을 참조하여 설명된 바와 같이, 인증된 보안 코드를 비-인증된 안전하지 않은 코드로 교체하고자 하는 공격들에 대해 보호하기 위한 보안 코드의 인증을 관리할 수 있는 MMU(1362)를 포함한다.
일반사항
컴퓨팅 디바이스는 적어도 하나의 컴퓨터에 의해 실행되는 경우, 적어도 하나의 컴퓨터로 하여금 본 명세서의 하나 이상의 발명들을 구현하도록 하는 컴퓨터-판독가능한 명령들을 실체적으로 구현하는 하나 이상의 컴퓨터-판독가능한 매체를 액세스할 수 있다. 소프트웨어가 사용되는 경우, 소프트웨어는 하나 이상의 컴포넌트들, 프로세스들, 및/또는 애플리케이션들을 포함할 수 있다. 소프트웨어에 추가적으로 또는 선택적으로, 컴퓨팅 디바이스(들)은 본 명세서의 방법들 중 하나 이상을 구현하도록 동작가능한 디바이스(들)을 렌더링하는 회로를 포함할 수 있다.
본 명세서의 실시예들은 상이한 구조를 가지는 시스템들 및 도면들에서 도시된 것과 상이한 정보 플로우들을 가지는 방법들을 포함할 수 있다. 도시된 시스템들은 단순히 설명을 위한 것이며, 임의의 시스템 컴포넌트, 특징, 또는 정보 플로우가 본 명세서의 범위를 제한하거나 또는 임의의 실시예에서 필수적이거나 필요하다는 것을 나타내기 위한 의도가 아니다. 실시예들의 전술한 설명은 설명을 위한 목적으로만 표시되었으며, 개시된 정확한 형태로 본 명세서를 제한하거나 또는 총 망라하기 위한 의도가 아니다. 다양한 수정들 및 적응들이 당업자에게 본 명세서의 내용에서 벗어남이 없이 명확하다.

Claims (19)

  1. 시스템으로서,
    보안 또는 비-보안 명령 코드를 실행하도록 구성되는 프로세서;
    메모리 페이지들을 포함하는 메모리 ― 상기 프로세서에 대한 명령들이 상기 메모리 페이지들로부터 펫칭(fetch)되고 실행될 수 있음 ―;
    보안 명령 코드의 소스들로서 개별 메모리 페이지들을 인증하기 위한 로직; 및
    상기 메모리 페이지들로부터의 명령들에 대한 실행 허가들을 포함하는, 메모리 페이지들의 속성(attribute)들을 캐싱(cache)하고; 그리고
    상기 인증하기 위한 로직에 따라 상기 실행 허가들을 설정하도록 구성되는
    메모리 관리 유닛을 포함하는, 시스템.
  2. 제 1 항에 있어서, 상기 메모리 관리 유닛은 상기 실행 허가들을 포함하는 변환 색인 버퍼(translation lookaside buffer)를 더 포함하는, 시스템.
  3. 제 1 항에 있어서, 상기 메모리 관리 유닛은 최근에 인증된 페이지들의 리스트를 더 포함하는, 시스템.
  4. 제 1 항에 있어서,
    만료하는 타이머; 및
    상기 타이머의 가장 최근의 만료 이래로 메모리 페이지가 인증되었던 것으로 알려지지 않는한 상기 메모리 페이지로부터의 명령의 실행을 방지하기 위한 로직을 더 포함하는, 시스템.
  5. 제 4 항에 있어서, 상기 타이머 및 상기 프로세서는 집적 회로의 부분인, 시스템.
  6. 제 1 항에 있어서, 상기 시스템은 휴대용 디바이스 내에 배치되는, 시스템.
  7. 방법으로서,
    실행 허가 엔트리들을 갖는 변환 색인 버퍼를 유지하는 단계;
    메모리 페이지의 명령이 상기 변환 색인 버퍼의 유효 실행 허가 엔트리를 가지는지 여부를 결정하는 단계;
    상기 명령이 상기 변환 색인 버퍼의 유효 실행 허가 엔트리를 가지지 않은 경우, 상기 명령의 실행이 허가되는지 여부를 결정하는 단계;
    상기 명령의 실행이 허가된 경우, 필요한 경우 상기 페이지를 인증하는 단계; 및
    상기 실행 허가 엔트리가 유효하고 상기 명령의 실행이 허가됨을 표시하도록 상기 변환 색인 버퍼의 상기 명령에 대한 상기 실행 허가 엔트리를 설정하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 필요한 경우 페이지를 인증하는 단계는:
    상기 페이지가 인증을 요구하는지 여부를 결정하는 단계;
    상기 페이지가 인증을 요구하는 경우, 상기 페이지가 최근에 인증된 페이지들의 리스트 상에 존재하는지 여부를 결정하는 단계;
    상기 페이지가 상기 최근에 인증된 페이지들의 리스트 상에 존재하지 않는 경우, 상기 페이지를 인증하는 단계; 및
    상기 최근에 인증된 페이지들의 리스트에 상기 페이지를 추가하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 명령이 상기 변환 색인 버퍼에 유효 실행 허가 엔트리를 가지는 경우, 상기 변환 색인 버퍼의 상기 실행 허가 엔트리가 상기 명령의 실행을 허가하는지 여부를 결정하는 단계;
    상기 변환 색인 버퍼의 상기 실행 허가 엔트리가 상기 명령의 실행을 허가하지 않는 경우, 상기 페이지가 상기 최근에 인증된 페이지들의 리스트 상에 존재하는지 여부를 결정하는 단계;
    상기 페이지가 상기 최근에 인증된 페이지들의 리스트 상에 존재하지 않는 경우, 상기 명령의 실행이 허가되는지 여부를 결정하는 단계;
    상기 명령의 실행이 허가되는 경우,
    상기 페이지가 인증을 요구하는지 여부를 결정하는 단계;
    상기 페이지가 인증을 요구하는 경우
    상기 페이지를 인증하는 단계; 및
    상기 최근에 인증된 페이지들의 리스트에 상기 페이지를 추가하는 단계;
    상기 실행 허가 엔트리가 유효하고 그리고 상기 명령의 실행이 허가됨을 표시하도록 상기 변환 색인 버퍼의 상기 명령에 대한 상기 실행 허가 엔트리를 설정하는 단계를 더 포함하는, 방법.
  10. 제 9 항에 있어서,
    타이머를 설정하는 단계;
    상기 타이머가 만료되면, 상기 실행 허가 엔트리와 연관되는 명령의 실행을 불허(disallow)하도록 상기 변환 색인 버퍼의 실행 허가 엔트리를 설정하는 단계; 및
    상기 타이머를 리셋하는 단계를 더 포함하는, 방법.
  11. 제 10 항에 있어서, 상기 변환 색인 버퍼의 상기 실행 허가 엔트리는 오프-칩(off-chip) 메모리에 존재하는 페이지의 명령에 대한 것인, 방법.
  12. 제 10 항에 있어서, 상기 타이머가 만료되면 최근에 인증된 페이지들의 리스트에서 엔트리들을 제거하는 단계를 더 포함하는, 방법.
  13. 제 10 항에 있어서, 상기 실행 허가 엔트리와 연관되는 명령의 실행을 불허하도록 상기 변환 색인 버퍼의 실행 허가 엔트리를 설정하는 단계는:
    최근에 인증된 페이지들의 리스트를 탐색하는 단계;
    상기 명령이 상기 최근에 인증된 페이지들의 리스트 상의 페이지에 존재하는 경우에만 상기 명령의 실행을 불허하도록 상기 변환 색인 버퍼의 상기 실행 허가 엔트리를 설정하는 단계를 포함하는, 방법.
  14. 방법으로서,
    하나 이상의 메모리 페이지들을 제공하는 단계;
    보안 실행에 대한 보안 명령 코드의 하나 이상의 메모리 페이지들을 인증하는 단계;
    상기 하나 이상의 인증된 메모리 페이지들로부터의 상기 보안 명령 코드의 실행을 허가하도록 메모리 관리 유닛의 실행 허가 엔트리들을 설정하는 단계;
    상기 하나 이상의 인증된 메모리 페이지들로부터의 상기 보안 명령 코드를 실행하는 단계;
    상기 하나 이상의 인증된 메모리 페이지들로부터의 상기 보안 명령 코드의 실행을 거부(deny)하도록 상기 메모리 관리 유닛의 상기 실행 허가 엔트리들을 설정하는 단계; 및
    비-보안 명령 코드를 실행하는 단계를 포함하는, 방법.
  15. 컴퓨터-판독가능한 매체로서,
    변환 색인 버퍼에서 유효 실행 허가 엔트리를 가지지 않는 명령의 실행이 허가되는지 여부를 결정하기 위한 코드;
    상기 명령을 포함하는 메모리 페이지의 인증이 요구되는지 여부를 결정하기 위한 코드;
    실행이 허가되는 상기 명령을 포함하는 상기 메모리 페이지를 인증하기 위한 코드; 및
    실행이 허가되는 상기 명령에 대해 상기 변환 색인 버퍼의 상기 실행 허가 엔트리를 업데이트하기 위한 코드를 포함하는, 컴퓨터-판독가능한 매체.
  16. 제 15 항에 있어서, 상기 컴퓨터-판독가능한 매체는, 타이머가 만료되면 명령의 실행을 불허하도록 상기 변환 색인 버퍼의 실행 허가 엔트리를 설정하기 위한 코드를 더 포함하는, 컴퓨터-판독가능한 매체.
  17. 제 15 항에 있어서, 상기 컴퓨터-판독가능한 매체는 메모리에 최근에 인증된 페이지들의 리스트를 유지하기 위한 코드를 더 포함하는, 컴퓨터-판독가능한 매체.
  18. 제 17 항에 있어서, 상기 컴퓨터-판독가능한 매체는 타이머가 만료되면 상기 최근에 인증된 페이지들의 리스트에서 하나 이상의 엔트리들을 제거하기 위한 코드를 더 포함하는, 컴퓨터-판독가능한 매체.
  19. 제 16 항에 있어서, 상기 컴퓨터-판독가능한 매체는 상기 실행 허가 엔트리와 연관된 명령이 최근에 인증된 페이지들의 리스트 상의 페이지에 존재하는 경우에만 상기 변환 색인 버퍼의 실행 허가 엔트리를 수정하기 위한 코드를 더 포함하는, 컴퓨터-판독가능한 매체.
KR1020117001179A 2009-06-16 2009-07-14 보안 코드의 런-타임 완전성을 체크하기 위한 방법들 및 시스템들 KR101255593B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/485,089 US8639943B2 (en) 2008-06-16 2009-06-16 Methods and systems for checking run-time integrity of secure code cross-reference to related applications
US12/485,089 2009-06-16
PCT/US2009/050556 WO2011016793A2 (en) 2008-06-16 2009-07-14 Methods and systems for checking run-time integrity of secure code

Publications (2)

Publication Number Publication Date
KR20110068968A KR20110068968A (ko) 2011-06-22
KR101255593B1 true KR101255593B1 (ko) 2013-04-16

Family

ID=44546009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117001179A KR101255593B1 (ko) 2009-06-16 2009-07-14 보안 코드의 런-타임 완전성을 체크하기 위한 방법들 및 시스템들

Country Status (1)

Country Link
KR (1) KR101255593B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075595A2 (en) * 2000-03-31 2001-10-11 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075595A2 (en) * 2000-03-31 2001-10-11 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution

Also Published As

Publication number Publication date
KR20110068968A (ko) 2011-06-22

Similar Documents

Publication Publication Date Title
US8639943B2 (en) Methods and systems for checking run-time integrity of secure code cross-reference to related applications
US9772953B2 (en) Methods and apparatus for protecting operating system data
KR102244645B1 (ko) 인증된 변수의 관리
US20100058041A1 (en) Method and Apparatus for Secure Instantly-On Computer System
CN108027779B (zh) 允许受保护的容器存储器与输入/输出设备之间的安全通信的处理器、方法、系统和指令
TWI581099B (zh) 積體電路裝置及控制積體電路裝置上記憶體存取的方法
US7467304B2 (en) System, device, and method of selectively allowing a host processor to access host-executable code
CN107003936B (zh) 具有非可读页的存储器保护
US20070276969A1 (en) Method and device for controlling an access to peripherals
US20110296515A1 (en) Method for managing computer resources accessed by a program operating in a restricted environment
US20180082057A1 (en) Access control
JP2008524740A (ja) 装置のセキュリティを改良した集積回路
KR20130114733A (ko) 보안 시스템에서 랜덤하게 할당된 메모리 범위로 jit를 지원하는 시스템 및 방법
KR20150059564A (ko) 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치
JP2010182196A (ja) 情報処理装置およびファイル検証システム
JP2020042341A (ja) プロセッシングデバイス及びソフトウェア実行制御方法
KR20160142319A (ko) 외부 메모리 디바이스 상에 상주하는 칩 제한 명령들을 이용한 부트 시퀀스 수정을 위한 시스템 및 방법
JP5316592B2 (ja) セキュアプロセッサ用プログラム
KR101255593B1 (ko) 보안 코드의 런-타임 완전성을 체크하기 위한 방법들 및 시스템들
Shim et al. SOTPM: software one-time programmable memory to protect shared memory on ARM trustzone
Zhang et al. Flash controller-based secure execution environment for protecting code confidentiality
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法
CN113742789A (zh) 数据处理方法及数据处理装置
JP2010286866A (ja) マイクロコントローラ装置
Bakoyiannis et al. Secure Multi-tenant Provisioning of IoT Devices by Combining On-chip Cortex-M TrustZone with Secure Element

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee