JP5945313B2 - 構造体を生成する方法および対応する構造体 - Google Patents

構造体を生成する方法および対応する構造体 Download PDF

Info

Publication number
JP5945313B2
JP5945313B2 JP2014232087A JP2014232087A JP5945313B2 JP 5945313 B2 JP5945313 B2 JP 5945313B2 JP 2014232087 A JP2014232087 A JP 2014232087A JP 2014232087 A JP2014232087 A JP 2014232087A JP 5945313 B2 JP5945313 B2 JP 5945313B2
Authority
JP
Japan
Prior art keywords
ovm
processor
specific
source code
identifier
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.)
Expired - Fee Related
Application number
JP2014232087A
Other languages
English (en)
Other versions
JP2015103253A (ja
Inventor
セドリック コルノット ヴィンセント
セドリック コルノット ヴィンセント
マリア フランシスカス ロンボウツ ピーター
マリア フランシスカス ロンボウツ ピーター
トイヴェン フィリップ
トイヴェン フィリップ
ミショー フランク
ミショー フランク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Publication of JP2015103253A publication Critical patent/JP2015103253A/ja
Application granted granted Critical
Publication of JP5945313B2 publication Critical patent/JP5945313B2/ja
Expired - Fee Related 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/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/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/32Payment architectures, schemes or protocols characterised by the use of specific devices or networks using wireless devices
    • G06Q20/322Aspects of commerce using mobile devices [M-devices]
    • G06Q20/3227Aspects of commerce using mobile devices [M-devices] using secure elements embedded in M-devices
    • 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/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
    • 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/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/102Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measure for e-commerce

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Description

本発明は少なくとも一つの仮想マシンを含む構造体を生成する方法に関する。さらに、本発明は対応する構造体に関する。
今日、セキュリティは多くの電子デバイスおよびコンピューティング環境において重要な役割を果たしている。例えば、従来のモバイル電子デバイスは、ユーザ認証情報などの機密の支払関連データを電子デバイスに入力および/または格納する必要のある支払い処理に使用することができる。このようなモバイル電子デバイスには、販売時点(POS)で支払関連データを端末デバイスとやりとりするために、例えば、無線周波数(RF)技術に基づく近距離通信(NFC)インターフェースを搭載することができる。
従来、機密の支払関連データは、データが比較的安心な環境に本質的に閉じ込められた、スマートカードなどの専用のセキュリティトークンに組み込まれている。しかしながら、特に、いわゆるセキュア素子(SE)のモバイルデバイスへの統合などの統合的なソリューションの出現により、支払関連データはしばしば潜在的に好ましくない環境にさらされるため、これらのデータの機密性は問題となる可能性がある。
セキュア素子は、内蔵チップとして、より具体的には所定の機能および所定のセキュリティレベルを有する、例えば支払いアプリケーションなどのスマートカードグレードのアプリケーションが(プレ)インストールされた改竄防止集積回路として、しばしば実装される。このようなセキュア素子の例には、NXPセミコンダクターズによって製造されるICの、いわゆる「SmartMX」または「SmartMX2」シリーズの集積回路がある。あるいは、いわゆる加入者識別モジュール(Subscriber Identity Modules:SIM)または汎用加入者識別モジュール(Universal Subscriber Identity Modules:USIM)をセキュア素子として使用することができる。さらに、従来のSDカードまたはマイクロSDカードなどのセキュアデジタル(SD)カードをセキュア素子として使用することもできる。
しかしながらそれらの耐タンパ性にかかわらず、多機能モバイルデバイスに組み込まれたセキュア素子は、例えば専用のスマートカードよりも本質的に安全性が低いため、それらのセキュリティレベルを上げるための継続的な努力が行われている。この問題は、いわゆるソフトウェアベースのセキュア素子が使用されると悪化する。一般的にハードウェアベースのセキュア素子と称され、データが格納され、計算の行われる可能性のある、比較的保護された環境を提供する上述のセキュア素子とは対照的に、ソフトウェアベースのセキュア素子は、典型的に、モバイルデバイスの汎用記憶装置(例えば主記憶装置)に機密データを格納するように配置される。通常この記憶装置は安全性が証明されていない。従って、ソフトウェアベースのセキュア素子の開発者は、これらのセキュア素子に適切なセキュリティ手段を内蔵させるという課題に直面している。
これらのセキュリティ手段のいくつかは有望な結果を示している。例えば、いわゆる難読化仮想マシン(OVM)を使用すると、リバースエンジニアリング攻撃に対して容認可能なレベルの保護を提供するように思われる。非特許文献1に記載されているように、いわゆる構造中心の攻撃、すなわち、コンピュータプログラムの機能を明らかにすることを目的とする攻撃に対して実行できる防御は、ネイティブの命令セットから仮想アーキテクチャを実現させる仮想マシンロジックの使用に基づくものである。このような防御をさらに強化させるために、仮想マシン(VM)を難読化させることができる。従って、難読化仮想マシン(OVM)を含むソフトウェアベースのセキュア素子は、適切なセキュリティレベルを提供するように思われる。特許文献1は適応難読化仮想マシンについて記載している。より具体的には、適応VM実行環境における実行のための難読化バイトコードの生成について記載している。VMコンパイラはバイトコードを取得するために高レベルのコードをコンパイルし、仮想命令セットアーキテクチャ(V−ISA)定義を適用して、2つ以上の個々の命令をバイトコードに組み合わせ、最適化された命令を生成する。VM実行環境は最適化命令を解釈して実行するために適合される。
欧州特許出願公開第2482184号明細書
Dube, T.E.ら、「Hindering Reverse Engineering: Thinking Outside the Box」、Security & Privacy, IEEE(Volume:6、Issue:2)、2008年3月−4月
しかしながら、OVMに基づくソフトウェアベースのセキュア素子は、クローニングの影響をまだ受けやすい。特に、暗号キーまたはその他のユーザ認証情報の格納されたOVMは、複写されて、例えば権限のないモバイルデバイスによって使用される可能性がある。この場合、権限のないモバイルデバイスは、本来権限のあるモバイルデバイスとして同じ処理を有効化させ、これは明らかに受け入れられない。従って、この種類のソフトウェアベースのセキュア素子によって提供されるセキュリティレベルを改善させる必要がまだある。
少なくとも一つの仮想マシンを含む構造体を生成する方法を提供する。この方法は、第1仮想マシンソースコードを難読化して、第1OVMソースコードを生成するステップと、プロセッサ識別子を第1OVMソースコードと関連付けて、プロセッサ固有の第1OVMソースコードを生成するステップと、プロセッサ固有の第1OVMソースコードをコンパイルして、プロセッサ固有の第1OVMを生成するステップとを含む。
例示的実施形態によれば、本方法は、第2仮想マシンソースコードを難読化して、第2OVMソースコードを生成するステップと、プロセッサ固有の第1OVMの秘密識別子を第2OVMソースコードと関連付けて、プロセッサ固有の第2OVMソースコードを生成するステップと、プロセッサ固有の第2OVMソースコードをコンパイルして、プロセッサ固有の第2OVMを生成するステップとをさらに含む。
別の例示的実施形態によれば、プロセッサ固有の第1OVMソースコードをコンパイルする場合、秘密識別子を乱数発生器によって生成する。
さらなる例示的実施形態によれば、秘密識別子をデータベースのエントリに格納し、この秘密識別子の検索を容易にするために、このエントリにプロセッサ固有の第1OVMのパブリック識別子も格納する。
さらなる例示的実施形態によれば、本方法は、プロセッサ固有の第1OVMの秘密識別子を第2OVMソースコードと関連付けるステップに加え、ユーザ識別子を第2OVMソースコードと関連付けて、プロセッサおよびユーザ固有の第2OVMソースコードを生成するステップと、プロセッサおよびユーザ固有の第2OVMソースコードをコンパイルして、プロセッサおよびユーザ固有の第2OVMを生成するステップとをさらに含む。
さらなる例示的実施形態によれば、ユーザ識別子は個人識別番号を含む。
さらなる例示的実施形態によれば、ユーザ識別子はユーザの生体特徴を含む。
さらなる例示的実施形態によれば、本方法は、オペレーティングシステムコンポーネントを第2OVMに組み込むステップをさらに含む。
さらなる例示的実施形態によれば、本方法は、生成される各々のOVMにプロセッサ固有のOVMのツリーを構築するステップと、プロセッサ固有の既存のOVMの秘密識別子を、生成される次のOVMのOVMソースコードと関連付けて、プロセッサ固有の次のOVMソースコードを生成するステップであって、プロセッサ固有の既存のOVMは、生成する次のOVMよりもツリーにおいて1レベル高いステップと、プロセッサ固有の次のOVMソースコードをコンパイルして、プロセッサ固有の次のOVMを生成するステップとをさらに含む。
さらなる例示的実施形態によれば、本方法はモノトニックカウンタを構造体に組み込むステップをさらに含む。
さらなる実施形態によれば、プロセッサ識別子は、コンピューティングデバイスに含まれる読み取り専用メモリマスク、または当該コンピューティングデバイスに含まれるワンタイムプログラマブルビットから検索され、当該コンピューティングデバイスは当該プロセッサ識別子によって識別されるプロセッサを含む。
さらに、上述の方法によって生成する構造体を提供する。
さらなる例示的実施形態によれば、構造体の少なくとも一つの仮想マシンはセキュア素子に割り当てられる。
さらなる例示的実施形態によれば、上述の種類の構造体を含むコンピューティングデバイス、特に支払い処理をサポートするモバイルデバイスが提供される。
さらなる例示的実施形態によれば、コンピューティングデバイスはプロセッサ固有の第1OVMが格納された読み取り専用メモリを含む。
下記の添付の図面を参照して、実施形態をさらに詳述する。
難読化仮想マシンを含む構造体の第1の例示的実施形態である。 難読化仮想マシンを含む構造体の第2の例示的実施形態である。 難読化仮想マシンを含む構造体の第3の例示的実施形態である。
図1は難読化仮想マシンを含む構造体の第1の例示的実施形態を示す。この構造体は、本明細書に開示する方法によって生成される。本例示的実施形態において、構造体は「トラストツリー(tree of trust)」として編成されるいくつかの難読化仮想マシン、OVM0、OVM01、OVM011、OVM012およびOVM02を含み、これは構造体が内蔵されたコンピューティングデバイスに結合される。このようにして、コンピューティングデバイスのセキュアブート、および難読化仮想マシンに内蔵される任意のアプリケーションの安全なローディングが達成され得る。
典型的に、コンピューティングデバイスは、プロセッサCPU、読み取り専用ROMおよびランダムアクセスメモリRAMなどのオンチップコンポーネントと、不揮発性メモリFLASHなどのプロセッサCPUを含むチップの外付けコンポーネントとを統合する。この例において、読み取り専用メモリROMは、本明細書に開示する方法に従ってコンパイルされた初期難読化仮想マシンを含む。初期難読化仮想マシンOVM0のコンパイルは、プロセッサ固有の、すなわちプロセッサCPUの識別子CIDと関連付けられるソースコードで行われているので、仮想マシンOVM0それ自身もプロセッサ固有となる。換言すれば、仮想マシンOVM0はそれが実行されるハードウェア、特にプロセッサに効果的に結合される。
読み取り専用ROMは、プロセッサ識別子CIDでコンパイルされたOVMのみを実行することができるOVMインタプリタをさらに含む。プロセッサ識別子CIDは、コンピューティングデバイスのROMマスクまたはOTPビットの何れかに格納されるパブリックまたは秘密識別子であり得る。プロセッサ識別子CIDは、コンピューティングデバイスの製造業者によって、デバイス、ウエハまたはロット単位に固有のものとして選択され得る。読み取り専用メモリROMに実装する代わりに、初期難読化仮想マシンOVM0のOVMインタプリタを、ネイティブコードおよび/またはOVMコードを実行することのできる専用処理装置(図示せず)内のハードウェアにも実装してもよい。
初期難読化仮想マシンOVM0はプロセッサ識別子CIDでコンパイルされているので、読み取り専用メモリROM内のOVMインタプリタのみがそれを実行することができる。動作において、初期難読化仮想マシンOVM0は、例えば、コンピューティングデバイスレジスタ、メモリ、周辺機器およびインターフェースを安全に初期化する。さらに初期難読化仮想マシンOVM0は、モニタと、初期難読化仮想マシンOVM0の秘密識別子でコンパイルされたさらなる難読化仮想マシンOVM01およびOVM02をそれぞれ起動して実行することのできる、OVMインタプリタとを含み得る。また、さらなる難読化仮想マシンOVM01は、モニタと、構造体において1レベル高い、難読化仮想マシンOVM01およびOVM02の秘密識別子でコンパイルされたさらなる難読化仮想マシンOVM011およびOVM012をそれぞれ起動し、実行することのできる、さらなるOVMインタプリタとを含み得る。このプロセスは、プロセッサ固有の難読化仮想マシンのトラストツリーを構築することができるように反復され得る。
典型的に、OVMは秘密データをそのコードに埋め込むことができる。本明細書に記載する方法の例示的実施形態によれば、初期難読化仮想マシンOVM0を除くあらゆるOVMは、構造体において1レベル高いOVMの秘密識別子SID0およびSID1と関連付けられた仮想マシンソースコードをコンパイルすることによって生成する。さらに、OVMのコンパイルにより、OVMコンパイラに内蔵された乱数発生器に基づき、パブリック識別子PID0およびPID1と、秘密識別子SID0およびSID1とを生成し得る。OVMコンパイラは、一対のパブリック識別子と秘密識別子とが格納されたエントリを含むデバイス製造業者のデータベースにアクセスすることができる。OVMコンパイラは、対応する秘密識別子を検索するために、コンピューティングデバイスの所定のOVMからパブリック識別子を受け取り、それをデータベースにマップすることができる。その結果、コンパイルプロセスは下記の関数に基づくことができる:
OVMxy=コンパイル[PIDx、VMSy、マップ(PIDx、SIDx)]
この関数において、PIDxは、その秘密識別子が現在のOVMをコンパイルするために使用されるOVMのパブリック識別子を表し、VMSyは現在のOVMのソースコードを表し、SIDxは秘密識別子を表す。
この関数によれば、OVMは、後者が前者の秘密識別子でコンパイルされているのであれば、別のOVMを起動および実行することができる。OVMが正しいOVM、またはより正確には、正しいOVMのOVMインタプリタによって実行されない場合、実行は失敗する。典型的に、所定のOVMのOVMインタプリタは、OVM自身内において実行させることができる。あるいは、所定のOVMのOVMインタプリタを、プロセッサCPUによってネイティブコードで実行するために、ランダムアクセスメモリRAMにロードしてもよい。
例えばOVMの旧バージョンを不揮発性メモリFLASHにロードすることにより、いわゆるロールバック攻撃を防止するために、構造体にモノトニックカウンタを設けてもよい。モノトニックカウンタとは、その値が一旦インクリメントされると前の値に戻ることのできない耐タンパ埋め込みカウンタである。モノトニックカウンタは、コンピューティングデバイスに組み込まれたEEPROMなどの別の不揮発性メモリに保持することができる。モノトニックカウンタはブート、OVMの実行または処理毎にインクリメントすることができる。カウンタの値はOVMコンパイラに送信され、OVMコンパイラはその値をOVMに埋め込む。
図2は難読化仮想マシンを含む構造体の第2の例示的実施形態を示す。セキュリティレベルをさらに上げるために、OVMをユーザに結合することもできる。本例において、難読化仮想マシンOVM01は、ユーザが正しい個人識別番号PINを入力する、および/またはスキャンした指紋がユーザの指紋テンプレートと一致する場合に限り、難読化仮想マシンOVM011または難読化仮想マシンOVM012を実行する。OVM021など、例に示すその他の難読化仮想マシンは、ユーザ識別子を必要としない。
OVMをユーザに結合するために、OVMコンパイラはユーザ識別子をコンパイルプロセスに組み込む。ユーザ識別子は、例えば個人識別番号などの、ユーザのみが知っている秘密か、または例えばスキャンされた指紋などの、ユーザ固有の生体特徴の何れかとすることができる。その場合、OVM(インタプリタ)は、ユーザがユーザ識別子を提供している場合に限り、構造体の中で下位のOVMを実行し、そうでばければ実行は失敗する。ユーザ識別子が個人識別番号PINを含む場合、コンパイルプロセスは下記の関数に基づくことができる:
OVMxy=コンパイル[PIDx、VMSy、PIN、マップ(PIDx、SIDx)]
典型的に、スキャンした指紋はテンプレートFPTの形態の指紋センサによって送信される。このように、ユーザ識別子がスキャンした指紋を含む場合、コンパイルプロセスは下記の関数に基づくことができる:
OVMxy=コンパイル[PIDx、VMSy、FPT、マップ(PIDx、SIDx)]
個人識別番号PINまたは指紋テンプレートFPTを暗号化してOVMコンパイラに送信することができる。さらに、ユーザが自分の個人識別番号PINを変更した場合、例えば、コンピューティングデバイスはバックエンドシステムに新しい個人識別番号用の新しいOVMをコンパイルするように要求することができる。
図3は難読化仮想マシンを含む構造体の第3の例示的実施形態を示す。本例において、難読化仮想マシンOVM03、OVM031、OVM032の構造体のサブセットは、例えば支払いアプリケーションなどの特定のアプリケーションを実行するためのセキュア素子SEに割り当てられるコンピューティング環境を構成する。難読化仮想マシンOVM01、OVM1x、OVM02、OVM02xの構造体の別のサブセットは、コンピューティングデバイスのオペレーティングシステムに割り当てられるコンピューティング環境を構成する。より具体的には、後者のサブセットにおいて、2つの異なるオペレーティングシステムOS1およびOS2のカーネルとコンポーネントとを、難読化仮想マシンOVM01、OVM1x、OVM02およびOVM02xに埋め込む。このようにして、コンピューティングデバイスのオペレーティングシステムも、それらが実行されるハードウェアに結合させることができる。難読化仮想マシンOVM01およびOVM02は、OVM01およびOVM02のためにコンパイルされた難読化仮想マシンOVM01xおよびOVM02xを起動および実行することのできる、OVMインタプリタを含むオペレーティングシステムカーネルOS1およびOS2を内蔵している。難読化仮想マシンに内蔵されたOSカーネルは、ネイティブライブラリおよびアプリケーションを起動するか、またはそれらのOVMインタプリタを使って、それら、すなわち「カーネルOVM」のためにコンパイルされたさらなる難読化仮想マシンを起動および実行する。
尚、図面は概略図である。種々の図面において、同様または同一の要素には同じ参照符号を付している。さらに、例示的実施形態の簡潔な説明を提供するために、当業者の慣習に該当する実行の詳細は記載しない。また、このような実装の開発において、任意のエンジニアリングまたは設計プロジェクトのように、実装によって異なるシステム関係およびビジネス関係の制約へのコンプライアンスなどのデベロッパの特定の目標を達成するために、多くの実装固有の決定を行わなければならないことを理解されたい。さらに、このような開発努力は複雑で時間のかかるものであるが、当業者にとって、設計、製作および製造を行う上でのルーチンであることを理解されたい。
最後に、当業者であれば、添付する請求項の範囲から逸脱せずに、多くの代替的実施形態を構成することができるであろう。請求項の範囲において、括弧内の参照符号は請求項を制限するものではないと解釈されたい。「含む」という用語は、請求項に記載された要素以外の要素の存在を除外するものではない。要素の前に置かれる「一つ」という用語は、このような要素が複数個存在することを除外するものではない。請求項の範囲に記載される手段は、いくつかの個別の要素を含むハードウェアおよび/または適切にプログラムされたプロセッサによって実行することができる。いくつかの手段を列挙するデバイスの請求項において、これらの手段のうちのいくつかは全く同じハードウェアアイテムによって具現化することができる。特定の手段が相互に異なる従属請求項に記載されているだけで、これらの手段の組み合わせを有利に使用することができないことを示すものではない。
CPU プロセッサ
CID プロセッサ識別子
OVM0 難読化仮想マシン
OVM01 難読化仮想マシン
OVM02 難読化仮想マシン
OVM011 難読化仮想マシン
OVM012 難読化仮想マシン
OVM021 難読化仮想マシン
OVM01x 難読化仮想マシン
OVM02x 難読化仮想マシン
PID0 パブリック識別子
PID1 パブリック識別子
PID2 パブリック識別子
SID0 秘密識別子
SID1 秘密識別子
SID2 秘密識別子
FLASH 不揮発性メモリ
ROM 読み取り専用メモリ
RAM ランダムアクセスメモリ
PIN 個人識別番号
OS1 オペレーティングシステム
OS2 オペレーティングシステム
SE セキュア素子

Claims (14)

  1. コンピューティングデバイスにより少なくとも一つの仮想マシンを含む構造体を生成する方法であって、
    第1仮想マシンソースコードを難読化して、第1OVM(難読化仮想マシン)ソースコードを生成するステップと、
    プロセッサ識別子を前記第1OVMソースコードと関連付けて、プロセッサ固有の第1OVMソースコードを生成するステップと、
    前記プロセッサ固有の第1OVMソースコードをコンパイルして、プロセッサ固有の第1OVMを生成するステップと
    第2仮想マシンソースコードを難読化して、第2OVMソースコードを生成するステップと、
    前記プロセッサ固有の第1OVMの秘密識別子を前記第2OVMソースコードと関連付けて、プロセッサ固有の第2OVMソースコードを生成するステップと、
    前記プロセッサ固有の第2OVMソースコードをコンパイルして、プロセッサ固有の第2OVMを生成するステップと
    を含む方法。
  2. 前記プロセッサ固有の第1OVMソースコードをコンパイルする際に、前記秘密識別子を乱数発生器によって生成する、請求項1に記載の方法。
  3. 前記秘密識別子をデータベースのエントリに格納し、該エントリに、前記秘密識別子の検索を容易にするために、前記プロセッサ固有の第1OVMのパブリック識別子も格納する、請求項2に記載の方法。
  4. 前記プロセッサ固有の第1OVMの秘密識別子を前記第2OVMソースコードと関連付けるステップに加え、ユーザ識別子を前記第2OVMソースコードと関連付けて、プロセッサおよびユーザ固有の第2OVMソースコードを生成するステップと、
    前記プロセッサおよびユーザ固有の第2OVMソースコードをコンパイルして、プロセッサおよびユーザ固有の第2OVMを生成するステップと
    をさらに含む、請求項1乃至請求項3のいずれか一項に記載の方法。
  5. 前記ユーザ識別子は個人識別番号を含む、請求項4に記載の方法。
  6. 前記ユーザ識別子は前記ユーザの生体特徴を含む、請求項4または請求項5に記載の方法。
  7. オペレーティングシステムコンポーネントを前記第2OVMに組み込むステップをさらに含む、請求項1乃至請求項6のいずれか一項に記載の方法。
  8. 生成される各々のOVMに、プロセッサ固有のOVMのツリーを構築するステップと、
    プロセッサ固有の既存のOVMの秘密識別子を、生成される次のOVMのOVMソースコードに関連付け、プロセッサ固有の次のOVMソースコードを生成するステップであって、前記プロセッサ固有の既存のOVMは、前記ツリー内において次の生成OVMよりも1レベル高い、ステップと、
    前記プロセッサ固有の次のOVMソースコードをコンパイルして、プロセッサ固有の次のOVMを生成するステップと
    をさらに含む、請求項1乃至請求項7のいずれか一項に記載の方法。
  9. モノトニックカウンタを構造体に組み込むステップをさらに含む、請求項1乃至請求項8のいずれか一項に記載の方法。
  10. 前記プロセッサ識別子は、前記コンピューティングデバイスに含まれる読み取り専用メモリマスクまたは前記コンピューティングデバイスに含まれるワンタイムプログラマブルビットから検索され、前記コンピューティングデバイスは前記プロセッサ識別子によって識別されるプロセッサを含む、請求項1乃至請求項9のいずれか一項に記載の方法。
  11. 請求項1乃至請求項10のいずれか一項に記載の方法によって生成される構造体。
  12. 少なくとも一つの仮想マシンがセキュア素子に割り当てられる、請求項11に記載の構造体。
  13. 請求項11または請求項12に記載の構造体を含む、支払い処理をサポートするコンピューティングデバイス、特にモバイルデバイス。
  14. 前記プロセッサ固有の第1OVMの格納された読み取り専用メモリを含む、請求項13に記載のコンピューティングデバイス。

JP2014232087A 2013-11-21 2014-11-14 構造体を生成する方法および対応する構造体 Expired - Fee Related JP5945313B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP13290290.9 2013-11-21
EP13290290.9A EP2876593B1 (en) 2013-11-21 2013-11-21 Method of generating a structure and corresponding structure

Publications (2)

Publication Number Publication Date
JP2015103253A JP2015103253A (ja) 2015-06-04
JP5945313B2 true JP5945313B2 (ja) 2016-07-05

Family

ID=49841612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014232087A Expired - Fee Related JP5945313B2 (ja) 2013-11-21 2014-11-14 構造体を生成する方法および対応する構造体

Country Status (4)

Country Link
US (1) US9563754B2 (ja)
EP (1) EP2876593B1 (ja)
JP (1) JP5945313B2 (ja)
CN (1) CN104657636B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116712B2 (en) * 2013-02-28 2015-08-25 Microsoft Technology Licensing, Llc Compile based obfuscation
US20160379131A1 (en) * 2015-06-26 2016-12-29 Nxp B.V. Fuzzy opaque predicates
US10503576B2 (en) * 2016-02-19 2019-12-10 International Business Machines Corporation Maintaining core dump privacy during application fault handling
US10671758B2 (en) * 2017-08-30 2020-06-02 Micro Focus Llc Redacting core dumps by identifying modifiable parameters
CN109858265B (zh) * 2018-11-22 2022-01-28 海光信息技术股份有限公司 一种加密方法、装置及相关设备
CN110135133B (zh) * 2019-04-19 2021-08-17 佛山市微风科技有限公司 一种面向微控制器的压缩整合式源代码混淆方法及系统
US11354267B1 (en) * 2021-01-11 2022-06-07 Lilac Cloud, Inc. Compiler for a command-aware hardware architecture

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02138622A (ja) * 1988-08-03 1990-05-28 Nec Corp マイクロプロセッサ
US6598166B1 (en) * 1999-08-18 2003-07-22 Sun Microsystems, Inc. Microprocessor in which logic changes during execution
US7539875B1 (en) * 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US7178027B2 (en) * 2001-03-30 2007-02-13 Capital One-Financial Corp. System and method for securely copying a cryptographic key
US6694435B2 (en) * 2001-07-25 2004-02-17 Apple Computer, Inc. Method of obfuscating computer instruction streams
WO2004023313A1 (en) * 2002-09-04 2004-03-18 Fraunhofer Crcg, Inc. Protecting mobile code against malicious hosts cross references to related applications
US20050071438A1 (en) * 2003-09-30 2005-03-31 Shih-Wei Liao Methods and apparatuses for compiler-creating helper threads for multi-threading
US8694802B2 (en) * 2004-04-30 2014-04-08 Apple Inc. System and method for creating tamper-resistant code
US8949826B2 (en) * 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US9124650B2 (en) 2006-12-13 2015-09-01 Quickplay Media Inc. Digital rights management in a mobile environment
US8171453B2 (en) * 2007-05-21 2012-05-01 Microsoft Corporation Explicit delimitation of semantic scope
WO2009013673A2 (en) * 2007-07-20 2009-01-29 Nxp B.V. Device with a secure virtual machine
JP2009223638A (ja) * 2008-03-17 2009-10-01 Hitachi Software Eng Co Ltd Webアプリケーション向け生体認証システム及び方法
WO2010001324A2 (en) 2008-06-30 2010-01-07 Mominis Ltd Method of generating and distributing a computer application
US8434059B2 (en) * 2009-05-01 2013-04-30 Apple Inc. Systems, methods, and computer-readable media for fertilizing machine-executable code
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US20130232198A1 (en) * 2009-12-21 2013-09-05 Arbitron Inc. System and Method for Peer-to-Peer Distribution of Media Exposure Data
JP2011204105A (ja) * 2010-03-26 2011-10-13 Kddi R & D Laboratories Inc スクリプト起動プログラム、スクリプト起動プログラムの生成プログラム、およびプログラムセット
US8443365B2 (en) * 2010-11-03 2013-05-14 Hewlett-Packard Development Company, L.P. Methods and systems to clone a virtual machine instance
EP2482184A1 (en) * 2011-02-01 2012-08-01 Irdeto B.V. Adaptive obfuscated virtual machine
US9513884B2 (en) * 2011-08-16 2016-12-06 International Business Machines Corporation Thermal-aware source code compilation
BR112014016536A8 (pt) * 2012-01-09 2017-07-04 Koninklijke Philips Nv dispositivo de máquina virtual; sistema de execução distribuído; método de máquina virtual; e programa de computador
US9953310B2 (en) * 2012-05-10 2018-04-24 Mastercard International Incorporated Systems and method for providing multiple virtual secure elements in a single physical secure element of a mobile device
US8984542B2 (en) * 2012-11-30 2015-03-17 Facebook, Inc. Method and system for binding objects in dynamic programming languages using caching techniques

Also Published As

Publication number Publication date
US9563754B2 (en) 2017-02-07
EP2876593B1 (en) 2018-09-26
CN104657636B (zh) 2019-01-11
EP2876593A1 (en) 2015-05-27
JP2015103253A (ja) 2015-06-04
CN104657636A (zh) 2015-05-27
US20150143533A1 (en) 2015-05-21

Similar Documents

Publication Publication Date Title
JP5945313B2 (ja) 構造体を生成する方法および対応する構造体
Zhao et al. Providing root of trust for ARM TrustZone using on-chip SRAM
US10089470B2 (en) Event-based apparatus and method for securing BIOS in a trusted computing system during execution
US11829479B2 (en) Firmware security verification method and device
US8893275B2 (en) JCVM bytecode execution protection against fault attacks
US10084604B2 (en) Method of programming a smart card, computer program product and programmable smart card
US9129113B2 (en) Partition-based apparatus and method for securing bios in a trusted computing system during execution
US9507942B2 (en) Secure BIOS mechanism in a trusted computing system
US9367689B2 (en) Apparatus and method for securing BIOS in a trusted computing system
US20110271350A1 (en) method for protecting software
JP2022009556A (ja) ソフトウェアコードをセキュアにするための方法
US20220108018A1 (en) Identity and Root Keys Derivation Scheme for Embedded Devices
Gupta et al. Marlin: Mitigating code reuse attacks using code randomization
US11829464B2 (en) Apparatus and method for authentication of software
Cyr et al. Low-cost and secure firmware obfuscation method for protecting electronic systems from cloning
US10523418B2 (en) Providing access to a hardware resource based on a canary value
US10049217B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution
US8010773B2 (en) Hardware constrained software execution
US20240086081A1 (en) External memory data integrity validation
CN115422554B (zh) 请求处理方法、编译方法和可信计算系统
CN111209572A (zh) 一种基于加解密的Linux系统安全启动方法及系统
Abadi et al. On layout randomization for arrays and functions
US10055588B2 (en) Event-based apparatus and method for securing BIOS in a trusted computing system during execution
Yadav SECURE BOOTLOADER IN EMBEDDED SYSTEM USING MISRA-C
US10095868B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160527

R150 Certificate of patent or registration of utility model

Ref document number: 5945313

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees