KR20180052695A - 제어된 암호화 키 관리에 의해 보호되는 소프트웨어 모듈들에 대한 보안 진입 및 탈출 - Google Patents
제어된 암호화 키 관리에 의해 보호되는 소프트웨어 모듈들에 대한 보안 진입 및 탈출 Download PDFInfo
- Publication number
- KR20180052695A KR20180052695A KR1020187010029A KR20187010029A KR20180052695A KR 20180052695 A KR20180052695 A KR 20180052695A KR 1020187010029 A KR1020187010029 A KR 1020187010029A KR 20187010029 A KR20187010029 A KR 20187010029A KR 20180052695 A KR20180052695 A KR 20180052695A
- Authority
- KR
- South Korea
- Prior art keywords
- software module
- secure software
- secure
- instructions
- instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 139
- 230000004044 response Effects 0.000 claims abstract description 51
- 230000015654 memory Effects 0.000 claims description 57
- 230000009471 action Effects 0.000 claims description 18
- 230000002401 inhibitory effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 67
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 7
- 230000009191 jumping Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G06F2221/0755—
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Virology (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 기술들이 제공된다. 이 기술들에 따른 방법은, 비-보안 소프트웨어 모듈로부터 암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하는 단계, 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점(controlled point of entry)과 연관된 명령을 포함하는지를 결정하는 단계, 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계, 및 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출(exit)을 제어하는 단계를 포함한다.
Description
[0001]
소프트웨어는 해커들 또는 경쟁자들이 소프트웨어로부터 추출하고 그 자신의 목적들을 위해 악용(exploit)하기를 바랄 수 있는 귀중한 지적 재산을 포함할 수 있다. 신뢰된 실행 환경들과 같은 일부 종래의 솔루션들이 컴퓨팅 디바이스 상의 데이터에 대한 보호를 제공할 수 있다. 그러나 이러한 솔루션들은 소프트웨어 코드 자체에 대한 보호를 제공하지 않는다.
[0002]
본 개시에 따라 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 방법은, 비-보안 소프트웨어 모듈로부터 암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하는 단계, 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점(controlled point of entry)과 연관된 명령을 포함하는지를 결정하는 단계, 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계, 및 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출(exit)을 제어하는 단계를 포함한다.
[0003]
그러한 방법의 구현들은 다음의 특징들 중 하나 또는 그 초과를 포함할 수 있다. 명령은 호출 명령이며, 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하는 단계는, 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 보안 소프트웨어 모듈의 명령에 액세스하는 단계; 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하는 단계; 및 호출 명령에서 특정된 어드레스에서 발견된 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하는 단계를 포함한다. 호출 명령에서 특정된 어드레스에서 발견된 명령이 구성 명령이 아니라는 것에 응답하여 보안 소프트웨어 모듈에 대한 액세스를 금지하고; 호출 명령에서 특정된 어드레스가 구성 명령이 아니라는 것에 대한 응답으로 액션(action)을 수행한다. 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계는 보안 소프트웨어 모듈의 인스턴스(instance)를 초기화하는 단계를 포함한다. 보안 소프트웨어 모듈의 인스턴스를 초기화하는 단계는 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보에 액세스하는 단계를 포함한다. 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하는 단계는, 보안 메모리에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하는 단계; 및 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키는 단계를 포함한다. 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하는 단계는, 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하는 단계; 보안 메모리에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하는 단계; 및 예외 발생에 응답하여, 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키는 단계를 포함한다. 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계는 하나 또는 그 초과의 명령들을 실행하기 직전에 실행되는 보안 소프트웨어 모듈의 인스턴스와 연관되는 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들 각각을 복호화하는 단계를 포함한다. 하나 또는 그 초과의 명령들을 실행하기 직전에 실행되는 보안 소프트웨어 모듈의 인스턴스와 연관되는 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들 각각을 복호화하는 단계는 보안 소프트웨어 모듈과 연관된 암호화 키를 사용하여 하나 또는 그 초과의 명령들 각각을 복호화하는 단계를 포함한다.
[0004]
본 개시에 따른 예시적인 장치는, 비-보안 소프트웨어 모듈로부터 암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하기 위한 수단; 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하기 위한 수단; 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하기 위한 수단; 및 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 수단을 포함한다.
[0005]
그러한 장치의 구현들은 다음의 특징들 중 하나 또는 그 초과를 포함할 수 있다. 명령은 호출 명령이며, 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하기 위한 수단은, 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 보안 소프트웨어 모듈의 명령에 액세스하기 위한 수단; 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하기 위한 수단; 및 호출 명령에서 특정된 어드레스에서 발견된 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하기 위한 수단을 포함한다. 호출 명령에서 특정된 어드레스에서 발견된 명령이 구성 명령이 아니라는 것에 응답하여 보안 소프트웨어 모듈에 대한 액세스를 금지하기 위한 수단; 및 호출 명령에서 특정된 어드레스가 구성 명령이 아니라는 것에 대한 응답으로 액션을 수행하기 위한 수단이 포함된다. 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하기 위한 수단은 보안 소프트웨어 모듈의 인스턴스를 초기화하기 위한 수단을 포함한다. 보안 소프트웨어 모듈의 인스턴스를 초기화하기 위한 수단은 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 액세스하기 위한 수단을 포함한다. 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 수단은, 보안 메모리에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하기 위한 수단; 및 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키기 위한 수단을 포함한다. 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 수단은, 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하기 위한 수단; 보안 메모리에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하기 위한 수단; 및 예외 발생에 응답하여, 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키는 위한 수단을 포함한다.
[0006]
본 개시에 따른 예시적인 장치는 메모리 및 메모리에 커플링되는 프로세서를 포함한다. 프로세서는, 비-보안 소프트웨어 모듈로부터 암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하고; 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하고; 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하고; 그리고 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성된다.
[0007]
그러한 장치의 구현들은 다음의 특징들 중 하나 또는 그 초과를 포함할 수 있다. 명령은 호출 명령이며, 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하도록 구성되는 프로세서는 추가로, 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 보안 소프트웨어 모듈의 명령에 액세스하고; 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하고; 및 호출 명령에서 특정된 어드레스에서 발견된 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하도록 구성된다. 프로세서는 추가로, 호출 명령에서 특정된 어드레스에서 발견된 명령이 구성 명령이 아니라는 것에 응답하여 보안 소프트웨어 모듈에 대한 액세스를 금지하고; 그리고 호출 명령에서 특정된 어드레스가 구성 명령이 아니라는 것에 대한 응답으로 액션을 수행하도록 구성된다. 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하도록 구성되는 프로세서는 추가로, 보안 소프트웨어 모듈의 인스턴스를 초기화하도록 구성된다. 보안 소프트웨어 모듈의 인스턴스를 초기화하도록 구성되는 프로세서는 추가로, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 액세스하도록 구성된다. 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성되는 프로세서는 추가로, 메모리의 보안 부분에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키도록 구성된다. 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성되는 프로세서는 추가로, 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하고; 메모리의 보안 부분에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고 예외 발생에 응답하여, 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키도록 구성된다.
[0008]
본 개시에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 컴퓨터-판독 가능 명령들이 저장되어 있는 예시적인 비-일시적인 컴퓨터-판독 가능 매체는, 컴퓨팅 디바이스로 하여금, 비-보안 소프트웨어 모듈로부터 암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하고; 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하고; 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하고; 그리고 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하게 하도록 구성된 명령들을 포함한다.
[0009]
그러한 비-일시적인, 컴퓨터-판독 가능 매체의 구현들은 다음의 특징들 중 하나 또는 그 초과를 포함할 수 있다. 명령은 호출 명령을 포함하고, 컴퓨팅 디바이스로 하여금, 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하게 하도록 구성되는 명령들은, 컴퓨팅 디바이스로 하여금, 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 보안 소프트웨어 모듈의 명령에 액세스하고; 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하고; 그리고 호출 명령에서 특정된 어드레스에서 발견된 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하게 하도록 구성되는 명령들을 포함한다. 명령들은, 컴퓨팅 디바이스로 하여금, 호출 명령에서 특정된 어드레스에서 발견된 명령이 구성 명령이 아니라는 것에 응답하여 보안 소프트웨어 모듈에 대한 액세스를 금지하고; 그리고 호출 명령에서 특정된 어드레스가 구성 명령이 아니라는 것에 대한 응답으로 액션을 수행하게 하도록 구성된다. 컴퓨팅 디바이스로 하여금, 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하게 하도록 구성되는 명령들은, 컴퓨팅 디바이스로 하여금, 보안 소프트웨어 모듈의 인스턴스를 초기화하게 하도록 구성되는 명령들을 포함한다. 컴퓨팅 디바이스로 하여금, 보안 소프트웨어 모듈의 인스턴스를 초기화하게 하도록 구성되는 명령들은, 컴퓨팅 디바이스로 하여금, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 액세스하게 하도록 구성되는 명령들을 포함한다. 컴퓨팅 디바이스로 하여금, 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하게 하도록 구성되는 명령들은, 컴퓨팅 디바이스로 하여금, 보안 메모리에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키게 하도록 구성되는 명령들을 포함한다. 컴퓨팅 디바이스로 하여금, 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하게 하도록 구성되는 명령들은, 컴퓨팅 디바이스로 하여금, 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하고; 보안 메모리에, 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고 예외 발생에 응답하여, 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키게 하도록 구성되는 명령들을 포함한다.
[0010]
도 1은 소정의 예시적인 구현들에 따른 예시적인 컴퓨팅 디바이스의 개략도이다.
[0011] 도 2는 소정의 예시적인 구현들에 따른 예시적인 컴퓨팅 디바이스의 개략도이다.
[0012] 도 3은 본원에서 개시된 기술들에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 프로세스의 흐름도이다.
[0013] 도 4는 본원에서 개시된 기술들에 따라, 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점인지를 결정하기 위한 예시적인 프로세스의 흐름도이다.
[0014] 도 5는 본원에서 개시된 기술들에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 프로세스의 흐름도이다.
[0015] 도 6은 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 예시적인 프로세스의 흐름도이다.
[0016] 도 7은 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈을 초기화하기 위한 예시적인 프로세스의 흐름도이다.
[0017] 도 8은 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈의 명령들을 실행하기 위한 예시적인 프로세스의 흐름도이다.
[0018] 도 9는 소정의 예시적인 구현들에 따라, 도 1 및 도 2에 예시된 컴퓨팅 디바이스를 구현하는데 사용될 수 있는 예시적인 무선 디바이스의 개략도이다.
[0019] 다양한 도면들 내의 유사한 참조 심볼들은 소정의 예시적인 구현들에 따라, 유사한 엘리먼트들을 표시한다.
[0011] 도 2는 소정의 예시적인 구현들에 따른 예시적인 컴퓨팅 디바이스의 개략도이다.
[0012] 도 3은 본원에서 개시된 기술들에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 프로세스의 흐름도이다.
[0013] 도 4는 본원에서 개시된 기술들에 따라, 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점인지를 결정하기 위한 예시적인 프로세스의 흐름도이다.
[0014] 도 5는 본원에서 개시된 기술들에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 프로세스의 흐름도이다.
[0015] 도 6은 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 예시적인 프로세스의 흐름도이다.
[0016] 도 7은 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈을 초기화하기 위한 예시적인 프로세스의 흐름도이다.
[0017] 도 8은 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈의 명령들을 실행하기 위한 예시적인 프로세스의 흐름도이다.
[0018] 도 9는 소정의 예시적인 구현들에 따라, 도 1 및 도 2에 예시된 컴퓨팅 디바이스를 구현하는데 사용될 수 있는 예시적인 무선 디바이스의 개략도이다.
[0019] 다양한 도면들 내의 유사한 참조 심볼들은 소정의 예시적인 구현들에 따라, 유사한 엘리먼트들을 표시한다.
[0020]
보안 소프트웨어 모듈들을 보호하기 위한 방법들, 시스템들, 디바이스들, 컴퓨터 판독 가능 매체들 및 다른 구현들이 본원에서 설명된다. 본원에서 설명된 기술들은 제어된 암호화 키 관리에 의해 보호되는 보안 소프트웨어 모듈들로의 제어된 진입 및 이로부터의 탈출을 제공한다. 보안 소프트웨어 모듈의 프로그램 코드는 암호화된 형태로 저장되고 컴퓨팅 디바이스의 프로세서에 의해 소프트웨어 코드의 실행 직전에 복호화된다. 첨부 도면들 및 이하의 설명은 이들 접근법들 각각을 보다 상세히 논의한다.
[0021]
예시적인 실시예들은, 예를 들어, 다음 중 하나 또는 그 초과의를 포함하는 방법들을 포함한다:
·소프트웨어 모듈들을 보호하기 위한 방법들, 시스템들, 디바이스들, 컴퓨터 판독 가능 매체들 및 다른 구현들. 이들 기술에 따른 예시적인 방법은,
o 비-보안 소프트웨어 모듈로부터, 암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하는 단계;
o 명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점(controlled point of entry)과 연관된 명령을 포함하는지를 결정하는 단계;
o 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계; 및
o 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하는 단계를 포함한다.
· 이러한 예시적인 시스템들 및 방법들의 구현들은 첨부 도면들에서 예시되고 이하의 예시적인 구현들에서 상세히 논의된다.
[0022]
도 1은, 본원에 개시되는 기술들을 구현하기 위해 사용될 수 있는 예시적인 컴퓨팅 디바이스(100)의 개략도이다. 컴퓨팅 디바이스(100)는 컴퓨터 서버를 포함할 수 있고 클라우드 컴퓨팅 환경의 부분일 수 있다. 컴퓨팅 디바이스(100)는 또한 랩톱 컴퓨터, 태블릿 컴퓨터, 모바일 디바이스 또는 웨어러블 컴퓨팅 디바이스와 같은 다른 유형들의 컴퓨팅 디바이스일 수 있다. 컴퓨팅 디바이스(100)는 프로세서(105) 및 메모리(125)를 포함한다. 메모리(125)는 프로세서(105)에 통신 가능하게 커플링되고, 프로세서(105)에 의해 실행될 수 있는 데이터 및/또는 실행 가능한 프로그램 코드를 저장하는데 사용될 수 있다. 프로세서(105)는 비-보안 소프트웨어 모듈(130) 및 보안 소프트웨어 모듈(140) 둘 모두를 실행하도록 구성될 수 있다. 비-보안 소프트웨어 모듈(130)은 하나 또는 그 초과의 기능들을 수행하기 위해 프로세서(105)에 의해 실행될 수 있는 실행 가능한 프로그램 명령들을 포함한다. 비보호 소프트웨어 코드는 암호화되지 않은 형태로 메모리(125)에 저장되고, 컴퓨팅 디바이스(100) 상에서 실행되는 다른 프로세스들이 잠재적으로 액세스 가능할 수 있다. 비보호 소프트웨어 코드는 컴퓨팅 디바이스(100)에 의해 실행되는 하나 또는 그 초과의 애플리케이션들 및/또는 컴퓨팅 디바이스(100)에 의해 실행되는 HLOS(high-level operating system)의 컴포넌트들을 포함할 수 있다. 보호 소프트웨어 코드는, 컴퓨팅 디바이스(100)의 메모리(125)에 암호화된 형태로 저장되는 민감한 프로그램 코드를 포함하는 하나 또는 그 초과의 보안 소프트웨어 모듈들(140)을 포함한다. 민감한 프로그램 코드는 코드의 개발자가 보호하기를 바라는 귀중한 지적 재산을 포함할 수 있거나, 또는 민감한 데이터 예컨대, 재무 데이터, 의료 데이터 또는 프로그램 코드를 공격함으로써 공격자가 획득하거나 수정하기를 바랄 수 있는 다른 이러한 데이터에 액세스하거나 수정할 수 있는 트랜잭션들을 수행하기 위한 코드를 포함할 수 있다. 보호 소프트웨어 코드는 실행 직전까지 암호화된 형태로 저장될 수 있다. 실행 직전에, 관련 프로그램 코드는 복호화되고 실행을 위해 프로세서(105)에 제공될 수 있다.
[0023]
컴퓨팅 디바이스(100)는 보안 소프트웨어 모듈들을 실행하도록 구성될 수 있다. 각각의 보안 소프트웨어 모듈(140)은 보안 소프트웨어 모듈(140)의 "영역(realm)" 또는 "소프트웨어 영역"으로서 본원에서 또한 지칭되는 메모리(125)의 일부에 저장될 수 있다. 보안 소프트웨어 모듈(140)은 암호화된 프로그램 코드(155)를 포함한다. 보안 소프트웨어 모듈(140)은 영역 엔트리 콘텍스트(150) 및 영역 구성 명령(145)을 또한 포함할 수 있다. 영역 구성 명령(145)은 보안 소프트웨어 모듈(140)의 프로그램 코드로의 초기 엔트리 지점으로서 역할을 한다. 프로세서(105)는 영역 호출 명령(135)을 통해 보안 소프트웨어 모듈(140)의 프로그램 코드로의 지정된 엔트리 지점 이외의 메모리 위치들에 대한 코드로의 점프들을 방지함으로써 보안 소프트웨어 모듈(140)의 프로그램 코드로의 진입을 제어할 수 있다. 영역 구성 명령(145) 이외의 다른 어드레스들에서 보안 소프트웨어 모듈(140)의 프로그램 코드로의 진입을 위한 호출은 프로세서(105)에 의해 거절될 수 있으며, 이는 공격자가 보안 소프트웨어 모듈(140)의 프로그램 코드 내의 임의의 어드레스로 점프하려고 시도하는 것을 방지할 수 있다. 보안 소프트웨어 모듈(140)의 암호화된 프로그램 코드(155)는 암호화된 형태로 유지되며, 프로세서(105)가 암호화된 프로그램 코드(155)의 명령을 실행하려고 할 때 단지 필요할 때마다(as-needed basis) 복호화된다.
[0024]
또한, 컴퓨팅 디바이스(100)는 비-보안 소프트웨어 모듈들(130)이 보안 소프트웨어 모듈(140)을 호출하도록 허용하게 구성될 수 있다. 프로세서(105)는 하나 또는 그 초과의 영역-특정 CPU 명령들(110)을 구현할 수 있다. 이들 명령들은 영역 호출 명령(135), 영역 구성 명령(145) 및 영역 리턴 명령(160)을 포함할 수 있다. 다른 영역-특정 명령들은 또한 프로세서(105)에 의해 구현될 수 있다. 프로세서(105)는 비보호 프로그램 코드가 보안 소프트웨어 모듈(140)의 프로그램 코드를 호출하기 위한 인터페이스를 제공하는 영역 호출 명령(135)을 구현하도록 구성될 수 있다. 영역 호출 명령(135)은 파라미터로서 영역 구성 명령(145)의 어드레스를 수용하도록 구성될 수 있다. 영역 호출 명령(135)은 비-보안 소프트웨어 모듈들(130)이 액세스 가능한 암호화되지 않은 명령을 포함할 수 있다. 프로세서(105)는 영역 호출 명령(135)에서 특정된 어드레스에 액세스하고, 특정된 어드레스에 로케이팅된 명령을 복호화하고, 영역 호출 명령(135)에 의해 특정된 어드레스의 명령이 영역 구성 명령(145)인지에 관한 결정을 내리도록 구성될 수 있다. 보호 소프트웨어는 다수의 보안 소프트웨어 모듈들(140) 또는 영역들을 포함할 수 있고, 각각의 영역은 그 자신의 영역-특정 또는 보안 소프트웨어 모듈-특정 암호화 키와 연관될 수 있다. 암호화 키들은 일부 구현들에서, 컴퓨팅 디바이스(100)의 신뢰된 실행 환경의 키 관리 서브시스템에 의해 관리될 수 있다. 프로세서(105)는 영역 구성 명령(145)에 맵핑되지 않는 영역 호출 명령(135)에 의해 특정된 어드레스에 로케이팅된 복호화된 콘텐츠에 응답하여, 영역 호출 명령(135)을 중단하도록 구성될 수 있다. 프로세서(105)는, 영역 구성 명령(145)의 올바른 어드레스와 매칭하는 영역 호출 명령에서 특정된 어드레스에 응답하여, 영역 구성 명령(145)을 실행하도록 구성될 수 있다. 각각의 보안 소프트웨어 모듈(140)은 그 자신의 영역 구성 명령(145)과 연관될 수 있고, 비-보안 소프트웨어 모듈(130)은, 그 특정 보안 소프트웨어 모듈(140)에 대한 엔트리 지점인, 보안 소프트웨어 모듈(140)과 연관된 영역 구성 명령(145)의 어드레스에 대한 영역 호출 명령(135)을 실행함으로써 특정 영역의 소프트웨어를 실행할 수 있다.
[0025]
영역 구성 명령(145)은 실행을 위해 보안 소프트웨어 모듈(140)을 준비시키도록 프로세서(105)에 의해 실행된다. 영역 구성 명령(145)은 보안 소프트웨어 모듈(140)과 연관된 영역 엔트리 콘텍스트(150)에 액세스한다. 영역 엔트리 콘텍스트(150)는 보안 소프트웨어 모듈(140)에 저장된다. 영역 엔트리 콘텍스트(150)는 보안 소프트웨어 모듈(140)에 대한 상태 정보를 저장한다. 보안 소프트웨어 모듈(140)에 구현되는 보안 소프트웨어 모듈(140)은 여러 상태들, 즉 (1) 자유 상태, (2) 실행 상태 또는 (3) 일시정지 상태 중 하나에 있을 수 있다. 영역이 자유 상태에 있을 때, 영역의 실행 또는 일시정지 인스턴스가 없으며, 비-보안 소프트웨어 모듈(130)로부터의 영역에 대한 호출이 이루어질 수 있다. 도 1에 예시된 구현에서, 한 번에 각각의 영역의 단지 하나의 인스턴스가 실행중이거나 일시정지될 수 있다. 영역이 이미 실행중이거나 일시정지되고, 후속 영역 호출 명령이 실행되는 경우, 프로세서(105)는 영역이 자유 상태로 리턴할 때까지 영역 구성 명령(145)을 차단하도록 구성될 수 있다. 영역이 자유 상태에 있었다면, 프로세서(105)는, 영역의 상태를 초기화하는데 사용될 수 있는 데이터를 포함하는 영역에 대한 영역 엔트리 콘텍스트(150)에 액세스하기 위해 영역 구성 명령(145)을 실행하도록 구성될 수 있다. 영역 엔트리 콘텍스트(150)는 프로세서(105)의 하나 또는 그 초과의 레지스터들에 로딩될 수 있는 값들을 포함할 수 있다. 영역 엔트리 콘텍스트(150)는 암호화된 형태로 보안 소프트웨어 모듈(140)에 저장된다. 프로세서(105)는 영역과 연관된 암호화 키에 액세스하고 영역 엔트리 콘텍스트(150)를 복호화하도록 구성될 수 있다. 암호화 키는 컴퓨팅 디바이스(100)의 신뢰된 실행 환경의 키 관리 서브시스템에 의해 관리될 수 있다. 프로세서(105)는, 보안 소프트웨어 모듈(140)에 저장되는 동안 영역 엔트리 콘텍스트(150)가 손상 또는 위조(tamper)되지 않았음을 보장하기 위해 복호화 시에 영역 엔트리 콘텍스트(150)를 인증하도록 구성될 수 있다. 영역 엔트리 콘텍스트(150) 정보는 필요에 따라 프로세서(105)에 의해 복호화되고 비-보안 소프트웨어 모듈(130)에 의해 액세스 가능하지 않다. 영역 엔트리 콘텍스트(150)의 어드레스는 프로세서(105)의 영역 엔트리 콘텍스트(REC; realm entry context) 레지스터(120)에 저장될 수 있다. 영역 엔트리 콘텍스트(150)가 로딩되면, 프로세서(105)는 영역이 실행 상태에 있음을 표시하도록 영역 엔트리 콘텍스트(150)를 업데이트할 수 있다. 실행 상태에 있는 동안, 프로세서(105)는 보안 소프트웨어 모듈(140)을 포함하는 프로그램 코드의 하나 또는 그 초과의 명령들을 실행하도록 구성될 수 있다. 프로세서(105)는, 보안 소프트웨어 모듈(140)의 프로그램 코드(155)의 하나 또는 그 초과의 명령들이 프로세서(105)에 의해 실행됨에 따라 영역 엔트리 콘텍스트(150) 및/또는 프로세서(105)의 하나 또는 그 초과의 레지스터들에 저장된 정보를 업데이트하도록 구성될 수 있다.
[0026]
프로세서(105)는 프로그램 코드가 보호된 채로 유지되도록 보장하기 위해 실행을 위해 필요한 경우에만 보안 소프트웨어 모듈(140)의 프로그램 코드(155)의 각각의 명령에 액세스하고 복호화하도록 구성된다. 프로세서(105)는, 영역 구성 명령(145)이 성공적으로 실행되었고 보안 소프트웨어 모듈(140)의 프로그램 코드(155)의 어드레스가 프로세서(105)에 의해 제공된 경우에만, 보안 소프트웨어 모듈(140)의 프로그램 코드(155)의 명령들에 액세스하고 복호화하도록 구성될 수 있다.
[0027]
프로세서(105)는 또한 외부 호출에 응답하여 영역을 일시정지 상태에 두도록 구성될 수 있다. 예를 들어, 보안 소프트웨어 모듈(140)의 프로그램 코드(155)는 비-보안 소프트웨어 모듈(130)의 라이브러리 또는 소프트웨어 모듈의 호출을 행하도록 구성될 수 있다. 프로세서는 또한, 인터럽트 또는 콘텍스트 스위치와 같은 예외로 인해 영역을 일시정지 상태로 두도록 구성될 수 있다. 프로세서(105)의 예외 무시 처리 로직(exception override handling logic)(115)은 영역의 현재 상태를, REC 레지스터(120)에 특정된 어드레스에 저장된 영역 엔트리 콘텍스트(150)에 저장하도록 구성될 수 있다. 저장된 영역 엔트리 콘텍스트(150)는, 보안 소프트웨어 모듈(140)의 프로그램 코드(155)로부터 호출되는 비-보안 소프트웨어 모듈(130)의 라이브러리 또는 모듈의 실행의 완료 시에 영역의 실행을 재개하는데 사용될 수 있다.
[0028]
도 2는, 본원에 개시되는 기술들을 구현하기 위해 사용될 수 있는 예시적인 컴퓨팅 디바이스(100)의 개략도이다. 도 2에 예시된 예는, 영역 구성 명령이 요구되지 않도록 영역 구성 명령의 기능성이 영역 호출 명령들(135)에 통합되는 컴퓨팅 디바이스(100)의 대안적인 예를 예시한다.
[0029]
영역 호출 명령 및 영역 구성 명령의 기능성은 영역 호출 명령에 병합될 수 있어서, 영역 호출 명령은 영역 엔트리 콘텍스트(150)에 액세스하고 영역 엔트리 콘텍스트를 사용하여 보안 소프트웨어 모듈(140)을 초기화하는 것을 담당한다. 대안적으로, 영역 호출 명령은 영역 구성 명령을 호출하고 영역 엔트리 콘텍스트(150)의 어드레스를 영역 구성 명령에 전달할 수 있고, 영역 구성 명령은 영역 호출 명령과 함께 제공되는 어드레스에 의해 참조되는 영역 엔트리 콘텍스트(150)를 사용하여 보안 소프트웨어 모듈(140)을 초기화하는 것으로 진행할 수 있다.
[0030]
영역 호출 명령은, 파라미터로서 영역 엔트리 콘텍스트(150)의 어드레스 및 스레드 또는 프로세스 식별자를 수용하도록 구성될 수 있다. 프로세서(105)는 제공된 어드레스에서 메모리에 액세스할 수 있고 영역 엔트리 콘텍스트(150)가 그 메모리 위치에 존재하는지를 결정할 수 있다. 그 메모리 어드레스에 저장된 데이터가 영역 엔트리 콘텍스트가 아닌 경우, 프로세서(105)는 보안 소프트웨어 모듈(140)의 실행을 정지시키는 예외를 발생(throw)시키도록 구성될 수 있다.
[0031]
도 2에 예시된 예는 보안 소프트웨어 모듈(140)의 멀티-스레드 실행을 지원하는데 사용될 수 있다. 각각의 스레드 또는 프로세스는 그 스레드 또는 프로세스와 연관된 영역 엔트리 콘텍스트(150)의 어드레스를 저장하는 것을 담당할 수 있다. 스레드 또는 프로세스가 다른 스레드 또는 프로세스와 연관된 콘텍스트 정보에 액세스하려고 시도하지 않았음을 보장하기 위해, 영역 엔트리 콘텍스트(150)는 소유자 인증 태그를 포함할 수 있다. 소유자 인증 태그는 실제 호출 명령을 행하는 (making) 스레드 또는 프로세스를 고유하게 식별하는 스레드 또는 프로세스 식별자를 사용하여 생성되는 인증 태그일 수 있다. 인증 태그는 다양한 기술들을 사용하여 그리고 보안 소프트웨어 모듈(140)과 연관된 암호화 키를 사용하여 생성될 수 있다. 영역 호출 명령은, 파라미터로서 영역 엔트리 콘텍스트(150)의 어드레스 및 스레드 또는 프로세스 식별자를 수용하도록 구성될 수 있다. 프로세서(105)는 제공된 어드레스에서 메모리에 액세스할 수 있고 영역 엔트리 콘텍스트(150)가 그 메모리 위치에 존재하는지를 결정할 수 있다. 그 메모리 어드레스에 저장된 데이터가 영역 엔트리 콘텍스트가 아닌 경우, 프로세서(105)는 보안 소프트웨어 모듈(140)의 실행을 정지시키는 예외를 발생시키도록 구성될 수 있다. 영역 엔트리 콘텍스트(150)가 특정된 어드레스에 존재하는 경우, 프로세서(105)는 영역 엔트리 콘텍스트(150)로부터 소유자 인증 태그를 추출하도록 구성될 수 있다. 프로세서(105)는 또한 스레드 또는 프로세스 식별자에 기초하여 소유자 인증 태그를 결정할 수 있고 그것을, 영역 엔트리 콘텍스트(150)로부터 추출된 소유자 인증 태그와 비교할 수 있다. 결정된 소유자 인증 태그가 영역 엔트리 콘텍스트(150)로부터 추출된 소유자 인증 태그와 매칭하지 않는 경우, 프로세서는 보안 소프트웨어 모듈(140)의 실행을 정지시키는 예외를 발생시키도록 구성될 수 있다.
[0032]
도 3은, 본원에서 개시된 기술들에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 프로세스의 흐름도이다. 도 3에 예시된 프로세스는, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 프로세서(105)에 의해 구현될 수 있다.
[0033]
암호화된 프로그램 코드를 포함하는 보안 소프트웨어 모듈의 명령을 실행하라는 요청이 비-보안 소프트웨어 모듈로부터 수신될 수 있다(스테이지 305). 비-보안 소프트웨어 모듈은 컴퓨팅 디바이스 상에 설치된 애플리케이션, 컴퓨팅 디바이스의 HLOS의 컴포넌트, 및/또는 보안 소프트웨어 모듈(140)을 포함하지 않는 컴퓨팅 디바이스 상의 다른 소프트웨어를 포함할 수 있다. 보안 소프트웨어 모듈(140)은, 다른 사람들이 소프트웨어로부터 추출하는 것을 방지하기를 소프트웨어의 개발자가 바라는 지적 재산 가치(intellectual property value)를 갖는 프로그램 코드를 포함할 수 있다. 비-보안 소프트웨어는, 비보호 소프트웨어와 별개의 메모리의 신뢰된 부분에 보안 소프트웨어 모듈을 저장함으로써 보안 소프트웨어 모듈(140)로부터 분리될 수 있다. 보안 소프트웨어 모듈(140)의 프로그램 코드는 또한, 소스 코드가 획득된 경우 공격자가 소스 코드를 사용하는 것을 방지하기 위해 보안 소프트웨어 모듈(140)과 연관된 암호화 키를 사용하여 암호화될 수 있다. 비-보안 소프트웨어는 데이터를 프로세싱하기 위해 그리고/또는 다른 태스크들을 수행하기 위해 하나 또는 그 초과의 보안 소프트웨어 모듈들(140)을 사용하도록 구성될 수 있다. 비-보안 소프트웨어 모듈은 보안 소프트웨어 모듈의 명령을 참조하는 명령을 포함하도록 구성될 수 있다. 컴퓨팅 디바이스의 프로세서는 보안 소프트웨어 모듈의 명령의 어드레스를 참조하는 이 명령을 실행하도록 구성될 수 있다.
[0034]
명령이 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점(controlled point of entry)과 연관된 명령을 포함하는지에 관한 결정을 내릴 수 있다(스테이지 310). 본원에서 논의된 컴퓨팅 디바이스(100)는, 공격자가 보안 소프트웨어 모듈로의 제어된 엔트리 지점 이외의 명령에서 보안 소프트웨어 모듈로 점프하는 것을 방지하기 위해 보안 소프트웨어 모듈로의 진입 및 그로부터의 탈출을 제어하도록 구성된다. 컴퓨팅 디바이스는, 보안 소프트웨어 모듈의 실행이 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 포함하는 명령에 대한 호출로 시작하는 경우에만 보안 소프트웨어 모듈의 소프트웨어 명령들 및/또는 보안 소프트웨어 모듈과 연관된 데이터의 복호화가 개시될 수 있도록 구성될 수 있다. 예를 들어, 제어된 엔트리 지점은 위에서 논의된 영역 호출 명령(135)과 같은 영역 호출 명령을 포함할 수 있다. 영역 호출 명령(135)은 비-보안 소프트웨어 모듈에 의해 호출될 수 있는 암호화되지 않은 명령일 수 있다. 컴퓨팅 디바이스(100)의 프로세서(105)는 영역 호출 명령(135)에서 특정된 어드레스에 액세스하고, 특정된 어드레스에 로케이팅된 명령을 복호화하고, 영역 호출 명령(135)에 의해 특정된 어드레스의 명령이 영역 구성 명령(145)인지에 관한 결정을 내리도록 구성될 수 있다. 영역 호출 명령(135)에 특정된 어드레스가 유효한 영역 구성 명령(145)을 가리키는 경우, 컴퓨팅 디바이스(100)의 프로세서(105)는 보안 소프트웨어 모듈을 초기화하고 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하도록 구성될 수 있다.
[0035]
보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들은 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 실행될 수 있다(스테이지 315). 컴퓨팅 디바이스의 프로세서는, 비-보안 소프트웨어 모듈이 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 실행한 것에 응답하여, 보안 소프트웨어 모듈과 연관된 하나 또는 그 초과의 프로그램 명령들을 실행하도록 구성될 수 있다. 위에서 논의된 바와 같이, 보안 소프트웨어 모듈(140)의 프로그램 코드(155)(본원에서 영역 코드로서 또한 지칭됨)는 암호화될 수 있고, 프로세서는, 프로그램 코드의 명령이 항상 보호된 채로 유지하도록 보장하기 위해 명령을 실행하기 직전에 각각의 명령을 복호화하도록 구성될 수 있다. 컴퓨팅 디바이스의 프로세서는, 명령이 제어된 엔트리 지점과 연관되지 않는다는 것에 응답하여 보안 소프트웨어 모듈의 실행을 방지하기 위해 하나 또는 그 초과의 단계들을 취하도록 구성될 수 있다. 도 5에 예시된 예시적인 프로세스는 위에서 논의된 제어된 엔트리 지점 이외의 명령에서 보안 소프트웨어 모듈로의 진입을 방지하기 위해 사용될 수 있다. 보안 소프트웨어 모듈(140)은 하나 또는 그 초과의 명령들이 실행되기 이전에 초기화될 수 있다. 예시적인 초기화 프로세스는 도 7에 예시되지만, 본원에서 개시된 기술들은 도 7에 예시된 특정 구현으로 제한되지 않는다.
[0036]
보안 소프트웨어 모듈로부터의 탈출은 비-보안 소프트웨어 모듈에 실행을 리턴하도록 제어될 수 있다(스테이지 320). 컴퓨팅 디바이스(100)는 또한, 보안 소프트웨어 모듈에 의해 활용되는 데이터 및/또는 보안 소프트웨어 모듈을 포함하는 소프트웨어 명령들의 보안성을 손상시킴 없이, 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성된다. 공격자는, 보안 소프트웨어 모듈에 의해 사용되는 데이터를 정리(clean up)하고 그리고/또는 보안 소프트웨어 모듈의 암호화된 명령들의 복호화를 중지시키도록 보안 소프트웨어 모듈에 의해 단계들이 취해질 수 있기 이전에, 예외를 유발시킴으로써 또는 컴퓨팅 디바이스(100)의 프로세서(105)가 보안 소프트웨어 명령들을 탈출하게 할 수 있는 다른 액션을 통해 소프트웨어 명령들 및/또는 보안 소프트웨어 모듈과 연관된 데이터에 관한 보호를 회피하려고 시도할 수 있다. 컴퓨팅 디바이스(100)의 프로세서(105)는 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하기 위한 로직을 포함하도록 구성될 수 있다. 프로세서(105)가 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외가 발생하는 경우, 프로세서는 예외를 포착하고, 보안 소프트웨어 모듈의 현재 상태(또는 멀티-스레드 환경(multi-threaded environment)에서 보안 소프트웨어 모듈을 실행중인 스레드)를 나타내는 콘텍스트 정보를 정리하고, 보안 메모리 위치에 콘텍스트 정보의 암호화된 카피를 저장하고, 보안 소프트웨어 모듈의 명령들 및/또는 데이터의 복호화를 중지시키기 위한 단계들을 취하도록 구성될 수 있다. 이러한 프로세스의 예는 아래에서 상세히 논의되는 도 6에서 예시된다.
[0037]
도 4는 본원에서 개시된 기술들에 따라, 명령이 보안 소프트웨어 모듈로의 제어된 엔트리 지점인지를 결정하기 위한 예시적인 프로세스의 흐름도이다. 도 4에 예시된 프로세스는, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 프로세서(105)에 의해 구현될 수 있다. 도 4에 예시된 프로세스는 도 3에 예시된 프로세스의 스테이지(310)를 적어도 부분적으로 구현하는데 사용될 수 있다.
[0038]
보안 소프트웨어 모듈의 영역 엔트리 콘텍스트 또는 명령은 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 액세스될 수 있다(스테이지 405). 위에서 논의된 바와 같이, 비-보안 소프트웨어 모듈은 위에서 논의된 영역 호출 명령, 예컨대, 영역 호출 명령(135)을 실행하도록 구성될 수 있다. 영역 호출 명령(135)은 보안 소프트웨어 모듈의 명령의 어드레스를 가리키도록 구성될 수 있다. 컴퓨팅 디바이스의 프로세서는, 위에서 예시된 보안 소프트웨어 모듈(140)의 프로그램 코드(155)와 같은 영역 코드의 메모리 어드레스에 액세스하도록 구성될 수 있다. 도 1에 예시된 예시적인 구현에 따라, 영역 호출 명령(135)에서 특정된 어드레스는 영역 구성 명령(145)을 포함하는 보안 소프트웨어 모듈에 대한 제어된 엔트리 지점을 가리킬 수 있다. 도 2에 예시된 예시적인 구현에 따라, 영역 호출 명령에서 특정된 어드레스는 영역 엔트리 콘텍스트(150)를 포함하는 보안 소프트웨어 모듈에 대한 제어된 엔트리 지점을 가리킬 수 있다. 도 1에 예시된 예시적인 구현은 보안 소프트웨어 모듈의 단일 인스턴스가 한 번에 실행될 수 있는 단일-스레드 구현들에 대해 사용될 수 있고, 도 2에 예시된 예시적인 구현은 하나 초과의 스레드가 보안 소프트웨어 모듈(140)의 프로그램 코드(155)를 동시에 실행하게 될 수 있는 구현들에 대해 사용될 수 있다. 각각의 스레드는 그 스레드와 연관된 영역 엔트리 콘텍스트(150)의 어드레스를 계속 추적할 수 있고 그 스레드와 관련된 영역 엔트리 콘텍스트(150)에 액세스하기 위해 영역 호출 명령에서 그 어드레스를 제공할 수 있다. 그러나 도 2에 예시된 구현은 또한 보안 소프트웨어 모듈의 단일-스레드 구현들에 대해 사용할 수 있다.
[0039]
호출 명령에서 특정된 어드레스에서 발견된 명령 또는 영역 엔트리 콘텍스트는 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 복호화될 수 있다(스테이지 410). 컴퓨팅 디바이스(100)의 프로세서(105)는 보안 소프트웨어 모듈과 연관된 암호화 키에 액세스하도록 구성될 수 있다. 암호화 키는 비-보안 소프트웨어 모듈(130)과 같은 비-보안 소프트웨어가 실질적으로 액세스 불가능한 컴퓨팅 디바이스(100)의 메모리에 저장될 수 있다. 프로세서(105)는 보안 소프트웨어 모듈과 연관된 암호화 키를 사용하여, 호출 명령에서 특정된 어드레스에서 발견된 명령 또는 영역 엔트리 콘텍스트를 복호화하도록 구성될 수 있다. 컴퓨팅 디바이스 상의 각각의 보안 소프트웨어 모듈은 암호화 키와 연관될 수 있고, 암호화 키는 보안 소프트웨어 모듈들 각각 마다 상이할 수 있다.
[0040]
명령이, 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지, 아니면 호출 명령에서 특정된 어드레스에서 발견된 영역 엔트리 콘텍스트(150)가 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는지에 관한 결정이 내려질 수 있다(스테이지 415). 호출 명령에서 특정된 어드레스가 명령을 가리키는 경우, 컴퓨팅 디바이스(100)의 프로세서(105)는 스테이지(410)에서 위에서 논의된 바와 같이 명령을 복호화하고 그 후, 명령이 실제 구성 명령을 포함하는지에 관한 결정을 내리도록 구성될 수 있다.
영역 구성 명령(145)은 보안 소프트웨어 모듈에 대한 영역 엔트리 콘텍스트(150)를 가리키도록 구성되고, 실행될 때, 영역 엔트리 콘텍스트(150)의 어드레스를 컴퓨팅 디바이스의 프로세서의 REC 레지스터(120)에 로딩한다. 호출 명령에서 특정된 어드레스가 영역 엔트리 콘텍스트(150)를 가리키는 경우, 컴퓨팅 디바이스의 프로세서는 스테이지(410)에서 위에서 논의된 바와 같이 영역 엔트리 콘텍스트(150)를 복호화하고 그 후, 영역 엔트리 콘텍스트(150)가 진짜인지에 관한 결정을 내리도록 구성될 수 있다. 영역 엔트리 콘텍스트(150)는 인증 태그 또는 영역 구성 정보가 정당한 것으로 컴퓨팅 디바이스의 프로세서가 결정하는데 사용할 수 있는 다른 값을 포함할 수 있다. 컴퓨팅 디바이스(100)의 프로세서(105)는, 보안 프로그램 코드에 의해 프로세싱된 데이터 및/또는 프로그램 코드에 관한 정보를 추출하려는 시도로, 공격자가 인증되지 않은 엔트리 지점에서 보안 소프트웨어 모듈로의 점핑을 입력하는 것을 방지하기 위해, 영역 호출 명령에서 특정된 어드레스가 영역 구성 명령 또는 영역 엔트리 콘텍스트를 가리키지 않는 것에 응답하여 예외를 발생시키거나 그리고/또는 다른 액션들을 취하도록 구성될 수 있다.
[0041]
도 5는, 본원에서 개시된 기술들에 따라, 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 예시적인 프로세스의 흐름도이다. 도 5에 예시된 프로세스는, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 프로세서(105)에 의해 구현될 수 있다. 도 5에 예시된 프로세스는 도 3에 예시된 프로세스의 부분으로서 구현될 수 있다.
[0042]
보안 소프트웨어 모듈에 대한 액세스는, 호출 명령에서 특정된 어드레스에서 발견된 명령이 구성 명령 또는 영역 엔트리 콘텍스트(150)가 아니라는 것에 응답하여 금지될 수 있다(스테이지 505). 컴퓨팅 디바이스(100)의 프로세서(105)는 영역 호출 명령에서 특정된 어드레스가 영역 호출 명령 또는 영역 엔트리 콘텍스트(150)를 가리키지 않는 것에 응답하여, 보안 소프트웨어 모듈에 대한 액세스를 방지하는 하나 또는 그 초과의 액션들을 수행하도록 구성될 수 있다. 프로세서(105)는 프로세서(105)의 레지스터로부터 보안 소프트웨어 모듈과 연관된 복호화 키를 클리어(clear)하도록 구성되어서, 보안 소프트웨어 모듈의 소프트웨어 명령들의 후속 페치(fetch)들이 컴퓨팅 디바이스의 프로세서에 의해 실행 가능하지 않은 암호화된 값을 리턴할 것이다.
[0043]
액션은 호출 명령에서 특정된 어드레스가 구성 명령 또는 실제 엔트리 콘텍스트가 아니라는 것에 응답하여 수행될 수 있다(스테이지 510). 컴퓨팅 디바이스(100)의 프로세서(105)는 또한 호출 명령에서 특정된 어드레스가 구성 명령 또는 실제 엔트리 콘텍스트가 아니라는 것에 응답하여, 하나 또는 그 초과의 다른 액션들을 수행하도록 구성될 수 있다. 프로세서(105)는 보안 소프트웨어 모듈을 호출한 비-보안 소프트웨어의 실행을 정지시킬 수 있는 예외를 발생시키도록 구성될 수 있다. 이러한 접근법은 비-보안 소프트웨어가 보안 소프트웨어 모듈에 의해 활용되는 데이터 및/또는 프로그램 코드에 관한 정보를 추출하려는 시도로 비-보안 소프트웨어서 보안 소프트웨어 모듈을 조사(probing)하는 것을 방지하는데 사용될 수 있다. 프로세서(105)는 일부 구현들에서, 비-보안 소프트웨어 모듈들에 실행을 리턴하도록 구성될 수 있고, 비-보안 소프트웨어 모듈은 보안 소프트웨어 모듈을 실행할 수 없는 무능(inability)에 의해 야기된 에러 조건 또는 에러 조건들을 처리하도록 구성될 수 있다. 또 다른 구현들에서, 프로세서(105)는 예외를 발생시키거나 그렇지 않으면, 컴퓨팅 디바이스의 HLOS에 에러 조건을 표시하도록 구성될 수 있으며, 이는 컴퓨팅 디바이스를 리부팅하는 것, 비-보안 소프트웨어의 실행을 정지시키는 것 그리고/또는 컴퓨팅 디바이스 상에서의 비-보안 소프트웨어의 실행을 방지하는 것을 포함(그러나 이에 제한되지 않음)하는 하나 또는 그 초과의 액션들을 취하도록 구성될 수 있다.
[0044]
도 6은, 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 예시적인 프로세스의 흐름도이다. 도 6에 예시된 프로세스는, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 프로세서(105)에 의해 구현될 수 있다. 도 4에 예시된 프로세스는 도 3에 예시된 프로세스의 스테이지(320)를 적어도 부분적으로 구현하는데 사용될 수 있다.
[0045]
보안 소프트웨어 모듈의 명령들을 실행하는 동안의 예외 처리는 무시될 수 있다(스테이지 605). 컴퓨팅 디바이스의 프로세서는 보안 소프트웨어 모듈의 프로그램 코드를 실행하는 동안 예외 처리를 무시(115)하도록 구성될 수 있다. 공격자는, 보안 소프트웨어 모듈의 데이터 및/또는 프로그램 코드를 노출하려는 시도로, 프로세서로 하여금, 보안 소프트웨어 모듈의 실행을 정지시키게 하도록 보안 소프트웨어 모듈에서 예외를 유발하려고 시도할 수 있다. 모듈이 중간 상태에 있는 동안 보안 소프트웨어 모듈의 실행을 정지시키는 것은 보안 소프트웨어 모듈의 프로그램 코드가, 중간 데이터를 남겨두게 할 수 있으며, 이는 공격자가 보안 소프트웨어 모듈에 대한 구현 세부사항들을 추론하는데 사용될 수 있다. 또한, 실제 콘텍스트 정보 및 보안 소프트웨어 모듈의 암호화된 명령들을 복호화하는데 사용되는 복호화 키가 노출될 수 있다. 프로세서는 보안 소프트웨어 모듈의 실행이 완료되고 비-보안 소프트웨어 모듈의 실행이 재개되거나 또는 보안 소프트웨어 모듈의 종결을 야기하는 에러 또는 예외가 발생한다는 것을 나타내는 리턴 명령이 실행될 때까지 예외 처리를 무시하도록 구성될 수 있다.
[0046]
보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보가 보안 메모리에 저장될 수 있다(스테이지 610). 보안 소프트웨어 모듈의 현재 상태를 나타내는 정보는 암호화되고 영역 엔트리 콘텍스트(150)로서 저장될 수 있다. 영역 엔트리 콘텍스트(150)는 컴퓨팅 디바이스의 프로세서가 다른 프로그램 코드를 실행하는 콘텍스트 스위치 후에 보안 소프트웨어 모듈의 상태를 복원하는데 사용될 수 있는 정보를 포함한다. 보안 소프트웨어 모듈이 멀티-스레딩을 지원하도록 구성되는 경우, 영역 엔트리 콘텍스트(150)는 스레드-특정(thread-specific)일 수 있고, 스레드는 그 스레드와 연관된 영역 엔트리 콘텍스트(150)의 어드레스를 계속 추적하도록 구성될 수 있다. 그렇지 않으면, 영역 엔트리 콘텍스트(150)는 영역 구성 명령에 의해 특정된 메모리 어드레스에 저장될 수 있고, 영역 구성 명령은, 프로세서가 보안 소프트웨어 모듈의 실행을 재개하면 영역 엔트리 콘텍스트에 액세스할 수 있다.
[0047]
보안 소프트웨어 모듈의 명령들의 복호화가 중지될 수 있다(스테이지 615). 컴퓨팅 디바이스의 프로세서는 보안 소프트웨어 모듈로부터의 제어된 탈출의 부분으로서 보안 모듈과 연관된 복호화 명령들을 중지시키도록 구성될 수 있다. 프로세서는 암호화 키 또는 키들이 저장된 메모리 위치로부터 보안 소프트웨어 모듈의 암호화된 명령들을 복호화하는데 사용되는 암호화 키 또는 키들의 카피를 클리어하도록 구성될 수 있다. 암호화 키 또는 키들은 컴퓨팅 디바이스의 프로세서의 레지스터 또는 레지스터들에 저장될 수 있고 프로세서는 레지스터 또는 레지스터들에 저장된 값들을 클리어하도록 구성될 수 있다.
[0048]
도 7은, 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈을 초기화하기 위한 예시적인 프로세스의 흐름도이다. 도 7에 예시된 프로세스는, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 프로세서(105)에 의해 구현될 수 있다. 도 7에 예시된 프로세스는 도 3에 예시된 프로세스의 스테이지(315)를 적어도 부분적으로 구현하는데 사용될 수 있다.
[0049]
보안 소프트웨어 모듈의 인스턴스가 초기화될 수 있다(스테이지 705). 위에서 논의된 바와 같이, 영역 호출 명령은 보안 소프트웨어 모듈(140)로의 제어된 엔트리 지점으로서 역할을 할 수 있으며, 영역 호출 명령은 영역 구성 명령의 어드레스를 가리키도록 구성될 수 있다. 영역 구성 명령은 실행을 위해 보안 소프트웨어 모듈(140)을 준비시키는 하나 또는 그 초과의 소프트웨어 명령들을 실행하도록 구성될 수 있다. 초기화 프로세스는 보안 소프트웨어 모듈(140)의 현재 상태를 결정하는 것을 포함할 수 있다.
[0050]
보안 소프트웨어 모듈(140)은 자유 상태, 실행 상태 또는 일시정지 상태에 있을 수 있다. 실행 상태는 보안 소프트웨어 모듈(140)이 현재 다른 스레드 또는 다른 프로세스에 의해 실행되고 있음을 나타내고, 프로세서(105)는, 보안 소프트웨어 모듈(140)의 프로그램 코드를 실행하고 있는 다른 스레드 또는 프로세스에 의해 보안 소프트웨어 모듈(140)이 자유 상태로 리턴될 때까지 보안 소프트웨어 모듈(140)의 프로그램 코드의 실행을 차단하도록 구성될 수 있다. 일시정지 상태는, 보안 소프트웨어 모듈(140)이 보안 소프트웨어 모듈(140)의 프로그램 코드를 현재 실행하고 있지 않은 다른 스레드 또는 프로세스에 의해 현재 예약되었지만, 또 다른 스레드 또는 프로세스가 보안 소프트웨어 모듈(140)의 프로그램 코드를 실행하는 프로세스에 있었고 일부 다른 태스크를 완료한 후에 보안 소프트웨어 모듈(140)의 프로그램 코드의 실행을 계속하기 위해 리턴할 것임을 나타낸다. 일시정지 상태는 보안 소프트웨어 모듈(140) 외부에 있는 비보호 프로그램 코드의 실행을 허용하기 위해 사용될 수 있다. 예를 들어, 보안 소프트웨어 모듈(140)의 프로그램 코드의 명령은 하나 또는 그 초과의 컴퓨테이션들을 수행하기 위해 비보호 공유 라이브러리에 의존할 수 있다. 보안 소프트웨어 모듈(140)의 명령은, 실행될 때, 보안 소프트웨어 모듈(140) 외부의 명령으로 점프하기 전에, 영역 엔트리 콘텍스트(150)에 보안 소프트웨어 모듈(140)의 현재 상태를 저장하고, 보안 소프트웨어 모듈(140)이 일시정지 상태에 있다는 보안 소프트웨어 모듈(140)의 표시자를 세팅하게 하는 프로그램 명령을 프로세서(105)가 호출하게 하도록 구성될 수 있다. 보안 소프트웨어 모듈(140) 외부의 명령 또는 명령들의 실행이 완료되면, 프로세서(105)는 보안 소프트웨어 모듈(140)로 실행을 리턴할 수 있다. 프로세서(105)는 영역 호출 명령의 어드레스를 프로그램 스택 상으로 푸시하도록 구성될 수 있고 영역 호출 명령은 영역 엔트리 콘텍스트(150)를 로딩하고 실행을 일시정지하기 전의 보안 소프트웨어 모듈(140)의 상태를 복원하도록 영역 구성 명령을 실행할 수 있다. 보안 소프트웨어 모듈(140)의 상태는 실행 상태로 리턴될 수 있다.
[0051]
보안 소프트웨어 모듈(140)이 현재 자유 상태에 있는 경우, 보안 소프트웨어 모듈(140)은 현재 다른 스레드 또는 프로세스에 의해 실행되지 않고 초기화될 수 있고 프로세스는 스테이지(705)로 지속될 수 있다. 그렇지 않으면, 프로세서(105)는 보안 소프트웨어 모듈(140)의 상태가 자유 상태로 리턴될 때까지 스테이지(705)에서 차단하도록 구성될 수 있다.
[0052]
도 2에 예시된 것과 같은 보안 소프트웨어 모듈(140)의 멀티-스레드 구현에서, 보안 소프트웨어 모듈(140)은 다른 스레드 또는 프로세스로부터 현재 스레드 또는 프로세스로의 콘텍스트 스위치로 인해 일시정지 상태에 있을 수 있거나 실행 상태에 있을 수 있다. 이러한 상황에서, 현재의 스레드 또는 프로세스는 그 자신의 영역 엔트리 콘텍스트(150)와 연관될 것이고, 보안 소프트웨어 모듈(140)은 보안 소프트웨어 모듈(140)의 단일-스레드 버전에 관하여 위에서 논의된 바와 같이 자유 상태에 있었던 것처럼 보안 소프트웨어 모듈(140)을 실행하기 시작할 수 있다.
[0053]
보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보가 액세스될 수 있다(스테이지 710). 프로세서(105)는 보안 소프트웨어 모듈(140)과 연관된, 보안 소프트웨어 모듈(140)에 저장된 영역 엔트리 콘텍스트(150) 정보에 액세스하도록 구성될 수 있다. 영역 엔트리 콘텍스트(150)는 암호화되고, 인증 태그와 같은 인증 정보를 포함할 수 있으며, 이는 인증 태그가 생성되된 이래로 영역 엔트리 콘텍스트(150)가 변경되었는지를 결정하는데 사용될 수 있다. 프로세서(105)는 보안 소프트웨어 모듈과 연관된 암호화 키를 사용하여 영역 엔트리 콘텍스트(150)에 대한 인증 태그를 재생성하도록 구성될 수 있다. 영역 엔트리 콘텍스트(150)와 연관된 인증 태그 및 재생성된 인증 태그가 매칭하지 않는 경우, 프로세서(105)는 보안 소프트웨어 모듈(140)의 실행을 정지시키는 예외를 발생시키도록 구성될 수 있다. 공격이 보안 소프트웨어 모듈(140) 상에서 수행되는 경우, 영역 엔트리 콘텍스트(150)는 손상되거나 위조되었을 수 있고, 보안 소프트웨어 모듈(140)의 실행은 정지되어야 한다. 프로세서(105)는 보안 소프트웨어 모듈(140)의 프로그램 코드(155)를 실행하는 동안 예외 처리를 무시하도록 구성될 수 있으며, 보안 소프트웨어 모듈(140)의 실행을 정지하기 전에 정리하기 위해 도 6과 관련하여 위에서 논의된 바와 같이 다양한 액션들을 수행할 수 있다.
[0054]
보안 소프트웨어 모듈(140)의 단일 스레드 구현에서, 영역 구성 명령은, 영역 엔트리 콘텍스트(150)의 어드레스를 가리키고 영역 엔트리 콘텍스트(150)의 어드레스를 프로세서(105)의 REC 레지스터(120)에 로딩하도록 구성될 수 있어서, 프로세서(105)는 예컨대, 리턴 명령 또는 예외의 발생 시에 필요에 따라 영역 엔트리 콘텍스트(150)에 액세스할 수 있다. 대안적으로, 멀티-스레드 구현들을 포함하는 다른 구현들에서, 영역 엔트리 콘텍스트(150)의 어드레스는 영역 호출 명령의 파라미터로서 제공될 수 있다. 스레드 또는 프로세스는 그 스레드 또는 프로세스와 연관된 영역 엔트리 콘텍스트(150)의 어드레스를 저장하는 것을 담당할 수 있다. 그러한 구현에서, 영역 호출 명령 및 영역 구성 명령의 기능성은 영역 호출 명령으로 병합될 수 있다. 대안적으로, 영역 호출 명령은 영역 구성 명령을 호출하고 스레드 또는 프로세스와 연관된 영역 엔트리 콘텍스트(150)의 어드레스를 영역 구성 명령에 전달할 수 있고, 영역 구성 명령은 영역 호출 명령과 함께 제공되는 어드레스에 의해 참조되는 영역 엔트리 콘텍스트(150)를 사용하여 보안 소프트웨어 모듈(140)을 초기화하는 것으로 진행할 수 있다.
[0055]
스레드 또는 프로세스가 다른 스레드 또는 프로세스와 연관된 콘텍스트 정보에 액세스하려고 시도하지 않았음을 보장하기 위해, 영역 엔트리 콘텍스트(150)는 소유자 인증 태그를 포함할 수 있다. 소유자 인증 태그는 실제 호출 명령을 행하는 (making) 스레드 또는 프로세스를 고유하게 식별하는 스레드 또는 프로세스 식별자를 사용하여 생성되는 인증 태그일 수 있다. 인증 태그는 다양한 기술들을 사용하여 그리고 보안 소프트웨어 모듈(140)과 연관된 암호화 키를 사용하여 생성될 수 있다. 영역 호출 명령은, 파라미터로서 영역 엔트리 콘텍스트(150)의 어드레스 및 스레드 또는 프로세스 식별자를 수용하도록 구성될 수 있다. 프로세서(105)는 제공된 어드레스에서 메모리에 액세스할 수 있고 영역 엔트리 콘텍스트(150)가 그 메모리 위치에 존재하는지를 결정할 수 있다. 그 메모리 어드레스에 저장된 데이터가 영역 엔트리 콘텍스트가 아닌 경우, 프로세서(105)는 보안 소프트웨어 모듈(140)의 실행을 정지시키는 예외를 발생(throw)시키도록 구성될 수 있다. 영역 엔트리 콘텍스트(150)가 특정된 어드레스에 존재하는 경우, 프로세서(105)는 영역 엔트리 콘텍스트(150)로부터 소유자 인증 태그를 추출하도록 구성될 수 있다. 프로세서(105)는 또한 스레드 또는 프로세스 식별자에 기초하여 소유자 인증 태그를 결정할 수 있고 그것을, 영역 엔트리 콘텍스트(150)로부터 추출된 소유자 인증 태그와 비교할 수 있다. 결정된 소유자 인증 태그가 영역 엔트리 콘텍스트(150)로부터 추출된 소유자 인증 태그와 매칭하지 않는 경우, 프로세서는 보안 소프트웨어 모듈(140)의 실행을 정지시키는 예외를 발생시키도록 구성될 수 있다.
[0056]
영역 엔트리 콘텍스트(150)는 보안 소프트웨어 모듈(140)과 관련된 암호화 키를 사용하여 프로세서(105)에 의해 복호화될 수 있다. 프로세서(105)는 영역 엔트리 콘텍스트(150)에 포함된 데이터를 사용하여 프로세서(105)의 하나 또는 그 초과의 레지스터들을 채울 수 있고 보안 소프트웨어 모듈(140)의 콘텍스트를 복원하기 위해 이 데이터를 사용하여 다른 액션들을 수행할 수 있다. 보안 소프트웨어 모듈(140)이 이전에 일시정지 상태에 있었던 경우, 영역 엔트리 콘텍스트(150)는, 보안 소프트웨어 모듈(140)에 대한 상태 정보, 예컨대, 중간 컴퓨테이션 결과들 및/또는 보안 소프트웨어 모듈(140)이 일시정지 상태에 진입하기 전에 생성했거나 사용했던 다른 데이터를 포함할 수 있다. 보안 소프트웨어 모듈(140)이 이전에 자유 상태에 있었던 경우, 영역 엔트리 콘텍스트(150)는 보안 소프트웨어 모듈(140)의 하나 또는 그 초과의 컴포넌트들을 초기화하는데 사용되는 데이터를 포함할 수 있다.
[0057]
영역 엔트리 콘텍스트(150)가 액세스되고 복호화되면, 프로세서(105)는 보안 소프트웨어 모듈(140)의 명령으로 점프하고 보안 소프트웨어 모듈(140)이 실행될 수 있다. 프로세서(105)는 현재 실행되고 있는 명령들만이 공격자에게 취약할 수 있는 복호화된 상태에 있음을 보장하도록 명령의 실행 직전에 각각의 명령을 복호화하도록 구성될 수 있다. 프로그램 코드의 실행이 완료되면, 영역 리턴 명령이 프로세서(105)에 의해 실행되어, 보안 소프트웨어 모듈(140)과 연관된 데이터의 정리를 야기할 수 있고, 영역 엔트리 콘텍스트(150)는 보안 소프트웨어 모듈(140)에 저장되기 전에 업데이트 및 암호화될 수 있고, 보안 소프트웨어 모듈(140)의 명령들을 복호화하는데 사용된 암호화 키는 레지스터 또는 프로세서(105)의 다른 메모리 위치로부터 클리어될 수 있다.
[0058]
도 8은, 본원에서 개시된 기술들에 따라, 보안 소프트웨어 모듈의 명령들을 실행하기 위한 예시적인 프로세스의 흐름도이다. 도 3에 예시된 프로세스는, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 프로세서(105)에 의해 구현될 수 있다. 도 8에 예시된 프로세스는 도 3에 예시된 프로세스의 스테이지(315)를 적어도 부분적으로 구현하는데 사용될 수 있다.
[0059]
보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들 각각은 하나 또는 그 초과의 명령들을 실행하기 직전에 복호화될 수 있다(스테이지 805). 보안 소프트웨어 모듈(140)의 프로그램 코드(155)의 프로그램 명령들 각각은 암호화된 형태로 저장되고 명령들 각각이 실행을 위해 필요할 때만 복호화될 수 있다. 컴퓨팅 디바이스의 프로세서(105)는 보안 소프트웨어 모듈(140)과 연관된 암호화 키에 액세스하도록 구성될 수 있다. 암호화 키 또는 키들은 보안 소프트웨어 모듈(140)에 저장될 수 있고 컴퓨팅 디바이스(100)의 프로세서의 레지스터들에 복사될 수 있다. 프로세서(105)는 명령들이 프로세서(105)에 의해 실행되기 직전에 각각의 명령을 복호화하도록 구성될 수 있다. 필요할 때만 명령들을 복호화하는 것은 보안 소프트웨어 모듈(140)을 포함하는 프로그램 코드의 보안성을 유지하는데 도움을 줄 수 있다. 암호화 키들은 또한 컴퓨팅 디바이스(100)의 신뢰된 실행 환경에서 구현된 키 저장 메커니즘을 사용하여 저장될 수 있다. 키 저장 메커니즘은 그 안에 저장된 암호화 키를 사용하여 암호화 연산(cryptographic operation)들을 수행하도록 구성될 수 있고 키 저장 메커니즘으로부터의 키들의 엑스포트(export)를 방지하도록 구성될 수 있다. 키 저장 메커니즘은 암호화 키가 사용되기 위해 인증을 요구하도록 구성될 수 있다. 영역 구성 명령 또는 영역 호출 명령은 보안 소프트웨어 모듈(140)의 인스턴스가 초기화되고 인증 정보가 프로세서(105)의 레지스터에 저장될 수 있을 때 보안 소프트웨어 모듈(140)로부터 그러한 인증 정보를 로딩하도록 구성될 수 있다. 프로세서(105)는 암호화 연산 또는 연산들이 수행될 데이터와 함께 키 저장 메커니즘에 인증 정보를 제공할 수 있고, 연산 또는 연산들의 결과들은 키 저장 메커니즘에 의해 프로세서(105)에 제공될 수 있다.
[0060]
도 9는 도 1 및 도 2에 예시되는 컴퓨팅 디바이스(100)를 구현하기 위해 사용될 수 있는 예시적인 컴퓨팅 디바이스의 기능 블록도이다. 도 9는, 도 1에 도시된 컴퓨팅 디바이스(100)와 유사하거나 동일할 수 있는 예시적인 컴퓨팅 디바이스(900)의 다양한 컴포넌트들을 예시하는 개략도이다. 간략화를 위해, 도 9의 개략적인 박스들에 예시된 다양한 특징들/컴포넌트들/기능들은, 이들 다양한 특징들/컴포넌트들/기능들이 함께 동작 가능하게 커플링된다는 것을 표현하기 위해 공통 버스를 사용하여 함께 연결된다. 다른 연결들, 메커니즘들, 특징들, 기능들 등이 휴대용 무선 디바이스를 동작 가능하게 커플링 및 구성하기 위해 필요에 따라 제공 및 적응될 수 있다. 또한, 도 9의 예에 예시된 특징들 또는 기능들 중 하나 또는 그 초과가 추가로 세분될 수 있거나, 또는 도 9에 예시된 특징들 또는 기능들 중 2개 또는 그 초과가 결합될 수 있다. 부가적으로, 도 9에 예시된 특징들 또는 기능들 중 하나 또는 그 초과가 배제될 수 있다.
[0061]
도시된 바와 같이, 컴퓨팅 디바이스(900)는, 하나 또는 그 초과의 안테나들(902)에 연결될 수 있는 하나 또는 그 초과의 로컬 영역 네트워크 트랜시버들(906)을 포함할 수 있다. 하나 또는 그 초과의 로컬 영역 네트워크 트랜시버들(906)은, WLAN 액세스 포인트들 중 하나 또는 그 초과와 통신하고 그리고/또는 그들로의/로부터의 신호들을 검출하기에 그리고/또는 네트워크 내의 다른 무선 디바이스들과 직접적으로 통신하기에 적합한 디바이스들, 회로들, 하드웨어, 및/또는 소프트웨어를 포함한다. 일부 실시예들에서, 로컬 영역 네트워크 트랜시버(들)(906)는 하나 또는 그 초과의 무선 액세스 포인트들과 통신하기에 적합한 WiFi(802.11x) 통신 트랜시버를 포함할 수 있으며; 그러나, 일부 실시예들에서, 로컬 영역 네트워크 트랜시버(들)(906)는 다른 유형들의 로컬 영역 네트워크들, 개인 영역 네트워크들(예를 들어, Bluetooth® 무선 기술 네트워크들) 등과 통신하도록 구성될 수 있다. 부가적으로, 임의의 다른 유형의 무선 네트워킹 기술들, 예를 들어, Ultra Wide Band, ZigBee, 무선 USB 등이 사용될 수 있다.
[0062]
일부 구현들에서, 컴퓨팅 디바이스(900)는 또한, 하나 또는 그 초과의 안테나들(902)에 연결될 수 있는 하나 또는 그 초과의 광역 네트워크 트랜시버(들)(904)를 포함할 수 있다. 광역 네트워크 트랜시버들(904)은, 예를 들어, WWAN 액세스 포인트들 중 하나 또는 그 초과와 통신하고 그리고/또는 그들로부터의 신호들을 검출하기에 그리고/또는 네트워크 내의 다른 무선 디바이스들과 직접적으로 통신하기에 적합한 디바이스들, 회로들, 하드웨어, 및/또는 소프트웨어를 포함할 수 있다. 일부 구현들에서, 광역 네트워크 트랜시버(들)(904)는 무선 기지국들의 CDMA 네트워크와 통신하기에 적합한 CDMA 통신 시스템을 포함할 수 있다. 일부 구현들에서, 무선 통신 시스템은, 예를 들어, TDMA, GSM, WCDMA, LTE 등과 같은 다른 유형들의 셀룰러 텔레포니(telephony) 네트워크들을 포함할 수 있다. 부가적으로, 예를 들어, WiMax(802.16) 등을 포함하는 임의의 다른 유형의 무선 네트워킹 기술들이 사용될 수 있다.
[0063]
일부 실시예들에서, SPS 수신기(또한, GNSS(global navigation satellite system) 수신기로서 지칭됨)(908)가 또한, 컴퓨팅 디바이스(900)에 포함될 수 있다. SPS 수신기(908)는 위성 신호들을 수신하기 위해 하나 또는 그 초과의 안테나들(902)에 연결될 수 있다. SPS 수신기(908)는 SPS 신호들을 수신 및 프로세싱하기 위한 임의의 적합한 하드웨어 및/또는 소프트웨어를 포함할 수 있다. SPS 수신기(908)는, 다른 시스템들로부터 적절하게 정보를 요청할 수 있고, 임의의 적합한 SPS 절차에 의해 획득된 측정들을 부분적으로 사용하여 컴퓨팅 디바이스(900)의 포지션을 결정하기 위해 필요한 컴퓨테이션들을 수행할 수 있다.
[0064]
도 9에 추가로 예시된 바와 같이, 예시적인 컴퓨팅 디바이스(900)는 제어기/프로세서(910)에 커플링된 하나 또는 그 초과의 센서들(912)을 포함한다. 예를 들어, 센서들(912)은, (광역 네트워크 트랜시버(들)(904), 로컬 영역 네트워크 트랜시버(들)(906), 및/또는 SPS 수신기(908)에 의해 수신된 신호들로부터 도출되는 모션 데이터와는 독립적인) 상대적인 움직임 및/또는 배향 정보를 제공하기 위한 모션 센서들을 포함할 수 있다. 제한이 아닌 예로서, 모션 센서들은 가속도계, 자이로스코프, 및 지자기(자력계) 센서(예를 들어, 컴파스)를 포함할 수 있으며, 이들 중 임의의 것은 MEMS(micro-electro-mechanical-system)에 기초하거나 일부 다른 기술에 기초하여 구현될 수 있다. 하나 또는 그 초과의 센서들(912)은 추가로, 온도계(예를 들어, 서미스터), 오디오 센서(예를 들어, 마이크로폰) 및/또는 다른 센서들을 포함할 수 있다. 일부 실시예들에서, 하나 또는 그 초과의 센서들(912)은 또한, 디스플레이 또는 스크린과 같은 사용자 인터페이스 디바이스 상에서 디스플레이될 수 있고 주변 레벨의 조명 및/또는 컬러들과 UV의 존재 및 레벨들에 관련된 정보 및/또는 적외선 조명을 결정하기 위해 추가로 사용될 수 있는 스틸 또는 이동 이미지들(예를 들어, 비디오 시퀀스)을 생성할 수 있는 카메라(예를 들어, CCD(charge-couple device)-유형 카메라, CMOS-기반 이미지 센서 등)를 포함할 수 있다.
[0065]
프로세서(들)(또한, 제어기로 지칭됨)(910)는 로컬 영역 네트워크 트랜시버(들)(906), 광역 네트워크 트랜시버(들)(904), SPS 수신기(908) 및 하나 또는 그 초과의 센서들(912)에 연결될 수 있다. 프로세서는, 프로세싱 기능들뿐만 아니라 다른 계산 및 제어 기능성을 제공하는 하나 또는 그 초과의 마이크로프로세서들, 마이크로제어기들, 및/또는 디지털 신호 프로세서들을 포함할 수 있다. 프로세서(910)는, 모바일 디바이스 내에서 프로그래밍된 기능성을 실행하기 위한 데이터 및 소프트웨어 명령들을 저장하기 위한 저장 매체들(예를 들어, 메모리)(914)에 커플링될 수 있다. 메모리(914)는 (예를 들어, 동일한 IC 패키지 내의) 프로세서(910)에 내장(on-board)될 수 있고, 그리고/또는 메모리는 프로세서에 대한 외부 메모리이고 데이터 버스를 통해 기능적으로 커플링될 수 있다.
[0066]
다수의 소프트웨어 모듈들 및 데이터 테이블들은 메모리(914)에 상주할 수 있으며, 원격 디바이스들/노드들 둘 모두의 통신들을 관리하고 포지셔닝 결정 기능성을 수행하고 그리고/또는 디바이스 제어 기능성을 수행하기 위하여 프로세서(910)에 의해 활용될 수 있다. 도 9에 예시된 바와 같이, 일부 실시예들에서, 메모리(914)는 하나 또는 그 초과의 애플리케이션들을 구현할 수 있는 애플리케이션 모듈(918)을 포함할 수 있다. 모듈들 및/또는 데이터 구조들의 기능성은 컴퓨팅 디바이스(900)의 구현에 의존하여 상이한 방식들로 결합, 분리, 및/또는 구조화될 수 있다는 것이 주의될 것이다. 애플리케이션 모듈(918)은 컴퓨팅 디바이스(900)의 보안 엘리먼트(990) 또는 신뢰된 실행 환경(980)에 의해 실행될 수 있는 하나 또는 그 초과의 신뢰된 애플리케이션들을 포함할 수 있다.
[0067]
애플리케이션 모듈(918)은, 컴퓨팅 디바이스(900)의 하나 또는 그 초과의 다른 모듈들(도시되지 않음)로부터 데이터를 요청할 수 있는, 컴퓨팅 디바이스(900)의 프로세서(910) 상에서 실행되는 프로세스 또는 스레드일 수 있다. 애플리케이션들은 통상적으로 소프트웨어 아키텍처들의 상위 계층 내에서 실행되고 컴퓨팅 디바이스(900)의 풍부한 실행 환경(rich execution environment)에서 구현될 수 있고 내부 네비게이션 애플리케이션들, 쇼핑 애플리케이션들, 위치 인식 서비스 애플리케이션들 등을 포함할 수 있다.
[0068]
프로세서(910)는 신뢰된 실행 환경(980)을 포함할 수 있고 그리고/또는 컴퓨팅 디바이스(900)는 보안 엘리먼트(990)를 포함할 수 있다. 신뢰된 실행 환경(980) 및/또는 보안 엘리먼트(990)는 위에서 예시된 보안 소프트웨어 모듈을 실행하기 위한 프로세스들을 구현하기 위한 보안 프로세싱 환경을 구현하는데 사용될 수 있다. 신뢰된 실행 환경(980)은 운영 체제 및/또는 애플리케이션들(예컨대, 애플리케이션 모듈(918)의 애플리케이션들)이 실행될 수 있는 풍부한 실행 환경으로부터 분리된 환경에서 민감한 데이터를 프로세싱 및 저장하는데 사용될 수 있는 프로세서(910)의 보안 영역으로서 구현될 수 있다. 신뢰된 실행 환경(980)은 그 안에 저장된 민감한 데이터의 기밀성, 무결성 및 보호를 시행함으로써 민감한 데이터에 대한 종단간 보안성(end-to-end security)을 제공하는 신뢰된 애플리케이션을 실행하도록 구성될 수 있다. 신뢰된 실행 환경(980)은 암호화 키들, 리플레이 방지(anti-replay) 카운터 데이터, 및/또는 다른 민감한 데이터를 저장하는데 사용될 수 있다. 또한, 신뢰된 실행 환경(980)은 본원에서 논의되고 도 1 내지 도 8에서 예시되는 다양한 프로세스들을 구현하는데 사용될 수 있다. 신뢰된 애플리케이션 환경은 데이터 및/또는 실행 가능 프로그램 명령을 메모리(914)에 저장하도록 구성될 수 있고, 메모리(914)에 저장된 데이터는 암호화되고 인증되어 비-신뢰 프로세스에 의해 데이터가 활용되거나 수정될 수 없음을 보장할 수 있다.
[0069]
컴퓨팅 디바이스(900)는 보안 엘리먼트(990)(본원에서 신뢰된 컴포넌트로서 또한 지칭됨)를 포함할 수 있다. 컴퓨팅 디바이스(900)는 신뢰된 실행 환경(980)에 더하여 또는 그 대신에, 보안 엘리먼트(990)를 포함할 수 있다. 보안 엘리먼트(990)는 보안 애플리케이션들 및 이러한 애플리케이션들과 연관된 기밀 데이터를 실행하는 데 사용될 수 있는 자율적(autonomous) 및 위조-저항(tamper-resistant) 하드웨어를 포함할 수 있다. 보안 엘리먼트(990)는 암호화 키들, 리플레이 방지 카운터 데이터, 및/또는 다른 민감한 데이터를 저장하는데 사용될 수 있다. 보안 엘리먼트(990)는 NFC(Near Field Communication) 태그, SIM(Subscriber Identity Module) 카드, 또는 데이터를 안전하게 저장하는데 사용될 수 있는 다른 유형의 하드웨어 디바이스를 포함할 수 있다. 데이터를 안전하게 저장하고 그리고/또는 애플리케이션들에 대한 보안 실행 환경을 제공하는데 사용될 수 있는 보안 엘리먼트(990)는 영구적 또는 반-영구적인 방식으로 컴퓨팅 디바이스(900)의 하드웨어에 통합될 수 있거나, 일부 구현들에서, 컴퓨팅 디바이스(900)의 제거 가능한 컴포넌트일 수 있다.
[0070]
컴퓨팅 디바이스(900)는 추가로, 컴퓨팅 디바이스(900)와의 사용자 상호작용을 허용하는 마이크로폰/스피커(952), 키패드(954), 및 디스플레이(956)와 같은 적합한 인터페이스 시스템들을 제공하는 사용자 인터페이스(950)를 포함할 수 있다. (오디오 센서와 동일하거나 또는 상이할 수 있는) 마이크로폰/스피커(952)는 (예를 들어, 광역 네트워크 트랜시버(들)(904) 및/또는 로컬 영역 네트워크 트랜시버(들)(906)를 사용하는) 음성 통신 서비스들을 위해 제공된다. 키패드(954)는 사용자 입력을 위한 적합한 버튼들을 포함할 수 있다. 디스플레이(956)는, 예를 들어, 백릿(backlit) LCD 디스플레이와 같은 적합한 디스플레이를 포함할 수 있으며, 부가적인 사용자 입력 모드들을 위한 터치 스크린 디스플레이를 추가로 포함할 수 있다.
[0071]
컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로서 또한 알려짐)은, 프로그래밍 가능 프로세서에 대한 머신 명령들을 포함하며, 고-레벨의 절차적인 및/또는 오브젝트-지향적인 프로그래밍 언어 및/또는 어셈블리/머신 언어로 구현될 수 있다. 본원에서 사용된 바와 같이, “머신-판독 가능 매체”라는 용어는, 머신-판독 가능 신호로서 머신 명령들을 수신하는 비-일시적인 머신-판독 가능 매체를 포함하여, 머신 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하기 위해 사용되는 임의의 비-일시적인 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광학 디스크들, 메모리, PLD(Programmable Logic Device)들)를 지칭한다.
[0072]
메모리는 컴퓨팅-기반 디바이스 내부에 또는 그 디바이스 외부에 구현될 수 있다. 본원에서 사용된 바와 같이, “메모리”라는 용어는 임의의 유형의 장기, 단기, 휘발성, 비휘발성, 또는 다른 메모리를 지칭하며, 임의의 특정한 유형의 메모리 또는 메모리들의 수, 또는 메모리가 저장되는 매체들의 유형으로 제한되지 않는다. 소프트웨어와 함께 하드웨어 또는 펌웨어에 의해 부분적으로 구현되면, 기능들은 컴퓨터-판독 가능 매체 상의 하나 또는 그 초과의 명령들 또는 코드로서 저장될 수 있다. 예들은, 데이터 구조로 인코딩된 컴퓨터-판독 가능 매체들, 및 컴퓨터 프로그램으로 인코딩된 컴퓨터-판독 가능 매체들을 포함한다. 컴퓨터-판독 가능 매체들은 물리적 컴퓨터 저장 매체들을 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터-판독 가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장, 반도체 저장, 또는 다른 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있으며; 본원에서 사용된 바와 같이, 디스크(disk) 및 디스크(disc)는, 콤팩트 디스크(disc)(CD), 레이저 디스크(disc), 광학 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk) 및 블루-레이 디스크(disc)를 포함하며, 여기서, 디스크(disk)들은 일반적으로 데이터를 자기적으로 재생하는 반면에, 디스크(disc)들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위의 것들의 결합들이 또한 컴퓨터-판독 가능 매체들의 범위 내에 포함되어야 한다.
[0073]
달리 정의되지 않으면, 본원에서 사용된 모든 기술적 및 과학적 용어들은 일반적으로 또는 전통적으로 이해되는 것과 동일한 의미를 갖는다. 본원에서 사용된 바와 같이, 관사들은 관사의 문법적 오브젝트 중 하나 또는 하나 초과(즉, 적어도 하나)를 지칭한다. 예로서, “엘리먼트”는 하나의 엘리먼트 또는 하나 초과의 엘리먼트를 의미한다. 양, 시간 지속기간 등과 같은 측정 가능한 값을 지칭할 때 본원에서 사용되는 바와 같은 "약” 및/또는 "대략"은 특정된 값으로부터의 ±20% 또는 ±10%, ±5% 또는 +0.1%의 변동들을 포괄하는데, 이는 이러한 변동들이 본원에서 설명된 시스템들, 디바이스들, 회로들, 방법들, 및 다른 구현들의 상황에 적절하기 때문이다. 양, 시간 지속기간, (주파수와 같은) 물리적 속성 등과 같은 측정 가능한 값을 지칭할 때 본원에서 사용된 바와 같은 "실질적으로"는 또한, 특정된 값으로부터의 ±20% 또는 ±10%, ±5% 또는 +0.1%의 변동들을 포괄하는데, 이는 이러한 변동들이 본원에서 설명된 시스템들, 디바이스들, 회로들, 방법들, 및 다른 구현들의 상황에 적절하기 때문이다.
[0074]
청구항들을 포함하여 본원에서 사용된 바와 같이, “중 적어도 하나” 또는 “중 하나 또는 그 초과”에 의해 시작되는 (preface) 아이템들의 리스트에서 사용되는 바와 같은 “또는”은, 예를 들어, “A, B, 또는 C 중 적어도 하나”의 리스트가 A 또는 B 또는 C 또는 AB 또는 AC 또는 BC 또는 ABC(즉, A 및 B 및 C), 또는 하나 초과의 특성과의 결합들(예를 들어, AA, AAB, ABBC 등)을 의미하도록 하는 선언적인(disjunctive) 리스트를 표시한다. 또한, 달리 언급되지 않으면, 본원에서 사용된 바와 같이, 기능 또는 동작이 아이템 또는 조건”에 기초한다”는 스테이트먼트(statement)는, 기능 또는 동작이 언급된 아이템 또는 조건에 기초하고, 언급된 아이템 또는 조건에 부가로 하나 또는 그 초과의 아이템들 및/또는 조건들에 기초할 수 있다는 것을 의미한다.
[0075]
본원에서 사용된 바와 같이, 모바일 디바이스 또는 스테이션(MS)은, 셀룰러 또는 다른 무선 통신 디바이스, 스마트폰, 태블릿, PCS(personal communication system) 디바이스, PND(personal navigation device), PIM(Personal Information Manager), PDA(Personal Digital Assistant), 랩톱 또는 무선 통신 및/또는 네비게이션 포지셔닝 신호들과 같은 네비게이션 신호들을 수신할 수 있는 다른 적합한 모바일 디바이스와 같은 디바이스를 지칭한다. "모바일 스테이션"(또는 "모바일 디바이스" 또는 "무선 디바이스")라는 용어는 또한, 위성 신호 수신, 보조 데이터 수신, 및/또는 포지션-관련 프로세싱이 디바이스에서 또는 PND(personal navigation device)에서 발생하는지와 무관하게, 예컨대, 단거리 무선, 적외선, 와이어라인 연결, 또는 다른 연결에 의해 PND와 통신하는 디바이스들을 포함하는 것으로 의도된다. 또한, “모바일 스테이션”은, 위성 신호 수신, 보조 데이터 수신, 및/또는 포지션-관련 프로세싱이 네트워크와 연관된 디바이스, 서버, 또는 다른 디바이스 또는 노드에서 발생하는지와 무관하게, 예컨대, 인터넷, Wi-Fi, 또는 다른 네트워크를 통해 서버와의 통신이 가능하고 하나 또는 그 초과의 유형들의 노드들과 통신할 수 있는 무선 통신 디바이스들, 컴퓨터들, 랩톱들, 태블릿 디바이스들 등을 포함하는 모든 디바이스들을 포함하도록 의도된다. 또한, 상기의 임의의 동작 가능한 결합이 “모바일 스테이션”으로 고려된다. 모바일 디바이스는 또한, 모바일 단말, 단말, UE(user equipment), 디바이스, SET(Secure User Plane Location Enabled Terminal), 타겟 디바이스, 타겟, 또는 일부 다른 이름으로서 지칭될 수 있다.
[0076]
본원에서 제시된 기술들, 프로세스들, 및/또는 구현들 중 일부가 하나 또는 그 초과의 표준들의 전부 또는 일부를 따를 수 있지만, 일부 실시예들에서, 그러한 기술들, 프로세스들, 및/또는 구현들은 그러한 하나 또는 그 초과의 표준들의 일부 또는 전부를 따르지 않을 수 있다.
Claims (30)
- 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법으로서,
비-보안 소프트웨어 모듈로부터, 보안 소프트웨어 모듈 특유의 암호화 키를 사용하여 암호화되는 암호화된 프로그램 코드를 포함하는 상기 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하는 단계;
상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점(controlled point of entry)과 연관된 명령을 포함하는지를 결정하는 단계;
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계; 및
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 상기 보안 소프트웨어 모듈로부터의 탈출(exit)을 제어하는 단계를 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제1항에 있어서,
상기 명령은 호출 명령을 포함하고, 상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하는 단계는,
상기 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 상기 보안 소프트웨어 모듈의 명령에 액세스하는 단계;
상기 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 상기 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하는 단계; 및
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제2항에 있어서,
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 구성 명령이 아니라는 것에 응답하여 상기 보안 소프트웨어 모듈에 대한 액세스를 금지하는 단계; 및
상기 호출 명령에서 특정된 어드레스가 상기 구성 명령이 아니라는 것에 대한 응답으로 액션(action)을 수행하는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제1항에 있어서,
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계는,
상기 보안 소프트웨어 모듈의 인스턴스(instance)를 초기화하는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제4항에 있어서,
상기 보안 소프트웨어 모듈의 인스턴스를 초기화하는 단계는,
상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보에 액세스하는 단계를 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제4항에 있어서,
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하는 단계는,
보안 메모리에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하는 단계; 및
상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제4항에 있어서,
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하는 단계는,
상기 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하는 단계;
보안 메모리에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하는 단계; 및
예외 발생에 응답하여, 상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제1항에 있어서,
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하는 단계는,
상기 하나 또는 그 초과의 명령들을 실행하기 직전에 실행되는 보안 소프트웨어 모듈의 인스턴스와 연관되는 보안 소프트웨어 모듈의 상기 하나 또는 그 초과의 명령들 각각을 복호화하는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 제8항에 있어서,
상기 하나 또는 그 초과의 명령들을 실행하기 직전에 실행되는 보안 소프트웨어 모듈의 인스턴스와 연관되는 보안 소프트웨어 모듈의 상기 하나 또는 그 초과의 명령들 각각을 복호화하는 단계는,
상기 보안 소프트웨어 모듈과 연관된 암호화 키를 사용하여 상기 하나 또는 그 초과의 명령들 각각을 복호화하는 단계를 더 포함하는,
컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 방법. - 장치로서,
비-보안 소프트웨어 모듈로부터, 보안 소프트웨어 모듈 특유의 암호화 키를 사용하여 암호화되는 암호화된 프로그램 코드를 포함하는 상기 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하기 위한 수단;
상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하기 위한 수단;
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하기 위한 수단; 및
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 상기 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 수단을 포함하는,
장치. - 제10항에 있어서,
상기 명령은 호출 명령을 포함하고, 상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하기 위한 수단은,
상기 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 상기 보안 소프트웨어 모듈의 명령에 액세스하기 위한 수단;
상기 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 상기 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하기 위한 수단; 및
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하하기 위한 수단을 더 포함하는,
장치. - 제11항에 있어서,
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 구성 명령이 아니라는 것에 응답하여 상기 보안 소프트웨어 모듈에 대한 액세스를 금지하기 위한 수단; 및
상기 호출 명령에서 특정된 어드레스가 상기 구성 명령이 아니라는 것에 대한 응답으로 액션을 수행하기 위한 수단을 더 포함하는,
장치. - 제10항에 있어서,
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하기 위한 수단은,
상기 보안 소프트웨어 모듈의 인스턴스를 초기화하기 위한 수단을 더 포함하는,
장치. - 제13항에 있어서,
상기 보안 소프트웨어 모듈의 인스턴스를 초기화하기 위한 수단은,
상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 액세스하기 위한 수단을 포함하는,
장치. - 제13항에 있어서,
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 수단은,
보안 메모리에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하기 위한 수단; 및
상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키기 위한 수단을 더 포함하는,
장치. - 제13항에 있어서,
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하기 위한 수단은,
상기 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하기 위한 수단;
보안 메모리에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하기 위한 수단; 및
예외 발생에 응답하여, 상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키기 위한 수단을 더 포함하는,
장치. - 장치로서,
메모리; 및
상기 메모리에 커플링되는 프로세서를 포함하며, 상기 프로세서는,
비-보안 소프트웨어 모듈로부터, 보안 소프트웨어 모듈 특유의 암호화 키를 사용하여 암호화되는 암호화된 프로그램 코드를 포함하는 상기 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하고;
상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하고;
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하고; 그리고
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 상기 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성되는,
장치. - 제17항에 있어서,
상기 명령은 호출 명령을 포함하고, 상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하도록 구성되는 프로세서는 추가로,
상기 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 상기 보안 소프트웨어 모듈의 명령에 액세스하고;
상기 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 상기 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하고; 그리고
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하도록 구성되는,
장치. - 제18항에 있어서,
상기 프로세서는 추가로,
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 구성 명령이 아니라는 것에 응답하여 상기 보안 소프트웨어 모듈에 대한 액세스를 금지하고; 그리고
상기 호출 명령에서 특정된 어드레스가 상기 구성 명령이 아니라는 것에 대한 응답으로 액션을 수행하도록 구성되는,
장치. - 제17항에 있어서,
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하도록 구성되는 프로세서는 추가로,
상기 보안 소프트웨어 모듈의 인스턴스를 초기화하도록 구성되는,
장치. - 제20항에 있어서,
상기 보안 소프트웨어 모듈의 인스턴스를 초기화하도록 구성되는 프로세서는 추가로,
상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 액세스하도록 구성되는,
장치. - 제20항에 있어서,
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성되는 프로세서는 추가로,
상기 메모리의 보안 부분에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고
상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키도록 구성되는,
장치. - 제20항에 있어서,
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 보안 소프트웨어 모듈로부터의 탈출을 제어하도록 구성되는 프로세서는 추가로,
상기 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하고;
상기 메모리의 보안 부분에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고
예외 발생에 응답하여, 상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키도록 구성되는,
장치. - 컴퓨팅 디바이스에서 소프트웨어를 보호하기 위한 컴퓨터-판독 가능 명령들이 저장되어 있는 비-일시적인 컴퓨터-판독 가능 저장 매체로서,
상기 컴퓨터-판독 가능 명령들은, 상기 컴퓨팅 디바이스로 하여금,
비-보안 소프트웨어 모듈로부터, 보안 소프트웨어 모듈 특유의 암호화 키를 사용하여 암호화되는 암호화된 프로그램 코드를 포함하는 상기 보안 소프트웨어 모듈의 명령을 실행하라는 요청을 수신하고;
상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하고;
상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하고; 그리고
상기 비-보안 소프트웨어 모듈로 실행을 리턴하기 위해 상기 보안 소프트웨어 모듈로부터의 탈출을 제어하게 하도록 구성되는 명령들을 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체. - 제24항에 있어서,
상기 명령은 호출 명령을 포함하고, 상기 컴퓨팅 디바이스로 하여금, 상기 명령이 상기 보안 소프트웨어 모듈 외부에서 액세스 가능한 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함하는지를 결정하게 하도록 구성되는 명령들은, 상기 컴퓨팅 디바이스로 하여금,
상기 비-보안 소프트웨어 모듈에 의해 실행되는 호출 명령에서 특정된 어드레스에서 상기 보안 소프트웨어 모듈의 명령에 액세스하고;
상기 보안 소프트웨어 모듈 특유의 복호화 키를 사용하여 상기 호출 명령에서 특정된 어드레스에서 발견된 명령을 복호화하고; 그리고
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점을 나타내는 보안 소프트웨어 모듈과 연관된 구성 명령인지를 결정하게 하도록 구성되는 명령들을 더 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체. - 제25항에 있어서,
상기 컴퓨팅 디바이스로 하여금,
상기 호출 명령에서 특정된 어드레스에서 발견된 명령이 상기 구성 명령이 아니라는 것에 응답하여 상기 보안 소프트웨어 모듈에 대한 액세스를 금지하고; 그리고
상기 호출 명령에서 특정된 어드레스가 상기 구성 명령이 아니라는 것에 대한 응답으로 액션을 수행하게 하도록 구성되는 명령들을 더 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체. - 제24항에 있어서,
상기 컴퓨팅 디바이스로 하여금, 상기 명령이 상기 보안 소프트웨어 모듈로의 제어된 엔트리 지점과 연관된 명령을 포함한다는 것에 응답하여 상기 보안 소프트웨어 모듈의 하나 또는 그 초과의 명령들을 실행하게 하도록 구성되는 명령들은 추가로, 상기 컴퓨팅 디바이스로 하여금,
상기 보안 소프트웨어 모듈의 인스턴스를 초기화하게 하도록 구성되는 명령들을 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체. - 제27항에 있어서,
상기 컴퓨팅 디바이스로 하여금, 상기 보안 소프트웨어 모듈의 인스턴스를 초기화하게 하도록 구성되는 명령들은, 상기 컴퓨팅 디바이스로 하여금,
상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 액세스하게 하도록 구성되는 명령들을 더 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체. - 제27항에 있어서,
상기 컴퓨팅 디바이스로 하여금, 상기 비-보안 소프트웨어 모듈로 실행을 리턴하도록 상기 보안 소프트웨어 모듈로부터의 탈츨을 제어하게 하도록 구성되는 명령들은, 상기 컴퓨팅 디바이스로 하여금,
보안 메모리에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고
상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키게 하도록 구성되는 명령들을 더 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체. - 제27항에 있어서,
상기 컴퓨팅 디바이스로 하여금, 상기 비-보안 소프트웨어 모듈로 실행을 리턴하도록 상기 보안 소프트웨어 모듈로부터의 탈츨을 제어하게 하도록 구성되는 명령들은, 상기 컴퓨팅 디바이스로 하여금,
상기 보안 소프트웨어 모듈의 명령들을 실행하는 동안 예외 처리를 무시하고;
보안 메모리에, 상기 보안 소프트웨어 모듈의 인스턴스의 상태를 나타내는 암호화된 콘텍스트 정보를 저장하고; 그리고
예외 발생에 응답하여, 상기 보안 소프트웨어 모듈의 명령들의 복호화를 중지시키게 하도록 구성되는 명령들을 더 포함하는,
비-일시적인 컴퓨터-판독 가능 저장 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562216986P | 2015-09-10 | 2015-09-10 | |
US62/216,986 | 2015-09-10 | ||
US15/232,723 | 2016-08-09 | ||
US15/232,723 US10235303B2 (en) | 2015-09-10 | 2016-08-09 | Secure entry and exit for software modules protected by controlled encryption key management |
PCT/US2016/049383 WO2017044345A1 (en) | 2015-09-10 | 2016-08-30 | Secure entry and exit for software modules protected by controlled encryption key management |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180052695A true KR20180052695A (ko) | 2018-05-18 |
Family
ID=58238110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187010029A KR20180052695A (ko) | 2015-09-10 | 2016-08-30 | 제어된 암호화 키 관리에 의해 보호되는 소프트웨어 모듈들에 대한 보안 진입 및 탈출 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10235303B2 (ko) |
EP (1) | EP3347847B1 (ko) |
JP (1) | JP2018532183A (ko) |
KR (1) | KR20180052695A (ko) |
CN (1) | CN107924433B (ko) |
BR (1) | BR112018004653A2 (ko) |
WO (1) | WO2017044345A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132233B2 (en) * | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11397834B2 (en) * | 2020-07-31 | 2022-07-26 | EMC IP Holding Company LLC | Methods and systems for data backup and recovery on power failure |
US20220206951A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Method and apparatus for run-time memory isolation across different execution realms |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7139915B2 (en) | 1998-10-26 | 2006-11-21 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
US6986052B1 (en) * | 2000-06-30 | 2006-01-10 | Intel Corporation | Method and apparatus for secure execution using a secure memory partition |
US20020174344A1 (en) | 2001-05-18 | 2002-11-21 | Imprivata, Inc. | System and method for authentication using biometrics |
US7024555B2 (en) * | 2001-11-01 | 2006-04-04 | Intel Corporation | Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment |
US7917753B2 (en) | 2005-05-16 | 2011-03-29 | Texas Instruments Incorporated | Transferring control between programs of different security levels |
ATE499658T1 (de) * | 2005-08-03 | 2011-03-15 | St Ericsson Sa | Sicheres endgerät, routine und verfahren zum schützen eines geheimen schlüssels |
US8533859B2 (en) | 2009-04-13 | 2013-09-10 | Aventyn, Inc. | System and method for software protection and secure software distribution |
US20120079281A1 (en) | 2010-06-28 | 2012-03-29 | Lionstone Capital Corporation | Systems and methods for diversification of encryption algorithms and obfuscation symbols, symbol spaces and/or schemas |
FR2970099B1 (fr) * | 2010-12-29 | 2013-01-11 | Viaccess Sa | Procede de chargement d'un code d'au moins un module logiciel |
WO2013171362A1 (en) * | 2012-05-16 | 2013-11-21 | Nokia Corporation | Method in a processor, an apparatus and a computer program product |
EP2963576B1 (en) | 2014-07-04 | 2022-03-23 | Vodafone GmbH | Secure installation of software in a device for accessing protected content |
-
2016
- 2016-08-09 US US15/232,723 patent/US10235303B2/en active Active
- 2016-08-30 KR KR1020187010029A patent/KR20180052695A/ko unknown
- 2016-08-30 BR BR112018004653A patent/BR112018004653A2/pt not_active IP Right Cessation
- 2016-08-30 CN CN201680047562.9A patent/CN107924433B/zh active Active
- 2016-08-30 WO PCT/US2016/049383 patent/WO2017044345A1/en active Application Filing
- 2016-08-30 JP JP2018512393A patent/JP2018532183A/ja active Pending
- 2016-08-30 EP EP16763425.2A patent/EP3347847B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018532183A (ja) | 2018-11-01 |
WO2017044345A1 (en) | 2017-03-16 |
EP3347847B1 (en) | 2019-11-06 |
CN107924433B (zh) | 2021-09-07 |
BR112018004653A2 (pt) | 2018-09-25 |
US10235303B2 (en) | 2019-03-19 |
EP3347847A1 (en) | 2018-07-18 |
CN107924433A (zh) | 2018-04-17 |
US20170075820A1 (en) | 2017-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539561B2 (en) | Systems and methods to control device endpoint behavior using personae and policies | |
KR102217501B1 (ko) | 신뢰 실행 환경을 갖는 모바일 디바이스 | |
CN107533609B (zh) | 用于对系统中的多个可信执行环境进行控制的系统、设备和方法 | |
KR102546601B1 (ko) | 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치 | |
US9787681B2 (en) | Systems and methods for enforcing access control policies on privileged accesses for mobile devices | |
CN106104557B (zh) | 用于从绑定到设备上的应用的主密钥获取秘密的系统与方法 | |
US10474454B2 (en) | System and method for updating a trusted application (TA) on a device | |
US20130312058A1 (en) | Systems and methods for enhancing mobile security via aspect oriented programming | |
US20140337918A1 (en) | Context based switching to a secure operating system environment | |
KR20160055725A (ko) | 가상 머신의 내부에서 실행하는 모바일 애플리케이션에 의해 네이티브 코드를 로딩, 링크, 및 실행하는 보안 정책 | |
KR20150059564A (ko) | 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치 | |
US10298586B2 (en) | Using a file whitelist | |
KR101355697B1 (ko) | 디지털 컨텐츠 보호 방식의 보안 프로비전 | |
JP2018523208A (ja) | オブジェクト指向コンテキストにおける推移問題を軽減するためのデータ監視のための技法 | |
Cappos et al. | Blursense: Dynamic fine-grained access control for smartphone privacy | |
US20240127250A1 (en) | Resource transfer methods, apparatuses, and devices | |
KR20230064623A (ko) | 안전한 개인용 메모리가 있는 모바일 장치 | |
US11520859B2 (en) | Display of protected content using trusted execution environment | |
US10235303B2 (en) | Secure entry and exit for software modules protected by controlled encryption key management | |
US20170185791A1 (en) | Application program interface (API) monitoring bypass | |
KR20160039234A (ko) | 영역 지향 프로그래밍을 통한 모바일 보안 향상 시스템 및 방법 | |
Omar et al. | Android application security | |
US10938857B2 (en) | Management of a distributed universally secure execution environment | |
Yan et al. | SplitDroid: isolated execution of sensitive components for mobile applications | |
Muttik | Securing mobile devices: Present and future |