JP2019505887A - 信頼できる実行環境を有するモバイル装置 - Google Patents

信頼できる実行環境を有するモバイル装置 Download PDF

Info

Publication number
JP2019505887A
JP2019505887A JP2018529986A JP2018529986A JP2019505887A JP 2019505887 A JP2019505887 A JP 2019505887A JP 2018529986 A JP2018529986 A JP 2018529986A JP 2018529986 A JP2018529986 A JP 2018529986A JP 2019505887 A JP2019505887 A JP 2019505887A
Authority
JP
Japan
Prior art keywords
trusted
application
mobile
mobile device
key
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2018529986A
Other languages
English (en)
Other versions
JP6888011B2 (ja
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 JP2019505887A publication Critical patent/JP2019505887A/ja
Application granted granted Critical
Publication of JP6888011B2 publication Critical patent/JP6888011B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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)
  • Debugging And Monitoring (AREA)
  • Automatic Cycles, And Cycles In General (AREA)
  • Telephone Function (AREA)
  • Storage Device Security (AREA)

Abstract

モバイル装置上で実行するためのモバイルappを安全にするための機構。この機構は、モバイルappの信頼できない部分を信頼できないアプリケーションプロバイダからモバイル装置にロードすることと、キー提供サーバを動作させて信頼できる実行環境と関連付けられたキーを生成し、信頼できる実行環境と関連付けられたキーをモバイル装置およびキーディレクトリサーバに送信することと、モバイル装置を認証することと、モバイル装置を認証すると、信頼できるアプリケーションを含むモバイルappの信頼できる部分をモバイル装置に送信することと、モバイルappの信頼できる部分をモバイル装置にインストールし、それにより、信頼できる実行環境を提供することとを含む。他のシステムおよび方法が開示される。

Description

