KR20180015723A - 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법 - Google Patents
보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20180015723A KR20180015723A KR1020187000196A KR20187000196A KR20180015723A KR 20180015723 A KR20180015723 A KR 20180015723A KR 1020187000196 A KR1020187000196 A KR 1020187000196A KR 20187000196 A KR20187000196 A KR 20187000196A KR 20180015723 A KR20180015723 A KR 20180015723A
- Authority
- KR
- South Korea
- Prior art keywords
- access
- gateway
- module
- security
- calling
- 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
-
- 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/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- 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
- 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
- G06F21/54—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 by adding security routines or objects to programs
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
모니터에 의해 결합된 제1 보안 구역 및 제2 보안 구역을 갖는 데이터 처리 장치가 제공된다. 모니터는 처리 회로가 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 제1 보안 구역에서 제2 보안 구역으로 전이하는 처리 회로에 보안 증명서들을 적용한다. 신뢰 저장 디바이스에 저장된 전이 명령어 및 액세스 파라미터들을 포함하는 호출 게이트웨이는 보안 증명서들을 처리 회로에 적용할 때를 결정하기 위해 모니터에 의해 사용된다. 액세스 파라미터들은 타겟 함수 또는 메모리 위치를 포함한다.
Description
본 발명 대상은 일반적으로 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법들에 관한 것이다. 보다 구체적으로, 이 장치 및 방법들은 보안 구역과 하위 보안 구역 사이의 전이를 위한 호출 게이트웨이에 관한 것이다.
대부분의 시스템들 및 아키텍처들은 비인가된 사용자들로부터의 악의적 공격들로부터 디바이스들을 보호하는 것을 목표로 한다. 상이한 보안 레벨들을 갖는 구역들을 제공하는 것과 같이, 공격들을 방지하는 수개의 공지된 방법들이 있지만, 모든 공지된 방법들은 그들과 연관되는 단점들을 갖는다.
제1 양태에 따르면, 데이터 처리 장치가 제공된다. 데이터 처리 장치는, 프로그램 명령어들에 응답하여 처리 함수들을 수행하도록 구성되는 처리 회로- 상기 처리 회로는 제1 보안 구역, 제2 보안 구역 및 모니터를 포함하고, 상기 모니터는, 상기 처리 회로가 상기 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 상기 처리 회로에 보안 증명서들을 적용하도록 구성됨 -, 및 전이 명령어 및 액세스 파라미터들을 포함하는 적어도 하나의 호출 게이트웨이를 저장하기 위한 신뢰 저장 디바이스를 포함하며, 상기 모니터는, 호출 게이트웨이가 전이 명령어에 응답하여 신뢰 저장 디바이스에 저장될 때를 결정하고, 호출 게이트웨이가 신뢰 저장 디바이스에 저장된다는 결정 후에, 상기 처리 회로가 상기 제2 보안 구역에서 타겟 함수를 수행할 수 있도록 상기 처리 회로에 상기 보안 증명서들을 적용하도록 더 구성되며, 상기 액세스 파라미터들은 상기 타겟 함수를 포함한다.
제2 양태에 따르면, 데이터 처리 장치가 제공된다. 데이터 처리 장치는, 프로그램 명령어들에 응답하여 처리 함수들을 수행하도록 구성되는 처리 회로- 상기 처리 회로는 제1 보안 구역, 제2 보안 구역 및 모니터를 포함하고, 상기 모니터는, 상기 처리 회로가 상기 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 상기 처리 회로에 보안 증명서들을 적용하도록 구성됨 -, 및 전이 명령어 및 액세스 파라미터들을 포함하는 적어도 하나의 호출 게이트웨이를 저장하기 위한 신뢰 저장 디바이스를 포함하며, 상기 모니터는, 호출 게이트웨이가 전이 명령어에 응답하여 신뢰 저장 디바이스에 저장될 때를 결정하고, 호출 게이트웨이가 신뢰 저장 디바이스에 저장된다는 결정 후에, 상기 처리 회로가 상기 제2 보안 구역에서 메모리 위치에 액세스할 수 있도록 상기 처리 회로에 상기 보안 증명서들을 적용하도록 더 구성되며, 상기 액세스 파라미터들은 상기 메모리 위치를 정의한다.
제3 양태에 따르면, 상기 처리 회로를 제1 보안 구역으로부터 제2 보안 구역으로 전이하기 위해 보안 증명서들을 처리 회로에 적용할 때를 결정하기 위한 컴퓨터 구현 방법이 제공된다. 이 방법은 다음을 포함한다: 프로그램 명령어들에서 전이 명령어를 검출하는 단계; 호출 게이트웨이 명령어와 연관된 액세스 파라미터들을 식별하는 단계; 전이 명령어 및 연관된 액세스 파라미터들이 신뢰 저장 디바이스에 저장되는지를 결정하는 단계; 상기 전이 명령어 및 상기 연관된 액세스 파라미터들이 상기 신뢰 메모리에 저장될 때 상기 처리 회로에 상기 보안 증명서들을 적용하는 단계; 및 상기 전이 명령어 및 상기 연관된 액세스 파라미터들이 상기 신뢰 메모리에 저장되지 않을 때 보안 위반 표시를 생성하는 단계.
제4 양태에 따르면, 데이터 처리 장치에 대한 프로그램 명령어들에서 제공되는 호출 게이트웨이들을 검증하기 위한 컴퓨터 구현 방법이 제공된다. 방법은 다음을 포함한다: 상기 프로그램 명령어들에 제공된 정의된 번호를 검출하는 단계; 호출 게이트웨이를 검출하는 단계- 상기 호출 게이트웨이는 전이 명령어 및 액세스 파라미터들을 포함하고, 상기 전이 명령어는 상기 정의된 번호와 관련하여 미리 결정된 위치에 제공됨 -; 상기 호출 게이트웨이가 데이터 처리 장치에서 신뢰 저장 디바이스에 저장되는지를 결정하고 호출 게이트웨이가 신뢰 저장 디바이스에 저장되지 않을 때 상기 호출 게이트웨이를 검증하는 것을 거절하는 단계.
제5 양태에 따르면, 적어도 하나의 모듈을 포함하는 데이터 처리 장치에 대한 프로그램 명령어들에서 제공되는 호출 게이트웨이들을 검증하는 컴퓨터 구현 방법이 제공된다. 방법은 다음을 포함한다: 상기 프로그램 명령어들에 제공된 정의된 번호를 검출하는 단계; 호출 게이트웨이를 검출하는 단계- 상기 호출 게이트웨이는 전이 명령어 및 액세스 파라미터들을 포함하고, 상기 전이 명령어는 상기 정의된 번호와 관련하여 미리 결정된 위치에 제공됨 -; 각각의 호출 게이트웨이의 상기 액세스 파라미터들을 해석하는 단계; 및 상기 호출 게이트웨이들이 다른 모듈로의 액세스를 허용하거나 다른 모듈로부터의 액세스를 허용할 때 상기 데이터 처리 장치에서 상기 모듈을 설치하는 것을 거절하는 단계.
제6 양태에 따르면, 적어도 2개의 모듈을 포함하는 데이터 처리 장치에 대한 프로그램 명령어들에서 제공되는 호출 게이트웨이들을 검증하는 컴퓨터 구현 방법이 제공된다. 방법은 다음을 포함한다: 상기 데이터 처리 장치의 맵 파일을 생성하는 단계; 상기 프로그램 명령어들에 제공된 정의된 번호를 검출하는 단계; 호출 게이트웨이를 검출하는 단계- 상기 호출 게이트웨이는 전이 명령어 및 액세스 파라미터들을 포함하고, 상기 전이 명령어는 상기 정의된 번호와 관련하여 미리 결정된 위치에 제공됨 -; 각각의 호출 게이트웨이의 상기 액세스 파라미터들을 해석하는 단계; 상기 맵 파일에 기초하여 각각의 호출 게이트웨이의 제공자 및/또는 모듈을 결정하는 단계; 및 상기 호출 게이트웨이들이 다른 모듈로의 액세스를 허용하거나 다른 모듈로부터의 액세스를 허용할 때 상기 호출 게이트웨이를 포함하는 모듈을 설치하는 것을 거절하는 단계.
제7 양태에 따르면, 데이터 처리 장치가 제공된다. 데이터 처리 장치는: 프로그램 명령어들에 응답하여 처리 함수들을 수행하도록 구성되는 처리 회로- 상기 처리 회로는 모니터에 의해 결합된 제1 보안 구역 및 제2 보안 구역을 포함하고, 상기 모니터는, 상기 처리 회로가 상기 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 상기 처리 회로에 보안 증명서들을 적용하도록 구성됨 -, 및 상기 제2 보안 구역에서 수행되는 적어도 하나의 함수를 포함하는 룩업 테이블을 저장하기 위한 신뢰 저장 디바이스를 포함하고; 상기 모니터는 상기 신뢰 저장 디바이스에서 상기 룩업 테이블에 함수가 저장될 때를 결정하고, 상기 함수가 상기 룩업 테이블에 저장된다는 결정에 응답하여, 상기 처리 회로가 상기 제2 보안 구역에서 상기 함수를 수행할 수 있도록 상기 처리 회로에 상기 보안 증명서들을 적용하고, 상기 함수의 완료 후에 상기 처리 회로로부터 상기 보안 증명서들을 분리하고, 상기 함수가 상기 룩업 테이블에 저장되지 않는다는 결정에 응답하여 보안 위반 표시를 생성하도록 구성된다.
제8 양태에 따르면, 데이터 처리 장치가 제공된다. 데이터 처리 장치는: 프로그램 명령어들에 응답하여 처리 함수들을 수행하도록 구성되는 처리 회로- 상기 처리 회로는 모니터에 의해 결합된 제1 보안 구역 및 제2 보안 구역을 포함하고, 상기 모니터는, 상기 처리 회로가 상기 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 상기 처리 회로에 보안 증명서들을 적용하도록 구성됨 -, 및 상기 제2 보안 구역에서 수행되는 적어도 하나의 함수를 포함하는 해시 테이블을 저장하기 위한 신뢰 저장 디바이스를 포함하고; 상기 모니터는 상기 신뢰 저장 디바이스에서 상기 해시 테이블에 함수가 저장될 때를 결정하고, 상기 함수가 상기 해시 테이블에 저장된다는 결정에 응답하여, 상기 처리 회로가 상기 제2 보안 구역에서 상기 함수를 수행할 수 있도록 상기 처리 회로에 상기 보안 증명서들을 적용하고, 함수의 완료 후에 상기 처리 회로로부터 상기 보안 증명서들을 분리하고, 상기 함수가 상기 해시 테이블에 저장되지 않는다는 결정에 응답하여 보안 위반 표시를 생성하도록 구성된다.
제9 양태에 따르면, 처리 회로를 제1 보안 구역으로부터 제2 보안 구역으로 전이하기 위해 호출 게이트웨이를 허용하기 위한 컴퓨터 구현 방법이 제공된다. 이 방법은 다음을 포함한다: 프로그램 명령어들에서 전이 명령어 및 액세스 파라미터들을 포함하는 호출 게이트웨이를 검출하는 단계- 상기 호출 게이트웨이는 상기 제2 보안 구역으로의 액세스를 제공하기 위한 것임 -; 상기 제2 보안 구역에 대한 액세스 허가들을 정의하는 프록시 호출 게이트웨이를 식별하는 단계; 상기 호출 게이트웨이가 상기 프록시 호출 게이트웨이에 정의된 상기 액세스 허가들을 준수하는지를 결정하는 단계; 상기 호출 게이트웨이가 상기 프록시 호출 게이트웨이에 정의된 상기 액세스 허가들을 준수할 때 상기 호출 게이트웨이가 상기 제2 보안 구역에 대한 액세스를 제공하도록 허용하는 단계; 및 상기 호출 게이트웨이가 상기 프록시 호출 게이트웨이에 정의된 액세스 허가들을 준수하지 않을 때 상기 호출 게이트웨이가 상기 제2 보안 구역에 대한 액세스를 제공하도록 허용하지 않는 단계.
추가적인 장점들 및 신규 특징들은 다음의 설명에서 부분적으로 제시될 것이고, 부분적으로는 다음의 첨부 도면들의 검토 시 본 기술분야의 통상의 기술자들에게 명백할 것이며 또는 예들의 생산 또는 동작에 의해 학습될 수 있다. 본 교시의 장점들은 아래에 논의된 상세한 예들에 제시된 방법론들, 수단들 및 조합들의 다양한 양태들의 실시 또는 사용에 의해 실현되고 달성될 수 있다.
실시예의 더 양호한 이해를 위해 그리고 그것들이 어떻게 실시될 수 있는지에 관해, 첨부 도면들이 예로서만, 이제 참조될 것이다:
도 1은 사물 인터넷 디바이스에서 제공되는 요소들을 개략적으로 예시한다;
도 2는 사물 인터넷 디바이스에서 제공되는 요소들을 개략적으로 예시한다;
도 3은 데이터 처리 장치의 2개의 보안 구역들을 개략적으로 예시한다;
도 4는 룩업 테이블을 개략적으로 예시한다;
도 5는 데이터 처리 장치의 2개의 보안 구역들을 개략적으로 예시한다;
도 6은 보안 구역에 액세스를 허용하는지를 판단하는 프로세스를 개략적으로 예시하는 흐름도이다;
도 7a는 호출 게이트웨이에 대한 액세스 파라미터들을 개략적으로 예시한다;
도 7b는 호출 게이트웨이에 대한 액세스 파라미터들을 개략적으로 예시한다;
도 7c는 호출 게이트웨이들에 대한 액세스 파라미터들을 개략적으로 예시한다;
도 8은 호출 게이트웨이들을 검증하는 프로세스를 개략적으로 예시하는 흐름도이다;
도 9는 호출 게이트웨이들을 검증하는 프로세스를 개략적으로 예시하는 흐름도이다;
도 10a는 도 1 내지 도 9를 참조하여 설명되는 실시예들의 호출 게이트웨이에 액세스할 때 코드 배열을 예시한다; 및
도 10b는 추론적 호출 게이트웨이 실시예의 코드 배열을 예시한다.
도 1은 사물 인터넷 디바이스에서 제공되는 요소들을 개략적으로 예시한다;
도 2는 사물 인터넷 디바이스에서 제공되는 요소들을 개략적으로 예시한다;
도 3은 데이터 처리 장치의 2개의 보안 구역들을 개략적으로 예시한다;
도 4는 룩업 테이블을 개략적으로 예시한다;
도 5는 데이터 처리 장치의 2개의 보안 구역들을 개략적으로 예시한다;
도 6은 보안 구역에 액세스를 허용하는지를 판단하는 프로세스를 개략적으로 예시하는 흐름도이다;
도 7a는 호출 게이트웨이에 대한 액세스 파라미터들을 개략적으로 예시한다;
도 7b는 호출 게이트웨이에 대한 액세스 파라미터들을 개략적으로 예시한다;
도 7c는 호출 게이트웨이들에 대한 액세스 파라미터들을 개략적으로 예시한다;
도 8은 호출 게이트웨이들을 검증하는 프로세스를 개략적으로 예시하는 흐름도이다;
도 9는 호출 게이트웨이들을 검증하는 프로세스를 개략적으로 예시하는 흐름도이다;
도 10a는 도 1 내지 도 9를 참조하여 설명되는 실시예들의 호출 게이트웨이에 액세스할 때 코드 배열을 예시한다; 및
도 10b는 추론적 호출 게이트웨이 실시예의 코드 배열을 예시한다.
도면들에서, 비슷한 참조 번호들은 동일한 또는 유사한 요소들을 나타낸다.
이제 실시예들이 상세히 참조될 것이며, 그것의 예들은 첨부 도면들에 예시된다. 이하의 상세한 설명에서, 다수의 특정 상세들은 관련 교시들의 철저한 이해를 제공하기 위해 예들로서 제시된다. 그러나, 본 교시들은 이러한 특정 상세들 없이 실시될 수 있다는 점이 본 기술분야의 통상의 기술자에게 분명할 것이다.
다른 사례들에서, 널리 공지된 방법들, 절차들, 구성요소들 및/또는 회로는 본 교시들의 양태들을 불필요하게 모호하게 하는 것을 회피하기 위해, 상세 없이, 비교적 고레벨로 설명되었다.
도 1은 IoT(Internet of Things) 디바이스(100)에서 제공되는 요소들을 개략적으로 예시한다. 대부분의 시스템들 및 아키텍처들은 비인가된 사용자들 및 비인가된 프로세스들로부터 디바이스들을 보호하는 것을 목표로 한다. 디바이스(100)는 다수의 모듈들(101 내지 112)을 포함하고 각각의 모듈(101 내지 112)은 악의적 공격들로부터 전체로서 각각의 모듈 및 따라서 디바이스를 보호하는 것을 목표로 하는 그 자체의 보안을 갖는다. 예를 들어, 암호 키들(107)의 코드는 보안 전문가에 의해 기입될 수 있고 강한 보안 증명서들을 가질 수 있지만, WiFi 스택(105) 코드는 보안 전문가에 의해 기입될 가능성이 없고 따라서 동일한 레벨의 보안을 가질 가능성이 없다. 이러한 배열은 디바이스의 전체 보안이 가장 약한 모듈과 단지 마찬가지이도록 "가장 약한" 모듈(적어도 보안 프로비저닝들을 갖는 모듈)의 보안을 파괴함으로써 공격자들이 디바이스 보안을 파괴하는 것을 허용한다. 모듈들 중 하나가 손상되었다면, 이때 손상된 모듈을 통해 디바이스의 모듈들의 나머지에 대한 액세스를 획득하는 것이 가능하다. 공통 공격 엔트리 포인트들은 SSL 라이브러리(103), WiFi 스택(105) 또는 BLE 스택(102)이다. 예를 들어, 도 1에서, 공격자(120)는 SSL 라이브러리(103)에 대한 액세스를 획득했고 암호 키들(108) 및 펌웨어 업데이트(111)에 액세스를 더 획득하기 위해 이러한 액세스를 사용했다. 대부분의 경우들에서, 펌웨어 업데이트 함수가 공격자에 의해 손상되면 상주 멀웨어는 RAM으로부터 안전하게 실행될 수 있고 디바이스를 리셋하거나 플래시(FLASH)를 "서비스 거부" 공격의 일부로 소거하는 커맨드들을 차단하는 것을 결정할 수 있으므로 펌웨어 업데이트(111)를 공격으로부터 복구하는 것은 불가능하다.
도 2는 IoT 디바이스(200)에서 제공되는 요소들을 개략적으로 예시한다. 디바이스(200)에서, 모듈들(201 내지 212)은 2개의 상이한 도메인들, 즉 비중대 코드에 대한 하위 보안 도메인(250) 및 중대 코드에 대한 보안 도메인(260)으로 분리되었다. 모듈들(201 내지 206)은 하위 보안 도메인(250)에 제공되고 모듈들(207 내지 212)은 보안 도메인(260)에 제공된다. 보안 도메인은 하위 보안 도메인보다 더 큰 보안을 필요로 하고, 2개의 도메인들은 보안 경계(270)에 의해 분리된다. 보안 도메인에 저장되는 데이터는 실행되고 있을 때 하위 보안 도메인에 저장되는 코드에 액세스가능하지 않다. 보안 도메인에 저장되는 중대 코드만이 완전한 보안 감사를 가질 필요가 있다. 보안 도메인에 대한 액세스는 하위 보안 도메인에서의 취약성들이 보안 도메인을 손상시킬 수 없도록 하위 보안 도메인을 통해 획득될 수 없다. 키들(208)은 결코 보안 도메인을 떠나지 않고 악성 코드에 의해 추출될 수 없다.
게다가, 보안 도메인은 펌웨어 업데이트들이 보안 도메인에 의해 보호되므로 악의적 공격들이 펌웨어 업데이트를 통하는 것으로부터 복구될 수 있도록 하위 보안 도메인을 클린 슬레이트(clean slate)에 신뢰성있게 리플래시할 수 있다.
디바이스의 보안 측 상의 모듈들(207 내지 212)은 강한 보안에 의해 구현되도록 요구되고 좀처럼 변경되지 않아야 한다.
도 3은 데이터 처리 장치의 2개의 단순화된 보안 구역들(301, 302), 예를 들어 하위 보안 구역(제1 보안 구역(301)) 및 보안 구역(제2 보안 구역(302))을 개략적으로 예시한다. 보안 구역(301)은 보안 도메인(310) 및 보안 메모리(312)를 갖고, 보안 구역(302)은 보안 도메인(314) 및 보안 메모리(316)를 갖는다. 2개의 보안 구역들(301, 302)은 모니터(320)를 통해 연결된다. 보안 구역(302)은 보안 구역(301)보다 더 높은 레벨의 보안을 갖는다. 실시예는 2개의 보안 구역들에 제한되지 않고 2개보다 많은 보안 구역들, 예를 들어 하위 보안 구역, 보안 구역 및 상위 보안 구역이 제공될 수 있다. 다른 실시예들에서, 동등한 레벨의 보안을 각각 갖는 하나 이상의 보안 구역들, 예를 들어 추가 하위 보안 구역 또는 추가 보안 구역이 제공된다. 다른 실시예들에서, 하위 보안 구역은 적어도 하나의 다른 보안 구역과 함께 제공될 수 있으며, 다른 보안 구역(들)은 상이하거나 또는 동일한 레벨(들)의 보안을 갖는다. 일부 실시예들에서, 모니터 코드는 상황들의 제한된 세트 하에서만, 예컨대 프로세스가 이때 하위 보안 구역으로부터 보안 구역으로 전이할 수 있는 예외, 예를 들어 인터럽트, 중단, 또는 명시적 호출, 예컨대 ARM® TrustZone® 기술에 의해 구현되는 것을 통해 액세스가능한 모니터 모드에서만 실행될 수 있다.
보안 도메인(310)으로부터의 함수들이 보안 메모리(316)에 저장되는 데이터에 액세스하기 위해 그것은 코드가 보안 도메인(314)에 액세스하도록 허용되는지를 판단하는 모니터(320)를 통해 액세스를 획득해야 한다. 코드가 보안 도메인(316)에 액세스하도록 허용될 때, 모니터(320)는 요구된 보안 증명서들을 그것에 제공한다. 보안 증명서들은 임의의 형태의 코드 또는 데이터, 예컨대 코드와 연관되는 증거, 단정, 또는 속성을 취할 수 있어, 코드가 보안 구역에 액세스하는 것을 허용한다. 보안 증명서들은 보안 구역에 대한 인가된 액세스가 인에이블되도록 모니터에 의해 코드에 적용된다.
코드는 보안 구역(302)의 보안 증명서들이 제공되기 위해 모니터(320)를 통해 전달되어야 한다. 코드는 예를 들어 악의적 공격 동안, 모니터(320)를 거치는 것 없이 보안 도메인(310)으로부터 직접 보안 도메인(314)으로 점프하려고 시도하면, 이때 코드는 요구된 보안 증명서들을 갖지 않으므로 보안 도메인(314)에서 처리되지 않을 것이다. 대신에, 코드는 구역(301)의 보안 증명서들을 여전히 가짐에 따라 보안 구역(301)에 여전히 있는 것처럼 처리된다. 보안 구역(302)에 진입하기 위해 정확한 보안 증명서들을 획득하는 유일한 방식은 모니터(320)를 통하는 것이다.
함수들이 보안 구역(302)에 액세스하도록 허용되는지를 사전에 인식하는 것이 가능하다. 따라서, 룩업 테이블이 제공될 수 있어 보안 구역(302)에 액세스하도록 허용되는 각각의 함수를 리스팅한다. 도 4는 보안 구역(302)에 액세스하도록 허용되는 유효 함수들(함수 1, 함수 2, 함수 3, 함수 4 … 함수 n)의 룩업 테이블을 개략적으로 예시한다. 모니터(320)가 보안 구역(302)에 액세스하는 요청을 수신할 때, 그것은 요청이 허용된 유효 함수에서 나오는지를 테이블(400)에서 룩업한다. 함수가 룩업 테이블(400)에 제공되고, 따라서 허용될 때, 요청이 승인되고 함수에는 보안 구역(302)을 위해 요구되는 보안 증명서들이 제공된다. 함수가 룩업 테이블(400)에 제공되지 않고, 따라서 허용되지 않을 때, 에러 메시지 또는 장애가 발생된다.
공격자는 신뢰 메모리에 저장되는 바와 같이 함수들을 함수 룩업 테이블에 추가하는 것이 가능하지 않다.
함수 테이블은 보안 구역들에 대한 비인가된 액세스의 문제를 극복하지만, 함수 테이블이 길 때, 함수가 테이블에 나타나는지가 결정될 때까지 각각의 명령어는 함수 테이블이 순차적으로 검색되는 것을 필요로 함에 따라 작업들의 수행은 둔화된다. 이것은 예측불가능한 처리 시간들을 야기하며, 즉 처리 시간들은 함수가 테이블의 위에 저장되면 짧을 수 있지만 처리 시간들은 함수가 테이블의 끝 근방에 저장되면 길 수 있는 등등이다.
보안/특권 레벨들의 동일 또는 상이한 레벨들을 갖는 하나보다 많은 보안 도메인이 있으면, 연관된 도메인에 대한 허용된 액세스인 모든 함수들의 리스트를 포함하는 각각의 도메인과 연관되는 함수 테이블을 갖는 것이 가능하다.
처리 시간들을 감소시키기 위해 인가된 함수들을 저장하도록 룩업 테이블 대신에 해시 테이블을 사용하는 것이 가능하다. 해시 테이블은 버킷들의 어레이에 복수의 함수 엔트리들을 저장한다. 그 다음, 키는 (있다면) 어느 버킷에서 엔트리가 발견될 수 있는지를 표시하기 위해 사용된다. 해시 테이블의 사용은 동일한 수의 함수들의 룩업 테이블과 비교할 때, 함수들이 보안 구역에 액세스하기 위해 인가되는지의 여부를 식별하도록 요구되는 처리 시간을 감소시킨다. 그러나, 처리 시간은 여전히 예측가능하지 않고 높을 수 있다. 다시 해시 테이블은 신뢰 메모리에 저장되고 따라서 변경될 수 없어(즉, 함수들이 추가되지 않음) 악의적 공격들을 방지한다.
다른 실시예들에서, 함수가 상이한 보안 레벨/도메인에 액세스할 수 있는지를 판단하기 위해 함수 테이블들 대신에 호출 게이트웨이들을 사용하는 것이 가능하다.
도 5는 데이터 처리 장치의 2개의 단순화된 보안 구역들(501, 502)을 개략적으로 예시한다. 일 실시예에서, 데이터 처리 장치는 마이크로프로세서이다. 2개의 보안 구역들만이 예시되지만, 데이터 처리 장치는 2개보다 많은 보안 구역들을 가질 수 있으며, 각각의 보안 구역은 호출 게이트웨이들에 의해 집행되는 그 자체의 레벨의 보안을 갖는다. 상기에 명시된 바와 같이, 보안 구역들은 동일하거나 상이한 레벨들의 보안을 가질 수 있다. 데이터 처리 장치는 적어도 2개의 상이한 보안 구역들 내에 제공되는 복수의 구성요소 모듈들을 포함한다. 일 예에서, 데이터 처리 장치는 애플리케이션 프로토콜 모듈, BLE 스택, SSL 라이브러리, 진단 모듈, WiFi 스택, 디바이스 관리 모듈, 보안 저장 모듈, 보안 ID 모듈, 암호 API 모듈, 펌웨어 업데이트 모듈 및 PRNG 모듈을 포함할 수 있다. 그러나, 데이터 처리 장치는 이러한 특징들에 제한되지 않고 다른 구성요소들은 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이 이용될 수 있다.
도 5에 예시된 바와 같이, 제1 보안 구역(501)(하위 보안 구역)은 보안 도메인(510) 및 보안 메모리(512)를 갖고, 제2 보안 구역(502)(상위 보안 구역)은 보안 도메인(514) 및 보안 메모리(516)를 갖는다. 2개의 보안 구역들(501, 502)은 모니터(520)를 통해 연결된다. 보안 구역(502)은 보안 구역(501)보다 더 높은 레벨의 보안을 갖는다. 보안 도메인들(510, 514)은 직접 액세스될 수 없지만, 대신에 제2 보안 도메인(514)과 연관되는 보안 증명서들이 제공되기 위해, 액세스가 모니터(520)를 통해 승인되어야 한다. 보안 구역(502)에서 함수들의 완료 후에, 모니터는 프로그램 코드를 구역(501)으로 복귀하기 전에 보안 구역(502)과 연관되는 보안 증명서들을 분리한다. 보안 구역(502)과 연관되는 보안 증명서들의 분리는 코드가 함수의 완료 후에 보안 구역(502)에서 보안 증명서들을 계속 실행하는 것을 방지한다.
보안 도메인(510)으로부터의 함수들이 보안 메모리(516)에 저장되는 데이터에 액세스하기 위해 그것은 코드가 보안 도메인(514)에 액세스하도록 허용되는지를 판단하는 모니터(520)를 통해 전송되어야 한다. 코드가 보안 도메인(516)에 액세스하도록 허용될 때, 모니터(520)는 요구된 보안 증명서들을 그것에 제공한다. 코드는 보안 구역(502)의 보안 증명서들이 제공되기 위해 모니터(520)를 통해 전달되어야 한다. 코드는 예를 들어 악의적 공격 동안, 모니터(520)를 거치는 것 없이 보안 도메인(510)으로부터 직접 보안 도메인(514)으로 점프하려고 시도하면, 이때 코드는 보안 구역(501)의 요구된 보안 증명서들을 갖지 않을 것이고 보안 도메인(514)에서 처리되지 않을 것이다. 보안 구역(502)에 진입하기 위해 정확한 증명서들을 획득하는 유일한 방식은 모니터(520)를 거치는 것이다. 게다가, 보안 구역(502)에서 함수의 수행 후에, 모니터(520)는 코드의 보안 증명서들을 제1 보안 구역(501)의 것들로 다시 변경하며, 그렇지 않으면 프로그램 코드는 제2 보안 구역(502)의 보안 증명서들에 의해 계속 실행될 것이다.
호출 게이트웨이는 제1 보안 구역(501)으로부터 제2 보안 구역(502)으로의 엔트리를 요청하기 위해 사용된다. 모니터(520)는 호출 게이트웨이가 신뢰 메모리에 저장되는지를 체크하고 호출 게이트웨이가 신뢰 메모리에 저장될 때 구역(502)에 대한 액세스를 위해 요구된 보안 증명서들을 제공한다. 각각의 호출 게이트웨이는 전이 명령어(때때로 호출 게이트웨이 명령어 또는 호출로 언급됨) 및 액세스 파라미터들을 포함한다.
신뢰 메모리(522)에 저장되는 하나보다 많은 호출 게이트웨이(524, 526, 528, …, 52n)가 있을 수 있으며, 각각의 호출 게이트웨이(524, 526, 528, …, 52n)는 각각의 호출 게이트웨이에 대한 상이하게 연관된 액세스 파라미터들을 갖는다. 게다가, 호출 게이트웨이들을 저장하는 하나보다 많은 신뢰 메모리가 있을 수 있다.
각각의 호출 게이트웨이는 모니터(520)가 보안 구역(502)에 대한 액세스를 위해 보안 증명서들을 제공하기 위해 충족되어야 하는 액세스 파라미터들을 갖는다. 보안 구역(502)에 대한 액세스들이 허가되는 것은 사전에 공지되어 있으며, 따라서 허가된 액세스들을 정의하는 호출 게이트웨이들은 신뢰 메모리에 저장된다. 일 실시예에서, 액세스 파라미터들은 보안 구역(502)에서 수행되는 함수를 정의한다. 다른 실시예들에서, 액세스 파라미터들은 정의되는 액세스에 따라 기입되거나, 판독되거나 마스크될 수 있는 메모리 위치를 나타낸다.
다른 실시예들에서, 호출 게이트웨이는 사전 정의된 타겟 특권들에 의해 실행될 수 있는 마이크로코드 명령어들 전에 전이 명령어를 포함한다. 일 실시예에서, 마이크로코드 명령어들은 판독 명령어들, 기입 명령어 또는 비트 마스킹 명령어들 또는 조합일 수 있다. 마이크로코드는 액션이 수행될 때마다 통상 호출 게이트웨이를 조사할 필요가 있는 액션이 여러 번 요구될 때 사용될 수 있다. 예를 들어, 레지스터의 체크는 데이터가 레지스터 내의 특정 메모리 위치에 저장되었는지를(그러한 위치로의 기입 명령어 후에) 판단하기 위해서만 요구될 때, 전이 명령어 및 함수(함수는 체크 메모리(check memory)임)를 포함하는 호출 게이트웨이는 체크가 수행될 때마다 메모리에 액세스하기 위해 요구될 것이다. 이것은 프로그램이 상이한 보안 구역들 사이에서 전후로 전이하는 것을 야기할 것이다. 메모리 판독 명령어들을 위한 마이크로코드를 포함함으로써 체크는 호출 게이트웨이들에 액세스하는 것을 유지하는 요구 없이 데이터가 메모리 위치에 저장되었을 때까지 반복적으로 수행될 수 있다.
마이크로코드는 서버에서 또는 설치 동안 검증될 수 있다. 마이크로코드는 사전 정의된 작업들을 수행하고 사전 정의된 비트들에 액세스하기 위해서만 허용된다. 일 실시예에서 마이크로코드는 네이티브 CPU 코드이다. 다른 실시예들에서, 마이크로코드는 CPU 코드의 서브세트이다.
액세스 파라미터들은 또한 보안 구역(502) 내의 모듈, 예를 들어 보안 도메인(514) 또는 보안 메모리(516) 내의 타겟 모듈이 타겟 ID를 사용하여 액세스될 수 있는지를 정의할 수 있다. 일 예에서, 타겟 ID은 타겟 모듈의 고유 ID이다. 타겟 ID의 사용은 모듈이 호출 게이트웨이를 통해 액세스될 수 있는지를 호출 게이트웨이가 제한할 수 있게 한다.
액세스 파라미터들은 또한 액세스 요청이 소스 ID를 사용하는 것에서 비롯될 수 있는 곳을 정의할 수 있다. 일 예에서 소스 ID는 호출 모듈의 고유 ID이다. 소스 ID의 사용은 호출 게이트웨이가 (소스 ID에 의해 열거되는 바와 같이) 사전 정의된 소스 모듈들만으로부터의 코드에 제한될 수 있게 한다. 일 실시예에서, 어떠한 소스 ID가 액세스 파라미터들로 정의되지 않으면, 이때 어떠한 소스 ID를 갖지 않는 호출 게이트웨이는 호출 게이트웨이에 정의되는 다른 액세스 파라미터들이 충족되는 것을 가정하여 모든 소스 모듈들에 의한 사용을 위해 이용가능하다. 대안적으로, 사전 정의된 소스 ID는 모든 소스 ID들이 허용되는 것을 표시하기 위해 사용될 수 있다. 예를 들어, 8 비트 소스 ID에 대한 소스 ID 0xFF는 모든 소스 ID들이 허용되는 것을 표시할 수 있다.
각각의 호출 게이트웨이(524, 526, 528, …, 52n)는 상이한 액세스 파라미터들을 정의한다. 호출 게이트웨이들이 신뢰 메모리에 저장되므로, 그것은 조작될 수 없다. 따라서, 호출 게이트웨이가 카피될지라도, 그것은 비신뢰 메모리에만 카피될 수 있고, 따라서 시스템에 의해 인식되지 않을 것이다. 신뢰 메모리들 외부의 모든 호출 게이트웨이들은 모니터에 의해 무시된다. 따라서, 각각의 호출 게이트웨이는 보안 구역에 대한 액세스가 보안 구역 내에서 상이한 함수들 또는 상이한 위치들에서의 함수들을 수행하는 것을 허용하기 위해 악의적 공격자에 의해 사용될 수 없다.
호출 게이트웨이가 신뢰 메모리에 저장되는 호출 게이트웨이들 중 어느 것과 동일한 액세스 파라미터들을 갖지 않을 때, 모니터(520)는 보안 구역(502)에 대한 액세스를 위해 보안 증명서들을 제공하지 않는다. 예를 들어, 호출 게이트웨이는 함수 X를 수행하기 위해 보안 구역(501)에 저장되는 디바이스 관리 모듈로부터의 명령어가 보안 구역(502)에 저장되는 펌웨어 업데이트 모듈에 액세스하도록 허용되는 것을 정의하는 액세스 파라미터들을 가질 수 있다. 호출 게이트웨이는 신뢰 메모리(522)에 저장된다. 호출 게이트웨이가 신뢰 메모리(522)에 저장되므로, 모니터(520)는 보안 구역(502)에 대한 액세스를 위해 보안 증명서들을 디바이스 관리 모듈에 제공한다. 그러나, SSL 라이브러리 모듈로부터의 명령어가 통상 펌웨어 업데이트 모듈에 액세스하도록 허용되지 않으므로, 함수 X를 수행하기 위해 보안 구역(501)에 저장되는 SSL 라이브러리 모듈로부터의 명령어가 펌웨어 업데이트 모듈에 액세스하도록 허용되는 것을 정의하는 액세스 파라미터들을 갖는 호출 게이트웨이는 신뢰 메모리에 저장되지 않을 것이다. 그러한 호출 게이트웨이가 신뢰 메모리(522)에 저장되지 않으므로, 모니터(520)는 보안 구역(502)에 대한 액세스를 위해 보안 증명서들을 SSL 라이브러리 모듈에 제공하지 않는다.
모니터(520)는 액세스가 허용되는지를 판단하기 위해 요청에 참조되는 호출 게이트웨이를 언급한다. 호출 게이트웨이들은 신뢰 메모리(522)에 저장된다. 모니터(520)는 호출 게이트웨이가 신뢰 메모리(522)에 저장되는 것을 체크한다. 호출 게이트웨이가 신뢰 메모리에 저장되지 않을 때, 모니터(522)는 보안 구역(502)에 액세스를 허용하지 않을 것이다. 일 실시예에서, 보안 위반 표시는 호출 게이트웨이가 신뢰 메모리에 저장되지 않을 때 발생된다. 이것은 악의적 공격자들이 보안 구역들에 대한 액세스를 획득하기 위해 그들의 자체 호출 게이트웨이들을 생성하는 것을 방지한다. 악의적 공격자에 의해 생성되는 호출 게이트웨이는 비신뢰 메모리에만 저장될 수 있다. 시스템은 비신뢰 메모리에 저장되는 호출 게이트웨이들을 무시하므로, 보안 구역에 대한 액세스는 승인되지 않을 것이고 보안 위반 표시는 악의적 공격이 시도되었던 것을 표시할 것이다.
모니터(522)는 호출 게이트웨이가 신뢰 메모리에 저장되는 것을 결정했으면, 모니터(522)는 호출 게이트웨이에 정의되는 액세스 파라미터들을 검증할 필요가 없다. 모니터는 호출 게이트웨이가 신뢰 메모리에 저장되므로 호출 게이트웨이 액세스 파라미터들을 이미 검증된 것으로 간주한다.
도 6은 보안 구역에 대한 액세스가 허용되는지를 판단하는 프로세스를 개략적으로 예시하는 흐름도이다. 단계(S601)에서, 전이 명령어는 프로그램 코드에 도달된다. 단계(S602)에서, 모니터(520)는 호출 게이트웨이 액세스 파라미터들을 갖는 호출 게이트웨이가 신뢰 메모리(522)에 저장되는지를 결정한다. 식별된 호출 게이트웨이가 신뢰 메모리(522)에 저장되지 않을 때("아니오"), 방법은 단계(S603)로 이동하고 에러 메시지가 발생된다. 식별된 호출 게이트웨이가 신뢰 메모리(522)에 저장될 때("예"), 프로세스는 단계(S604)로 이동하고 모니터(520)는 보안 구역에 액세스를 승인하고 적절한 보안 증명서들(타겟 구역에서 요구되는 보안 증명서들)을 처리 회로에 적용한다. 단계(S605)에서, 호출 게이트웨이 액세스 파라미터들이 해석되고 타겟 함수가 보안 구역에서 완료된다. 보안 구역에서 타겟 함수의 완료 후에, 단계(S606)에서 모니터는 처리 회로로부터 타겟 보안 증명서들을 제거하고, 처리 회로는 호출자(소스 구역) 보안 증명서들에 복귀되고, 처리 회로는 하위 보안 구역에 복귀한다.
에러 메시지가 단계(S603)에서 발생될 때, 보안 구역(502)에 대한 액세스가 거부된다.
호출 게이트웨이가 신뢰 메모리(522)에 저장되므로, 모니터(520)는 호출 게이트웨이에 제공되는 액세스 파라미터들을 신뢰할 수 있다. 악의적 공격자는 그들의 자체 호출 게이트웨이를 생성할 수 있지만, 신뢰 메모리에 이러한 호출 게이트웨이를 저장하는 것이 가능하지 않고, 따라서 "거짓" 호출 게이트웨이는 액세스가 허용되는 것을 정의할지라도, "거짓" 호출 게이트웨이가 신뢰 메모리에 저장되지 않기 때문에, 모니터(520)는 액세스를 승인하지 않을 것이다. 호출 게이트웨이가 신뢰 메모리에 저장되지 않을 때, 에러 메시지는 "무효 호출 게이트웨이"와 같이 반환될 것이다.
일 실시예에서, 호출 게이트웨이들은 디바이스 또는 데이터 처리 장치의 제조 시에 신뢰 메모리에 기입된다. 게다가, 호출 게이트웨이들은 예를 들어 업데이트들 동안, 신뢰 메모리에 기입될 수 있지만, 이러한 예에서 강화된 보안 증명서들, 예컨대 유효 서명이 요구된다. 그 다음, 검증은 호출 게이트웨이가 신뢰 메모리에 추가되기 전에 수행된다. 이렇게 강화된 검증은 호출 게이트웨이가 신뢰 메모리에 저장되었으면 다시 수행될 필요가 없다. 유효 서명 없이 신뢰 메모리에 호출 게이트웨이를 저장하는 것이 가능하지 않아서, 악의적 공격자가 그들의 자체 호출 게이트웨이를 생성하는 것을 방지한다.
신뢰 메모리는 악의적 공격자가 저장 디바이스에 데이터(예컨대 "거짓" 호출 게이트웨이)를 저장하는 것을 허용하지 않는 신뢰 저장 디바이스이다. 일 실시예에서, 신뢰 저장 디바이스는 신뢰 및 비신뢰 저장 구역들 둘 다를 제공하는 저장 디바이스의 신뢰 부분이다. 임의의 형태의 신뢰 메모리가 사용될 수 있다. 일 실시예에서, 신뢰 메모리는 코드를 실행함으로써 기입될 수 없는 임의의 메모리/저장 디바이스이다. 임의의 메모리는 신뢰 코드만이 그것에 배타적 기입 액세스를 가질 때 신뢰 메모리인 것으로 간주될 수 있다. 일 예에서, 신뢰 메모리는 판독 전용 메모리(read only memory)(ROM), 예컨대 런타임 시에만 기입될 수 있는 플래시 메모리일 수 있다. 다른 실시예들에서, 메모리는 악의적 공격자들이 메모리에 데이터(예컨대 "거짓" 호출 게이트웨이)를 저장하는 것을 방지하는 메모리 보호 방식을 사용하여 교환불가능한 것으로 마킹될 수 있다. 다른 예에서, 신뢰 메모리는 보호된 SRAM일 수 있다.
일 실시예에서 호출 게이트웨이는 액세스 파라미터들 전에 전이 명령어를 포함한다. 일 실시예에서, 전이 명령어는 SVC 명령어 호출이다. 다른 실시예들에서, 전이 명령어는 사용되는 시스템에 따라 보안 도메인 상태들 사이에서 전이하기 위해 사용되는 임의의 다른 플랫폼 인터럽트 호출 또는 시스템 호출일 수 있다.
일 실시예에서, 액세스 파라미터는 타겟 함수이다. 일 실시예에서, 액세스 파라미터들은 메타데이터로 정의된다. 다른 실시예들에서, 액세스 파라미터들은 타겟 함수 메타데이터이다. 타겟 함수 메타데이터는 타겟 함수를 나타내고 전이 호출 직후에 또는 전이 호출에 관한 고정 위치에 제공된다. 프로그램 코드로 전이 명령어 호출 후에, 모니터는 타겟 함수 메타데이터를 검색하고, 액세스 파라미터들로 정의되는 타겟 함수를 갖는 호출 게이트웨이가 신뢰 메모리에 저장되는 것을 체크하고, 호출 게이트웨이가 신뢰 메모리에 저장될 때 보안 구역에 대한 액세스가 타겟 함수를 수행하는 것을 허용한다.
일 실시예에서, 호출 게이트웨이들은 신뢰 호출 게이트웨이 메모리에 모두 저장된다. 이러한 실시예에서, 전이 명령어 다음에 포인터가 신뢰 호출 게이트웨이 메모리 내의 호출 게이트웨이로 이어진다.
다른 실시예들에서, 호출 게이트웨이는 레지스터, 즉 타겟 레지스터의 특정 비트/비트들에 대한 포인터 전에 전이 명령어를 포함한다. 예를 들어, 레지스터의 1비트만, 즉 타겟 비트는 액세스가능할 수 있는 반면에, 레지스터 내의 다른 비트들은 액세스가능하지 않다. 일 실시예에서, 호출 게이트웨이는 임의적 액세스 마스크와 함께 타겟 레지스터에 대한 포인터 전에 전이 명령어를 포함할 수 있다. 액세스가능 비트들의 비트마스크 및 대응하는 레지스터에 대한 포인터는 호출 게이트웨이의 액세스 파라미터들로 정의되고 호출 게이트웨이는 신뢰 메모리에 저장된다. 따라서, 레지스터의 다른 비트들은 호출 게이트웨이를 통해 액세스가능하지 않다. 예: 어드레스 = 0x8BADF00D; 액세스 판독 마스크 = 0xFFFFFFFF; 액세스 기입 마스크 = 0x00000002는 호출 게이트웨이의 요청자(소스)가 어드레스 0x8BADF00D에서 모든 비트들을 판독하지만 0x2 마스크의 결과로서 비트 번호 1(0부터 카운팅됨)만을 기입하는 것을 허용한다.
일 실시예에서, 호출 게이트웨이의 위치는 스택 상의 복귀 어드레스로부터 추론된다. 호출 게이트웨이는 스택 상에서 또는 링크 복귀 레지스터 내에서 복귀 어드레스를 수정함으로써 액세스 파라미터들 후에 복귀된다. 다른 실시예들에서, 프로그램 바이너리가 호출 게이트웨이를 시도하는 경우지만, 호출 게이트웨이들을 지원하지 않는 시스템 상에서, 호출 게이트웨이는 전이 명령어와 액세스 파라미터들 사이에 제공되는 점프 명령어를 더 포함한다. 점프 명령어(예를 들어 도 10a에 도시된 바와 같음)는 시스템이 전이 명령어로부터 복귀되고 유효 코드 대신에 결국 메타데이터가 될 때 예측불가능하게 가동되는 것을 방지한다. 점프 명령어는 메타데이터 후보다는 오히려 액세스 파라미터 메타데이터 전에 모니터가 전이 명령어로부터 프로그램 코드로 복귀되면 처리 유닛에게 액세스 파라미터 메타데이터를 점프하라고 명령한다. 이것은 프로그램이 호출 게이트웨이 인터럽트 후에 계속 실행되게 할 수 있다. 점프 명령어는 또한 마이크로코드 명령어들 또는 메타데이터 후에 점프하기 위해 이용될 수 있고, 따라서 그것을 효과적으로 스킵한다.
다른 실시예들에서, 호출 게이트웨이는 정의된 번호를 더 포함한다. 정의된 번호는 액세스 파라미터인 것으로 간주된다. 정의된 번호는 코드에서 어떠한 유효 결과들을 생성하지 않는 32 비트 번호이도록 신중하게 선택된다. 정의된 번호는 아무것도 의미하지 않고 그것이 코드에서 자연스럽게 발생하지 않도록 선택된다. 일 실시예에서 임의의 랜덤 번호는 정의된 번호로 사용될 수 있다. 그러나, 정의된 번호는 직접적으로(전체 워드, 예를 들어 32 비트 값으로) 또는 오정렬로(다른 명령어들에 결합되는 하프 워드로), 실행가능 코드에 나타나지 않도록 선택되는 경우, 이때 호출 게이트웨이들의 서버 측 검증은 더 강하고 잠재적으로 더 용이하다. 정의된 번호의 일 예는 16진법으로 기입될 때 32 비트 번호 DEADBEEF이다. 일 실시예에서, 하나의 정의된 번호는 명령어 세트마다 제공된다. 정의된 번호는 모든 플랫폼들에 대해 동일하거나 상이할 수 있다.
정의된 번호는 시스템에서 우연히 발생하는 것이 가능할 수 있거나 정의된 번호가 데이터이면, 툴체인(toolchain)은 다른 정의된 번호를 선택하고 충돌들을 회피하기 위해 사용될 수 있다.
정의된 번호는 전이 명령어에 관한 미리 결정된 위치에 항상 배치된다. 따라서, 정의된 번호(들)를 식별하고 그 다음에 각각 식별된 정의된 번호에 관한 각각의 호출 게이트웨이의 위치를 결정하는 것에 의해, 프로그램 코드를 스캔하고 모든 호출 게이트웨이들을 식별하는 것이 가능하다. 호출 게이트웨이들이 식별되었으면, 그들은 서버에서 검증될 수 있다.
다른 실시예들에서, 호출 게이트웨이는 타겟 ID를 더 포함한다. 타겟 ID는 액세스되는 보안 도메인 내의 모듈의 어드레스이다. 타겟 ID는 보안 도메인에 저장되는 하나보다 많은 모듈이 있을 때 사용된다.
다른 실시예들에서, 호출 게이트웨이는 하나보다 많은 타겟 ID를 더 포함한다. 호출 게이트웨이가 액세스를 하나보다 많은 사전 정의된 타겟 모듈들에 제공할 때, 타겟 ID의 리스트가 제공된다. 일 실시예에서, 타겟 ID의 리스트는 메타데이터로 제공된다.
다른 실시예들에서, 호출 게이트웨이는 소스 ID를 더 포함한다. 소스 ID는 보안 도메인에 액세스하도록 허용되는 모듈의 어드레스이다. 일 실시예에서, 소스 ID는 호출 모듈의 고유 ID이다. 다른 실시예에서 소스 ID가 0과 동등할 때, 호출 게이트웨이는 모든 모듈들에 이용가능하다. 일 실시예에서, 시스템은 다른 모듈 호출 게이트웨이들을 사용하기 위해 모든 시도들을 폐기한다. 예를 들어, WiFi 스택이 디바이스 관리 모듈을 위해 제공되는 호출 게이트웨이를 사용하려고 시도하면, 호출 게이트웨이의 소스 ID는 디바이스 관리 모듈 고유 ID를 정의할 것이고 따라서 WiFi 스택에 의해 사용될 수 없으며, 그것은 상이한 고유 ID를 갖는다.
다른 실시예들에서, 호출 게이트웨이는 하나보다 많은 소스 ID를 더 포함한다. 호출 게이트웨이가 하나보다 많은 사전 정의된 소스 모듈들로부터 액세스를 제공할 때, 소스 ID의 리스트가 제공된다. 일 실시예에서, 소스 ID의 리스트는 메타데이터로 제공된다.
일 실시예에서, 호출 게이트웨이는 호출 게이트웨이 및 액세스 파라미터들에 관한 정보를 포함할 수 있는 플래그 필드를 더 포함한다. 일 실시예에서, 플래그는 액세스 파라미터가 존재하는 것을 표시하기 위해 설정된다. 다른 실시예들에서, 플래그는 액세스 파라미터를 표현하기 위해 사용될 수 있다. 예들은 이하이다:
- 타겟 함수에서 상대/절대 함수 포인터를 사용하는 플래그
- 소스 모듈들에 관한 제한들과 같은 보안 특징들에 대한 플래그들.
다른 실시예들에서, 액세스 파라미터들은 C++ 호출들에 임의적인 타겟 인스턴스를 포함한다. 타겟 인스턴스는 클래스 특정 데이터를 나타내고 함수의 특정 클래스 메모리 인스턴스가 소스 모듈에 결합되는 것을 허용한다.
일 실시예에서 SVC 번호는 다수의 호출 게이트웨이들을 구별하기 위해 사용될 수 있다. SVC 번호는 SVC 호출(호출 게이트웨이 전이 명령어) 다음에 제공된다. 예를 들어, SVC 번호 "n"은 타겟 함수 및 타겟 ID를 포함하는 호출 게이트웨이를 표시하기 위해 사용될 수 있다. 게다가, 상이한 SVC 번호, 예를 들어 SVC 번호 "m"은 타겟 함수, 타겟 ID 및 소스 ID를 포함하는 호출 게이트웨이를 표시하기 위해 사용될 수 있다.
각각의 호출 게이트웨이는 액세스 파라미터 또는 액세스 파라미터들의 조합 전에 전이 명령어를 포함한다. 액세스 파라미터들은 임의의 순서로 제공될 수 있지만, 상기에 명시된 바와 같이, 정의된 번호가 사용되면, 정의된 번호는 전이 명령어를 참조하여 일관된 위치에 배치된다.
도 7a는 기본 호출 게이트웨이 시나리오를 개략적으로 예시한다. 호출 게이트웨이(700)는 모든 소스 모듈들이 모듈 1(720)에서 함수 A(710)를 수행하도록 허용되는 것을 표시한다. 이러한 시나리오에 대한 예시적 호출 게이트웨이는 전이 명령어(호출 게이트웨이 인터럽트를 표시함) 및 함수 A(타겟 함수)를 정의하는 메타데이터; 정의된 번호; 타겟 ID = 1(함수 A가 모듈 1에서만 수행될 수 있는 것을 표시함)을 포함하는 액세스 파라미터들을 포함한다. 다른 실시예들에서, 호출 게이트웨이는 또한 모든 소스 모듈들이 모듈 1에서 함수 A를 수행할 수 있는 것을 표시하는 용어 소스 ID = 0(소스: 0)을 포함할 수 있다. 이러한 시나리오에서, 모듈 1(720)은 타겟 보안 증명서들을 필요로 하는 보안 구역에 제공된다.
도 7b는 다른 기본 호출 게이트웨이 시나리오를 개략적으로 예시한다. 호출 게이트웨이(740)는 소스 모듈 3(730)만이 모듈 1(750)에서 함수 B(760)를 수행하도록 허용되는 것을 표시한다. 이러한 시나리오에 대한 예시적 호출 게이트웨이는 전이 명령어(호출 게이트웨이 인터럽트를 표시함) 및 함수 B(타겟 함수)를 정의하는 메타데이터; 정의된 번호; 타겟 ID = 1(함수 B가 모듈 1에서만 수행될 수 있는 것을 표시함); 소스 ID = 3(소스 모듈 3만이 모듈 1에서 함수 B를 수행할 수 있는 것을 표시함)을 포함하는 액세스 파라미터들을 포함한다. 이러한 시나리오에서, 모듈 1(750)은 타겟 보안 증명서들을 필요로 하는 보안 구역에 제공된다.
도 7c는 다수의 호출 게이트웨이 시나리오를 개략적으로 예시한다. 제1 호출 게이트웨이(705)는 모든 소스 모듈들이 타겟 모듈 1(725)에서 함수 A(715)를 수행하는 것을 허용한다. 이러한 시나리오에 대한 예시적 호출 게이트웨이는 전이 명령어(호출 게이트웨이 인터럽트를 표시함) 및 함수 A(타겟 함수)를 정의하는 메타데이터; 정의된 번호; 타겟 ID = 1(함수 A가 타겟 모듈 1에서만 수행될 수 있는 것을 표시함); 소스 ID = 0(모든 소스 모듈들이 타겟 모듈 1에서 함수 A를 수행할 수 있는 것을 표시함)을 포함하는 액세스 파라미터들을 포함한다. 제2 호출 게이트웨이(735)는 소스 모듈 2(745)가 타겟 모듈 1(725)에서 함수 B(755)를 수행하는 것을 허용한다. 이러한 시나리오에 대한 예시적 호출 게이트웨이는 전이 명령어(호출 게이트웨이 인터럽트를 표시함) 및 함수 B(타겟 함수)를 정의하는 메타데이터; 정의된 번호; 타겟 ID = 1(함수 B가 타겟 모듈 1에서만 수행될 수 있는 것을 표시함); 소스 ID = 2(소스 모듈 2가 모듈 1에서 함수 B를 수행할 수 있는 것을 표시함)를 포함하는 액세스 파라미터들을 포함한다. 제3 호출 게이트웨이(765)는 소스 모듈 3(775)이 타겟 모듈 1(725)에서 함수 B(755)를 수행하는 것을 허용한다. 이러한 시나리오에 대한 예시적 호출 게이트웨이는 전이 명령어(호출 게이트웨이 인터럽트를 표시함) 및 함수 B(타겟 함수)를 정의하는 메타데이터; 정의된 번호; 타겟 ID = 1(함수 B가 타겟 모듈 1에서만 수행될 수 있는 것을 표시함); 소스 ID = 3(소스 모듈 3만이 모듈 1에서 함수 B를 수행할 수 있는 것을 표시함)을 포함하는 액세스 파라미터들을 포함한다. 최종적으로, 제4 호출 게이트웨이(785)는 소스 모듈 3(775)이 타겟 모듈 1(725)에서 함수 C(795)를 수행하는 것을 허용한다. 이러한 시나리오에 대한 예시적 호출 게이트웨이는 전이 명령어(호출 게이트웨이 인터럽트를 표시함) 및 함수 C(타겟 함수)를 정의하는 메타데이터; 정의된 번호; 타겟 ID = 1(함수 C가 타겟 모듈 1에서만 수행될 수 있는 것을 표시함); 소스 ID = 3(소스 모듈 3이 타겟 모듈 1에서 함수 C를 수행할 수 있는 것을 표시함)을 포함하는 액세스 파라미터들을 포함한다. 도 7c의 시나리오에서, 타겟 모듈 1(725)은 타겟 보안 증명서들을 필요로 하는 보안 구역에 제공된다.
상기에 명시된 바와 같이, 호출 게이트웨이들은 신뢰 메모리에 저장된다. 그러나, 호출 게이트웨이들은 소스 모듈, 타겟 모듈에서 제공되는 신뢰 메모리 또는 개별 신뢰 메모리에 저장될 수 있다. 도 7c를 참조하면, 제1 호출 게이트웨이(705)는 타겟 모듈 1(725)에 제공된 신뢰 메모리에 저장될 수 있고; 제2 호출 게이트웨이(735)는 소스 모듈 2(745) 또는 타겟 모듈 1(725)에 제공된 신뢰 메모리에 저장될 수 있고; 제3 호출 게이트웨이(765) 및 제4 호출 게이트웨이(785)는 소스 모듈 3(775) 또는 타겟 모듈 1(725)에 제공된 신뢰 메모리에 저장될 수 있다.
코드로 제공되는 호출 게이트웨이의 일 예가 아래에 있다. 예에서, 정의된 번호는 "매직" 번호로 언급된다.
예시적 이용:
예시적 호출 검증:
일 실시예에서, 서버에서 준수되는 디바이스는 전체 디바이스를 생성하기 위해 다수의 상이한 제공자들로부터 다수의 펌웨어 모듈들을 포함할 수 있다. 각각의 모듈은 그 자체의 보안 요건들을 갖는다. 일 실시예에서, 디바이스의 컴플라이어(complier)는 설치 규칙을 정의했으며, 예컨대 각각의 모듈은 호출 게이트웨이들을 그 자체의 모듈 내의 함수들에 제공하기 위해서만 허용된다. 각각의 펌웨어 모듈의 설치 시에, 펌웨어 모듈 제공자의 서명의 검증이 확인된다. 각각의 모듈 처리 코드의 스캔이 수행되고 코드로 제공되는 모든 정의된 번호들이 식별된다. 그 다음, 각각의 정의된 번호의 위치와 각각의 호출 게이트웨이 사이의 공지된 고정 오프셋에 의해 모듈 내에서 호출 게이트웨이들 각각을 식별하는 것이 가능하다. 호출 게이트웨이들이 검출되었다면, 각각의 호출 게이트웨이의 파라미터들이 식별된다. 호출 게이트웨이는 호출 게이트웨이가 제공되는 모듈 외부의 모듈을 나타낼 때, IoT 디바이스에 펌웨어 모듈의 설치가 거절된다. 다른 실시예들에서, 호출 게이트웨이는 호출 게이트웨이가 제공되는 모듈 외부의 모듈로부터 액세스를 허용할 때, IoT 디바이스에 펌웨어 모듈의 설치가 거절된다.
다른 실시예들에서, IoT 디바이스는 호출 게이트웨이들 중 어느 것이 그 자체의 모듈 외부의 모듈들로부터 액세스를 나타내거나 허용하는지를 판단하기 위해 각각의 모듈 처리 코드의 스캔을 수행하는 것이 가능하다. 그 다음, IoT 디바이스는 설치 규칙(들)을 준수하지 않는 호출 게이트웨이들을 포함하는 임의의 모듈들의 설치를 거절하는 것이 가능하다.
도 8은 호출 게이트웨이들을 검증하는 프로세스를 개략적으로 예시하는 흐름도이다. 단계(S801)에서, 설치 규칙이 정의된다. 이러한 예에서 설치 규칙은 이하이다: 각각의 모듈은 호출 게이트웨이들을 그 자체의 모듈 내의 함수들에 제공하기 위해서만 허용된다. 단계(S802)에서, 모듈은 설치를 위해 제안된다. 단계(S803)에서, 모듈 제공자의 서명이 확인되는지가 판단된다. 모듈 제공자의 서명이 확인되지 않으면, 이때 모듈의 설치는 단계(S804)에서 거절된다. 모듈 제공자의 서명이 확인되면, 이때 프로세스는 단계(S805)로 이동한다. 단계(S805)에서, 각각의 모듈 처리 코드의 스캔이 수행되고 코드로 제공되는 모든 정의된 번호들이 식별된다. 단계(S806)에서, 호출 게이트웨이들은 각각의 정의된 번호의 위치와 각각의 호출 게이트웨이 사이의 공지된 고정 오프셋에 의해 식별된다. 단계(S807)에서, 각각의 호출 게이트웨이의 액세스 파라미터들이 해석된다. 단계(S808)에서, 모든 호출 게이트웨이들이 설치 규칙을 준수하는지가 판단된다. 호출 게이트웨이들 중 어느 것이 설치 규칙을 준수하지 않으면, 이때 모듈의 설치는 단계(S809)에서 거절된다. 호출 게이트웨이들의 모두가 설치 규칙을 준수하면, 이때 모듈의 설치는 단계(S810)에서 허용되고 그러한 모듈 내에 정의되는 호출 게이트웨이들은 신뢰된다.
다른 실시예들에서, 제공자의 서명을 확인하는 단계(S803)는 단계(S808) 후이지만 단계(S810)에서 설치 전에 수행될 수 있다.
도 8의 프로세스는 서버에서 또는 디바이스에서 수행될 수 있다. 게다가, 도 8에 예시되는 프로세스는 또한 코드 업데이트를 설치할 때 사용될 수 있다.
다른 실시예들에서, 서버에서 준수되는 IoT 디바이스는 전체 디바이스를 생성하기 위해 링크되는 다수의 상이한 제공자들로부터 다수의 모듈들을 포함할 수 있다. 각각의 모듈은 그 자체의 보안 요건들을 갖는다. 일 실시예에서, 각각의 모듈을 개별적으로 설치하는 것보다는 오히려, 전술된 바와 같이, 디바이스의 다수의 모듈들의 모놀리식 펌웨어 이미지가 사용된다. 서버는 시스템의 모듈들을 매핑하기 위해 신뢰 소스에 의해 생성되고 그들이 펌웨어 이미지를 야기했던 맵 파일을 사용한다. 그 다음, 서버는 모듈이 어느 제공자에서 비롯되었는지를 기억하는 것이 가능하다. 그 다음, 전체 디바이스의 최종 모놀리식 펌웨어 이미지의 처리 코드들의 스캔이 서버에서 수행되고 코드로 제공되는 모든 정의된 번호들이 식별된다. 그 다음, 각각의 정의된 번호의 위치와 각각의 호출 게이트웨이 사이의 공지된 고정 오프셋에 의해 전체 디바이스의 코드 내에서 호출 게이트웨이들 각각을 식별하는 것이 가능하다. 호출 게이트웨이들이 검출되었다면, 각각의 호출 게이트웨이의 파라미터들이 식별된다. 그 다음, 맵 파일은 제공자 및/또는 각각의 호출 게이트웨이의 모듈을 결정하기 위해 사용된다. 일 실시예에서, 디바이스의 컴플라이어는 설치 규칙을 정의했으며, 예컨대 각각의 모듈은 호출 게이트웨이들을 그 자체의 모듈 내의 함수들 또는 동일한 제공자에 의해 제공되는 모듈 내의 함수들에 제공하기 위해서만 허용된다. 호출 게이트웨이들 중 어느 것은 호출 게이트웨이가 제공되는 모듈 외부의 모듈을 나타내면, 또는 호출 게이트웨이들 중 어느 것은 호출 게이트웨이가 제공되는 모듈 외부의 모듈로부터 액세스를 허용하면, 디바이스에 모듈의 설치가 거절된다. 게다가, 호출 게이트웨이들 중 어느 것은 모듈을 나타내거나 호출 게이트웨이가 제공되는 모듈과 동일한 제공자에 의해 제공되지 않는 모듈에 액세스를 허용하면, 디바이스에 모듈의 설치가 거절된다. 서버는 펌웨어 이미지를 서명하는 것을 거절하고 펌웨어는 디바이스에 설치되기 위해 허용되지 않는다. 일 실시예에서, 호출 게이트웨이들의 검증은 서버에 설치 시에 수행되며, 서버에서 이러한 검증 후에, 호출 게이트웨이들이 신뢰된다.
다른 실시예들에서, IoT 디바이스의 컴플라이어는 설치 규칙을 정의하므로, 모듈이 설치 규칙들에 정의된 바와 같이 신뢰 제공자에서 나오면(호출 게이트웨이 모듈의 제공자에서 나오지 않으면) 모듈을 나타내거나 호출 게이트웨이가 제공되는 모듈 외부의 모듈로부터 액세스를 허용하는 호출 게이트웨이들을 수락하는 것이 가능하다.
다른 실시예들에서, IoT 디바이스는 모듈들 중 어느 것이 설치 규칙(들)을 준수하지 않는 호출 게이트웨이들을 포함하는지를 판단하고, 이러한 모듈들의 설치를 거절하기 위해 맵 파일을 사용하고 전체 디바이스의 최종 모놀리식 펌웨어 이미지의 처리 코드들을 스캔하는 것이 가능하다.
다른 실시예들에서, 특권들은 제공자에게 할당되어 그들이 상이한 제공자의 펌웨어에 대한 액세스를 승인받게 할 수 있다. 일 실시예에서, 추가 검증 예컨대 보안 서명은 액세스가 승인되기 전에 요구된다. 그 다음, 제공자 모듈로부터의 호출 게이트웨이는 상이한 제공자의 모듈을 나타내거나, 상이한 제공자의 모듈로부터 액세스를 허용하는 것이 허가가능하다.
펌웨어 업데이트가 개시될 때, 펌웨어 업데이트의 서명이 검증된다. 서명의 검증 후에, 전체 디바이스의 모놀리식 펌웨어 이미지의 처리 코드들의 스캔이 수행되고 코드로 제공되는 모든 정의된 번호들이 식별된다. 그 다음, 각각의 정의된 번호의 위치와 각각의 호출 게이트웨이 사이의 공지된 고정 오프셋에 의해 전체 디바이스의 코드 내에서 호출 게이트웨이들 각각을 식별하는 것이 가능하다. 호출 게이트웨이들이 검출되었다면, 각각의 호출 게이트웨이의 파라미터들이 식별된다. 그 다음, 맵 파일은 제공자 및/또는 각각의 호출 게이트웨이의 모듈을 결정하기 위해 사용된다. 일 실시예에서, IoT 디바이스의 컴플라이어는 설치 규칙을 정의했으며, 예컨대: 각각의 모듈은 호출 게이트웨이들을 그 자체의 모듈 내의 함수들에 제공하거나 동일한 제공자에 의해 제공되는 모듈 내의 함수들에 제공하기 위해서만 허용된다. 호출 게이트웨이들 중 어느 것은 호출 게이트웨이가 제공되는 업데이트 모듈 내의 모듈을 나타내면, 또는 호출 게이트웨이들 중 어느 것은 호출 게이트웨이가 제공되는 업데이트 모듈 외부의 모듈로부터 액세스를 허용하면, IoT 디바이스에 펌웨어 업데이트 모듈의 설치가 거절된다. 게다가, 호출 게이트웨이들 중 어느 것이 모듈을 나타내거나 호출 게이트웨이가 제공되는 업데이트 모듈과 동일한 제공자에 의해 제공되지 않는 액세스를 허용하면, IoT 디바이스에 펌웨어 업데이트 모듈의 설치가 거절된다.
이러한 검증은 서버에서 펌웨어의 각각의 업데이트 시에 수행될 수 있다. 서버에서의 검증 후에, 호출 게이트웨이들이 신뢰된다.
검증은 업데이트마다 한 번 수행되며, 검증이 획득되었다면, 펌웨어가 업데이트되고 호출 게이트웨이들이 신뢰된다.
도 9는 호출 게이트웨이들을 검증하는 프로세스를 개략적으로 예시하는 흐름도이다. 단계(S901)에서, 다수의 상이한 제공자들로부터의 다수의 모듈들은 전체 디바이스를 생성하기 위해 링크된다. 단계(S902)에서, 각각의 모듈 제공자의 서명이 확인되는지가 판단된다. 모듈 제공자의 서명이 확인되지 않으면, 이때 그러한 모듈은 단계(S903)에서 거절된다. 모듈 제공자들의 서명들이 확인되면, 이때 프로세스는 단계(S904)로 이동한다. 단계(S904)에서, 전체 디바이스의 맵 파일이 생성된다. 단계(S905)에서, 설치 규칙이 정의된다. 이러한 예에서 설치 규칙은 이하이다: 각각의 모듈은 호출 게이트웨이들을 그 자체의 모듈 내의 함수들에 제공하거나 동일한 제공자에 의해 제공되는 모듈 내의 함수들에 제공하기 위해서만 허용된다. 단계(S906)에서, 전체 디바이스의 처리 코드의 스캔이 수행되고 코드로 제공되는 모든 정의된 번호들이 식별된다. 단계(S907)에서, 호출 게이트웨이들은 각각의 정의된 번호의 위치와 각각의 호출 게이트웨이 사이의 공지된 고정 오프셋에 의해 식별된다. 단계(S908)에서, 각각의 호출 게이트웨이의 액세스 파라미터들이 해석된다. 단계(S909)에서, 맵 파일은 제공자 및/또는 각각의 호출 게이트웨이의 모듈을 결정하기 위해 사용된다. 단계(S910)에서, 모든 호출 게이트웨이들이 설치 규칙을 준수하는지가 판단된다. 호출 게이트웨이들 중 어느 것이 설치 규칙을 준수하지 않으면, 이때 호출 게이트웨이를 포함하는 모듈의 설치는 단계(S911)에서 거절된다. 호출 게이트웨이들이 설치 규칙을 준수하면, 이때 설치는 단계(S912)에서 허용되고 호출 게이트웨이들은 신뢰된다.
다른 실시예들에서, 제공자의 서명을 확인하는 단계(S902)는 단계(S912)에서 설치 전에 임의의 스테이지에서 수행될 수 있다. 다른 실시예들에서, 설치 규칙을 정의하는 단계(S903)는 단계(S910) 전에 임의의 스테이지에서 수행될 수 있다.
도 9의 프로세스는 서버에서 또는 디바이스에서 수행될 수 있다. 게다가, 도 9에 예시되는 프로세스는 또한 코드 업데이트를 설치할 때 사용될 수 있다.
도 8 및 도 9의 프로세스들은 보안 검증들이 런타임으로부터 설치 시간으로 또는 구축 시간 후로 이동되게 할 수 있다.
이전에 설명된 바와 같이, 점프 명령어는 또한 도 10a에 도시된 바와 같이, 정의된 번호 및 메타데이터를 통해 분기함으로써 전이 명령어로부터 복귀할 때, 시스템이 예측불가능하게 가동되는 것을 방지한다.
도 10a 및 도 10b는 호출 게이트웨이의 2개의 변형들의 나란한 비교를 제공한다.
도 10a는 SVC 전이 명령어(예외)(1001)에 의해 호출 게이트웨이에 개시되는 도 1 내지 도 9를 참조하여 이전에 설명된 바와 같은 호출 게이트웨이를 도시한다. 정의된 번호(또한 '매직 번호'로 공지됨)(1005) 및 메타데이터 엔트리들(1003a, 1003b, 1003c)은 호출 게이트웨이에 의한 사용을 위해 전이 명령어(1001)에 관한 미리 결정된 위치들에 존재한다.
도 10b는 전이 명령어가 생략되는 이전 실시예들의 변형을 도시한다. 이러한 변형은 이하 추론적 호출 게이트웨이로 언급된다. 이러한 실시예에서, 실행가능 호출 게이트웨이 함수인 코드(1013)에 직접 분기되고 실행을 위한 다수의 명령어들로 구성될 수 있는 점프 동작(1010)(예를 들어, 분기 명령어)이 우선 도달된다.
일부 플랫폼들 상에서, 메모리 보호는 메모리를 영역들로 분할하고 각각의 메모리 영역에 대한 개별 보호 속성들(예를 들어, 액세스 파라미터들 등)을 인에이블하기 위해 메모리 보호 유닛(memory protection unit)(MPU)에 의해 구현될 수 있다. 일부 사례들에서 특정 메모리 영역 내의 위치들에 액세스하려고 추론적으로 시도하고 부영역들 또는 개별 메모리 위치들 상에 부가 보호를 갖는 일부 사례들에서만 실패하는 것이 바람직할 수 있으며, 그것에 의해 디바이스의 전체 성능을 개선한다. 하나의 그러한 예는 MPU의 하나 이상의 영역들에 매핑되고 상주하는 메모리일 수 있는 디바이스 내의 시스템 레지스터들이다. 그러한 시스템 레지스터들은 그들이 보안 상태에 의한 것으로부터만 액세스가능할 수 있는 것을 의미하는 부가 속성들을 가질 수 있다. 일부 MPU들 내의 유한 자원들로 인해, 영역들의 정의된 번호만이 특정가능할 수 있고, 이것은 개별 레지스터들을 대응하는 속성들을 갖는 전용 메모리 영역으로 구체적으로 분리하는 것이 비실용적일 수 있는 것을 의미한다.
MPU는 호출 게이트웨이 코드를 포함하는 그러한 메모리 영역에 대한 액세스가 허가되지 않기 때문에 예외(예를 들어, 중단)를 발행하면, 실행은 예외 핸들러 또는 모니터로 분기된다. 예외가 취해진 어드레스가 보존됨에 따라, 정의된 번호(1012) 및 메타데이터 엔트리들(1011a 내지 1011c)의 위치는 예외 핸들러/모니터에 의해 공지되고(또는 결정가능함) 동작은 이때 도 1 내지 도 10a를 참조하여 이전에 설명된 실시예들에 따라 진행될 수 있다.
일부 실시예들에서, 예외가 취해지는 포인트는 예를 들어 디바이스의 파이프라이닝 또는 실행 특성들 때문에 부정확할 수 있다. 호출 게이트웨이 코드(1013)에 대한 추론적 액세스 후에 추가 동작들의 임의의 원하지 않는 실행을 방지하기 위해, 메모리는 어떠한 동작을 실행하지 않거나, 디바이스에서 데이터 및 상태들의 어떠한 변화들을 야기하는 하나 이상의 "무동작"(no-operation)(NOPS) 명령어들과 패딩될 수 있다.
다른 실시예들에서, 디바이스는 동시에, 예를 들어 디바이스의 제조 시에 모두 설치되지 않는 다수의 모듈들을 포함할 수 있다. 부가 모듈들이 상이한 시간들에 설치될 수 있으므로, 디바이스의 제조 시에 이러한 부가 모듈들을 위해 호출 게이트웨이들을 제공하는 것이 가능하지 않다. 따라서, 프록시 호출 게이트웨이들은 각각의 모듈에 제공될 수 있으며, 각각의 프록시 호출 게이트웨이는 그러한 모듈에 대한 특정 액세스 허가들을 정의한다. 각각의 프록시 호출 게이트웨이는 허용된 액세스 허가들의 일반 설명을 포함하지만 호출 게이트웨이 자체는 아니다. 예를 들어, 허용된 액세스 허가들의 일반 설명은 모듈들의 타입들이 타겟 모듈에 액세스하기 위해 허용되고 허용되지 않는지 및 소스 모듈들이 타겟 모듈에서 어느 함수들을 수행할 수 있고 수행할 수 없는지를 정의할 수 있다.
일 실시예에서, 프록시 호출 게이트웨이는 디바이스에서 제공되는 타겟 모듈에 제공되며, 프록시 호출 게이트웨이는 허용된 액세스 허가들의 일반 설명을 포함한다. 프록시 호출 게이트웨이는 신뢰 메모리- 신뢰 메모리는 타겟 모듈에서 저장됨 -, 또는 디바이스에서의 신뢰 메모리에 저장될 수 있다. 새로운 모듈은 디바이스에 이미 제공된 타겟 모듈에 액세스를 필요로 하는 디바이스에 설치될 때, 새로운 모듈에는 새로운 모듈이 타겟 모듈에 함수를 수행하는 것을 허용하는 호출 게이트웨이가 제공된다. 새로운 모듈을 위해 제공되는 호출 게이트웨이는 타겟 모듈에서 제공되는 프록시 호출 게이트웨이에 정의되는 허용된 액세스 허가들의 일반 설명을 준수해야 한다. 새로운 모듈의 설치 동안, 모니터는 새로운 모듈에서 제공되는 호출 게이트웨이가 프록시 호출 게이트웨이에 정의되는 액세스 허가들을 준수하는 것을 검증한다. 호출 게이트웨이가 프록시 호출 게이트웨이에 정의되는 액세스 허가들을 준수하지 않을 때, 새로운 모듈이 폐기되고, 그것은 설치되지 않는다. 모니터는 새로운 모듈에서 제공되는 호출 게이트웨이가 프록시 호출 게이트웨이에 정의되는 액세스 허가들을 제한하는 것을 허용할 것이지만 새로운 모듈에서 제공되는 호출 게이트웨이가 프록시 호출 게이트웨이에 정의되는 액세스 허가들을 확장하는 것을 허용하지 않을 것이다. 게다가, 모니터는 소스 모듈을 새로운 모듈에 제한할 때 새로운 모듈에서 제공되는 호출 게이트웨이만을 허용할 것이며, 즉 다른 모듈들을 위해 액세스를 제공하는 호출 게이트웨이는 허용되지 않는다.
일 실시예에서, 새로운 모듈에서 제공되는 호출 게이트웨이는 프록시 호출 게이트웨이를 나타내는 타겟 포인터를 포함한다. 다른 실시예들에서, 새로운 모듈에서 제공되는 호출 게이트웨이는 새로운 호출 게이트웨이로 (예를 들어 플래그 필드에) 마킹된다. 검증은 사용되는 프로그래밍 언어와 독립적이다.
본 기술분야의 통상의 기술자들은 전술한 내용이 최선의 모드로 간주되는 것을 설명하였고, 적절한 경우 본 실시예들을 수행하는 다른 모드들을 설명하였지만, 이러한 교시들은 바람직한 실시예에 대한 이 설명에서 개시된 특정 구성들 및 방법들로 한정되어서는 안된다는 것을 알 것이다. 본 기술분야의 통상의 기술자들은, 본 교시들이 넓은 적용 범위를 갖고, 첨부된 청구항들에 정의되는 창작적 개념으로부터 벗어남이 없이 실시예들이 넓은 범위의 변형들을 취할 수 있음을 인식할 것이다.
실시예들에서 상기 메모리 위치는 타겟 레지스터를 포함한다.
실시예들에서 상기 메모리 위치는 상기 타겟 레지스터에 대한 액세스 마스크를 더 포함한다.
실시예들에서 모니터는, 액세스의 완료 후에 상기 처리 회로로부터 상기 보안 증명서들을 분리하도록 더 구성된다.
다른 실시예들에서 모니터는, 호출 게이트웨이가 신뢰 저장 디바이스에 저장되어 있지 않다는 결정 후에 보안 위반 표시를 생성하도록 더 구성된다.
다른 실시예들에서 상기 타겟 함수는 메타데이터를 포함한다.
다른 실시예들에서 상기 액세스 파라미터는 상기 타겟 함수가 수행되는 상기 제2 보안 구역 내의 타겟 어드레스를 더 포함한다.
다른 실시예들에서 상기 액세스 파라미터는 호출 게이트웨이가 수신되는 상기 제1 보안 구역 내의 소스 어드레스를 더 포함한다.
다른 실시예들에서 상기 액세스 파라미터는 전이 명령어와 상기 타겟 함수 사이에 제공되는 점프 명령어를 더 포함한다.
다른 실시예들에서 상기 점프 명령어는, 모니터가 상기 전이 명령어로부터 상기 타겟 함수 이전으로 상기 처리 회로를 복귀시키면, 상기 타겟 함수를 점프하도록 상기 처리 회로에 명령한다.
다른 실시예들에서 상기 액세스 파라미터는 전이 명령어와 상기 메모리 위치 사이에 제공되는 점프 명령어를 더 포함한다.
다른 실시예들에서 상기 점프 명령어는, 모니터가 전이 명령어로부터 상기 메모리 위치 이전으로 처리 회로를 복귀시키면, 타겟 함수를 점프하도록 처리 회로에 명령한다.
다른 실시예들에서 상기 액세스 파라미터는 정의된 번호를 더 포함한다.
다른 실시예들에서 상기 정의된 번호는 32 비트 번호이다.
다른 실시예들에서 상기 정의된 번호는 상기 전이 명령어와 관련하여 미리 결정된 위치에 제공된다.
다른 실시예들에서 상기 액세스 파라미터는 플래그 필드를 더 포함한다.
다른 실시예들에서 상기 전이 명령어는 SVC 명령어이다.
다른 실시예들에서 상기 전이 명령어는 인터럽트 명령어이다.
다른 실시예들에서 상기 신뢰 저장 디바이스는 저장 디바이스의 신뢰 부분이다.
다른 실시예들에서 상기 신뢰 저장 디바이스는 판독 전용 메모리를 포함한다.
다른 실시예들에서 상기 신뢰 저장 디바이스는 플래시 메모리를 포함한다.
다른 실시예들에서 상기 신뢰 저장 디바이스는 메모리 보호 방식을 포함한다.
다른 실시예들에서 상기 데이터 처리 장치는 적어도 제1 개발자에 의해 제공되는 제1 기능 모듈과 제2 개발자에 의해 제공되는 제2 기능 모듈을 포함하고, 이 방법은 다음을 더 포함한다: 상기 액세스 파라미터들이 상기 처리 회로가 상기 제1 개발자에 의해 제공되는 상기 제1 기능 모듈로부터 상기 제2 개발자에 의해 제공되는 제2 기능 모듈로 전이할 수 있게 하는지를 결정하는 단계; 및 상기 액세스 파라미터들이 상기 처리 회로가 상기 제1 개발자에 의해 제공되는 상기 제1 기능 모듈로부터 상기 제2 개발자에 의해 제공되는 상기 제2 기능 모듈로 전이할 수 있게 할 때 상기 호출 게이트웨이를 검증하는 것을 거절하는 단계.
다른 실시예들에서 컴퓨터 구현 방법은 상기 모듈 제공자의 서명을 검증하는 단계를 더 포함한다.
다른 실시예들에서 컴퓨터 구현 방법은 상기 호출 게이트웨이들이 상이한 제공자에 의해 제공되는 모듈로의 액세스를 허용하거나 상이한 제공자에 의해 제공되는 모듈로부터의 액세스를 허용할 때 상기 호출 게이트웨이를 포함하는 모듈을 설치하는 것을 거절하는 단계를 더 포함한다.
다른 실시예들에서 컴퓨터 구현 방법은 상기 모듈 제공자의 서명을 검증하는 단계를 더 포함한다.
다른 실시예들에서 전술한 방법들을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품이 제공된다.
다른 실시예들에서 프록시 호출 게이트웨이는 상기 신뢰 저장 디바이스에 저장되고- 상기 프록시 호출 게이트웨이는 상기 제2 보안 구역에 대한 액세스 허가들을 정의함 -, 상기 호출 게이트웨이는 상기 프록시 호출 게이트웨이에서 정의된 상기 액세스 허가들을 준수한다.
다른 실시예들에서 상기 액세스 허가들은 상기 제1 보안 구역이 상기 제2 보안 구역에 액세스하도록 허용되는지를 정의한다.
다른 실시예들에서 상기 액세스 허가들은 상기 제2 보안 구역에서 수행되도록 허용되는 적어도 하나의 타겟 함수를 정의한다.
다른 실시예들에서 상기 모니터는 상기 호출 게이트웨이가 상기 프록시 호출 게이트웨이에서 정의된 상기 액세스 허가들을 준수하는지를 판단한다.
다른 실시예들에서 상기 호출 게이트웨이는 상기 프록시 호출 게이트웨이에서 정의된 상기 액세스 허가들을 제한한다.
다른 실시예들에서 상기 호출 게이트웨이는 상기 프록시 호출 게이트웨이를 식별하는 타겟 포인터를 포함한다.
다른 실시예들에서 상기 액세스 허가들은 상기 제1 보안 구역이 상기 제2 보안 구역에 액세스하도록 허용되는지를 정의한다.
다른 실시예들에서 상기 액세스 허가들은 상기 제2 보안 구역에서 수행되도록 허용되는 적어도 하나의 타겟 함수를 정의한다.
다른 실시예들에서 상기 호출 게이트웨이는 상기 프록시 호출 게이트웨이에서 정의된 상기 액세스 허가들을 제한한다.
다른 실시예들에서 상기 호출 게이트웨이는 상기 프록시 호출 게이트웨이를 식별하는 타겟 포인터를 포함한다.
Claims (34)
- 데이터 처리 장치로서,
프로그램 명령어들에 응답하여 처리 함수들을 수행하도록 구성되는 처리 회로- 상기 처리 회로는 제1 보안 구역, 제2 보안 구역 및 모니터를 포함하고, 상기 모니터는, 상기 처리 회로가 상기 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 상기 처리 회로에 보안 증명서들을 적용하도록 구성됨 -, 및 전이 명령어 및 액세스 파라미터들을 포함하는 적어도 하나의 호출 게이트웨이를 저장하기 위한 신뢰 저장 디바이스를 포함하며, 상기 모니터는,
호출 게이트웨이가 전이 명령어에 응답하여 상기 신뢰 저장 디바이스에 저장될 때를 결정하고, 상기 호출 게이트웨이가 상기 신뢰 저장 디바이스에 저장된다는 결정 후에, 상기 처리 회로가 상기 제2 보안 구역에서 타겟 함수를 수행할 수 있도록 상기 처리 회로에 상기 보안 증명서들을 적용하도록 더 구성되며, 상기 액세스 파라미터들은 상기 타겟 함수를 포함하는, 데이터 처리 장치. - 데이터 처리 장치로서,
프로그램 명령어들에 응답하여 처리 함수들을 수행하도록 구성되는 처리 회로- 상기 처리 회로는 제1 보안 구역, 제2 보안 구역 및 모니터를 포함하고, 상기 모니터는, 상기 처리 회로가 상기 제2 보안 구역에서 함수들을 수행할 수 있게 하기 위해 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 상기 처리 회로에 보안 증명서들을 적용하도록 구성됨 -, 및 전이 명령어 및 액세스 파라미터들을 포함하는 적어도 하나의 호출 게이트웨이를 저장하기 위한 신뢰 저장 디바이스를 포함하며, 상기 모니터는,
호출 게이트웨이가 전이 명령어에 응답하여 상기 신뢰 저장 디바이스에 저장될 때를 결정하고, 상기 호출 게이트웨이가 상기 신뢰 저장 디바이스에 저장된다는 결정 후에, 상기 처리 회로가 상기 제2 보안 구역에서 메모리 위치에 액세스할 수 있도록 상기 처리 회로에 상기 보안 증명서들을 적용하도록 더 구성되며, 상기 액세스 파라미터들은 상기 메모리 위치를 정의하는, 데이터 처리 장치. - 제2항에 있어서,
상기 메모리 위치는 타겟 레지스터를 포함하는, 데이터 처리 장치. - 제3항에 있어서,
상기 메모리 위치는 상기 타겟 레지스터에 대한 액세스 마스크를 더 포함하는, 데이터 처리 장치. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 모니터는,
상기 액세스의 완료 후에 상기 처리 회로로부터 상기 보안 증명서들을 분리하도록 더 구성되는, 데이터 처리 장치. - 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 모니터는,
상기 호출 게이트웨이가 상기 신뢰 저장 디바이스에 저장되지 않는다는 결정 후에 보안 위반 표시를 생성하도록 더 구성되는, 데이터 처리 장치. - 제1항, 제5항 및 제6항 중 어느 한 항에 있어서,
상기 타겟 함수는 메타데이터를 포함하는, 데이터 처리 장치. - 제1항, 제5항 내지 제7항 중 어느 한 항에 있어서,
상기 액세스 파라미터는 상기 타겟 함수가 수행되는 상기 제2 보안 구역 내의 타겟 어드레스를 더 포함하는, 데이터 처리 장치. - 제1항 내지 제8항 중 어느 한 항에 있어서,
상기 액세스 파라미터는 상기 호출 게이트웨이가 수신되는 상기 제1 보안 구역 내의 소스 어드레스를 더 포함하는, 데이터 처리 장치. - 제1항, 제5항 내지 제9항 중 어느 한 항에 있어서,
상기 액세스 파라미터는 상기 전이 명령어와 상기 타겟 함수 사이에 제공되는 점프 명령어를 더 포함하는, 데이터 처리 장치. - 제10항에 있어서,
상기 점프 명령어는, 상기 모니터가 상기 전이 명령어로부터 상기 타겟 함수 이전으로 상기 처리 회로를 복귀시키면, 상기 타겟 함수를 점프하도록 상기 처리 회로에 명령하는, 데이터 처리 장치. - 제2항 내지 제6항 및 제9항 중 어느 한 항에 있어서,
상기 액세스 파라미터는 상기 전이 명령어와 상기 메모리 위치 사이에 제공되는 점프 명령어를 더 포함하는, 데이터 처리 장치. - 제12항에 있어서,
상기 점프 명령어는, 상기 모니터가 상기 전이 명령어로부터 상기 메모리 위치 이전으로 상기 처리 회로를 복귀시키면, 상기 타겟 함수를 점프하도록 상기 처리 회로에 명령하는, 데이터 처리 장치. - 제1항 내지 제13항 중 어느 한 항에 있어서,
상기 액세스 파라미터는 정의된 번호를 더 포함하는, 데이터 처리 장치. - 제14항에 있어서,
상기 정의된 번호는 32 비트 번호인, 데이터 처리 장치. - 제14항 또는 제15항에 있어서,
상기 정의된 번호는 상기 전이 명령어와 관련하여 미리 결정된 위치에 제공되는, 데이터 처리 장치. - 제1항 내지 제16항 중 어느 한 항에 있어서,
상기 액세스 파라미터는 플래그 필드를 더 포함하는, 데이터 처리 장치. - 제1항 내지 제17항 중 어느 한 항에 있어서,
상기 전이 명령어는 SVC 명령어인, 데이터 처리 장치. - 제1항 내지 제17항 중 어느 한 항에 있어서,
상기 전이 명령어는 인터럽트 명령어인, 데이터 처리 장치. - 제1항 내지 제19항 중 어느 한 항에 있어서,
상기 신뢰 저장 디바이스는 저장 디바이스의 신뢰 부분인, 데이터 처리 장치. - 제1항 내지 제20항 중 어느 한 항에 있어서,
상기 신뢰 저장 디바이스는 판독 전용 메모리를 포함하는, 데이터 처리 장치. - 제21항에 있어서,
상기 신뢰 저장 디바이스는 플래시 메모리를 포함하는, 데이터 처리 장치. - 제1항 내지 제20항 중 어느 한 항에 있어서,
상기 신뢰 저장 디바이스는 메모리 보호 방식을 포함하는, 데이터 처리 장치. - 처리 회로를 제1 보안 구역으로부터 제2 보안 구역으로 전이하기 위해 보안 증명서들을 상기 처리 회로에 적용할 때를 결정하기 위한 컴퓨터 구현 방법으로서,
프로그램 명령어들에서 전이 명령어를 검출하는 단계;
상기 전이 명령어와 연관된 액세스 파라미터들을 식별하는 단계;
상기 전이 명령어 및 연관된 액세스 파라미터들이 신뢰 저장 디바이스에 저장되는지를 결정하는 단계;
상기 전이 명령어 및 상기 연관된 액세스 파라미터들이 상기 신뢰 메모리에 저장될 때 상기 처리 회로에 상기 보안 증명서들을 적용하는 단계; 및
상기 전이 명령어 및 상기 연관된 액세스 파라미터들이 상기 신뢰 메모리에 저장되지 않을 때 보안 위반 표시를 생성하는 단계를 포함하는, 컴퓨터 구현 방법. - 제24항에 있어서,
상기 처리 회로를 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 단계;
상기 제2 보안 구역에서 타겟 함수를 수행하는 단계- 상기 액세스 파라미터들은 상기 타겟 함수를 포함함 -;
상기 타겟 함수의 수행 후에 상기 처리 회로로부터 상기 보안 증명서들을 제거하고 상기 처리 회로를 상기 제2 보안 구역으로부터 상기 제1 보안 구역으로 전이하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 제24항에 있어서,
상기 처리 회로를 상기 제1 보안 구역으로부터 상기 제2 보안 구역으로 전이하는 단계;
상기 제2 보안 구역에서 메모리 위치에 액세스하는 단계- 상기 액세스 파라미터들은 상기 메모리 위치를 포함함 -;
상기 메모리 위치의 액세스 후에 상기 처리 회로로부터 상기 보안 증명서들을 제거하고 상기 처리 회로를 상기 제2 보안 구역으로부터 상기 제1 보안 구역으로 전이하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 데이터 처리 장치에 대한 프로그램 명령어들에서 제공되는 호출 게이트웨이들을 검증하기 위한 컴퓨터 구현 방법으로서,
상기 프로그램 명령어들에 제공된 정의된 번호를 검출하는 단계;
호출 게이트웨이를 검출하는 단계- 상기 호출 게이트웨이는 전이 명령어 및 액세스 파라미터들을 포함하고, 상기 전이 명령어는 상기 정의된 번호와 관련하여 미리 결정된 위치에 제공됨 -; 및
상기 호출 게이트웨이가 상기 데이터 처리 장치에서 신뢰 저장 디바이스에 저장되는지를 결정하고 상기 호출 게이트웨이가 신뢰 저장 디바이스에 저장되지 않을 때 상기 호출 게이트웨이를 검증하는 것을 거절하는 단계를 포함하는, 컴퓨터 구현 방법. - 제27항에 있어서,
상기 데이터 처리 장치는 제1 개발자에 의해 제공되는 제1 기능 모듈 및 제2 개발자에 의해 제공되는 제2 기능 모듈을 포함하고, 상기 방법은,
상기 액세스 파라미터들이 상기 처리 회로가 상기 제1 개발자에 의해 제공되는 상기 제1 기능 모듈로부터 상기 제2 개발자에 의해 제공되는 상기 제2 기능 모듈로 전이할 수 있게 하는지를 결정하는 단계; 및
상기 액세스 파라미터들이 상기 처리 회로가 상기 제1 개발자에 의해 제공되는 상기 제1 기능 모듈로부터 상기 제2 개발자에 의해 제공되는 상기 제2 기능 모듈로 전이할 수 있게 할 때 상기 호출 게이트웨이를 검증하는 것을 거절하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 적어도 하나의 모듈을 포함하는 데이터 처리 장치에 대한 프로그램 명령어들에서 제공되는 호출 게이트웨이들을 검증하는 컴퓨터 구현 방법으로서,
상기 프로그램 명령어들에 제공된 정의된 번호를 검출하는 단계;
호출 게이트웨이를 검출하는 단계- 상기의 호출 게이트웨이는 전이 명령어 및 액세스 파라미터들을 포함하고, 상기의 전이 명령어는 상기의 정의된 번호와 관련하여 미리 결정된 위치에 제공됨 -;
각각의 호출 게이트웨이의 상기 액세스 파라미터들을 해석하는 단계; 및
상기 호출 게이트웨이들이 다른 모듈로의 액세스를 허용하거나 다른 모듈로부터의 액세스를 허용할 때 상기 데이터 처리 장치에서 상기 모듈을 설치하는 것을 거절하는 단계를 포함하는, 컴퓨터 구현 방법. - 제29항에 있어서,
상기 모듈 제공자의 서명을 검증하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 적어도 2개의 모듈을 포함하는 데이터 처리 장치에 대한 프로그램 명령어들에서 제공되는 호출 게이트웨이들을 검증하는 컴퓨터 구현 방법으로서,
상기 데이터 처리 장치의 맵 파일을 생성하는 단계;
상기 프로그램 명령어들에 제공된 정의된 번호를 검출하는 단계;
호출 게이트웨이를 검출하는 단계- 상기의 호출 게이트웨이는 전이 명령어 및 액세스 파라미터들을 포함하고, 상기의 전이 명령어는 상기의 정의된 번호와 관련하여 미리 결정된 위치에 제공됨 -;
각각의 호출 게이트웨이의 상기의 액세스 파라미터들을 해석하는 단계;
상기 맵 파일에 기초하여 각각의 호출 게이트웨이의 제공자 및/또는 모듈을 결정하는 단계;
상기 호출 게이트웨이들이 다른 모듈로의 액세스를 허용하거나 다른 모듈로부터의 액세스를 허용할 때 상기 호출 게이트웨이를 포함하는 모듈을 설치하는 것을 거절하는 단계를 포함하는, 컴퓨터 구현 방법. - 제31항에 있어서,
상기 호출 게이트웨이들이 상이한 제공자에 의해 제공된 모듈로의 액세스를 허용하거나 상이한 제공자에 의해 제공된 모듈로부터의 액세스를 허용할 때 상기 호출 게이트웨이를 포함하는 모듈을 설치하는 것을 거절하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 제31항에 있어서,
상기 모듈 제공자의 서명을 검증하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 제24항 내지 제33항 중 어느 한 항의 상기 방법들을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1509894.0A GB2539199B (en) | 2015-06-08 | 2015-06-08 | Apparatus and methods for transitioning between a secure area and a less-secure area |
GB1509894.0 | 2015-06-08 | ||
GB1519467.3 | 2015-11-04 | ||
GB1519467.3A GB2539290B (en) | 2015-06-08 | 2015-11-04 | Apparatus and methods for transitioning between a secure area and a less-secure area |
PCT/GB2016/051582 WO2016198831A1 (en) | 2015-06-08 | 2016-05-31 | Apparatus and methods for transitioning between a secure area and a less-secure area |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180015723A true KR20180015723A (ko) | 2018-02-13 |
Family
ID=53785104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187000196A KR20180015723A (ko) | 2015-06-08 | 2016-05-31 | 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11194899B2 (ko) |
KR (1) | KR20180015723A (ko) |
CN (1) | CN107735790B (ko) |
GB (2) | GB2539199B (ko) |
WO (1) | WO2016198831A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11095512B2 (en) * | 2019-04-17 | 2021-08-17 | Bank Of America Corporation | Internet of things (“IoT”) versatile nodes |
US11734440B2 (en) * | 2019-09-09 | 2023-08-22 | Arm Limited | Memory access transaction with security check indication |
CN110806885B (zh) * | 2019-09-29 | 2021-05-25 | 深圳市火乐科技发展有限公司 | Mcu固件更新方法、智能投影仪及相关产品 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7668306B2 (en) * | 2002-03-08 | 2010-02-23 | Intel Corporation | Method and apparatus for connecting packet telephony calls between secure and non-secure networks |
RU2005115094A (ru) * | 2002-11-18 | 2006-01-20 | Арм Лимитед (Gb) | Отображение адресов виртуальной памяти на физические адреса в системе с наличием защищенного домена и незащищенного домена |
US20050240765A1 (en) * | 2004-04-22 | 2005-10-27 | International Business Machines Corporation | Method and apparatus for authorizing access to grid resources |
US20060196929A1 (en) * | 2005-03-02 | 2006-09-07 | International Business Machines Corporation | Multiple use secure transaction card |
US20070067826A1 (en) * | 2005-09-19 | 2007-03-22 | Texas Instruments Incorporated | Method and system for preventing unsecure memory accesses |
US8478977B1 (en) * | 2005-12-21 | 2013-07-02 | Cadence Design Systems, Inc. | Secure auto-migration program |
EP2013809B1 (en) * | 2006-05-01 | 2018-11-21 | MediaTek Inc. | Method and apparatus for secure context switching in a system including a processor and cached virtual memory |
EP2075696A3 (en) * | 2007-05-10 | 2010-01-27 | Texas Instruments Incorporated | Interrupt- related circuits, systems and processes |
US8775824B2 (en) * | 2008-01-02 | 2014-07-08 | Arm Limited | Protecting the security of secure data sent from a central processor for processing by a further processing device |
US20090204823A1 (en) * | 2008-02-07 | 2009-08-13 | Analog Devices, Inc. | Method and apparatus for controlling system access during protected modes of operation |
CN101739361A (zh) * | 2008-11-12 | 2010-06-16 | 联想(北京)有限公司 | 访问控制方法、访问控制装置及终端设备 |
US20120025947A1 (en) * | 2010-08-02 | 2012-02-02 | Anshuman Sinha | Security system with offline credential analyis based on location information where secured access is desired |
US8914876B2 (en) * | 2011-05-05 | 2014-12-16 | Ebay Inc. | System and method for transaction security enhancement |
US20140157355A1 (en) * | 2012-01-06 | 2014-06-05 | Optio Labs, LLC | Systems and methods for enhancing mobile device security with a processor trusted zone |
US9477834B2 (en) * | 2012-02-08 | 2016-10-25 | Arm Limited | Maintaining secure data isolated from non-secure access when switching between domains |
EP2672672A1 (en) * | 2012-06-07 | 2013-12-11 | Alcatel-Lucent | Secure data processing |
US9275223B2 (en) * | 2012-10-19 | 2016-03-01 | Mcafee, Inc. | Real-time module protection |
JP2014089652A (ja) * | 2012-10-31 | 2014-05-15 | Toshiba Corp | 情報処理装置 |
US9008221B2 (en) * | 2013-04-01 | 2015-04-14 | Honeywell International Inc. | Spurious frequency attenuation servo |
KR20160039234A (ko) * | 2013-07-26 | 2016-04-08 | 옵티오 랩스 인코포레이티드 | 영역 지향 프로그래밍을 통한 모바일 보안 향상 시스템 및 방법 |
JP6117068B2 (ja) * | 2013-09-20 | 2017-04-19 | 株式会社東芝 | 情報処理装置、およびプログラム |
JP6129702B2 (ja) * | 2013-09-24 | 2017-05-17 | 株式会社東芝 | 情報処理装置、情報処理システム、プログラム |
-
2015
- 2015-06-08 GB GB1509894.0A patent/GB2539199B/en not_active Expired - Fee Related
- 2015-11-04 GB GB1519467.3A patent/GB2539290B/en not_active Expired - Fee Related
-
2016
- 2016-05-31 US US15/578,387 patent/US11194899B2/en active Active
- 2016-05-31 WO PCT/GB2016/051582 patent/WO2016198831A1/en active Application Filing
- 2016-05-31 KR KR1020187000196A patent/KR20180015723A/ko not_active Application Discontinuation
- 2016-05-31 CN CN201680033465.4A patent/CN107735790B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20180218150A1 (en) | 2018-08-02 |
GB2539290B (en) | 2018-05-23 |
WO2016198831A1 (en) | 2016-12-15 |
GB2539199A (en) | 2016-12-14 |
CN107735790A (zh) | 2018-02-23 |
US11194899B2 (en) | 2021-12-07 |
GB201519467D0 (en) | 2015-12-16 |
GB201509894D0 (en) | 2015-07-22 |
CN107735790B (zh) | 2022-02-11 |
GB2539290A (en) | 2016-12-14 |
GB2539199B (en) | 2018-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11514159B2 (en) | Method and system for preventing and detecting security threats | |
KR102352505B1 (ko) | 비인가된 액세스들로부터 디바이스의 도메인들을 보호하는 방법들 및 장치 | |
EP2854066B1 (en) | System and method for firmware integrity verification using multiple keys and OTP memory | |
TWI607376B (zh) | 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法 | |
US8464011B2 (en) | Method and apparatus for providing secure register access | |
US20120331303A1 (en) | Method and system for preventing execution of malware | |
US20160055331A1 (en) | Detecting exploits against software applications | |
CN107735790B (zh) | 用于在安全区域和不太安全区域之间转换的装置和方法 | |
Kim et al. | Extending a hand to attackers: browser privilege escalation attacks via extensions | |
WO2022193630A1 (zh) | 敏感数据的读取方法、装置、电子设备及存储介质 | |
Msgna et al. | Secure application execution in mobile devices | |
Egners et al. | Hackers in your pocket: A survey of smartphone security across platforms | |
EP4357957A1 (en) | Method for securing against physical or logical attacks an execution of a machine language instructions code | |
EP2202661B1 (en) | Apparatus and method for protecting asset in computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
WITB | Written withdrawal of application |