KR20180093038A - 신뢰 실행 환경을 갖는 모바일 디바이스 - Google Patents

신뢰 실행 환경을 갖는 모바일 디바이스 Download PDF

Info

Publication number
KR20180093038A
KR20180093038A KR1020187019734A KR20187019734A KR20180093038A KR 20180093038 A KR20180093038 A KR 20180093038A KR 1020187019734 A KR1020187019734 A KR 1020187019734A KR 20187019734 A KR20187019734 A KR 20187019734A KR 20180093038 A KR20180093038 A KR 20180093038A
Authority
KR
South Korea
Prior art keywords
application
trusted
execution
mobile device
mobile
Prior art date
Application number
KR1020187019734A
Other languages
English (en)
Other versions
KR102217501B1 (ko
Inventor
민 흘레잉
압둘 아지즈 에스엠 소히두자만 에스케이
스리람 라마찬드란
베로니크 차페이그네트
파트리체 안젤리니
Original Assignee
제말토 에스에이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 제말토 에스에이 filed Critical 제말토 에스에이
Publication of KR20180093038A publication Critical patent/KR20180093038A/ko
Application granted granted Critical
Publication of KR102217501B1 publication Critical patent/KR102217501B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting 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 in cryptographic circuits
    • G06F21/725Protecting 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 in cryptographic circuits operating on a secure reference time value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • H04W12/041Key generation or derivation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/069Authentication using certificates or pre-shared keys
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Power Engineering (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Automatic Cycles, And Cycles In General (AREA)
  • Telephone Function (AREA)
  • Debugging And Monitoring (AREA)

Abstract

모바일 디바이스에서 실행을 위해 모바일 앱을 보안하기 위한 메커니즘. 메커니즘은 비-신뢰 애플리케이션 제공자로부터의 모바일 앱의 비-신뢰 부분을 모바일 디바이스로 로딩하는 단계, 신뢰 실행 환경과 연관된 키를 생성하도록 키 공급 서버를 동작시키는 단계, 신뢰 실행 환경과 연관된 키를 모바일 디바이스 및 키 디렉토리 서버로 전송하여 모바일 디바이스를 인증하는 단계, 모바일 디바이스를 인증할 때, 신뢰 애플리케이션을 포함하는 모바일 앱의 신뢰 부분을 모바일 디바이스로 전송하는 단계, 및 모바일 앱의 신뢰 부분을 모바일 디바이스에 설치하여 신뢰 실행 환경을 제공하는 단계를 포함한다. 다른 시스템 및 방법이 개시된다.

Description

신뢰 실행 환경을 갖는 모바일 디바이스
본 발명은 일반적으로 모바일 디바이스에 관한 것으로서, 보다 구체적으로는, 신뢰 실행 환경을 갖는 모바일 디바이스를 제공하고, 또한 그러한 신뢰 애플리케이션의 라이프 사이클에 걸쳐서 모바일 디바이스에서 로딩 및 실행되는 신뢰 애플리케이션의 보안 관리에 관한 것이다.
모바일 통신 디바이스의 간략한 역사에서, 디바이스는 이동 전화 통신에 주로 또는 심지어 독점적으로 전용되어 엄청나게 강력한 다목적 디바이스로 빠르게 진화하여 왔다. 최근의 기술 발전으로 인해 지불, 운송 발권, 로열티 프로그램, 은행 계좌 액세스, 건물이나 사무실로의 물리적 액세스 통제 등과 같은 상이한 애플리케이션을 위해, 예를 들어 이동 전화와 같은 모바일 디바이스를 사용하는 것이 현재 가능하다. 근거리 통신은 모바일 디바이스에서 이러한 새로운 기능을 가능하게 하는 한가지 실시가능한 기술이다.
보안은 이러한 많은 기능에 대한 중요한 기준이다; 예를 들어, 모바일 트랜잭션이 안전하고 계좌 번호, 트랜잭션 패턴, 개인 데이터, 또는 트랜잭션을 안전하게 하는데 사용되는 암호 키와 같은 정보를 훔치려는 공격자가 쉽게 가로챌 수 없다는 확신을 가질 수 있게 하는 것이 종종 성공적인 상업용 프로그램에 필수 요소이다.
모바일 디바이스의 메인 프로세서의 보안 영역인 신뢰 실행 환경(Trusted Execution Environments: TEE)은 특정 모바일 디바이스에서 실행되는 애플리케이션의 향상된 보안을 위한 하나의 메커니즘을 제공한다. 신뢰 실행 환경은 하드웨어로 구현된다. TEE는 신뢰 애플리케이션을 위한 분리된 실행 환경을 제공하므로, 보다 높은 수준의 보안을 제공할 수 있다.
GlobalPlatformTM 은 신뢰 환경에서 민감한 데이터가 저장, 처리 및 보호되도록 보장하는 메인 프로세서의 보안 영역을 포함하는 표준화된 신뢰 실행 환경(TEE)을 제공하는 것을 포함하여, 보안 칩 기술에 대한 보안 컴퓨팅용 규격을 공개한다. GlobalPlatform은 애플리케이션 프로그램(앱으로도 알려짐)이 GlobalPlatform 신뢰 실행 환경의 보안 프로세서 영역에 의해 제공되는 보안 기능에 액세스할 수 있게 하는 표준 애플리케이션 프로그램 인터페이스(API)를 제공한다.
상업용 TEE 솔루션의 일 예로는 영국의 캠브리지에 있는 ARM 주식회사의 ARM TrustZone 기술이 있다(ARM, TrustZone, http://www.arm.com/products/processors/technoloqies/trustzone/). TrustZone 기술은 프로세서 외부의 보안 환경을 예를 들어 메모리 및 암호 블록과 같은 주변장치로 확장하면서 프로세서 내에 긴밀히 통합되어, 예를 들어 신뢰 애플리케이션과 같은 보안 인식 애플리케이션에 대한 시스템 전반의 보안을 가능하게 한다.
안타깝게도, 많은 모바일 디바이스에는 신뢰 실행 환경을 하드웨어로 구현하는 기술이 탑재되어 있지 않다. 그러나, 이러한 보다 제한된 디바이스에 대해 신뢰 실행 환경의 방식으로 보안 컴퓨팅 기능을 제공할 필요성이 줄어들지 않는다. 그렇지 않을 경우, 디바이스에서 실행되는 애플리케이션은 디바이스 사용자의 비밀 정보를 노출하거나 사용자 또는 서비스 제공자에게 경제적 손실을 유발할 수 있는 맬웨어(malware) 및 광범위한 가능한 공격에 취약하다.
전술한 바에 따라, 프로세서의 하드웨어로 구현되는 보안 영역을 구비하지 않는 디바이스에 보안 신뢰 실행 환경을 제공하기 위한 유연하고 편리하지만 강력한 메커니즘을 제공하는 개선된 방법이 여전히 필요하다는 것이 명백해질 것이다. 이상적으로 이러한 솔루션은, 프로세서 기반 신뢰 실행 환경에서 실행될 뿐만 아니라 그러한 하드웨어를 필요로 하지 않는 대안적인 메커니즘에서도 실행되는 앱이 개발될 수 있도록, 예를 들어 GlobalPlatform에 의해 제공되는 바와 같은 신뢰 실행 환경 솔루션의 하드웨어 구현과 호환된다.
전술한 바에 따라, 하드웨어 TEE의 특정 하드웨어 피처가 없는 모바일 디바이스에서 하드웨어 구현 TEE에 적합한 보안 강화를 제공하기 위한 개선된 방법이 여전히 필요하다는 것이 명백해질 것이다.
본 발명의 실시형태의 양태들은 일반적으로 모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법에 관한 것으로서,
모바일 디바이스는:
비-신뢰 애플리케이션 제공자로부터 모바일 애플리케이션의 비-신뢰 부분을 모바일 디바이스로 로딩하도록 구성되고;
신뢰 애플리케이션 제공자로부터 모바일 애플리케이션의 신뢰 부분을 모바일 디바이스로 로딩하도록 구성되며;
모바일 애플리케이션의 신뢰 부분을 모바일 디바이스에 설치하여 신뢰 실행 환경을 제공하도록 구성되는 것을 포함한다.
본 발명의 일 실시형태에 따라, 모바일 애플리케이션의 신뢰 부분을 모바일 디바이스로 로딩하는 것은 이하의 단계를 포함한다:
모바일 애플리케이션은 모바일 애플리케이션의 식별자 및 모바일 디바이스의 디바이스 지문으로부터 신뢰 실행 환경 ID TEE ID를 생성하고; 상기 생성된 신뢰 실행 환경 ID TEE ID가 모바일 애플리케이션에 의해 키 공급 서버로 전송되는 단계;
신뢰 실행 환경 ID TEE ID와 연관될 키를 생성하도록 키 공급 서버를 작동하고, 신뢰 실행 환경 ID TEE ID와 생성된 키를 키 디렉터로 전송하며, 생성된 키를 모바일 디바이스로 전송하는 단계;
신뢰 애플리케이션 제공자는 모바일 디바이스에 의해 전송된 생성된 키로부터 컴퓨팅된 TEE ID의 해시 및 TEE ID를 수신하고 키 디렉터 서버를 통해 모바일 디바이스를 인증하도록 구성되는 단계;
모바일 디바이스의 성공적인 인증 시에, 신뢰 애플리케이션을 포함하는 모바일 애플리케이션의 신뢰 부분을 모바일 디바이스로 전송하도록 신뢰 애플리케이션 제공자를 작동하는 단계; 및
모바일 디바이스는 모바일 애플리케이션의 신뢰 부분을 모바일 디바이스에 설치하여 신뢰 실행 환경을 제공하도록 구성되는 단계.
본 발명의 일 실시형태에 따라, 모바일 애플리케이션의 비-신뢰 부분은,
모바일 디바이스의 풍부한 실행 환경에서 실행가능한 클라이언트 애플리케이션; 및
신뢰 애플리케이션이 구현될 수 있는 명령 세트에 대한 신뢰 애플리케이션 인터프리터(interpreter)를 포함한다.
본 발명의 일 실시형태에 따라, 신뢰 애플리케이션은 신뢰 애플리케이션 인터프리터에 의해 해석가능한 명령 세트로 구현된다.
본 발명의 일 실시형태에 따라, 모바일 애플리케이션과 연관된 키는 화이트-박스 키 "WBC 키" 및 초기 핀 암호화 키 "IPEK"를 포함하고, 방법은 모바일 애플리케이션과 연관된 키를 모바일 디바이스로 전송하기 전에 WBC 키를 사용하여 IPEK를 암호화하는 단계를 더 포함하며, IPEK의 암호화된 버전이 모바일 디바이스로 전송된다.
본 발명의 일 실시형태에 따라, 모바일 애플리케이션의 신뢰 부분은 신뢰 서버 제공자에 의해 모바일 디바이스로 전송되기 전에 초기 핀 암호화 키 "IPEC"로부터 생성된 세션 키로 암호화된다.
본 발명의 일 실시형태에 따라, 모바일 애플리케이션의 비-신뢰 부분은 신뢰 실행 환경의 하드웨어 구현과 유사한 기능을 구현하는 애플리케이션 프로그램 인터페이스를 포함한다.
본 발명의 일 실시형태에 따라, 모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법은 이하의 단계를 포함한다:
신뢰 애플리케이션을 신뢰 보안 스토리지와 연관시키는 단계; 및
모바일 디바이스의 보안 스토리지에 초기 랜덤 시크릿(random secret)을 저장하는 단계; 및
신뢰 애플리케이션의 보안 스토리지의 각각의 데이터 액세스에 대해, 초기 랜덤 시크릿 "IRS", 디바이스 지문, 및 신뢰 애플리케이션을 위한 고유 ID "UUID"를 사용하여, 신뢰 애플리케이션과 연관된 신뢰 스토리지에 저장된 데이터를 암호화하기 위한 보안 스토리지 데이터 키 "TA_SK"를 생성하는 단계.
본 발명의 일 실시형태에 따라, 모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법은 이하의 단계를 포함한다:
신뢰 애플리케이션의 실행 중에:
신뢰 애플리케이션의 해당 특정 실행과 연관된 일회용 런타임 키를 결정하는 단계;
신뢰 애플리케이션의 해당 특정 실행 중에 신뢰 애플리케이션에 의해 사용되는 런타임 메모리에 수량(quantity)을 저장할 때, 일회용 런타임 키를 사용하여 수량을 마스킹하는 단계; 및
신뢰 애플리케이션의 해당 특정 실행 중에 신뢰 애플리케이션에 의해 사용되는 런타임 메모리로부터 수량을 리트리브할 때, 일회용 런타임 키를 사용하여 수량을 마스킹 해제하는 단계.
본 발명의 일 실시형태에 따라, 모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법은 이하의 단계를 포함한다:
실행 또는 해석을 위한 컴파일된 형식을 갖는 신뢰 애플리케이션의 제 1 실행 시에, 신뢰 애플리케이션의 컴파일된 형식에 기초하는 제 1 값을 컴퓨팅하고 신뢰 애플리케이션의 컴파일된 형식에 기초하는 해당 값을 저장하는 단계;
신뢰 애플리케이션의 후속 실행 시에, 신뢰 애플리케이션의 컴파일된 형식에 기초하는 동일한 계산을 수행하여 신뢰 애플리케이션의 컴파일된 형식에 기초하는 제 2 값을 생성하고, 제 1 및 제 2 값을 비교하며, 제 1 및 제 2 값이 동일하지 않을 경우 교정 동작을 수행하는 단계.
본 발명의 일 실시형태에 따라, 모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법은,
소프트웨어 신뢰 실행 환경의 제 1 실행 시에 모바일 애플리케이션의 특정 명령에 대한 예상 실행 시간을 결정하고;
상기 특정 명령에 대한 예상 실행 시간을 저장하며;
소프트웨어 신뢰 실행 환경의 후속적인 실행 중에:
명령 카운트를 추적하고;
주기적으로 시스템 클럭을 페치(fetch)하며;
현재 명령 카운트로부터 예상 실행 시간을 컴퓨팅하고;
현재 시스템 클럭을 예상 실행 시간과 비교하며; 그리고
비교가 허용불가한 편차를 나타내는 경우, 교정 동작을 수행함으로써,
잠재적인 시간-시프트 공격을 방어하는 단계를 더 포함한다.
본 발명의 일 실시형태에 따라, 특정 명령은 애플리케이션 프로그램 인터페이스의 함수에 대한 호출이다.
본 발명의 일 실시형태에 따르면, 모바일 디바이스에서 실행하기 위한 모바일 애플리케이션의 보안 방법은 이하의 단계를 포함한다:
각각이 짧은 루프 또는 긴 루프로서 실행될 수 있는 복수의 루프를 갖는 더미(dummy) 코드 섹션으로 신뢰 애플리케이션의 임계 부분을 보정하는 단계;
더미 코드 섹션에서 그리고 신뢰 애플리케이션의 상기 임계 부분에 인접하는 복수의 검사 포인트를 할당하는 단계;
신뢰 애플리케이션의 실행 시에 더미 코드를 통해 실행 경로를 결정하는 단계로서, 실행 경로는 정의된 수의 짧은 루프 및 긴 루프를 실행하고;
각각의 검사 포인트에 대해 예상 도달 시간을 결정하는 단계; 및
검사 포인트의 도달 시에, 실제 도달 시간을 예상 도달 시간과 비교하고 실제 도달 시간과 예상 도달 시간 사이의 편차가 미리 결정된 임계값을 초과하는 경우 교정 동작을 수행하는 단계.
도 1은 모바일 애플리케이션이 앱 스토어로부터 모바일 컴퓨팅 디바이스로 로딩되어 서비스 제공자(SP)로부터의 서비스에 액세스하는데 사용될 수 있는 환경을 도시하는 블록도이다.
도 2는 도 1의 네트워크의 보다 세부사항을 도시하는 상위-레벨 개략도이다.
도 3은 도 1 및 도 2의 모바일 디바이스의 하드웨어 컴포넌트를 도시하는 블록도이다.
도 4는 공격으로부터 보호되어야 하는 데이터를 포함하는 도 1, 도 2 및 도 3의 모바일 디바이스의 메모리에 저장될 수 있는 예시적인 소프트웨어 모듈 및 데이터를 도시하는 블록도이다.
도 5는 도 1, 도 2, 도 3 및 도 4의 모바일 디바이스로 모바일 앱을 로딩하는 단계 및 일 실시형태에 따라 그러한 모바일 앱의 보안 양태를 초기화하는 단계를 도시하는 흐름도이다.
도 6은 일 실시형태에 따른 모바일 애플리케이션에 대한 신뢰 실행 환경을 갖는 모바일 디바이스의 일 실시형태를 도시하는 블록도이다.
도 7은 신뢰 애플리케이션과 신뢰 스토리지 영역 사이의 관계를 도시하는 블록도이다.
도 8은 모바일 애플리케이션이 로딩되는 모바일 디바이스와 도 6의 신뢰 애플리케이션의 공급에 사용되는 키 다변화(key diversification)를 수행하기 위한 신뢰 서비스 관리자 허브 사이의 연결을 도시하는 연결도이다.
도 9는 신뢰 애플리케이션의 보안 공급을 가능하게 하는 키 다변화를 도시하는 타이밍 순서도이다.
도 10은 도 9에 도시된 프로세스로부터의 화이트-박스 암호화 키를 도 6의 신뢰 애플리케이션의 스토리지 보안을 위한 신뢰점(root-of-trust)으로 사용하는 것을 도시하는 데이터 흐름도이다.
도 11은 런타임 메모리 덤프로부터의 데이터의 악의적인 추출을 방지하기 위한 런타임 메모리의 부분들의 암호화를 도시하는 타이밍 순서도이다.
도 12는 신뢰 애플리케이션의 조작을 검출하기 위한 일 실시형태의 메커니즘을 도시하는 흐름도이다.
도 13은 클럭 변경 공격으로부터 보호하기 위해 클럭 무결성 검사가 사용되는 일 실시형태를 위한 메커니즘을 도시하는 흐름도이다.
도 14는 모바일 앱의 실행 예를 도시하는 실행 경로 그래프로서, 예를 들어 디버거의 사용에 의해, 가능한 조작을 결정하기 위해 알려진 지속시간의 선택된 루프의 실행 시간이 검사된다.
도 15는 런타임 중에 실행 경로의 랜덤화를 도시하는 흐름도로서, 가능한 조작을 결정하기 위해 랜덤화된 실행 지속시간이 검사된다.
이하의 상세한 설명에서, 예시로서, 첨부한 도면을 참조하여 본 발명이 실시될 수 있는 구체적 실시형태를 나타내다. 이러한 실시형태는 당업자가 발명을 실시할 수 있도록 충분히 상세하게 설명된다. 발명의 다양한 실시형태는 상이하지만, 반드시 상호 배타적인 것은 아니라는 점을 이해해야 한다. 예를 들어, 일 실시형태와 관련하여 본원에서 설명되는 특정의 특징, 구조 또는 특성은 다른 실시형태 내에서 구현될 수 있다. 또한, 각각의 개시된 실시형태 내의 개별 요소의 위치 또는 배열은 본 발명의 사상과 범주를 벗어나지 않고 변형될 수 있음을 이해해야 한다. 따라서, 이하의 상세한 설명은 제한적인 의미로 해석되어서는 안되며, 본 발명의 범주는 첨부된 청구범위에 의해 정의되고, 적절하게 해석된다. 도면에서, 동일한 도면부호는 여러 도면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
본 발명의 일 실시형태에서, 신뢰 실행 환경을 지원하기 위한 하드웨어 메커니즘을 구비하지 않는 모바일 디바이스에서 신뢰 실행 환경(TEE)을 이용 가능하게 하는 메커니즘을 제공하는 기술이 제시된다. 제시된 메커니즘은 표준 하드웨어 지원 신뢰 실행 환경의 애플리케이션 프로그래머 인터페이스에 대해 개발되는 동시에 최종-사용자와 서비스 제공자 둘다에 의해 신뢰될 수 있는 신뢰 애플리케이션을 개발할 수 있게 하여, 여기에 설명된 메커니즘을 위해 개발된 애플리케이션을 그러한 하드웨어 기반 신뢰 실행 환경에 용이하게 이식할 수 있게 한다.
도 1은 모바일 디바이스(103)를 하나 이상의 원격 서비스 제공자(SP) 서버(113)에 연결하는 네트워크(111)의 개략도이다. SP는 임의의 무수한 가능 서비스를 제공할 수 있다. 전형적인 예는 온라인 뱅킹, 온라인 상거래, 온라인 교육, 온라인 투표 등을 포함한다. 본 문서의 독자가 인식하는 바와 같이, 이러한 예에서 트랜잭션의 보안은 매우 중요하다.
사용자(101)는 모바일 디바이스(103)를 작동하여 네트워크를 통해 SP 서버(113) 중 하나와 상호 작용한다. 그러한 상호작용은 모바일 디바이스(103)에 다운로드된 특수용 애플리케이션 프로그램을 이용하여 유리하게 수행된다. 앱으로도 알려진 그러한 특수용 애플리케이션 프로그램은 사용자(101)가 서버 애플리케이션과 상호 작용하는 다양한 피처 환경을 사용자에게 제공한다. 사용자는 앱 스토어(115)에서 앱을 획득할 수 있다. 앱 스토어(115)의 예는 미국 캘리포니아주 쿠퍼티노 소재의 Apple Inc.에서 제공하는 iPhone 및 iPad와 같은 IOS 기기용 앱을 위한 앱 스토어, 미국 캘리포니아주 마운틴 뷰 소재의 Google Inc.에서 제공하는 구글 플레이 앱 스토어, 미국 워싱턴주 레드몬드 소재의 Microsoft Corp.에서 제공하는 윈도우즈 스토어를 포함한다.
본 명세서의 독자가 이해하는 바와 같이, 많은 온라인 트랜잭션에 있어서 보안은 무엇보다도 중요하다. 따라서, 앱 자체가 신뢰될 수 있어야 하고 앱에 의해 관리되는 데이터가 보호되어야 한다.
도 2는 네트워크(111)의 보다 세부사항을 도시하는 상위-레벨 개략도이다. 각각의 가입자 모바일 디바이스(103)는 디바이스(103)의 사용자(101)가 가입자인 모바일 네트워크 운영자(MNO)(117)를 통해 다른 네트워크 디바이스들과 통신하며, 예를 들어 MNO(117)는 이동 전화 통신 서비스의 제공자일 수 있다.
개별 서비스 제공자(SP)가 메시지 전송, 애플리케이션 관리, 서비스 공급, 및 보안 메커니즘 공급을 위해 각각의 개별 모바일 네트워크 운영자와 상호 작용해야 한다면, 트랜잭션의 일부이든 또는 전개과정의 일부이든 혼란이 발생한다. 따라서, SP와 MNO 사이의 통신을 관리하기 위해 신뢰 서비스 관리자(TSM)로 알려진 핵심 액터가 GlobalPlatform에 도입된다.
도 2는 신뢰 서비스 관리자(TSM)가 서비스 제공자(SP) 및 모바일 네트워크 운영자(MNO)와 연계하여 역할을 수행할 수 있는 방법의 일 예를 제공한다. 컴퓨터 하드웨어(191-C)와 소프트웨어(도시되지 않음)의 조합인 각각의 TSM(191 1 )은 서비스 제공자(SP)(115)와 모바일 네트워크 운영자(MNO)(117) 사이의 링크를 설정한다. 각각의 TSM은 다수의 MNO를 다수의 SP에 연결할 수 있다. 반대로, 주어진 SP(115) 또는 MNO(117)는 TSM(119) 또는 다수의 TSM(119)에 연결될 수 있다.
TSM (191 1 ): 본 설명에서, 몇가지 관련 요소가 각각 n-E, n-C 및 n-S로 인용된다. E는 엔티티를 나타내고, C는 컴퓨터를 나타내며, S는 소프트웨어를 나타낸다. 따라서, n-E는 명령 n-S에 따라 실행하는 컴퓨터 n-C를 작동시키는 엔티티 n-E이다. 예를 들어, 신뢰 서비스 관리자 엔티티(119-E)는 신뢰 서비스 관리자 소프트웨어를 실행하는 컴퓨터(119-C)를 작동시킨다. 설명을 쉽게 하기 위해, 때때로 이러한 요소를 숫자 n으로 인용한다(예,: TSM (119)). 문맥상 그 반대의 것으로 명확하게 되지 않는 한, 이것은 전형적으로, 예를 들어 신뢰 서비스 관리자 컴퓨터(119-C)가 신뢰 서비스 관리자 소프트웨어(119-S) 내의 소프트웨어에 의해 규정된 일부 동작을 수행하는 것과 같이, 각각의 역할을 수행하는 모든 3개의 요소에 대한 인용으로서 의미를 가져야 한다.
도 3은 모바일 디바이스(103)의 개략도이다. 모바일 디바이스(103)는 버스(202)를 통해 랜덤 액세스 메모리(RAM)(203), 리드 온리 메모리(ROM)(204), 및 비휘발성 메모리(NVM)(205)에 연결된 프로세서(201)를 포함할 수 있다. 모바일 디바이스(103)는 프로세서(201)를 다시 전형적으로 버스(202)를 통해 안테나(211)에 연결하여 모바일 디바이스(103)가 호스트 컴퓨터 또는 다른 주변장치에 연결될 수 있게 하기 위한 입력/출력 인터페이스(207)를 추가로 포함한다.
NVM(205)은 도 4에 도시된 바와 같은 컴퓨터 프로그램(301)을 포함할 수 있다. 여기에서 컴퓨터 프로그램(301)은 모두 NVM(205)에 함께 위치하는 것으로 도시되어 있지만, 실제로는 프로그램이 다수의 메모리에 걸쳐 분산될 수 있고 RAM(203)에 임시로 설치될 수 있기 때문에 그러한 제약은 없다. 또한, 모바일 디바이스(103)는 다수의 ROM 또는 NVM을 포함할 수 있다. 프로그램(301)은 모바일 디바이스(103)로 로딩되는 애플리케이션 프로그램 뿐만 아니라, 운영 체제 프로그램을 포함한다. 모바일 앱(215)의 NVM(205)은 또한 그 기본 형식으로 또는 파생된 수량으로 저장되는 개인용 키(212) 또는 공유 비밀 키(209)와 같은 개인용 데이터 뿐만 아니라, 계좌 번호와 같은 다른 사용자-개인 정보(214)를 포함할 수 있다. 그러한 데이터의 보안을 위한 메커니즘은 여기에서 이하에 설명된다.
모바일 디바이스(103) 프로그램(301)은 암호화 모듈(213), 통신 모듈(217), 및 운영 체제 OS(219)를 포함할 수 있다.
위에서 논의된 바와 같이, 모바일 앱(215)은 매우 민감한 데이터에 대해 작동하는데 사용될 수 있는데, 예를 들어 온라인 뱅킹 계좌의 액세스 및 비밀 데이터에 대한 액세스 제공에 사용될 수 있다. 그러한 모바일 앱(215)의 보안을 위해, 모바일 앱(215)을 본원에서 비-신뢰 부분 및 신뢰 부분으로 지칭되는 2개의 부분으로 분할하는 기술이 제공된다. 비-신뢰 부분은 모바일 플랫폼, 예를 들어 IOS 또는 안드로이드에 의해 제공되는 풍부한 실행 환경(REE)(501)에서 실행되는 부분이다. 따라서, 비-신뢰 부분은 개발자 및 서비스 제공자가 해당 부분의 보안 위반에 대해 걱정할 필요 없이 모바일 플랫폼에 의해 제공되는 풍부한 사용자 경험을 제공할 수 있다. 즉, 비-신뢰 부분의 배포를 예를 들어 앱 스토어와 같이, 신뢰되지 않는 배포자로 언로딩하는 것은 안전한 것으로 간주된다.
반면에, 신뢰 부분은 보안 조치가 요구되는 모바일 앱(215)의 부분이다. 이러한 부분은 보안 채널을 통해 신뢰 사이트에서 다운로드되고 암호화에 의해 추가로 보안이 이루어진다.
도 5는 일 실시형태에 따른 보안 모바일 앱(215)을 로딩하고 초기화하는 단계를 도시하는 흐름도이다. 사용자(101)(또는 모바일 네트워크 운영자(117)와 같은 다른 액터)는 모바일 디바이스(103)의 NVM(205)에 비-신뢰 부분을 설치한다(단계 551). 도 5에 도시된 바와 같이, 초기 단계(551)는 앱 스토어, 예를 들어, IOS 기기용 애플사 앱 스토어 또는 안드로이드 기기용 구글 플레이로부터 비-신뢰 부분을 다운로드하는 단계로 구성될 수 있다. 비-신뢰 부분의 세부사항은 아래의 도 6과 관련하여 논의된다.
모바일 앱(215)의 신뢰 부분을 로딩하고 보안하는 것은 전형적으로 부트스트랩(bootstrap) 모듈(509)의 지원 하에서, 모바일 앱(215)의 제 1 사용 시에 이루어질 수 있다(단계 553). 하위단계(555)에서, 신뢰 부분은 예를 들어 인증될 수 있는 신뢰 서비스 관리자(119), 서비스 제공자 또는 서비스 제공자의 위임자와 같은, 공급 서버로 알려진 신뢰 서버로부터 다운로드된다. 그러나, 모바일 앱(215)의 신뢰 부분의 컴포넌트의 세부사항은 도 6과 관련하여 논의되지만, 각각의 모바일 앱(215)은 하나 이상의 신뢰 애플리케이션(519)으로 구성된다는 점을 유의한다.
모바일 앱(215)의 신뢰 부분 및 비-신뢰 부분의 로딩 이후에, 비-신뢰 부분으로부터의 메소드 호출이 예상 신뢰 애플리케이션(219)에 도달하도록 하는 몇몇 방식으로 이러한 부분들을 연관시키는 단계(557)가 후속될 수 있고, 연관시키는 단계는 링킹(linking) 단계를 포함할 수 있다.
신뢰 애플리케이션(219)과 연관된 신뢰 스토리지에 저장된 데이터 및 신뢰 부분의 보안을 위한 메커니즘은 암호 키에 의존한다. 모바일 애플리케이션의 초기 실행 중에, 필요한 키를 획득하기 위해 키-공급 단계(559)가 실행된다. 키-공급 단계(559)는 예를 들어, 도 8 및 도 9와 관련하여 아래에서 보다 상세하게 설명된다.
그 다음에, 신뢰 부분이 로딩되어 비-신뢰 부분과 링크되면, 모바일 앱(215)이 실행된다(단계 561).
도 6은 모바일 애플리케이션(215)을 위한 신뢰 실행 환경을 제공하기 위한 일 실시형태를 도시한다. 상위 레벨에서, 모바일 앱(215)은 비-신뢰 부분과 신뢰 부분의 2개의 부분으로 구성된다. 전자는 비-신뢰 소스에서 다운로드될 수 있으며 보안될 필요가 없다. 비-신뢰 부분은 보안될 필요가 없는 신뢰 실행 환경의 기반구조 부분 뿐만 아니라, 모바일 플랫폼 OS에 의해 제공되는 풍부한 실행 환경(REE)(501)에서 실행되는 모바일 앱(215)의 요소를 포함한다. 신뢰 부분은 신뢰 소스로부터 로딩되고, 암호로 보안된 다음, 모바일 앱(215)에 통합되는 소프트웨어 신뢰 실행 환경(소프트 TEE)(503)을 통해 실행된다.
모바일 플랫폼 OS의 가상 머신 인터프리터(515)는 모바일 앱(215)의 비-신뢰 부분의 명령을 해석한다.
스마트폰과 같은 모바일 플랫폼은 풍부한 실행 환경(REE)(501)을 제공한다. REE(501)는 강력하고 매력적이며 유용한 모바일 앱(215)이 구축될 수 있는 광범위하고 유연한 기능 레퍼토리를 제공한다. 임의의 스마트폰 사용자는 스마트폰이 사용될 수 있는 많은 상황에 놓이고, 사용자가 매일 사용할 수 있는 다양한 앱에 의해 지능적인 사용자 인터페이스가 제공된다. REE는 풍부하고 강력한 실행 환경을 제공하지만, REE는 디바이스 사용자의 민감하거나 중요한 정보를 위협할 수 있는 공격에 취약하게 디바이스를 방치한다. 여기에 설명된 기술은 소프트 TEE(503)를 모바일 앱(215)에 도입함으로써 이러한 보안 위험을 완화하는 메커니즘을 제공한다.
단계(551)에서 로딩된 비-신뢰 부분은 REE(501)에서 실행되는 모바일 앱(215)의 부분을 포함한다. 이러한 REE 컴포넌트(507)는 클라이언트 애플리케이션(505), 부트스트랩 모듈(509), REE 프록시(511), 및 보안 애플리케이션 API(513)를 포함한다. 부트스트랩 모듈(509)은 공급 서버로부터의 키 공급, 신뢰 컴포넌트의 초기 로딩 및 컴포넌트 링킹을 집결(marshal)시키기 위한 명령을 포함한다. REE 프록시(511)는 모바일 앱(215)이 외부 서버, 특히 신뢰 서비스 관리자(119)와 상호 작용할 수 있게 하는 메커니즘을 제공한다. REE 프록시(511)는 발급자 보안 도메인(Issuer Security Domain: ISD)(529)과 추가로 인터페이스한다. 특정 GlobalPlatform 애플리케이션에 할당된 메모리 영역은 보안 도메인(SD)으로 지칭되는 보안 영역에서 관리될 수 있다. 보안 도메인은 오프-디바이스 권한의 온-디바이스 대표자이다. 보안 도메인(SD)은 키 처리, 암호화, 복호화, 디지털 서명 생성, 및 예를 들어 발급자 또는 신뢰 서비스 관리자와 같은 각 SD와 연관된 엔티티의 애플리케이션에 대한 검증과 같은 보안 서비스를 지원한다. 각 SD는 예를 들어 카드 발급자(발급자 보안 도메인), 애플리케이션 제공자(애플리케이션 보안 도메인) 또는 TSM(TSM SD)과 같은 특정 액터를 대신하여 설정된다. SD는 하나의 액터에서 다른 액터로 키 및 기타 보안 정보를 분리시키도록 설정되고 그 반대의 경우도 마찬가지이다.
따라서, 발급자 보안 도메인 ISD는 디바이스의 발급자와 연관된 모바일 디바이스에 대한 보안 도메인이며 발급자와 연관된 키를 관리하는데 사용된다. ISD(529)는 단계(551)에서 모바일 앱의 초기 로딩 중에 모바일 디바이스(103)로 다운로드될 수 있다.
보안 애플리케이션 API(513)는 예를 들어, 2011년 12월 TEE 클라이언트 API 규격 v1.0, GPD_SPE_007, GlobalPlatform (http://www. globalplatform.org/specificationsdevice.asp)에 정의된 바와 같은, GlobalPlatform 클라이언트 API의 구현형태일 수 있다. 모바일 앱(215)의 비-보안 부분은 보안 애플리케이션 API(513)를 사용하여 모바일 앱(215)의 보안 부분에 액세스한다. GlobalPlatform에서, 신뢰 실행 환경(TEE)은 하드웨어로 구현되고 GlobalPlatform 클라이언트 API를 사용하여 애플리케이션에 의해 액세스된다. 일 실시형태에서, 보안 애플리케이션 API(513)는 GlobalPlatform 클라이언트 API를 에뮬레이트하도록 구현되어, 모바일 앱(215)이 한번 기록될 수 있고 TEE의 하드웨어 구현을 갖는 디바이스에서 실행되거나 또는 본원에서 설명된 바와 같은 소프트 TEE(503)를 사용할 수 있다. 따라서, GlobalPlatform 클라이언트 API 에뮬레이션으로서 보안 애플리케이션 API(513)의 구현을 통해, 모바일 앱(215)은 GlobalPlatform TEE를 구현하는 디바이스로 용이하게 포팅된다.
보안 애플리케이션 API(513)는 단계(551)에서 모바일 앱의 초기 로딩 중에 모바일 디바이스(103)로 다운로드될 수 있다.
따라서, REE(501)의 보안 위험을 극복하기 위해, 소프트웨어 신뢰 실행 환경(소프트 TEE)(503)이 모바일 애플리케이션(215)에 제공된다. 소프트 TEE(503) 기반구조는 초기 다운로드 단계(551)에서 REE 컴포넌트(507)와 함께 다운로드된다.
소프트 TEE 가상 머신(소프트 TEE VM)(517)은 소프트 TEE(503)의 핵심 컴포넌트이다. 소프트 TEE VM(517)은 초기 다운로드 단계(551)에서 다운로드될 수 있다. 소프트 TEE VM(517)은 모바일 앱(215) 내부에 에뮬레이션 레이어를 제공한다. 소프트 TEE VM(517)은 호스트 환경의 명령 세트와 상이한 명령 세트를 실행하므로, 머신의 고유한 가상 머신 인터프리터(515)와 혼동되어서는 안된다. 소프트 TEE(503)에서 실행되는 프로그램, 예를 들어 신뢰 애플리케이션은 이러한 특수 명령 세트에 대해 컴파일되고, 결과적인 신뢰 애플리케이션 바이너리(519)가 소프트 TEE VM(517)에 의해 해석된다.
전체 소프트 TEE(503) 시스템은 소프트 TEE VM(517) 내에서 실행되어 클라이언트 애플리케이션(505)으로부터의 실행 분리를 보장한다. 클라이언트 애플리케이션(505)이 소프트 TEE(503)에 의해 보호되는 자원에 대한 액세스를 요청하는 경우, 이는 보안 애플리케이션 API(513)에 대한 호출을 생성한다. 소프트 TEE VM(517)은 이러한 요청을 리트리브하고 이러한 요청을 해당 신뢰 애플리케이션(519)으로 디스패치한다.
전술한 바와 같이, 신뢰 애플리케이션(519)은 소프트 TEE VM(517)에 의해 해석가능한 명령 세트에 대해 컴파일된다. TEE(503)의 기능에 액세스하기 위해, 신뢰 애플리케이션은 내부 보안 애플리케이션 API(525)를 통해 TEE 커널(527)로의 호출을 사용한다.
신뢰 실행 환경의 중요한 기능은 클라이언트 앱(505)과 같은 신뢰할 수 없는 컴포넌트로부터 보호될 필요가 있는 데이터 항목을 분리시키는 것이다. 따라서, 소프트 TEE(503)는 신뢰 스토리지(523)를 포함한다. 신뢰 스토리지(523)의 일부분은 각각의 신뢰 애플리케이션(519)과 연관된다. 도 7은 신뢰 애플리케이션(519)과 신뢰 스토리지 영역(523) 사이의 관계를 도시하는 블록도이다. 신뢰 스토리지 영역(523)에 저장된 데이터는 데이터 암호화 키, 예를 들어 신뢰 애플리케이션 스토리지 키(701)로 각각 암호화된다. 신뢰 애플리케이션 스토리지 키(701)는 키-공급 단계(559)의 결과로서 신뢰 애플리케이션(519)에 제공되는데, 이는 이하에서 보다 상세히 설명된다.
또한, 키-공급 단계(559) 동안에 모바일 앱(215)의 개인화는, 신뢰 애플리케이션(519)을 안전하게 수신하고 각각의 신뢰 애플리케이션(519)에 대해 신뢰 애플리케이션 스토리지 키(701)를 유도하는데 사용되는 개인화된 암호 키 자료(521)를 소프트 TEE(503)에 공급하는 것을 포함한다.
도 8은 모바일 애플리케이션이 로딩되는 모바일 디바이스(103)와 도 6의 신뢰 애플리케이션의 공급에 사용되는 키 다변화를 수행하기 위한 신뢰 서비스 관리자 허브(605) 사이의 연결을 도시하는 연결도이다.
모바일 디바이스(103)는 신뢰 서비스 관리자(119)에 연결되고, 도 2에 도시된 바와 같이, 연결은 모바일 네트워크 운영자(117)를 통해 이루어질 수 있다.
신뢰 서비스 관리자(119)는 본원에서 신뢰 서비스 관리자 허브(605)로 지칭할 수 있는, 예를 들어 키 공급 서버(601) 및 키 디렉토리 서버(603)와 같은 몇몇 관련 서버와 함께 배치될 수 있다. 신뢰 서비스 관리자 허브(605)의 이러한 컴포넌트는 모바일 디바이스(103)와 협력하여 모바일 애플리케이션(215)의 보안을 향상시키기 위한 소프트웨어 TEE(503)를 제공한다.
키 공급 서버(601)의 주요 역할은 모바일 애플리케이션(215)의 REE 컴포넌트(507)에 대응하는 신뢰 애플리케이션(519)의 공급에 사용되는 화이트-박스 암호 키와 초기 핀 암호화 키(IPEK)를 생성하는 것이다. 화이트-박스 암호화는 S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot의, 화이트-박스 암호화 및 AES 구현에서 설명된다. 2002년 8월 15일 ~ 16일, 암호화의 선택 영역(SAC 2002)에 관한 제9회 연례 워크샵에서, 그리고 2006년 Julien Bringer, Herve Chabanne 및 Emmanuelle Dottax의, 화이트 박스 암호화: 새로운 시도, 암호학 이프린트 아카이브, 리포트 2006/468에서, 이 둘은 본원에 참조로 포함된다.
개인용 키 Pr.K.Kps는 키 공급 서버와 연관되어 이것이 생성하는 키에 서명할 수 있게 한다.
키 디렉토리 서버(603)의 주요 역할은 특정 디바이스(103)에서 실행되는 모바일 앱(215)의 특정 인스턴스화를 위해 소프트웨어 TEE(503)에 대한 고유 식별자와 연관된 IPEK 키의 데이터베이스를 유지하는 것이다. 데이터베이스 테이블일 수 있는 해당 디렉토리는 본원에서 키 디렉토리(607)로 지칭된다. 소프트웨어 TEE에 대한 고유 식별자는 본원에서 TEE ID로 지칭되며 이하에서 보다 상세히 설명된다. 특정 TEE ID가 주어지면, 키 디렉토리 서버는 해당 IPEK를 조회 클라이언트, 예를 들어 신뢰 서비스 관리자(119)에 제공할 수 있다.
신뢰 애플리케이션(519)을 모바일 디바이스(103)에 제공하는 관점에서 신뢰 서비스 관리자(119)의 주요 역할은 모바일 디바이스(103)로부터 신뢰 애플리케이션(519)에 대한 요청을 수신하는 것이다. 요청은 즉 TEE ID 및 IPEK를 제공함으로써 모바일 디바이스(103), 특히 모바일 애플리케이션(215)이 그 자신을 식별하고 그 진위를 증명할 수 있게 하는 메커니즘을 포함한다. 일 실시형태에서, 이하에서 설명되는 바와 같이, IPEK는 모바일 디바이스(103)에 의해 해시 형태로 제공된다.
도 9는 신뢰 애플리케이션의 보안 공급을 가능하게 하는 키 다변화를 도시하는 타이밍 순서도이다. 예비 단계(미도시됨)로서, 모바일 앱(215)의 REE 컴포넌트는 예를 들어, 앱 스토어로부터 모바일 디바이스(103)로 다운로드된다.
단계 701. 모바일 애플리케이션(215), 구체적으로는 모바일 애플리케이션(215)의 REE 컴포넌트는 모바일 디바이스(103)에서 실행됨에 따라 모바일 애플리케이션(215)에 대한 고유 식별자(TEE ID)를 결정한다. 즉, TEE ID는 애플리케이션 및 디바이스 둘다에 의존한다. 일 실시형태에서, TEE ID는 애플리케이션에 할당된 범용 고유 식별자(UUID) 및 모바일 디바이스(103)의 디바이스 지문에 따라 계산된다. 이들은 예를 들어 해시를 생성하는데 사용될 수 있거나 TEE ID를 생성하기 위해 연결될 수 있다.
디바이스 지문은 애플리케이션 식별자, 고유 OS 식별자, 모바일 디바이스(103)의 무선 시리얼 및 모바일 디바이스(103)의 IMEI의 연결의 해시, 예를 들어 SHA1로서 계산될 수 있다. 애플리케이션 식별자는 애플리케이션의 패키지 이름이다(예로서, com.companyname.appname). 고유 OS 식별자는 안드로이드 OS용 AndroidID, iOS의 볼륨 UUID와 같이, 기본 OS에 의해 제공되는 파라미터이다. 무선 시리얼은 모바일 디바이스의 무선 유닛의 시리얼 넘버이다. IMEI(국제 이동단말기 식별 번호)는 모바일 디바이스에 할당된 고유 번호이며 3세대 파트너쉽 프로젝트의 3GPP TS 23.003 규격에 명시되어 있다.
단계 703. TEE ID는 모바일 앱(215)으로부터 키 공급 서버(601)로 전송된다.
단계 705. 키 공급 서버(601)는 모바일 앱(215)으로부터 TEE ID를 수신하고, TEE ID 및 동적 화이트-박스 암호 키(WBC 키, K m )와 연관될 초기 PIN 암호화 키(IPEK)를 생성한다.
바람직한 실시형태에서, IPEK는 키 공급 서버(601)에 의해 생성된 고유한 랜덤 AES-256 키이다. AES-256은 256비트 키를 사용하는 어드밴스드 암호화 표준의 버전이다.
화이트-박스 암호화는 본 문서의 범주 밖에 있다. 그러나, 다음의 핵심적인 포인트는 여기에 제시된 기술을 이해하는데 유용하다. 화이트-박스 암호화는 배포자의 액세스 제어 시행 범위를 벗어나 배포되는 분산된 자료를 보호하는데 사용된다. 예를 들어, 본 맥락에서, 모바일 디바이스는 모바일 디바이스에서 사용하기 위한 앱을 배포할 수 있는 서비스 제공자의 제어를 벗어날 뿐만 아니라, 디바이스의 발급자의 제어를 벗어난다. 화이트-박스 암호화는 분산된 자료를 보호하기 위해 난독화(obfuscation) 기술을 사용한다. 단계 3(705)에서 화이트-박스 암호화 기술을 이용하여 AES-암호화된 메시지 내에 숨겨진 WBC 키, TEE ID의 해시를 포함하는 고유한 랜덤 AES-128 키를 포함하도록 화이트-박스 암호화 라이브러리(WBC) 바이너리가 생성된다.
단계 707. IPEK 키는 WBC 키를 사용하여 키 공급 서버(601)에 의해 암호화된다.
단계 709. TEE ID와 IPEK 키는 키 디렉토리 서버(603)로 전송된다.
단계 711. 키 디렉토리 서버(603)는 TEE ID와 IPEK 키를 연관시키고 이들을 키 디렉토리(607)에 저장한다.
단계 713. TEE ID와 IPEK 키를 키 디렉토리 서버(603)에 전송하는 것과 병행하여, 키 공급 서버(601)는 WBC 키 라이브러리 및 암호화된 IPEK 키를 모바일 애플리케이션(215)으로 전송한다.
단계 715. 모바일 애플리케이션(215)은 WBC 라이브러리를 설치한다. WBC 라이브러리를 설치함으로써, 모바일 애플리케이션(215)은 라이브러리(이 경우 IPEK 키)를 사용하여 암호화된 정보를 복호화하는데 라이브러리를 사용할 수 있다.
단계 717. 모바일 애플리케이션(215)은 WBC 라이브러리를 사용하여 IPEK 키를 복호화한다.
단계 719. IPEK 키는 도 5의 단계(551)에서 모바일 앱(215)의 비-신뢰 컴포넌트와 함께 다운로드된 발급자 보안 도메인(ISD)(529)에 저장된다.
단계 723. 모바일 애플리케이션(215)은 IPEK(HMAC(TEEID, IPEK))를 사용하여 TEE ID 및 TEEID의 해시를 신뢰 서비스 관리자(605)로 전송한다.
단계 725. 신뢰 서비스 관리자(605)는 일치되는지를 검증하기 위해 TEE ID 및 해시(HMAC(TEEID, IPEK))를 키 디렉토리 서버(603)로 전달한다. 키 디렉토리 서버(603)가 TEE ID 및 대응하는 IPEK의 테이블(위의 단계 711)을 유지하고 있기 때문에, 키 디렉토리 서버(603)는 단계(723)에서 모바일 앱(215)으로부터 신뢰 서비스 관리자(605)로 전송된 해시가 정확한 IPEK로부터 예상되는 해시와 일치하는지 검증할 수 있다.
단계 727. 키 디렉토리 서버(603)가 IPEK와 TEE ID 대응관계를 확인한 경우, 키 디렉토리 서버(603)는 IPEK를 신뢰 서비스 관리자로 다시 전송한다.
단계 729. 신뢰 서비스 관리자(605)는 IPEK를 저장한다. 신뢰 서비스 관리자(605)는 또한 IPEK를 사용하여 생성된 세션 키를 사용하여 TA(519)를 암호화한다.
단계 731. 신뢰 서비스 관리자(605)는 암호화된 TA(519)를 모바일 앱(215)으로 전송한다.
단계 733. 모바일 앱(215)은 IPEK로부터 생성된 세션 키를 사용하여 TA(519)를 복호화하고, 소프트 TEE(503)에 TA(519)를 설치한다.
이이 따라, 모바일 앱(215)은 초기에 다운로드된 비-신뢰 컴포넌트 뿐만 아니라, 신뢰 컴포넌트, 키 자료(521) 및 TA(519)를 포함하도록 완료된다.
상술한 바와 같이, 각각의 신뢰 애플리케이션(519)에 대응하는 신뢰 스토리지(523)는 신뢰 애플리케이션 스토리지 키(TA_SK)(701)에 의해 보호된다. 도 10은 이러한 스토리지 키의 생성을 도시하는 흐름도이다.
단계 1001. 초기 랜덤 시크릿(IRS)이 모바일 앱(215)에 의해 생성된다.
단계 1003. IRS는 도 9의 단계(705)에서 동적 화이트 박스 암호 키(WBK)를 사용하여 모바일 앱(215)에 의해 암호화되고, 단계(713)에서 모바일 앱에 제공된다.
단계 1005. 암호화된 IRS는 NVM(205)의 모바일 앱(215)에 의해 관리되는 파일-스토리지에 모바일 앱(215)에 의해 저장된다.
대안적인 실시형태에서, 단계(1001 내지 1005)는 사용자에 의한 PIN의 입력으로 대체된다. PIN은 저장되지 않는다. 오히려, 아래의 단계(1009)에서 논의되는 바와 같이, 이는 각 실행 시에 정확하게 재입력되어야 하거나, 계산된 스토리지 키는 제 1 실행 시에 사용된 스토리지 키와 일치하지 않는다.
단계 1007. 단계(1001 내지 1005)와 병행하여, 모바일 앱(215)에 의해 디바이스 지문(DFP)이 계산된다. DFP는 애플리케이션 식별자, 고유 OS 식별자, 무선 시리얼 넘버 및 디바이스의 IMEI 번호의 연결의 SHA1에 의해 계산될 수 있다.
도 10의 선행하는 단계들은 NVM(205)에 저장된 결과들로, 즉 암호화된 IRS 및 DFP로 유리하게 한번 수행된다. 이하의 단계는 신뢰 스토리지에 액세스할 때 사용되는 런타임 단계이다.
단계 1009. 런타임에서, 각각의 TA(519)에 대해, TA 스토리지 키(TA_SK)(701)는 예를 들어, RFC 5869(IETF, HMAC-기반 추출-및-확장 키 유도 함수(http://tools.ietf.orq/htffll/rfc5869, 2015년 9월 3일에 액세스됨))에 명시된 HMAC 기반 키 유도 함수를 사용하여 컴퓨팅된다. 해시 함수로의 입력은 TA(519)의 IRS, DFP 및 UUID를 포함한다. 사용자 PIN을 사용하는 대안적인 실시형태에서, 사용자는 PIN에 대해 프롬프트된다. 최초로 입력된 PIN은 저장되지 않는다. 그러나, 각각의 실행에 대해 PIN이 TA 스토리지 키를 컴퓨팅하는데 사용되기 때문에, 후속하는 실행에 대해 단계(1009)에서 정확한 TA_SK가 계산되도록 정확한 PIN이 입력되어야 한다.
단계 1013. 신뢰 애플리케이션(519)이 이의 대응하는 스토리지(523)로의 액세스를 탐색하는 경우, 신뢰 애플리케이션(701)은 이의 스토리지 키 TA_SK(701)를 사용하여 신뢰 스토리지(523)로부터 리트리브되거나 저장된 콘텐츠를 암호화 또는 복호화한다.
모바일 앱(215)에 대한 공격에 대한 한가지 취약성은 이의 실행 중에 모바일 앱(215)에 의해 사용되는 RAM의 메모리 영역을 공격한다는 것이다. 공격자는 모바일 앱(215)의 실행 중에 RAM(203)에 저장된 데이터의 메모리 덤프를 수행할 수 있고, RAM(203)에 저장된 것으로부터 계좌 번호, 암호 키, 개인 식별자 등과 같은 민감한 정보를 리트리브하려고 시도할 수 있다.
그러한 공격을 막기 위해, 본 실시형태는 런타임 메모리 덤프로부터 의미있는 데이터의 복구를 방지하기 위해 모바일 앱(215)에 의해 사용되는 런타임 메모리의 일부를 암호화한다. 도 11은 본 실시형태를 도시하는 타이밍 순서도이다. 소프트 TEE(515) 내부에서 실행되는 각각의 신뢰 애플리케이션(519)은 히프(heap) 또는 스택으로부터 RAM(203)에 액세스할 수 있다. 각각의 TA(519)에 대한 히프 또는 스택은 임의의 다른 신뢰 애플리케이션(519)의 히프 또는 스택으로부터 분리 및 격리된다.
예를 들어 도 9와 관련하여, 위에서 논의된 바와 같이, 키 공급 서버(601)는 WBC 키 K m 을 포함하는 화이트-박스 암호화 라이브러리를 생성하고, 이러한 라이브러리를 모바일 앱(215)으로 전송한다(단계 705 및 713). 모바일 앱(215)은 단계(715)에서 WBC 라이브러리를 설치한다.
본 실시형태에 따르면, 신뢰 애플리케이션은 일회용 키(OTK)를 사용하여 데이터를 암호화함으로써 RAM(203)에 저장된 데이터를 암호화한다:
E = 평문 XOR OTK
OTK는 다음과 같이 유도된다:
단계(1101): TA(519)는 신뢰 애플리케이션(519)의 각각의 실행에 대해 고유하도록 논스(nonce)를 생성한다. 바람직한 실시형태에서, OTK는 논스를 사용하여 생성된다. 그러나, OTK를 생성하기 위해 대안적인 메커니즘이 사용될 수 있으며, 이 경우 논스가 필요하지 않을 수 있다.
단계(1103): TA(519)는 난수 생성기를 사용하여 런타임 키 K r 을 생성한다. 바람직한 실시형태에서, OTK는 랜덤 키를 사용하여 생성된다. 그러나, OTK를 생성하기 위해 대안적인 메커니즘이 사용될 수 있으며, 이 경우 랜덤 키 K r 이 필요하지 않을 수 있다.
각각의 저장 동작(1104)에서, 신뢰 애플리케이션(519)의 특정 실행 및 메모리 위치와 연관된 OTK가 생성되고, 이것은 저장을 위해 마스킹되며, RAM에 저장될 평문은 OTK를 사용하여 암호화되고, OTK는 폐기된다.
단계(1105): OTK가 생성된다. 바람직한 실시형태에서, OTK는 공식을 사용하여 생성된다:
OTK= ENC(mem_addr || counter || nonce, K r )
여기서,
mem _ addr은 암호화될 메모리 페이지(들)의 시작 주소이고, counter는 (1) TA(519)의 각 실행 시에 리셋되어 각 메모리 액세스 시에 증분되는 카운터이며,
ENC는 연결 mem _ addr || counter || nonce 가 키 K r 을 사용하여 암호화되는 암호화 함수이다.
단계(1107): OTK가 마스킹된다. 바람직한 실시형태에서, TA(519)는 WBC 키 K m 을 사용하여 OTK를 마스킹한다:
OTKm = OTK XOR K m
[0001] 단계(1109) 및 단계(1111): 마스킹된 OTK, OTK m 은 RAM(203)에 저장된다.
[0002] 단계(1113): 저장될 수량의 평문은 OTK를 사용하여 마스킹된다:
E = 평문 XOR OTK;
[0003] 단계(1115) 및 단계(1117): 마스킹된 수량 E가 RAM(203)으로 전송되어 RAM(203)에 저장된다.
단계(1119): OTK가 폐기된다. 따라서, RAM에 저장하기 전에 평문을 마스킹하는데 사용된 실제 키(OTK)는 유지되지 않는다; 오히려, OTK의 마스킹된 버전 OTK m 만이 유지되며 이는 처음에 성공적으로 마스킹 해제되는 경우에만 사용될 수 있다.
반대로, RAM(203)에 저장된 값을 판독하는 각각의 동작에서, 마스킹된 OTK가 리트리브되어 마스킹 해제되고, 암호화된 수량이 평문으로 복호화되며, OTK가 폐기된다(단계 1121).
단계(1123): TA(519)는 기록 동작 동안 이전에 저장된 마스킹된 OTK, 즉 OTKm을 리트리브한다.
단계(1125): 화이트 박스 키 Km을 사용하여 OTKm으로부터 OTK가 마스킹 해제된다.
단계(1127): 암호화된 수량 E가 리트리브된다.
단계(1129): 암호화된 수량 E가 평문으로 복호화된다:
평문 = E XOR OTK
단계(1131): OTK가 다시 폐기된다.
따라서, 모바일 앱의 기밀 정보를 악의적으로 파악하기 위해 메모리 덤프를 이용하는 공격으로부터 런타임 RAM을 보호하는 기술이 제시된다.
가상 머신에 의해 실행되는 소프트웨어 애플리케이션은 애플리케이션의 정적 또는 런타임 인스턴스화 중 어느 하나의 변경을 기반으로 하는 공격에 취약하다. 예를 들어, 공격자는 애플리케이션에 의해 조작되는 보호된 콘텐츠를 추출하고 애플리케이션의 동작을 조작하여 보호된 콘텐츠를 직접 노출시키거나 또는 공격자가 보호된 콘텐츠를 어떻게든 파악하는 것이 가능한 형태로 노출시키기 위한 시도로서, 애플리케이션을 검사하고 애플리케이션을 변경할 수 있다.
이러한 공격을 막기 위해, 본 기술의 실시형태는 여러 기술 중 하나 이상을 채택한다.
도 12에 도시되는 그러한 제 1 기술은 애플리케이션 무결성 검사를 제공하는 것이다. 먼저 모바일 앱(215)의 신뢰 애플리케이션(519)이 소프트 TEE(503)에 설치되면, 소프트 TEE 가상 머신(517)은 예를 들어 신뢰 애플리케이션(519)에 대응하는 해시 값과 같은 비교 값을 계산한다(단계 1201). 비교 값은 신뢰 애플리케이션(519) 바이너리를 통해 컴퓨팅된 HMAC-SHA256 MAC 해시 코드일 수 있다. 그 다음, 비교 값은 예를 들어 TA(519) 바이너리의 앞에 추가된 신뢰 컨테이너에 저장된다(단계 1203).
모든 실행 시에, TA(519)가 소프트 TEE 가상 머신(517)에 의해 다시 로딩될 때, 동일한 비교 값 계산이 바이너리를 통해 수행되고 제 1 로드의 컴퓨팅되는 저장된 비교 값("현재 값"으로 지칭됨)과 비교된다(단계 1205). 단계(1207)에서, 저장된 비교 값과 현재 비교 값이 상이한지 여부에 대한 결정이 이루어진다. 이들이 동일한 경우, 소프트 TEE 가상 머신(517)은 TA(519)를 로드하여 실행한다. 이들이 상이한 경우, 소프트 TEE 가상 머신(517)은 TA(519)를 로딩하는 것을 거절하고 사용자, 발급자 또는 서비스 제공자에게 잠재적인 공격을 통지하는 것과 같은 교정 동작을 발행한다(단계 1209).
모바일 앱(215)에 대한 또 다른 가능한 공격으로서, 공격자는 클럭 속도를 변경하거나 시간-시프트를 수행한다; 후자는 디지털 저작권 관리 DRM 애플리케이션에 대한 특정 관심사이다. 따라서, 그러한 공격을 막기 위해, 다른 실시형태에서, TA(519)는 클럭 무결성 검증 기술을 사용하여 추가적으로 또는 대안적으로 검증될 수 있다. 도 13은 클럭 무결성 검증 기술을 도시하는 흐름도이다.
클럭 변경 공격을 방지하기 위해, 예를 들어 단계(555)에서 또는 단계(555)의 부수적으로, 모바일 앱(215)의 신뢰 부분의 설치 시에, 예를 들어 내부 보안 API(525)의 특정 함수에 대한 소프트 TEE(503)의 가상 머신(517)에 의한 호출과 같은 신뢰 부분의 특정 명령의 실행 시간이 측정되고(단계 1301), 보안 스토리지(1303)에 기록된다(단계 1302). 클럭 검증(1305)은 모바일 앱(215)이 실행될 때 수행된다. 모바일 앱(215)이 실행될 때 소프트 TEE 가상 머신(517)이 개시되고(단계 1307), 소프트 TEE 가상 머신(517)은 명령 카운트의 추적을 계속한다(단계 1309). 주기적으로, 소프트 TEE 가상 머신(517)은, 시스템 클럭을 페치하고(단계 1313), 명령 카운트로부터 예상 시간을 컴퓨팅하며(단계 1315), 시스템 클럭을 예상 시간과 비교(단계 1317)함으로써, 클럭 검증 검사(1311)를 수행한다. 예상 시간과 시스템 시간 사이의 차이가 일부 미리 결정된 임계값에 대해 범위를 벗어나는 경우, 예를 들어, 모바일 앱(215)을 중지시키거나 모바일 앱(215)에 의해 액세스될 수 있는 하드웨어 자원에 대해 제약을 부가하는 것과 같은, 몇몇 교정 동작을 수행할 수 있다(단계 1319). 일 실시형태에서, n개의 명령이 특정 양의 시간 t를 소요하는 경우, 그리고 이에 따라서 특정 명령 카운트, 예를 들어 m * n으로 추적한 후에, 그 실행 시간은 m * t 일 것으로 예상된다. 특정 임계값을 벗어난 편차가 발생하면 교정 동작을 트리거한다.
모바일 앱(215)에 대한 공격은 가상 머신(515)에 의해 실행되는 중에 모바일 앱(215)의 중요 기능을 검사하기 위한 디버깅 기술을 사용하는 것을 포함할 수 있다. 본원에 설명된 기술의 실시형태는 또한 신뢰 애플리케이션(519)의 설치 중에 신뢰 애플리케이션(519)에 추가된 짧은 루프 및 긴 루프를 벤치마킹함으로써 안티-디버깅 기술을 우회하는 그러한 검사 공격을 차단하기 위한 기술을 포함할 수 있다. 도 14는 그 개념을 도시하는 타이밍 순서도이다.
도 14는 공격으로부터 보호되어야 하는 신뢰 애플리케이션(519)의 임계 부분(1401), 예를 들어 암호 코드를 도시한다. 코드 세그먼트(1403)는 임계 부분(1401)에 추가된다. 임계 부분은 다수의 가능한 경로 및 수개의 루프를 포함한다. 예를 들어, 제 1 루프(1405)는 짧은 블록(1407) 및 긴 블록(1409)을 포함한다. 제 1 루프에 대한 실행 경로가 짧은 블록(1407)을 통해 이루어지는 경우, 제 1 루프(1405)의 주어진 반복 횟수의 실행은 실행이 긴 블록(1409)을 통해 이루어지는 것보다 훨씬 더 짧을 것이다. 마찬가지로, 루프 2 내지 n(1411)은 짧은 블록(1413) 또는 긴 블록(1415) 어느 하나를 통해 실행되도록 이루어질 수 있으며, 이는 다시 전체 실행 시간에 영향을 미친다.
코드 세그먼트(1403)에 대해 어떤 실행 경로가 사용되는지는 어느 블록이 실행되어야 하는지 그리고 얼마나 많은 반복 횟수로 실행되어야 하는지를 나타내는 난수에 의해 결정된다.
짧은 블록과 긴 블록에 대한 블록 실행 시간과 각 루프에 대한 반복 횟수를 알면, 코드에서의 다양한 위치, 검사 포인트 간의 예상 경과 시간을 예측하는 것이 가능하다. 예를 들어, 긴 블록(1409)이 t 사이클 및 짧은 블록이 .5 * t 사이클을 소요할 것으로 예상되고, 루프 1(1405)이 짧은 블록을 n번 실행할 것으로 예상되는 경우, 검사 포인트(1417)에서의 시간 b와 개시 포인트(1419)에서의 시간 a 사이의 시간 차이는 n* t 이어야 한다고 예측될 수 있다. 그것으로부터의 편차는 루프 1의 실행 중에 디버거에 의해 코드가 일시 정지되었음을 나타내는 것일 수 있다. 검사 포인트(1421 및 1423)에서의 시간 c 및 d에 대해서도 각각 마찬가지이다.
도 15는 런타임 중에 실행 경로를 랜덤화하기 위해 도 14의 메커니즘의 사용을 도시하는 흐름도로서, 가능한 조작을 결정하기 위해 랜덤화된 실행 지속시간이 검사된다.
단계(1501): 추가된 더미 코드 세그먼트(1403)를 통해 실행 경로를 결정하기 위해 사용되는 난수 R이 생성된다.
단계(1503): 난수 R을 사용하여 실행 경로를 결정한다. 예를 들어, 상이한 비트의 R은 다양한 루프에 대해 긴 블록 또는 짧은 블록이 실행되는지 여부를 나타낼 수 있다. 다른 비트는 반복 횟수를 나타낼 수 있다.
단계(1505): 짧은 또는 긴 블록이 실행되는지 여부 및 반복 횟수를 포함하는 실행 경로는 식별된 다양한 검사 포인트에서 예상 도달 시간을 결정하는데 사용된다.
단계(1507): 검사 포인트에 의해 인덱싱된 예상 도달 시간 뿐만 아니라, 예상 총 실행 시간, 즉 검사 포인트(1423)에서 보호될 임계 코드(1401)의 실행 후의 예상 총 실행 시간은 이상적으로는 신뢰 스토리지(523)와 같이 몇몇 보호되는 형태로 기록된다.
단계(1509): 신뢰 애플리케이션의 실행 중에:
단계(1511): 각 검사 포인트에서, 검사 포인트에서의 도달 시간이 예상 도달 시간과 비교된다. 미리 결정된 임계값을 벗어나는 편차가 있는 경우(단계 1513), 교정 동작(단계 1515)이 수행된다.
그렇지 않은 경우, 즉 편차가 허용가능하게 작은 경우, 단계(1511)에서 다음 검사 포인트에 도달할 때까지, 실행이 계속된다(1517).
따라서, 신뢰 애플리케이션의 실행 중 어떤 포인트에서, 예를 들어 디버거를 사용하여 실행이 일시 정지되면, 실행 시간이 교란되고 도달 시간은 예상 도달 시간과 일치하지 않을 것이다. 그것은 교정 동작이 수행되는 조건을 트리거한다.
예시적인 목적을 위해, 모바일 디바이스(103)에서 사용될 수 있는 바와 같이 본원에 제시된 기술을 설명한다. 그러나, 제시된 기술은 보안 신뢰 실행 환경을 필요로 하는 임의의 프로그램가능한 전자 디바이스에 적용가능하다.
전술한 바에 따라, 모바일 앱에 신뢰 실행 환경을 도입하는 메커니즘을 제공함으로써 모바일 디바이스에서 실행되는 애플리케이션의 보안을 향상시키는 기술이 제시되었고, 이에 따라 모바일 디바이스에 저장되거나 모바일 디바이스를 사용하여 원격 서버에 액세스되는 민감한 데이터를 조작하도록 그러한 모바일 앱을 실행하는데 모바일 디바이스가 사용되는 경우, 증가된 신뢰 수준이 예상될 수 있다는 것은 명백해질 것이다. 이러한 향상은 모바일 디바이스 하드웨어에 대한 변형을 요구하지 않고도 모바일 디바이스 하드웨어의 동작과 연관된 보안을 강화하는 강력하고 유연하며 경제적인 방식으로 달성된다.
본 발명의 구체적인 실시형태가 설명되고 도시되었지만, 본 발명은 설명되고 도시된 부분의 특정한 형태 또는 구조로 제한되어서는 안된다. 본 발명은 청구범위에 의해서만 제한된다.

Claims (13)

  1. 모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법으로서,
    상기 모바일 디바이스는:
    - 비-신뢰 애플리케이션 제공자로부터 상기 모바일 애플리케이션의 비-신뢰 부분을 상기 모바일 디바이스로 로딩하도록 구성되고;
    - 신뢰 애플리케이션 제공자로부터 상기 모바일 애플리케이션의 신뢰 부분을 상기 모바일 디바이스로 로딩하도록 구성되며;
    - 상기 모바일 애플리케이션의 신뢰 부분을 상기 모바일 디바이스에 설치하여 신뢰 실행 환경을 제공하도록 구성되는 것을 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 모바일 애플리케이션의 신뢰 부분을 상기 모바일 디바이스로 로딩하는 것은,
    상기 모바일 애플리케이션이 상기 모바일 애플리케이션의 식별자 및 상기 모바일 디바이스의 디바이스 지문으로부터 신뢰 실행 환경 ID TEE ID를 생성하고; 상기 생성된 신뢰 실행 환경 ID TEE ID가 상기 모바일 애플리케이션에 의해 키 공급 서버로 전송되는 단계;
    상기 신뢰 실행 환경 ID TEE ID와 연관될 키를 생성하도록 상기 키 공급 서버를 작동하고, 상기 신뢰 실행 환경 ID TEE ID와 상기 생성된 키를 키 디렉터로 전송하며, 상기 생성된 키를 상기 모바일 디바이스로 전송하는 단계;
    상기 신뢰 애플리케이션 제공자는 상기 모바일 디바이스에 의해 전송된 상기 생성된 키로부터 컴퓨팅된 상기 TEE ID의 해시 및 상기 TEE ID를 수신하고 상기 키 디렉터 서버를 통해 상기 모바일 디바이스를 인증하도록 구성되는 단계;
    상기 모바일 디바이스의 성공적인 인증 시에, 신뢰 애플리케이션을 포함하는 상기 모바일 애플리케이션의 신뢰 부분을 상기 모바일 디바이스로 전송하도록 상기 신뢰 애플리케이션 제공자를 작동하는 단계; 및
    상기 모바일 디바이스는 상기 모바일 애플리케이션의 신뢰 부분을 상기 모바일 디바이스에 설치하여 신뢰 실행 환경을 제공하도록 구성되는 단계를 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 모바일 애플리케이션의 비-신뢰 부분은,
    상기 모바일 디바이스의 풍부한 실행 환경에서 실행가능한 클라이언트 애플리케이션; 및
    신뢰 애플리케이션이 구현될 수 있는 명령 세트에 대한 신뢰 애플리케이션 인터프리터를 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 신뢰 애플리케이션은 상기 신뢰 애플리케이션 인터프리터에 의해 해석가능한 상기 명령 세트로 구현되는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 모바일 애플리케이션과 연관된 상기 키는 화이트-박스 키 "WBC 키" 및 초기 핀 암호화 키 "IPEK"를 포함하고, 상기 방법은 상기 모바일 애플리케이션과 연관된 상기 키를 상기 모바일 디바이스로 전송하기 전에 상기 WBC 키를 사용하여 상기 IPEK를 암호화하는 단계를 더 포함하며, 상기 IPEK의 암호화된 버전이 상기 모바일 디바이스로 전송되는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 모바일 애플리케이션의 신뢰 부분은 상기 신뢰 서버 제공자에 의해 상기 모바일 디바이스로 전송되기 전에 상기 초기 핀 암호화 키 "IPEC"로부터 생성된 세션 키로 암호화되는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 모바일 애플리케이션의 비-신뢰 부분은 신뢰 실행 환경의 하드웨어 구현과 유사한 기능을 구현하는 애플리케이션 프로그램 인터페이스를 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 신뢰 애플리케이션을 신뢰 보안 스토리지와 연관시키는 단계; 및
    상기 모바일 디바이스의 보안 스토리지에 초기 랜덤 시크릿을 저장하는 단계; 및
    상기 신뢰 애플리케이션의 상기 보안 스토리지의 각각의 데이터 액세스에 대해, 초기 랜덤 시크릿 "IRS", 디바이스 지문, 및 상기 신뢰 애플리케이션을 위한 고유 ID "UUID"를 사용하여, 상기 신뢰 애플리케이션과 연관된 상기 신뢰 스토리지에 저장된 데이터를 암호화하기 위한 보안 스토리지 데이터 키 "TA_SK"를 생성하는 단계를 더 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  9. 제 1 항 또는 제 2 항에 있어서,
    신뢰 애플리케이션의 실행 중에:
    상기 신뢰 애플리케이션의 해당 특정 실행과 연관된 일회용 런타임 키를 결정하는 단계;
    상기 신뢰 애플리케이션의 해당 특정 실행 중에 상기 신뢰 애플리케이션에 의해 사용된 상기 런타임 메모리에 수량(quantity)을 저장할 때, 상기 일회용 런타임 키를 사용하여 상기 수량을 마스킹하는 단계; 및
    상기 신뢰 애플리케이션의 해당 특정 실행 중에 상기 신뢰 애플리케이션에 의해 사용된 상기 런타임 메모리로부터 수량을 리트리브할 때, 상기 일회용 런타임 키를 사용하여 상기 수량을 마스킹 해제하는 단계를 더 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  10. 제 1 항 또는 제 2 항에 있어서,
    실행 또는 해석을 위한 컴파일된 형식을 갖는 신뢰 애플리케이션의 제 1 실행 시에, 상기 신뢰 애플리케이션의 상기 컴파일된 형식에 기초하는 제 1 값을 컴퓨팅하고 상기 신뢰 애플리케이션의 상기 컴파일된 형식에 기초하는 해당 값을 저장하는 단계;
    상기 신뢰 애플리케이션의 후속 실행 시에, 상기 신뢰 애플리케이션의 상기 컴파일된 형식에 기초하는 동일한 계산을 수행하여 상기 신뢰 애플리케이션의 상기 컴파일된 형식에 기초하는 제 2 값을 생성하고, 상기 제 1 및 제 2 값을 비교하며, 상기 제 1 및 제 2 값이 동일하지 않을 경우 교정 동작을 수행하는 단계를 더 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  11. 제 1 항 또는 제 2 항에 있어서,
    상기 소프트웨어 신뢰 실행 환경의 제1 실행 시에 상기 모바일 애플리케이션의 특정 명령에 대한 예상 실행 시간을 결정하고;
    상기 특정 명령에 대한 상기 예상 실행 시간을 저장하며;
    상기 소프트웨어 신뢰 실행 환경의 후속적인 실행 중에:
    상기 명령 카운트를 추적하고;
    상기 시스템 클럭을 주기적으로 페치하며;
    상기 현재 명령 카운트로부터 상기 예상 실행 시간을 컴퓨팅하고;
    상기 현재 시스템 클럭을 상기 예상 실행 시간과 비교하며; 그리고
    상기 비교가 허용불가한 편차를 나타내는 경우, 교정 동작을 수행함으로써,
    잠재적인 시간-시프트 공격을 방어하는 단계를 더 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  12. 제 11 항에 있어서,
    상기 특정 명령은 애플리케이션 프로그램 인터페이스의 함수에 대한 호출인,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
  13. 제 1 항 또는 제 2 항에 있어서,
    각각이 짧은 루프 또는 긴 루프로서 실행될 수 있는 복수의 루프를 갖는 더미 코드 섹션으로 신뢰 애플리케이션의 임계 부분을 보정하는 단계;
    상기 더미 코드 섹션에서 그리고 상기 신뢰 애플리케이션의 상기 임계 부분에 인접하는 복수의 검사 포인트를 할당하는 단계;
    상기 신뢰 애플리케이션의 실행 시에 상기 더미 코드를 통해 실행 경로를 결정하는 단계로서, 상기 실행 경로는 정의된 수의 짧은 루프 및 긴 루프를 실행하고;
    각각의 검사 포인트에 대해 예상 도달 시간을 결정하는 단계; 및
    검사 포인트의 도달 시에, 상기 실제 도달 시간을 상기 예상 도달 시간과 비교하고 상기 실제 도달 시간과 상기 예상 도달 시간 사이의 편차가 미리 결정된 임계값을 초과하는 경우 교정 동작을 수행하는 단계를 더 포함하는,
    모바일 디바이스에서 실행을 위해 모바일 애플리케이션을 보안하기 위한 방법.
KR1020187019734A 2015-12-11 2016-12-09 신뢰 실행 환경을 갖는 모바일 디바이스 KR102217501B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15306989.3A EP3179690A1 (en) 2015-12-11 2015-12-11 Mobile device having trusted execution environment
EP15306989.3 2015-12-11
PCT/EP2016/080527 WO2017098024A1 (en) 2015-12-11 2016-12-09 Mobile device having trusted execution environment

Publications (2)

Publication Number Publication Date
KR20180093038A true KR20180093038A (ko) 2018-08-20
KR102217501B1 KR102217501B1 (ko) 2021-02-18

Family

ID=55027656

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187019734A KR102217501B1 (ko) 2015-12-11 2016-12-09 신뢰 실행 환경을 갖는 모바일 디바이스

Country Status (8)

Country Link
US (1) US10878083B2 (ko)
EP (2) EP3179690A1 (ko)
JP (1) JP6888011B2 (ko)
KR (1) KR102217501B1 (ko)
CN (1) CN108781210B (ko)
BR (1) BR112018011782A2 (ko)
ES (1) ES2917183T3 (ko)
WO (1) WO2017098024A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200080386A (ko) * 2018-12-18 2020-07-07 서울여자대학교 산학협력단 커널 무결성 검사 장치 및 방법
US11132440B2 (en) 2018-11-01 2021-09-28 Foundation Of Soongsil University-Industry Cooperation Hybrid trust execution environment based android security framework, android device equipped with the same and method of executing trust service in android device
KR102390381B1 (ko) * 2020-11-25 2022-04-25 고려대학교 산학협력단 시뮬레이션 데이터 기반 웹 페이지 로드 시간 예측 장치, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11424931B2 (en) * 2016-01-27 2022-08-23 Blackberry Limited Trusted execution environment
KR102604046B1 (ko) * 2016-11-28 2023-11-23 삼성전자주식회사 전자 기기의 프로그램 관리 방법 및 장치
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
US10897459B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
US10972265B2 (en) * 2017-01-26 2021-04-06 Microsoft Technology Licensing, Llc Addressing a trusted execution environment
US10528749B2 (en) * 2017-03-20 2020-01-07 Huawei Technologies Co., Ltd. Methods and apparatus for containerized secure computing resources
CN109218260B (zh) * 2017-07-03 2020-11-06 深圳市中兴微电子技术有限公司 一种基于可信任环境的认证保护系统及方法
US11403540B2 (en) * 2017-08-11 2022-08-02 Google Llc On-device machine learning platform
CN109787943B (zh) * 2017-11-14 2022-02-22 华为技术有限公司 一种抵御拒绝服务攻击的方法及设备
US10872144B1 (en) * 2017-12-07 2020-12-22 Ent. Services Development Corporation Lp Systems and methods for secure processing of data streams having differing security level classifications
US10911236B2 (en) * 2017-12-13 2021-02-02 Paypal, Inc. Systems and methods updating cryptographic processes in white-box cryptography
US10922441B2 (en) * 2018-05-04 2021-02-16 Huawei Technologies Co., Ltd. Device and method for data security with a trusted execution environment
US11093604B2 (en) 2018-07-27 2021-08-17 BicDroid Inc. Personalized and cryptographically secure access control in trusted execution environment
US11206130B2 (en) * 2018-07-31 2021-12-21 Nxp B.V. Customizing cryptographic keys between multiple hosts
US10908935B1 (en) * 2018-08-02 2021-02-02 Raytheon Company Estimation of guest clock value based on branch instruction count and average time between branch instructions for use in deterministic replay of execution
EP3608806A1 (en) * 2018-08-09 2020-02-12 Gemalto Sa Anti cloning for white box protected data
US11126754B2 (en) 2018-11-30 2021-09-21 BicDroid Inc. Personalized and cryptographically secure access control in operating systems
CN109739522B (zh) * 2019-01-03 2022-02-18 中国—东盟信息港股份有限公司 一种适用于eSIM应用的TEE OS适配系统
US11646870B2 (en) * 2019-01-23 2023-05-09 International Business Machines Corporation Securing mobile device by RAM-encryption
CN113614720A (zh) * 2019-03-13 2021-11-05 华为技术有限公司 一种动态配置可信应用程序访问控制的装置和方法
CN110543764B (zh) * 2019-09-11 2021-07-23 飞腾信息技术有限公司 片上系统内存防护方法、密码加速引擎及内存防护装置
US11416619B1 (en) * 2019-09-24 2022-08-16 Sprint Communications Company L.P. Trusted boot-loader authentication
CN110855667B (zh) * 2019-11-14 2023-04-07 宁夏吉虎科技有限公司 一种区块链加密方法、装置及系统
CN111881467B (zh) * 2020-06-12 2022-10-28 海光信息技术股份有限公司 利用安全处理器保护文件的方法、装置、cpu和计算机设备
CN111740824B (zh) * 2020-07-17 2020-11-17 支付宝(杭州)信息技术有限公司 可信应用管理方法及装置
CN112506531A (zh) * 2020-12-11 2021-03-16 中国科学院信息工程研究所 软件安装方法、装置、电子设备和存储介质
FR3118223B1 (fr) * 2020-12-17 2023-11-17 Tages Methode d’association d’un programme logiciel executable avec une plateforme informatique
US11979396B2 (en) 2021-05-19 2024-05-07 Bank Of America Corporation Information security system and method for machine-to-machine (M2M) security and validation
CN114021141A (zh) * 2021-10-29 2022-02-08 中国银联股份有限公司 一种电子设备、可信应用调用方法、装置、设备及介质
CN115017495B (zh) * 2021-11-09 2023-08-08 荣耀终端有限公司 定时校验方法、电子设备和可读存储介质
SE2250289A1 (en) * 2022-03-03 2023-09-04 Crunchfish Digital Cash Ab Preventing fraudulent use by cloning of a trusted application
CN114553603B (zh) * 2022-04-25 2022-07-29 南湖实验室 一种基于隐私计算的新型数据可信解密的方法
WO2024075929A1 (ko) * 2022-10-04 2024-04-11 삼성전자 주식회사 신뢰 실행 환경을 제공하기 위한 전자 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130100351A (ko) * 2010-12-17 2013-09-10 구글 인코포레이티드 비접촉 스마트 카드용 로컬 신뢰 서비스 매니저
US20140040622A1 (en) * 2011-03-21 2014-02-06 Mocana Corporation Secure unlocking and recovery of a locked wrapped app on a mobile device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
CA2659826C (en) * 2006-09-07 2013-08-13 Nokia Corporation Managing information relating to secure module applications
KR101744748B1 (ko) * 2011-01-05 2017-06-09 한국전자통신연구원 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
US9317689B2 (en) * 2012-06-15 2016-04-19 Visa International Service Association Method and apparatus for secure application execution
US11228427B2 (en) * 2014-02-11 2022-01-18 Ericsson Ab System and method for securing content keys delivered in manifest files
CN104134038B (zh) * 2014-07-31 2016-11-23 浪潮电子信息产业股份有限公司 一种基于虚拟平台的安全可信运行保护方法
US9871821B2 (en) * 2014-11-11 2018-01-16 Oracle International Corporation Securely operating a process using user-specific and device-specific security constraints
CN104765612B (zh) * 2015-04-10 2018-05-08 武汉天喻信息产业股份有限公司 一种访问可信执行环境、可信应用的系统及方法
EP3086585B1 (en) * 2015-04-23 2019-12-11 Nxp B.V. Method and system for securing data communicated in a network
US10114958B2 (en) * 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions
US10178164B2 (en) * 2015-08-31 2019-01-08 Visa International Service Association Secure binding of software application to communication device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130100351A (ko) * 2010-12-17 2013-09-10 구글 인코포레이티드 비접촉 스마트 카드용 로컬 신뢰 서비스 매니저
US20140040622A1 (en) * 2011-03-21 2014-02-06 Mocana Corporation Secure unlocking and recovery of a locked wrapped app on a mobile device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132440B2 (en) 2018-11-01 2021-09-28 Foundation Of Soongsil University-Industry Cooperation Hybrid trust execution environment based android security framework, android device equipped with the same and method of executing trust service in android device
US11874919B2 (en) 2018-11-01 2024-01-16 Crowdstrike, Inc. Hybrid trust execution environment based android security framework, android device equipped with the same and method of executing trust service in android device
KR20200080386A (ko) * 2018-12-18 2020-07-07 서울여자대학교 산학협력단 커널 무결성 검사 장치 및 방법
KR102390381B1 (ko) * 2020-11-25 2022-04-25 고려대학교 산학협력단 시뮬레이션 데이터 기반 웹 페이지 로드 시간 예측 장치, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체

Also Published As

Publication number Publication date
EP3387813B1 (en) 2022-04-20
JP6888011B2 (ja) 2021-06-16
US20190005229A1 (en) 2019-01-03
CN108781210B (zh) 2021-11-09
BR112018011782A2 (pt) 2018-12-04
EP3387813A1 (en) 2018-10-17
KR102217501B1 (ko) 2021-02-18
US10878083B2 (en) 2020-12-29
EP3179690A1 (en) 2017-06-14
CN108781210A (zh) 2018-11-09
JP2019505887A (ja) 2019-02-28
ES2917183T3 (es) 2022-07-07
WO2017098024A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
KR102217501B1 (ko) 신뢰 실행 환경을 갖는 모바일 디바이스
US11416605B2 (en) Trusted execution environment instances licenses management
US9054865B2 (en) Cryptographic system and methodology for securing software cryptography
EP3394788B1 (en) Method and system for enhancing the security of a transaction
CN110326266B (zh) 一种数据处理的方法及装置
CN108702353B (zh) 接收电子实体内的数据的方法及相关联的电子实体
US11704442B2 (en) Instance handling of a trusted execution environment
EP3048553B1 (en) Method for distributing applets, and entities for distributing applets
Ahmad et al. Enhancing the security of mobile applications by using TEE and (U) SIM
KR102543267B1 (ko) 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치
Cooijmans et al. Secure key storage and secure computation in Android
Ribeiro et al. DBStore: A TrustZone-backed Database Management System for Mobile Applications.
KR101906484B1 (ko) 어플리케이션 보안 방법 및 이를 수행하기 위한 시스템
KR102474650B1 (ko) 사용자 인증모듈(usim)이 탑재되는 보안 요소
EP3009952A1 (en) System and method for protecting a device against attacks on procedure calls by encrypting arguments
Sitawarin iOS Security
Kim et al. An integrity-based mechanism for accessing keys in a mobile trusted module
Sivertsgård Using Smart Cards to Mitigate Security Threats on Mobile Devices
Ju et al. The Issue of Data Transfer for the Embedded SE on Mobile Devices

Legal Events

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