本発明は一般に、モバイル装置に関し、より詳細には、信頼できる実行環境を有するモバイル装置、および、モバイル装置にロードされ実行される信頼できるアプリケーションのライフサイクルを通して、こうした信頼できるアプリケーションのセキュリティを管理することを提供することに関する。
モバイル通信装置の短い歴史において、装置は、主としてまたは完全に携帯電話通信のみに供せられるものから、非常に強力な多用途の装置へと急速に進化してきた。最近の技術の進歩とともに、モバイル装置たとえば携帯電話を、支払い、交通機関の切符発売、ポイントプログラム、銀行口座アクセス、建物または事務所への物理的アクセス制御などといった異なる用途に今や使用可能である。近距離無線通信は、こうした新しい機能をモバイル装置上で可能とする1つの実現技術である。
セキュリティは、多くのこうした機能についての重要な基準である。たとえば、成功する商用プログラムにとって、モバイル取引は安全であり、口座番号、取引パターン、個人データ、または、取引を安全なものとする際に使用される暗号キーといった情報を盗もうとする攻撃者によって容易に傍受されないといった信用を有することができることは、しばしば必要な要素である。
モバイル装置の主プロセッサの安全な領域である信頼できる実行環境(TEE)は、あるモバイル装置上で実行するアプリケーションの強化されたセキュリティのための1つの機構を提供する。信頼できる実行環境はハードウェア内に実装される。TEEは、信頼できるアプリケーションのための隔離された実行環境を提供し、それにより、より高いレベルのセキュリティを提供する。
GlobalPlatformは、標準化された信頼できる実行環境(TEE)を提供することを含む、安全なチップ技術に基づく安全なコンピューティングのための仕様を公表している。TEEは主プロセッサ内に、信頼できる環境内で秘密データが記憶され、処理され、保護されることを保証する安全な領域を備えている。GlobalPlatformは、標準的なアプリケーションプログラムインタフェース(API)を提供する。appとしても知られるアプリケーションプログラムは、APIを通して、GlobalPlatformの信頼できる実行環境の安全なプロセッサ領域によって提供される安全な機能にアクセスすることができる。
商用のTEEソリューションの一例は、ARM社、英国、ケンブリッジが提供するARM TrustZone技術である(http://www.arm.com/products/processors/technologies/trustzone/)。TrustZone技術は、プロセッサと強固に統合されている一方、安全な環境をプロセッサの外側、たとえばメモリおよび暗号ブロックといった周辺機器に拡張し、たとえばTrusted Applicationsといったセキュリティ意識の高いアプリケーションに対してシステム全体にわたるセキュリティを可能とする。
あいにく、多くのモバイル装置は、信頼できる実行環境をハードウェアに実装する技術を装備していない。しかし、このことは、こうしたより制限された装置に、信頼できる実行環境のような安全なコンピューティング機能を提供する必要性を減少させることにはならない。そうでなければ、装置上で実行するアプリケーションは、装置のユーザの秘密情報を暴露し、または、ユーザもしくはサービスプロバイダに経済的な損失を生じさせる恐れのあるマルウェア、および、広範な考えられる攻撃に対して脆弱である。
上述のことから、プロセッサのハードウェア内に実装された安全な領域を装備していない装置に対して、安全な信頼できる実行環境を提供するための、柔軟で使いやすくなおかつ強力な機構を提供する改良された方法が依然として必要であることは明らかであろう。理想的には、こうしたソリューションは、たとえばGlobalPlatformによって提供される、信頼できる実行環境ソリューションのハードウェア実装と互換性があり、それにより、プロセッサベースの信頼できる実行環境、ならびに、こうしたハードウェアを必要としない代替機構で実行するappを開発することができる。
上述のことから、ハードウェアTEEの特定のハードウェア機能を欠くモバイル装置上に、ハードウェア実装されたTEEと等しいセキュリティ強化を提供するための改良された方法が依然として必要なことは明らかであろう。
ARM社、英国、ケンブリッジ、TrustZone、http://www.arm.com/products/processors/technologies/trustzone/ TEEクライアントAPI仕様v1.0 GPD_SPE_007、GlobalPlatform、2011年12月(http://www.globalplatform.org/specificationsdevice.asp) S.Chow、P.Eisen、H.Johnson、P.C.van Oorschot、White−Box Cryptography and an AES Implementation、第9回年次ワークショップ Selected Areas in Cryptography(SAC 2002)、8月15−16日 2002年 Julien Bringer、Herve Chabanne、およびEmmanuelle Dottax、White Box Cryptography:A New Attempt、Cryptology ePrint Archive、レポート2006/468、2006年 第3世代パートナーシッププロジェクトの3GPP TS23.003仕様書
本発明の実施形態の諸態様は一般に、モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法であって、モバイル装置は、
信頼できないアプリケーションプロバイダからのモバイルアプリケーションの信頼できない部分を、モバイル装置にロードし、
信頼できるアプリケーションプロバイダからのモバイルアプリケーションの信頼できる部分を、モバイル装置にロードし、
モバイルアプリケーションの信頼できる部分をモバイル装置にインストールし、それによって信頼できる実行環境を提供する
ように構成されることを含む、方法に関する。
本発明の一実施形態によれば、モバイルアプリケーションの信頼できる部分をモバイル装置にロードすることは、
モバイルアプリケーションが、モバイルアプリケーションの識別子およびモバイル装置の装置フィンガープリントから、信頼できる実行環境id TEE IDを生成するステップであって、前記生成された信頼できる実行環境id TEE IDが、モバイルアプリケーションによってキー提供サーバに送信されるステップと、
キー提供サーバを動作させて、信頼できる実行環境id TEE IDと関連付けられるキーを生成し、キーディレクタに、信頼できる実行環境id TEE IDおよび生成されたキーを送信し、モバイル装置に、生成されたキーを送信するステップと、
信頼できるアプリケーションプロバイダが、TEE ID、および、モバイル装置によって送信された生成されたキーから計算されたTEE IDのハッシュを受信し、キーディレクタサーバを通してモバイル装置を認証するように構成されるステップと、
モバイル装置を成功裏に認証した際に、信頼できるアプリケーションプロバイダを動作させて、信頼できるアプリケーションを含むモバイルアプリケーションの信頼できる部分をモバイル装置に送信するステップと、
モバイル装置が、モバイルアプリケーションの信頼できる部分をモバイル装置にインストールするように構成され、それにより、信頼できる実行環境を提供するステップと、
を含む。
本発明の一実施形態によれば、モバイルアプリケーションの信頼できない部分は、
モバイル装置のリッチ実行環境内で実行可能なクライアントアプリケーションと、
信頼できるアプリケーションを実装できる命令セットのための信頼できるアプリケーションインタープリタと、
を含む。
本発明の一実施形態によれば、信頼できるアプリケーションは、信頼できるアプリケーションインタープリタによって解釈できる命令セット内で実装される。
本発明の一実施形態によれば、モバイルアプリケーションに関連付けられたキーは、ホワイトボックスキー「WBCキー」およびイニシャルピン(pin)暗号キー「IPEK」を含み、さらに、方法は、モバイルアプリケーションと関連付けられたキーをモバイル装置に送信する前に、WBCキーを使用してIPEKを暗号化することを含み、IPEKの暗号化バージョンがモバイル装置に送信される。
本発明の一実施形態によれば、モバイルアプリケーションの信頼できる部分は、信頼できるサーバプロバイダによってモバイル装置に送信される前に、イニシャルピン暗号キー「IPEC」から生成されたセッションキーを使用して暗号化される。
本発明の一実施形態によれば、モバイルアプリケーションの信頼できない部分は、信頼できる実行環境のハードウェア実装に似た機能を実装する、アプリケーションプログラムインタフェースを含む。
本発明の一実施形態によれば、モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法は、
信頼できるアプリケーションを信頼できる安全な記憶装置と関連付けるステップと、
最初のランダム秘密をモバイル装置の安全な記憶装置に記憶するステップと、
信頼できるアプリケーションの安全な記憶装置内のデータにアクセスするたびに、最初のランダム秘密「IRS」、装置のフィンガープリント、および、信頼できるアプリケーションのための一意のid「UUID」を使用して、信頼できるアプリケーションと関連付けられた信頼できる記憶装置に記憶されたデータを暗号化するために、安全な記憶データキー「TA_SK」を生成するステップと、
を含む。
本発明の一実施形態によれば、モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法は、
信頼できるアプリケーションを実行する間に、
信頼できるアプリケーションのその特定の実行と関連付けられた1回限りのランタイムキーを決定するステップと、
信頼できるアプリケーションのその特定の実行中に、信頼できるアプリケーションによって使用されるランタイムメモリに数量を記憶するとき、1回限りのランタイムキーを使用してその数量をマスクするステップと、
信頼できるアプリケーションのその特定の実行中に、信頼できるアプリケーションによって使用されるランタイムメモリから数量を取得するとき、1回限りのランタイムキーを使用してその数量をアンマスクするステップと、
を含む。
本発明の一実施形態によれば、モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法は、
実行または解釈するためにコンパイルされた形式を有する信頼できるアプリケーションを初回に実行した際に、信頼できるアプリケーションのコンパイルされた形式に基づいて第1の値を計算し、信頼できるアプリケーションのコンパイルされた形式に基づいてその値を記憶するステップと、
信頼できるアプリケーションの後続の実行をした際に、信頼できるアプリケーションのコンパイルされた形式に基づいて同じ計算を実施し、信頼できるアプリケーションのコンパイルされた形式に基づいて第2の値を生成し、第1の値と第2の値を比較し、第1の値と第2の値が同一でない場合は矯正アクションを行うステップと、
を含む。
本発明の一実施形態によれば、モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法は、
ソフトウェアの信頼できる実行環境の初回の実行をした際に、モバイルアプリケーションの特定の命令の予想実行時間を決定し、
前記一定の命令の予想実行時間を記憶し、
ソフトウェアの信頼できる実行環境の後続の実行中に、
命令数を追跡し、
システムクロックを定期的にフェッチし、
現在の命令数から予想実行時間を計算し、
予想実行時間と現在のシステムクロックを比較し、
比較が受け入れがたい偏差を示す場合に矯正アクションを行う
ことにより、潜在的なタイムシフト攻撃を防御するステップをさらに含む。
本発明の一実施形態によれば、特定の命令はアプリケーションプログラムインタフェースの機能に対する呼び出しである。
本発明の一実施形態によれば、モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法は、
信頼できるアプリケーションの重要な部分を、複数のループを有し、各ループが短いループまたは長いループとして実行されることができるダミーコード部で修正するステップと、
ダミーコード部の内部および信頼できるアプリケーションの前記重要な部分の近傍に複数の検査ポイントを割り当てるステップと、
信頼できるアプリケーションを実行した際に、定義された数の短いループおよび長いループを実行する、ダミーコードを通る実行経路を決定するステップと、
各検査ポイントの予想到達時間を決定するステップと、
検査ポイントに到達した際に、予想到達時間と実際の到達時間を比較し、実際の到達時間と予想到達時間の間の偏差が所定のしきい値を超える場合に、矯正アクションを行うステップと、
を含む。
モバイルアプリケーションが、App Storeからモバイル計算装置にロードされ、サービスプロバイダ(SP)からのサービスにアクセスするために使用することができる環境を示すブロック図である。 図1のネットワークをより詳細に示す上位レベルの略図である。 図1および図2のモバイル装置のハードウェア構成要素を示すブロック図である。 図1、図2および図3のモバイル装置のメモリに記憶することができる、攻撃から保護すべきデータを含む例示的なソフトウェアモジュールおよびデータを示すブロック図である。 図1、図2、図3および図4のモバイル装置にモバイルappをロードし、一実施形態に従ってこうしたモバイルappのセキュリティ態様を初期化するステップを示す流れ図である。 一実施形態による、モバイルアプリケーションのための信頼できる実行環境を有するモバイル装置の一実施形態を示すブロック図である。 信頼できるアプリケーションと信頼できる記憶領域の関係を示すブロック図である。 モバイルアプリケーションがロードされるモバイル装置と、図6の信頼できるアプリケーションを供給する際に使用されるキー多様化を実施するための信頼できるサービスマネージャハブとの接続を示す接続図である。 信頼できるアプリケーションを安全に提供することを可能とする、キー多様化を示すタイミングシーケンス図である。 図6の信頼できるアプリケーション用の記憶装置を安全にするための信頼の基礎として、図9に示したプロセスからのホワイトボックス暗号キーの使用を示すデータフロー図である。 ランタイムメモリダンプからのデータの悪意ある取得を防止するためのランタイムメモリの一部の暗号化を示すタイミングシーケンス図である。 信頼できるアプリケーションの改竄を検出するための一実施形態の機構を示す流れ図である。 クロック完全性チェックが、クロック変更攻撃を防ぐために使用される一実施形態の機構を示す流れ図である。 知られている継続時間を有する選択されたループの実行時間が、たとえば、デバッガを使用しての改竄の可能性を決定するために検査される、モバイルappの例示の実行を示す実行経路図である。 ランダム化された実行継続時間が改竄の可能性を決定するために検査される、ランタイム中の実行経路のランダム化を示す流れ図である。
以下の詳細な説明において、本発明が実施される特定の実施形態を説明のために示す添付の図面を参照する。これらの実施形態は、当業者が当発明を実施できるように、十分詳細に記載されている。本発明の様々な実施形態は、異なってはいるものの、必ずしも互いに相容れないものではないことを理解されたい。たとえば、本明細書で一実施形態と関連して記載されている特定の機能、構造または特徴は、他の実施形態に実装することができる。さらに、開示された各実施形態の個々の要素の位置または配置は、本発明の趣旨および範囲から逸脱することなく、変更することができることを理解されたい。したがって、以下の詳細な説明を限定的な意味で受け取るべきではなく、本発明の範囲は、適切に解釈された添付の特許請求の範囲によって定義される。図面において、同じ番号はいくつかの図を通して同一または類似の機能を指している。
本発明の一実施形態において、信頼できる実行環境をサポートするためのハードウェア機構を備えていないモバイル装置上で、信頼できる実行環境(TEE)が利用できるようになる機構を提供する技術が提供される。この提供された機構により、標準的なハードウェアでサポートされる信頼できる実行環境のアプリケーションプログラマインタフェースに対して開発されている一方で、エンドユーザおよびサービスプロバイダによって等しく信頼される信頼できるアプリケーションが開発できるようになり、それにより、こうしたハードウェアベースの信頼できる実行環境向けに本明細書に記載された機構のために開発されたアプリケーションを、容易に移植することができるようになる。
図1は、モバイル装置103を1つまたは複数のリモートサービスプロバイダ(SP)サーバ113に接続しているネットワーク111の略図である。SPは任意の無数の可能なサービスを提供することができる。典型的な例としては、オンラインバンキング、オンライン取引、オンライン教育、オンライン投票などがあげられる。この文書の読者が認識するように、これらの例においては、取引のセキュリティが極めて重要である。
ユーザ101は、モバイル装置103を操作して、ネットワークを介してSPサーバ113のうちの1つと対話する。こうした対話は、モバイル装置103にダウンロードされた専用のアプリケーションプログラムを使用して実施するのが有利である。Appとしても知られるこうした専用のアプリケーションプログラムは、ユーザに機能豊富な環境を提供し、ユーザ101は、それを通してサーバアプリケーションと対話する。ユーザは、app store115からAppを入手することができる。app store115の例としては、iPhone(登録商標)およびiPad(登録商標)などIOS装置用のapp用のApple社(Cupertino、California、USA)によって提供されるapp store、Google社(Mountain View、California、USA)によって提供されるGoogle Play app store、および、Microsoft社(Redmond、Washington、USA)によるWindows Storeがあげられる。
この文書の読者が認識するように、多くのオンライン取引にとって、セキュリティが最も重要である。したがって、app自体が信頼されなければならず、appによって管理されるデータは保護されなければならない。
図2は、ネットワーク111のさらなる詳細を示した上位レベルの略図である。各加入者モバイル装置103は、モバイルネットワークオペレータ(MNO)117を介して他のネットワーク装置と通信を行う。装置103のユーザ101は、MNO117の加入者であり、たとえば、MNO117は、モバイル電話サービスのプロバイダといってよい。
個々のサービスプロバイダ(SP)が、メッセージの送信、アプリケーションの管理、サービスの提供、およびセキュリティ機構の提供のためにそれぞれ個々のモバイルネットワークオペレータと対話しなければならないとしたら、処理の一環にせよ、配備の一環にせよ、混乱が起こるであろう。したがって、信頼できるサービスマネージャ(TSM)として知られる中心アクタが、SPとMNOとの間の通信を管理するためにGlobalPlatformに導入される。
図2は、サービスプロバイダ(SP)とモバイルネットワークオペレータ(MNO)との関連において、信頼できるサービスマネージャ(TSM)がいかにして役割を果たすことができるかの例を提供する。コンピュータハードウェア119−Cとソフトウェア(図示せず)の組合せである各TSM119は、サービスプロバイダ(SP)115とモバイルネットワークオペレータ(MNO)117との間のリンクを確立する。各TSMは、多数のMNOを多数のSPに接続することができる。逆に、所与のSP115またはMNO117は、1つのTSM119または多数のTSM119のどちらかに接続することができる。
この説明において、いくつかの関連する要素はそれぞれn−E、n−Cおよびn−Sと呼ばれる。Eはエンティティ、Cはコンピュータ、Sはソフトウェアを表す。したがって、n−Eはエンティティn−Eであり、コンピュータn−Cを動作させ、コンピュータn−Cは命令n−Sに従って実行する。たとえば、信頼できるサービスマネージャエンティティ119−Eは、信頼できるサービスマネージャソフトウェアを実行するコンピュータ119−Cを動作させる。説明を容易にするために、発明者らは時に数字n、たとえばTSM119、によってこうした要素に言及する。文脈上明白に逆の意味となる場合を除いて、通常、これは、それぞれの役割を実施する3つの要素すべてを参照することを意味していると理解すべきである。たとえば、信頼できるサービスマネージャコンピュータ119−Cは、信頼できるサービスマネージャソフトウェア119−Sのソフトウェアによって指図されたいくつかの行動を実施する。)
図3はモバイル装置103の略図である。モバイル装置103は、バス202を介してランダムアクセスメモリ(RAM)203、リードオンリメモリ(ROM)204および不揮発性メモリ(NVM)205に接続されたプロセッサ201を備えることができる。モバイル装置103は、この場合も通常はバス202を介して、プロセッサ201を、モバイル装置103をホストコンピュータまたは他の周辺機器に接続することができるアンテナ211に接続するための入力/出力インタフェース207をさらに備える。
NVM205は、図4に示すように、コンピュータプログラム301を含むことができる。ここでは、コンピュータプログラム301は、すべてNVM205に配置されるように描かれているが、プログラムは多数のメモリにわたって配備することができ、一時的にRAM203にインストールすることさえ可能であるので、実務においてはこうした制約はない。さらに、モバイル装置103は、多数のROMまたはNVMを備えることができる。プログラム301は、モバイル装置103にロードされた、オペレーティングシステムプログラムおよびアプリケーションプログラムを含む。モバイルapp215のNVM205はまた、秘密キー212または共有秘密キー209といった、基本形式または導出量のどちらかで記憶された個人データ、および、口座番号といった他のユーザ個人情報214を含むことができる。こうしたデータを安全にするための機構は本明細書で後に説明する。
モバイル装置103のプログラム301は、暗号モジュール213、通信モジュール217、およびオペレーティングシステムOS219を含むことができる。
本明細書で既に論じたように、モバイルapp215は、極めて慎重な取り扱いを要するデータを操作する、たとえばオンラインバンキング口座にアクセスする、および、秘密データへのアクセスを提供するために使用することができる。こうしたモバイルapp215を安全にするために、本明細書で信頼できない部分と信頼できる部分と呼ばれる2つの部分に、モバイルapp215を分割する技術が提供される。信頼できない部分は、モバイルプラットフォーム、たとえばIOSまたはAndroid、によって提供されるリッチ実行環境(REE)501で実行する部分である。したがって、信頼できない部分は、モバイルプラットフォームによって提供されるリッチなユーザ体験を提供することができ、一方、開発者およびサービスプロバイダは、その部分のセキュリティ違反について心配する必要がない。言い換えれば、信頼できない部分の配信を、信頼できない配信者、たとえばあるapp storeに対してアンロードすることは安全であると考えられる。
他方、信頼できる部分は、セキュリティ対策が必要とされるモバイルapp215の部分である。こうした部分は、信頼できるサイトから安全なチャネルを介してダウンロードされ、さらに暗号によって安全にされる。
図5は、一実施形態による安全なモバイルapp215をロードし初期化するステップを示す流れ図である。ユーザ101(またはモバイルネットワークオペレータ117など別のアクタ)は、信頼できない部分をモバイル装置103のNVM205にインストールする(ステップ551)。図5に示すように、最初のステップ551は、信頼できない部分をapp storeからダウンロードすることからなるとしてよい。app storeの例としては、IOS装置にはApple社のApp Store、Android装置にはGoogle Playがあげられる。信頼できない部分の詳細は、以下の図6に関連して論ずる。
モバイルapp215の信頼できる部分をロードして安全にすることは、通常、ブートストラップモジュール509の指揮下で、モバイルapp215を最初に使用する際に行われてよい(ステップ553)。サブステップ555において、信頼できる部分は、提供サーバ、たとえば、信頼できるサービスマネージャ119、サービスプロバイダまたは認証することができるサービスプロバイダの代行者として知られる信頼できるサーバからダウンロードされる。モバイルapp215の信頼できる部分の構成要素の詳細は、図6と関連して論ずるが、各モバイルapp215は、1つまたは複数の信頼できるアプリケーション519からなることに留意されたい。
モバイルapp215の信頼できる部分および信頼できない部分のロード後に、ステップ557が続いてもよい。ステップ557は、信頼できない部分からの方法の呼び出しが、期待される信頼できるアプリケーション219に到達するように、何らかの方法でこうした部分を関連付け、関連付けるステップは、リンクステップを含むことができる。
信頼できるアプリケーション219と関連付けられた信頼できる記憶装置に記憶された、信頼できる部分およびデータを安全にするための機構は、暗号キーに依存する。モバイルアプリケーションの初回の実行中に、キー提供ステップ559が実行されて必要なキーを入手する。キー提供ステップ559は、たとえば、図8および図9と関連させて以下でより詳細に説明する。
次いで、信頼できる部分がロードされ信頼できない部分とリンク付けされると、モバイルapp215が実行される(ステップ561)。
図6は、モバイルアプリケーション215に信頼できる実行環境を提供するための一実施形態を示す。上位レベルでは、モバイルapp215は、信頼できない部分と信頼できる部分の2つの部分からなる。前者は、信頼できないソースからダウンロードすることができ、安全化する必要はない。信頼できない部分は、モバイルプラットフォームOSによって提供されたリッチ実行環境(REE)501で実行するモバイルapp215の要素、および、安全化する必要のない信頼できる実行環境のインフラストラクチャ要素を含む。信頼できる部分は、暗号で安全化されている信頼できるソースからロードされ、次いで、モバイルapp215に組み込まれているソフトウェアの信頼できる実行環境(Soft TEE)503を通して実行する。
モバイルプラットフォームOSのバーチャルマシンインタープリタ515が、モバイルapp215の信頼できない部分の命令を解釈する。
スマートフォンといったモバイルプラットフォームは、リッチ実行環境(REE)501を提供する。REE501は、広範囲にわたって柔軟性のある機能レパートリーを提供し、そこから、強力で魅力的かつ有用なモバイルapp215を作成することができる。電話を使用することができる多くのことに際してのスマートフォンの任意の使用、および、多彩なappによって提供される賢いユーザインタフェースを、ユーザは日々利用することができる。REEがリッチで強力な実行環境を提供する一方で、REEは装置が、その装置のユーザの秘密情報または貴重な情報を危うくするおそれがある攻撃を脆弱なままにしておく。本明細書で説明した技術は、Soft TEE503をモバイルapp215に導入することにより、こうしたセキュリティリスクを軽減する機構を提供する。
ステップ551でロードされた信頼できない部分は、REE501で実行するモバイルapp215の部分を含む。こうしたREE構成要素507は、クライアントアプリケーション505、ブートストラップモジュール509、REE プロキシ511および安全なアプリケーションAPI513を含む。ブートストラップモジュール509は、提供サーバからのキー提供を整理し、信頼できる構成要素を初回にロードし、その構成要素をリンク付する命令を含む。REE プロキシ511は、モバイルapp215が外部のサーバ、特に、信頼できるサービスマネージャ119と対話することができる機構を提供する。REE プロキシ511はさらに、発行者セキュリティドメイン(ISD)529とインタフェースで接続する。特定のGlobalPlatformアプリケーションに割り当てられたメモリ領域は、セキュリティドメイン(SD)と呼ばれる安全な領域で管理することができる。セキュリティドメインは、オフデバイス権限のオンデバイス代表である。セキュリティドメイン(SD)は、キー処理、暗号化、復号、デジタル署名生成、および、各SD、たとえば発行者または信頼できるサービスマネージャと関連付けられたエンティティのアプリケーション検証といったセキュリティサービスをサポートする。各SDは、特定のアクタ、たとえばカード発行者(発行者セキュリティドメイン)、アプリケーションプロバイダ(アプリケーションセキュリティドメイン)、またはTSM(TSM SD)を代表して確立される。SDは、キーおよび他の安全な情報を1つのアクタから他のアクタへ隔離するように確立される。逆もまた同様である。
したがって、ISDすなわち発行者セキュリティドメインは、装置の発行者と関連付けられたモバイル装置上のセキュリティドメインであり、発行者と関連付けられたキーを管理するために使用される。ISD529は、ステップ551でモバイルappを初回にロードする間に、モバイル装置103にダウンロードすることができる。
安全なアプリケーションAPI513は、たとえば、TEEクライアントAPI仕様v1.0 GPD_SPE_007、GlobalPlatform、2011年12月(http://www.globalplatform.org/specificationsdevice.asp)において定義されたGlobalPlatform Client APIを実装することができる。モバイルapp215の安全でない部分は、安全なアプリケーションAPI513を使用して、モバイルapp215の安全な部分にアクセスする。GlobalPlatformにおいて、信頼できる実行環境(TEE)はハードウェアに実装され、GlobalPlatform Client APIを使用して、アプリケーションによってアクセスされる。一実施形態において、安全なアプリケーションAPI513が実装され、モバイルapp215が一度書き込まれ、TEEのハードウェア実装を有する装置上で実行されるか、または本明細書で説明したSoft TEE503を使用するように、GlobalPlatform Client APIをエミュレートする。その結果、GlobalPlatform Client APIエミュレーションとしての安全なアプリケーションAPI513の実装により、モバイルapp215は、GlobalPlatform TEEを実装する装置に容易に移植される。
安全なアプリケーションAPI513は、ステップ551でモバイルappを初回にロードする間に、モバイル装置103にダウンロードすることができる。
したがって、REE501のセキュリティリスクを克服するために、ソフトウェアの信頼できる実行環境(Soft TEE)503が、モバイルアプリケーション215に提供される。Soft TEE503のインフラストラクチャは、初回のダウンロードステップ551で、REE構成要素507とともにダウンロードされる。
Soft TEEバーチャルマシン(Soft TEE VM)517は、Soft TEE503の中心的な構成要素である。Soft TEE VM517は、初回のダウンロードステップ551でダウンロードすることができる。Soft TEE VM517は、モバイルapp215の内側にエミュレーション層を提供する。Soft TEE VM517は、ホスト環境の命令セットとは異なる命令セットを実行する。したがって、マシン本来のバーチャルマシンインタープリタ515と混同すべきではない。Soft TEE503で実行するプログラム、たとえば信頼できるアプリケーションは、この特別な命令セットに対してコンパイルされ、得られた信頼できるアプリケーションバイナリ519は、Soft TEE VM517によって解釈される。
Soft TEE503システム全体は、Soft TEE VM517内で実行し、クライアントアプリケーション505からの実行隔離を保証する。クライアントアプリケーション505が、Soft TEE503によって保護されるリソースへのアクセスを要求すると、それは安全なアプリケーションAPI513に対して呼び出しを行う。Soft TEE VM517はこうした要求を取得し、これらの要求を対応する信頼できるアプリケーション519にディスパッチする。
先に説明したように、信頼できるアプリケーション519は、Soft TEE VM517によって解釈可能な命令セットに対してコンパイルされる。TEE503の機能にアクセスするために、信頼できるアプリケーションは、内部の安全なアプリケーションAPI525を介して、TEEカーネル527に対する呼び出しを使用する。
信頼できる実行環境の重要な機能は、保護する必要のあるデータ項目を、クライアントapp505など信頼できない構成要素から隔離することである。したがって、Soft TEE503は信頼できる記憶装置523を含む。信頼できる記憶装置523の一部は、それぞれの信頼できるアプリケーション519と関連付けられている。図7は、信頼できるアプリケーション519と信頼できる記憶領域523の関係を示すブロック図である。信頼できる記憶領域523に記憶されたデータは、データ暗号キー、たとえば信頼できるアプリケーション記憶キー701を使用して、それぞれ暗号化される。信頼できるアプリケーション記憶キー701は、キー提供ステップ559の結果として信頼できるアプリケーション519に提供される。これについては以下でより詳細に説明する。
さらに、キー提供ステップ559中のモバイルapp215の個人化は、信頼できるアプリケーション519を安全に受信し、信頼できる各アプリケーション519のための信頼できるアプリケーション記憶キー701を導出するために使用される、個人化された暗号キー材料521を有する、Soft TEE503を提供することを含む。
図8は、モバイルアプリケーションがロードされるモバイル装置103と、図6の信頼できるアプリケーションを提供する際に使用されるキー多様化を実施するための信頼できるサービスマネージャハブ605との間の接続を示す接続図である。
モバイル装置103は、信頼できるサービスマネージャ119に接続されており、図2に示したように、接続はモバイルネットワークオペレータ117を経由してもよい。
信頼できるサービスマネージャ119は、いくつかの関連するサーバ、たとえばキー提供サーバ601およびキーディレクトリサーバ603と、本明細書で信頼できるサービスマネージャハブ605と呼ぶことができる同じ場所に配置することができる。信頼できるサービスマネージャハブ605のこうした構成要素は、モバイル装置103と協働して、モバイルアプリケーション215のセキュリティを強化するために、ソフトウェアTEE503を提供する。
キー提供サーバ601の主要な役割は、モバイルアプリケーション215のREE構成要素507に対応する、信頼できるアプリケーション519を提供する際に使用される、ホワイトボックス暗号キーおよびイニシャルピン暗号キー(IPEK)を生成することである。ホワイトボックス暗号法は、S.Chow、P.Eisen、H.Johnson、P.C.van Oorschot、White−Box Cryptography and an AES Implementation。第9回年次ワークショップ Selected Areas in Cryptography(SAC 2002)、8月15−16日 2002年、および、Julien Bringer、Herve Chabanne、およびEmmanuelle Dottax、White Box Cryptography:A New Attempt、Cryptology ePrint Archive、レポート2006/468、2006年に記載されており、両者とも引用により本明細書に組み込まれている。
秘密キー、Pr.K.Kpsは、キー提供サーバと関連付けられており、サーバが生成するキーにサインすることを可能とする。
キーディレクトリサーバ603の主要な役割は、特定の装置103で実行するモバイルapp215の特定のインスタンス化のために、ソフトウェアTEE503用の一意の識別子と関連付けられたIPEKキーのデータベースを維持することである。データベーステーブルでもよいディレクトリは、本明細書ではキーディレクトリ607と呼ばれる。ソフトウェアTEEの一意の識別子は、本明細書ではTEE IDと呼ばれ、以下でより詳細に説明する。特定のTEE IDが与えられると、キーディレクトリサーバは、問い合わせを行ったクライアント、たとえば信頼できるサービスマネージャ119に、対応するIPEKを提供することができる。
モバイル装置103に信頼できるアプリケーション519を提供するという状況における、信頼できるサービスマネージャ119の主要な役割は、モバイル装置103から信頼できるアプリケーション519に対する要求を受信することである。要求には、モバイル装置103、特にモバイルアプリケーション215が、自身を識別し、その認証を、もっと細かに言うと、TEE IDおよびIPEKを提供することによって証明することができる機構が含まれる。一実施形態において、本明細書で以下に説明するように、IPEKは、モバイル装置103によりハッシュ形式で提供される。
図9は、信頼できるアプリケーションを安全に提供することを可能とするキー多様化を示す、タイミングシーケンス図である。準備ステップ(図示せず)として、モバイルapp215のREE構成要素が、たとえばapp storeからモバイル装置103にダウンロードされる。
ステップ701。モバイルアプリケーション215、特にモバイルアプリケーション215のREE構成要素は、モバイル装置103上で実行するとき、モバイルアプリケーション215用の一意の識別子(TEE ID)を決定する。言い換えると、TEE IDはアプリケーションと装置の両者に依存する。一実施形態において、TEE IDは、アプリケーションに割り当てられた汎用一意識別子(UUID)およびモバイル装置103の装置フィンガープリントに基づいて計算される。これらは、たとえばハッシュを生成するために使用する、またはTEE IDを作成するために連結することができる。
装置フィンガープリントは、ハッシュ、たとえば、アプリケーション識別子、一意のOS識別子、モバイル装置103の無線シリアルおよびモバイル装置103のIMEIの連結のSHA1として計算することができる。アプリケーション識別子は、アプリケーションのパッケージ名である(例として、com.企業名.app名)。一意のOS識別子は、Android OSにおいてはAndroid ID、および、iOSにおいてはVolume UUIDなど、基礎をなすOSによって提供されたパラメータである。無線シリアルは、モバイル装置上の無線装置のシリアル番号である。IMEIすなわち移動端末装置識別子(International Mobile Station Equipment Identity)は、モバイル装置に割り当てられた一意の番号で、第3世代パートナーシッププロジェクトの3GPP TS23.003仕様書に明記されている。
ステップ703。TEE IDがモバイルapp215からキー提供サーバ601に送信される。
ステップ705。キー提供サーバ601は、モバイルapp215からTEE IDを受信し、TEE IDと関連付けられるイニシャルピン暗号キー(IPEK)およびダイナミックホワイトボックス暗号キー(WBC key、Km)を生成する。
好ましい実施形態において、IPEKは、キー提供サーバ601によって生成された一意のランダムAES−256キーである。AES−256は、256ビットキーを使用した高度暗号化標準の1バージョンである。
ホワイトボックス暗号法は、この文書の範囲外である。しかし、以下の目立った点は、本明細書で発表された技術を理解するのに役立つ。ホワイトボックス暗号法は、配信者のアクセス制御実行を超えて配信された配信物を保護するために使用される。たとえば、現在の状況では、モバイル装置は、その装置の発行者の制御を超え、および、モバイル装置で使用するためのappを配信できるサービスプロバイダの制御を超えている。ホワイトボックス暗号法は、配信物を保護するために難読化技法を使用する。ステップ3(705)において、ホワイトボックス暗号法ライブラリ(WBC)バイナリが、TEE IDのハッシュを含む一意のランダムAES−128キー、および、ホワイトボックス暗号法技法を使用して、AESによって暗号化されたメッセージ中に隠れている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キーは、発行者セキュリティドメイン(ISD)529に記憶される。ISDは、図5のステップ551でモバイルapp215の信頼できない構成要素を使用してダウンロードされていた。
ステップ723。モバイルアプリケーション215は、IPEK(HMAC(TEEID、IPEK))を使用して、TEE IDおよびTEEIDのハッシュを信頼できるサービスマネージャ605に送信する。
ステップ725。信頼できるサービスマネージャ605は、一致することを確認するために、TEE IDおよびハッシュ(HMAC(TEEID、IPEK))をキーディレクトリサーバ603に転送する。キーディレクトリサーバ603が、TEE IDのテーブル(上記ステップ711)および対応するIPEKを維持しているので、キーディレクトリサーバ603は、ステップ723でモバイルapp215から信頼できるサービスマネージャ605に送信されたハッシュが、正しいIPEKから期待するハッシュと一致することを確認することができる。
ステップ727。キーディレクトリサーバ603が、IPEKとTEE IDの一致を確認すると、キーディレクトリサーバ603は、IPEKを信頼できるサービスマネージャに送り返す。
ステップ729。信頼できるサービスマネージャ605はIPEKを記憶する。信頼できるサービスマネージャ605はまた、IPEKを用いて生成されたセッションキーを使用してTA519を暗号化する。
ステップ731。信頼できるサービスマネージャ605は、暗号化したTA519をモバイルapp215に送信する。
ステップ733。モバイルapp215は、IPEKから生成されたセッションキーを使用してTA519を復号し、TA519をSoft TEE503にインストールする。
それにより、モバイルapp215は、初回にダウンロードされた信頼できない構成要素のみならず、信頼できる構成要素、キー材料521およびTA519を含めることを完了した。
上で言及したように、信頼できる各アプリケーション519に対応した信頼できる記憶装置523は、信頼できるアプリケーション記憶キー(TA_SK)701によって保護される。図10は、こうした記憶キーの生成を示す流れ図である。
ステップ1001。最初のランダム秘密(IRS)がモバイルapp215によって生成される。
ステップ1003。IRSが、モバイルapp215により、図9のステップ705からのダイナミックホワイトボックス暗号キー(WBK)を使用して暗号化され、ステップ713においてモバイルappに提供される。
ステップ1005。暗号化されたIRSは、モバイルapp215により、NVM205中のモバイルapp215によって管理されるファイル記憶装置に記憶される。
一代替実施形態において、ステップ1001からステップ1005は、ユーザによるPINのエントリによって置き換えられる。PINは記憶されない。むしろ、下記のステップ1009で論ずるように、PINは実行ごとに正しく再エントリされなければならず、そうしなければ、計算された記憶キーは、最初の実行時に使用された記憶キーと一致しないであろう。
ステップ1007。ステップ1001−ステップ1005に並行して、装置フィンガープリント(DFP)がモバイルapp215によって計算される。DFPは、アプリケーション識別子、一意のOS識別子、無線シリアル番号および装置のIMEI番号の連結からなるSHA1によって計算することができる。
図10の先行するステップは、結果、すなわち暗号化されたIRSおよびDFPがNVM205に記憶された状態で、一度実施されるのが好都合である。引き続くステップは、信頼できる記憶装置にアクセスするときに使用されるランタイムステップである。
ステップ1009。実行時に、各TA519に対して、TA記憶キー(TA_SK)701が、たとえば、RFC5869に明記された(IETF、HMACベースの取得および拡張キー導出機能(http://tools.ietf.org/html/rfc5869)、2015年9月3日アクセスされた)HMACベースのキー導出関数を使用して計算される。HASH関数への入力は、IRS、DFPおよびTA519のUUIDを含む。ユーザPINを使用する代替実施形態において、ユーザはPIN入力を促される。最初に入力されたPINは記憶されない。しかし、実行ごとにPINを使用してTA記憶キーを計算するので、正しいTA_SKが後続の実行時にステップ1009で計算されるように、正しいPINを入力する必要がある。
ステップ1013。信頼できるアプリケーション519が、対応する記憶装置523にアクセスしようとするとき、信頼できるアプリケーション701は、その記憶キーTA_SK701を使用して、信頼できる記憶装置523から記憶されまたは取得されたコンテンツを暗号化または復号する。
モバイルapp215を対象とした攻撃に対する1つの脆弱性は、その実行中にモバイルapp215によって使用されるRAM内の記憶領域を攻撃することである。攻撃者は、モバイルapp215の実行中に、RAM203に記憶されたデータのメモリダンプを実施し、RAM203に記憶されているものから口座番号、暗号キー、個人識別子などの秘密情報を取得しようとする可能性がある。
こうした攻撃を阻止するために、その一実施形態では、ランタイムメモリダンプからの重要なデータの復元を阻止するために、モバイルapp215によって使用されるランタイムメモリの一部を暗号化する。図11は、この実施形態を示すタイミングシーケンス図である。Soft TEE515の内部で実行された信頼できる各アプリケーション519は、ヒープまたはスタックからRAM203にアクセスすることができる。各TA519のヒープまたはスタックは分離しており、任意の他の信頼できるアプリケーション519のヒープまたはスタックから隔離されている。
図9と関連して先に本明細書で論じたように、たとえば、キー提供サーバ601は、WBC Key、Kmを含むホワイトボックス暗号ライブラリを生成し、このライブラリをモバイルapp215に送信する(ステップ705、713)。モバイルapp215は、ステップ715でWBCライブラリをインストールする。
本実施形態によれば、信頼できるアプリケーションは、1回限りのキー(OTK)を使用してデータを暗号化することにより、RAM203に記憶されたデータを暗号化する:
E=PlainText XOR OTK
OTKは以下で導出される:
ステップ1101:TA519は、信頼できるアプリケーション519の各実行に対して、一意となるようにノンスを生成する。好ましい実施形態において、ノンスを使用してOTKが生成される。しかし、OTKを生成するために代替の機構を使用することが可能であり、その場合にはノンスは必要ではない。
ステップ1103:TA519は、乱数発生器を使用してランタイムキーKを生成する。好ましい実施形態において、OTKはランダムキーを使用して生成される。しかし、代替の機構を使用してOTKを生成することが可能であり、その場合にはランダムキーKは必要ではない。
各記憶動作1104に際して、信頼できるアプリケーション519のメモリ位置および特定の実行と関連付けられたOTKが、生成され、記憶するためにマスクされ、RAMに記憶されるプレーンテキストがOTKを使用して暗号化され、そのOTKが破棄される。
ステップ1105:OTKが生成される。好ましい実施形態において、OTKは以下の式を使用して生成される:
Figure 2019505887
ここで、
mem_addrは、暗号化されるメモリページの開始アドレス。
counterは、(1)TA519の各実行時にリセットされ、各メモリアクセス時にインクリメントされるカウンタ。
ENCは、連結
Figure 2019505887
が、キーKを使用して暗号化される暗号関数。
ステップ1107:OTKはマスクされる。好ましい実施形態において、TA519はWBCキー、Kを使用してOTKをマスクする:
OTKm=OTK XOR Km
[0001]ステップ1109および1111:マスクされたOTK、OTKmがRAM203に記憶される。
[0002]ステップ1113:記憶される量のプレーンテキストがOTKを使用してマスクされる:
E=PlainText XOR OTK
[0003]ステップ1115および1117:マスクされた量のEがRAM203に転送され記憶される。
ステップ1119:OTKが破棄される。その結果、RAMに記憶する前にプレーンテキストをマスクするために使用された実際のキー(OTK)が保持されることはない。むしろ、OTKのマスク化バージョンであるOTKmのみが保持され、最初に成功裏にアンマスクされた場合、OTKmのみを使用することができる。
逆に、RAM203に記憶された値を読み取る各動作時に、マスクされたOTKが取得されてアンマスクされ、暗号化された量がプレーンテキストに復号され、OTKが破棄される(ステップ1121)。
ステップ1123:TA519は、マスクされたOTK、すなわち、以前に書き込み動作中に記憶されたOTKmを取得する。
ステップ1125:OTKがホワイトボックスキーKmを使用してOTKmからアンマスクされる。
ステップ1127:暗号化された量Eが取得される。
ステップ1129:暗号化された量Eがプレーンテキストに復号される:
Plaintext=E XOR OTK
ステップ1131:OTKが再度破棄される。
このようにして、メモリダンプを利用して、悪意を持ってモバイルappの秘密情報を見つける攻撃から、ランタイムRAMを保護する技法が提供される。
バーチャルマシンによって実行するソフトウェアアプリケーションは、アプリケーションの静的またはランタイムインスタンス化による変更に基づく攻撃を受けやすい。たとえば、攻撃者は、アプリケーションによって操作された保護されたコンテンツを取得し、アプリケーションの振る舞いを操って、直接、または攻撃者がなんとかして保護されたコンテンツを見つけることを可能とする形式で、アプリケーションに保護されたコンテンツを明らかにさせようとして、アプリケーションを検査し、アプリケーションを変更することができる。
こうした攻撃を妨害するために、本技術による実施形態は、1つまたは複数のいくつかの技法を採用している。
図12に示した、こうした技法のうちの第1のものは、アプリケーション完全性チェックを提供することである。モバイルapp215の信頼できるアプリケーション519が、Soft TEE503に最初にインストールされるとき、Soft TEEバーチャルマシン517は、比較値、たとえば信頼できるアプリケーション519に対応するハッシュ値を計算する(ステップ1201)。比較値は、信頼できるアプリケーション519のバイナリ上で計算されたHMAC−SHA256 MACハッシュコードとすることができる。次いで、比較値は、たとえば、TA519バイナリの先頭に付加された信頼できるコンテナに記憶される(ステップ1203)。
TA519がSoft TEEバーチャルマシン517によって再度ロードされるすべての実行時に、同一の比較値計算がバイナリ上で実施され、最初のロードで計算された記憶された比較値(「現在値」と呼ばれる)と比較される(ステップ1205)。ステップ1207において、記憶された比較値と現在比較値が異なるかどうかが判定される。それらが同一の場合、Soft TEEバーチャルマシン517がTA519をロードし、実行する。それらが異なる場合、Soft TEEバーチャルマシン517は、TA519をロードせず、ユーザ、発行者またはサービスプロバイダに攻撃の可能性を通知するといった矯正アクションを発行する(ステップ1209)。
モバイルapp215に対する別の攻撃の可能性に関して、攻撃者は、クロック速度を変更し、またはタイムシフトを実施する。後者は特にデジタル著作権管理DRMアプリケーションと関係がある。したがって、こうした攻撃を妨害するために、別の実施形態において、TA519を、クロック完全性確認技法を使用して、追加的または代替的に確認することができる。図13は、クロック完全性確認技法を示す流れ図である。
クロック変更攻撃を阻止するために、たとえばステップ555またはステップ555の補助的なステップにおいて、モバイルapp215の信頼できる部分をインストールすると、信頼できる部分の一定の命令、たとえば、Soft TEE503のバーチャルマシン517による、内部の安全なAPI525内の特定の命令に対する呼び出しの実行時間が測定され(ステップ1301)、安全な記憶装置1303に記録される(ステップ1302)。モバイルapp215が実行されるとき、クロック確認1305が実施される。モバイルapp215が実行され、Soft TEEバーチャルマシン517が命令数を追跡するとき(ステップ1309)、Soft TEEバーチャルマシン517が開始され(ステップ1307)。Soft TEEバーチャルマシン517は、システムクロックをフェッチし(ステップ1313)、命令数から予想時間を計算し(ステップ1315)、予想時間とシステムクロックを比較する(ステップ1317)ことにより、周期的にクロック確認チェック1311を実施する。予想時間とシステム時間の相違が、ある所定のしきい値に対して範囲外にあるとき、ある矯正アクション、たとえば、モバイルapp215を停止する、または、モバイルapp215がアクセスできるハードウェアリソースに制限をかけるアクションを取ることができる(ステップ1319)。一実施形態において、nの数の命令が一定量の時間tを必要とし、そして、そのため、特定の命令数、たとえばm*nまで追跡した後で、実行時間はm*tとなると予想できるであろう。特定のしきい値を超える偏差により、矯正アクションがトリガされるであろう。
モバイルapp215に対する攻撃には、バーチャルマシン515によって実行されている間に、デバッギング技法を使用して、モバイルapp215の重要な機能を検査することが含まれる。本明細書で説明した技術の実施形態はまた、信頼できるアプリケーション519のインストール中に、信頼できるアプリケーション519に追加された短いループおよび長いループをベンチマークすることにより、反デバッギング技法を迂回させるこうした検査攻撃を妨害するための技法を含む。図14は、この概念を示すタイミングシーケンス図である。
図14は、攻撃から保護されるべき、信頼できるアプリケーション519の重要な部分1401、たとえば暗号コードを示す。コードセグメント1403が重要な部分1401に付加されている。重要な部分は、多数の可能な経路およびいくつかのループを含んでいる。たとえば、第1のループ1405は、短いブロック1407および長いブロック1409を含む。第1のループの実行経路が短いブロック1407を通れば、第1のループ1405の所与の数の繰り返し実行は、その実行が長いブロック1409を通るとした場合よりもはるかに短くなるであろう。同様に、ループ2からn1411は、短いブロック1413を通るか、長いブロック1415を通って実行できるが、この場合も全体の実行時間に影響を与える。
コードセグメント1403にとって、どちらの実行経路が使用されるかは、どちらのブロックが実行されることになるのか、および何回繰り返すことになるのかを示す乱数によって決定される。
短いブロックおよび長いブロックのブロック実行時間、ならびに、各ループの繰り返し回数を知ることにより、コード内の、様々な位置間、検査ポイント間の予想される経過時間を予測することが可能である。たとえば、長いブロック1409はtサイクル、短いブロックは0.5*tサイクルを取ると予想され、ループ1 1405は短いブロックをn回実行すると予想されることが知られている場合、検査ポイント1417における時間bと、開始ポイント1419における時間aとの間の時間差は、n*tとなると予測することができる。そこからの偏差は、コードがループ1の実行中に、デバッガによって何がしかの時間一時停止されたことを示す可能性がある。それぞれ、検査ポイント1421および1423における時間cおよびdに関しても同様である。
あり得る操作を決定するために、ランダム化された実行継続時間が検査されるランタイム中に、実行経路をランダム化する図14の機構の使用を示す流れ図である。
ステップ1501:追加されたダミーコードセグメント1403を通る実行経路を決定するために使用される乱数Rが生成される。
ステップ1503:乱数Rを使用して実行経路を決定する。たとえば、Rの異なるビットは、長いブロックまたは短いブロックのどちらが様々なループで実行されるかを示すことができる。他のビットは繰り返しの回数を示すことができる。
ステップ1505:短いブロックまたは長いブロックのどちらが実行されるか、および繰り返しの回数を含む実行経路を使用して、様々な識別された検査ポイントにおける予想到達時間を決定する。
ステップ1507:検査ポイントによってインデックス付けされた予想到達時間、および、検査ポイント1423において保護されることになる重要なコード1401を実行後の合計の予想実行時間は、信頼できる記憶装置523といったなんらかの保護された形式で記録されるのが理想的である。
ステップ1509:信頼できるアプリケーションを実行中。
ステップ1511:各検査ポイントにおいて、検査ポイントにおける到達時間が、予想到達時間と比較される。所定のしきい値を超える偏差がある場合(ステップ1513)、矯正アクション(ステップ1515)が行われる。
そうでない場合、すなわち、偏差が受け入れられる程度に小さい場合、ステップ1511で次の検査ポイントに遭遇するまで、実行は継続する1517。
したがって、信頼できるアプリケーションを実行中のなんらかのポイントにおいて、実行が、たとえばデバッガの使用により中断すると、実行時間が乱され、到達時間が予想到達時間と一致しなくなるであろう。それにより、矯正アクションが取られる状態がトリガされるであろう。
例示目的で、モバイル装置103に使用することができるように、本明細書に提示した技術が説明してある。しかし、提示した技術は、安全な信頼できる実行環境を必要とする任意のプログラム可能な電子装置に適用可能である。
今まで述べてきたことから、モバイル装置を使用しモバイルappを実行して、モバイル装置に記憶されたかまたはモバイル装置を使用して遠隔サーバにアクセスされた秘密データを操作するとき、強化されたレベルの信頼が期待できるように、信頼できる実行環境をモバイルappに導入する機構を提供することにより、モバイル装置上で実行するアプリケーションのセキュリティを向上させる技術が提供されるということは明白であろう。こうした強化は、モバイル装置ハードウェアを変更する必要はないが、モバイル装置ハードウェアの動作と関連付けられたセキュリティを強化する、堅牢で、柔軟かつ経済的な方法で達成される。
本発明の特定の実施形態が、説明され例示されているが、本発明は、説明され例示された特定の形式または部品の構成に限定されるものではない。本発明は、特許請求の範囲によってのみ限定される。

Claims (13)

  1. モバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法であって、モバイル装置が、
    信頼できないアプリケーションプロバイダからのモバイルアプリケーションの信頼できない部分を、モバイル装置にロードし、
    信頼できるアプリケーションプロバイダからのモバイルアプリケーションの信頼できる部分を、モバイル装置にロードし、
    モバイルアプリケーションの信頼できる部分をモバイル装置にインストールし、それによって信頼できる実行環境を提供する
    ように構成されることを含む、方法。
  2. モバイルアプリケーションの信頼できる部分をモバイル装置にロードすることが、
    モバイルアプリケーションが、モバイルアプリケーションの識別子およびモバイル装置の装置フィンガープリントから、信頼できる実行環境id TEE IDを生成するステップであって、前記生成された信頼できる実行環境id TEE IDが、モバイルアプリケーションによってキー提供サーバに送信される、生成するステップと、
    キー提供サーバを動作させて、信頼できる実行環境id TEE IDと関連付けられるキーを生成し、キーディレクトリに、信頼できる実行環境id TEE IDおよび生成されたキーを送信し、モバイル装置に、生成されたキーを送信するステップと、
    信頼できるアプリケーションプロバイダが、TEE ID、および、モバイル装置によって送信された生成されたキーから計算されたTEE IDのハッシュを受信し、キーディレクトリサーバを通してモバイル装置を認証するように構成されるステップと、
    モバイル装置を成功裏に認証した際に、信頼できるアプリケーションプロバイダを動作させて、信頼できるアプリケーションを含むモバイルアプリケーションの信頼できる部分をモバイル装置に送信するステップと、
    モバイル装置が、モバイルアプリケーションの信頼できる部分をモバイル装置にインストールするように構成され、それにより、信頼できる実行環境を提供するステップと、
    を含む、請求項1に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  3. モバイルアプリケーションの信頼できない部分が、
    モバイル装置のリッチ実行環境内で実行可能なクライアントアプリケーションと、
    信頼できるアプリケーションを実装できる命令セットのための信頼できるアプリケーションインタープリタと、
    を含む、請求項1または2に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  4. 信頼できるアプリケーションが、信頼できるアプリケーションインタープリタによって解釈できる命令セット内で実装される、請求項1から3のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  5. モバイルアプリケーションに関連付けられたキーが、ホワイトボックスキー「WBCキー」およびイニシャルピン暗号キー「IPEK」を含み、さらに、方法が、モバイルアプリケーションと関連付けられたキーをモバイル装置に送信する前に、WBCキーを使用してIPEKを暗号化することを含み、IPEKの暗号化バージョンがモバイル装置に送信される、請求項1から4のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  6. モバイルアプリケーションの信頼できる部分が、信頼できるサーバプロバイダによってモバイル装置に送信される前に、イニシャルピン暗号キー「IPEK」から生成されたセッションキーを使用して暗号化される、請求項5に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  7. モバイルアプリケーションの信頼できない部分が、信頼できる実行環境のハードウェア実装に似た機能を実装する、アプリケーションプログラムインタフェースを含む、請求項1から6のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  8. 信頼できるアプリケーションを信頼できる安全な記憶装置と関連付けるステップと、
    最初のランダム秘密をモバイル装置の安全な記憶装置に記憶するステップと、
    信頼できるアプリケーションの安全な記憶装置内のデータにアクセスするたびに、最初のランダム秘密「IRS」、装置のフィンガープリント、および、信頼できるアプリケーションのための一意のid「UUID」を使用して、信頼できるアプリケーションと関連付けられた信頼できる記憶装置に記憶されたデータを暗号化するために、安全な記憶データキー「TA_SK」を生成するステップと
    をさらに含む、請求項1から7のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  9. 信頼できるアプリケーションを実行する間に、
    信頼できるアプリケーションのその特定の実行と関連付けられた1回限りのランタイムキーを決定するステップと、
    信頼できるアプリケーションのその特定の実行中に、信頼できるアプリケーションによって使用されるランタイムメモリに数量を記憶するとき、1回限りのランタイムキーを使用してその数量をマスクするステップと、
    信頼できるアプリケーションのその特定の実行中に、信頼できるアプリケーションによって使用されるランタイムメモリから数量を取得するとき、1回限りのランタイムキーを使用してその数量をアンマスクするステップと、
    をさらに含む、請求項1から8のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  10. 実行または解釈するためにコンパイルされた形式を有する信頼できるアプリケーションを最初に実行した際に、信頼できるアプリケーションのコンパイルされた形式に基づいて第1の値を計算し、信頼できるアプリケーションのコンパイルされた形式に基づいてその値を記憶するステップと、
    信頼できるアプリケーションの後続の実行をした際に、信頼できるアプリケーションのコンパイルされた形式に基づいて同じ計算を実施して、信頼できるアプリケーションのコンパイルされた形式に基づいて第2の値を生成し、第1の値と第2の値を比較し、第1の値と第2の値が同一でない場合は矯正アクションを行うステップと、
    をさらに含む、請求項1から9のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  11. ソフトウェアの信頼できる実行環境の最初の実行をした際に、モバイルアプリケーションの特定の命令の予想実行時間を決定し、
    前記一定の命令の予想実行時間を記憶し、
    ソフトウェアの信頼できる実行環境の後続の実行中に、
    命令数を追跡し、
    システムクロックを定期的にフェッチし、
    現在の命令数から予想実行時間を計算し、
    予想実行時間と現在のシステムクロックを比較し、
    比較が受け入れがたい偏差を示す場合、矯正アクションを行う
    ことにより、潜在的なタイムシフト攻撃を防御するステップをさらに含む、請求項1から10のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  12. 特定の命令が、アプリケーションプログラムインタフェースの機能に対する呼び出しである、請求項11に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
  13. 信頼できるアプリケーションの重要な部分を、複数のループを有し、各ループが短いループまたは長いループとして実行されることができるダミーコード部で修正するステップと、
    ダミーコード部の内部および信頼できるアプリケーションの前記重要な部分の近傍に複数の検査ポイントを割り当てるステップと、
    信頼できるアプリケーションを実行した際に、定義された数の短いループおよび長いループを実行する、ダミーコード部を通る実行経路を決定するステップと、
    各検査ポイントの予想到達時間を決定するステップと、
    検査ポイントに到達した際に、予想到達時間と実際の到達時間を比較し、実際の到達時間と予想到達時間の間の偏差が所定のしきい値を超える場合に、矯正アクションを行うステップと、
    をさらに含む、請求項1から12のいずれか一項に記載のモバイル装置上で実行するためのモバイルアプリケーションを安全にするための方法。
JP2018529986A 2015-12-11 2016-12-09 信頼できる実行環境を有するモバイル装置 Active JP6888011B2 (ja)

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
JP2019505887A true JP2019505887A (ja) 2019-02-28
JP6888011B2 JP6888011B2 (ja) 2021-06-16

Family

ID=55027656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018529986A Active JP6888011B2 (ja) 2015-12-11 2016-12-09 信頼できる実行環境を有するモバイル装置

Country Status (7)

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

Families Citing this family (40)

* 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 삼성전자주식회사 전자 기기의 프로그램 관리 방법 및 장치
US10972265B2 (en) * 2017-01-26 2021-04-06 Microsoft Technology Licensing, Llc Addressing a trusted execution environment
US10897459B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
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
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
EP3887979A4 (en) 2018-11-30 2022-10-12 BicDroid Inc. PERSONALIZED AND CRYPTOGRAPHICALLY SECURE ACCESS CONTROL IN OPERATING SYSTEMS
US11048800B2 (en) * 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments
KR102137894B1 (ko) * 2018-12-18 2020-07-24 서울여자대학교 산학협력단 커널 무결성 검사 장치 및 방법
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
EP3912064B1 (en) * 2019-03-13 2024-09-25 Huawei Technologies Co., Ltd. Apparatus and method for dynamic configuration of trusted application access control
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 宁夏吉虎科技有限公司 一种区块链加密方法、装置及系统
JP7380251B2 (ja) * 2020-01-27 2023-11-15 株式会社Ihi 仮想マシンにおけるデータ改ざんの監視方法及び装置
CN111881467B (zh) * 2020-06-12 2022-10-28 海光信息技术股份有限公司 利用安全处理器保护文件的方法、装置、cpu和计算机设备
CN111740824B (zh) * 2020-07-17 2020-11-17 支付宝(杭州)信息技术有限公司 可信应用管理方法及装置
CN112149134A (zh) * 2020-09-11 2020-12-29 支付宝(杭州)信息技术有限公司 可信应用管理方法及装置
KR102390381B1 (ko) * 2020-11-25 2022-04-25 고려대학교 산학협력단 시뮬레이션 데이터 기반 웹 페이지 로드 시간 예측 장치, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체
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 荣耀终端有限公司 定时校验方法、电子设备和可读存储介质
US12061710B2 (en) * 2021-12-08 2024-08-13 Intel Corporation Mechanism for secure library sharing
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501953A (ja) * 2006-09-07 2010-01-21 ノキア コーポレイション セキュアモジュールアプリケーションに関連する情報の管理

Family Cites Families (12)

* 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
US8352749B2 (en) 2010-12-17 2013-01-08 Google Inc. Local trusted services manager for a contactless smart card
KR101744748B1 (ko) * 2011-01-05 2017-06-09 한국전자통신연구원 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
US20140040622A1 (en) * 2011-03-21 2014-02-06 Mocana Corporation Secure unlocking and recovery of a locked wrapped app on a mobile device
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501953A (ja) * 2006-09-07 2010-01-21 ノキア コーポレイション セキュアモジュールアプリケーションに関連する情報の管理

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6888011B2 (ja) 信頼できる実行環境を有するモバイル装置
US9054865B2 (en) Cryptographic system and methodology for securing software cryptography
US11263311B2 (en) Securing virtual-machine software applications
EP3394788B1 (en) Method and system for enhancing the security of a transaction
CN111159658B (zh) 字节码处理方法、系统、装置、计算机设备和存储介质
CN104751049A (zh) 一种应用程序安装方法及移动终端
Ahmad et al. Enhancing the security of mobile applications by using TEE and (U) SIM
EP3048553B1 (en) Method for distributing applets, and entities for distributing applets
Cooijmans et al. Secure key storage and secure computation in Android
CN107995230B (zh) 一种下载方法及终端
KR101473656B1 (ko) 모바일 데이터 보안 장치 및 방법
US20230058046A1 (en) Apparatus and Method for Protecting Shared Objects
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
US20190199694A1 (en) Individual encryption of control commands
Ribeiro et al. DBStore: A TrustZone-backed Database Management System for Mobile Applications.
KR101906484B1 (ko) 어플리케이션 보안 방법 및 이를 수행하기 위한 시스템
Choi et al. Hardware-assisted credential management scheme for preventing private data analysis from cloning attacks
BR112018011782B1 (pt) Método para segurança de um aplicativo para celulares para execução em um dispositivo móvel
Sivertsgård Using Smart Cards to Mitigate Security Threats on Mobile Devices
Park et al. Analyzing security of Korean USIM-based PKI certificate service
Jones An analysis of vulnerabilities presented by Android malware and iOS jailbreaks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210511

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210519

R150 Certificate of patent or registration of utility model

Ref document number: 6888011

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250