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