(57)【要約】      （修正有）【課題】高速性、かつセキュリティ性を実現することが可能な情報処理装置、及び情報処理方法を提供する。【解決手段】複数の命令により構成される第１のプログラムと、複数の命令により構成される第２のプログラムとを記憶するメモリと、第１のプログラムの一つ以上の命令の処理の終了前に第２のプログラムの一つ以上の命令の処理を開始するパイプライン処理機能を有するプロセッサと、乱数を生成する乱数生成器と、を備える。前記プロセッサは、前記第２のプログラムの一つ以上の命令の処理を開始する前又は開始した後に前記乱数生成器により生成された乱数を確認し当該乱数が所定値である場合、前記第１のプログラムの一つ以上の命令の処理を行う。【選択図】図３
2015162115.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令により構成される第１のプログラムと、複数の命令により構成される第２のプログラムとを記憶するメモリと、
前記第１のプログラムの一つ以上の命令の処理の終了前に前記第２のプログラムの一つ以上の命令の処理を開始するパイプライン処理機能を有するプロセッサと、
乱数を生成する乱数生成器と、
を備える情報処理装置であって、
前記プロセッサは、前記第２のプログラムの一つ以上の命令の処理を開始する前又は開始した後に前記乱数生成器により生成された乱数を確認し当該乱数が所定値である場合、前記第１のプログラムの一つ以上の命令の処理を行うことを特徴とする情報処理装置。
【請求項２】
前記プロセッサは、前記第１のプログラムの命令を記憶する前記メモリのアドレスを格納する第１のプログラムカウンタと、前記第２のプログラムの命令を記憶する前記メモリのアドレスを格納する第２のプログラムカウンタと、を有し、
前記第２のプログラムカウンタが示すアドレスの命令を前記メモリから読み込む直前に前記乱数生成器により生成された乱数を確認し当該乱数が所定値である場合、前記第２のプログラムカウンタが示すアドレスの命令の代わりに、前記第１のプログラムカウンタが示すアドレスの命令を読み込み、解釈及び実行する処理を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１のプログラムは処理の高速性が要求されるオペレーティングシステムであり、前記第２のプログラムは処理のセキュリティ性が要求されるオペレーティングシステムであることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
複数の命令により構成される第１のプログラムと、複数の命令により構成される第２のプログラムとを記憶するメモリと、
前記第１のプログラムの一つ以上の命令の処理の終了前に前記第２のプログラムの一つ以上の命令の処理を開始するパイプライン処理機能を有するプロセッサと、
乱数を生成する乱数生成器と、
を備える情報処理装置により行われる情報処理方法であって、
前記プロセッサが、前記第２のプログラムの一つ以上の命令の処理を開始する前又は開始した後に前記乱数生成器により生成された乱数を確認し当該乱数が所定値であるか否かを判定するステップと、
前記プロセッサが、前記確認した乱数が所定値であると判定した場合、前記第１のプログラムの一つ以上の命令の処理を行うステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つのプロセッサ上にセキュリティ性が要求されるＯＳと、高速性が要求されるＯＳとが並存可能な装置等の技術分野に関する。
【背景技術】
【０００２】
近年、携帯電話機やスマートフォン等の携帯端末中に搭載されたプロセッサ上で認証処理や暗号処理等を行うＯＳ（Operating System）としてＴＥＥ(Trusted Execution Environment)が知られている。ＴＥＥは、セキュリティ性が要求される。一方で、従来から、暗号処理に対する攻撃として、処理時間を解析することにより秘密情報を推定するタイミングアタック（Timing Attack）や、暗号処理時の消費電力の観測により秘密情報を推定する電力解析攻撃（Power Analysis Attack）などのＳＣＡ（Side Channel Analysis)が知られている。このような攻撃に対する対策として、特許文献１には、乱数に基づく信号に従って、変調クロック信号を生成して、該変調クロック信号に基づいてデータ処理タイミングを決定してデータ処理を実行する技術が開示されている。
【０００３】
上述したＴＥＥにおいては、乱数生成器（乱数発生器）により生成された乱数に従って、ダミー処理（例えば、何もしないNOP処理）を実行することでセキュリティ性を保っている。このようなＴＥＥと比較して、高速性（つまり、高速動作）が要求されるＯＳとして、iOS（登録商標）やANDROID（登録商標)等のＲＥＥ(Rich Execution Environment)が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−４５７５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、例えば携帯端末に備えられる１つのＣＰＵの上にＴＥＥとＲＥＥが並存し、ＴＥＥの一つの命令の処理の終了前にＲＥＥの一つの命令の処理を開始するパイプライン処理（並列処理ともいう）が行われる場合、高速性、かつセキュリティ性を実現することが要求される。
【０００６】
本発明は、高速性、かつセキュリティ性を実現することが可能な情報処理装置、及び情報処理方法を提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、複数の命令により構成される第１のプログラムと、複数の命令により構成される第２のプログラムとを記憶するメモリと、前記第１のプログラムの一つ以上の命令の処理の終了前に前記第２のプログラムの一つ以上の命令の処理を開始するパイプライン処理機能を有するプロセッサと、乱数を生成する乱数生成器と、を備える情報処理装置であって、前記プロセッサは、前記第２のプログラムの一つ以上の命令の処理を開始する前又は開始した後に前記乱数生成器により生成された乱数を確認し当該乱数が所定値である場合、前記第１のプログラムの一つ以上の命令の処理を行うことを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の情報処理装置において、前記プロセッサは、前記第１のプログラムの命令を記憶する前記メモリのアドレスを格納する第１のプログラムカウンタと、前記第２のプログラムの命令を記憶する前記メモリのアドレスを格納する第２のプログラムカウンタと、を有し、前記第２のプログラムカウンタが示すアドレスの命令を前記メモリから読み込む直前に前記乱数生成器により生成された乱数を確認し当該乱数が所定値である場合、前記第２のプログラムカウンタが示すアドレスの命令の代わりに、前記第１のプログラムカウンタが示すアドレスの命令を読み込み、解釈及び実行する処理を行うことを特徴とする。
【０００９】
請求項３に記載の発明は、請求項１または２に記載の情報処理装置において、前記第１のプログラムは処理の高速性が要求されるオペレーティングシステムであり、前記第２のプログラムは処理のセキュリティ性が要求されるオペレーティングシステムであることを特徴とする。
【００１０】
請求項４に記載の発明は、複数の命令により構成される第１のプログラムと、複数の命令により構成される第２のプログラムとを記憶するメモリと、前記第１のプログラムの一つ以上の命令の処理の終了前に前記第２のプログラムの一つ以上の命令の処理を開始するパイプライン処理機能を有するプロセッサと、乱数を生成する乱数生成器と、を備える情報処理装置により行われる情報処理方法であって、前記プロセッサが、前記第２のプログラムの一つ以上の命令の処理を開始する前又は開始した後に前記乱数生成器により生成された乱数を確認し当該乱数が所定値であるか否かを判定するステップと、前記プロセッサが、前記確認した乱数が所定値であると判定した場合、前記第１のプログラムの一つ以上の命令の処理を行うステップと、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、プロセッサは、第２のプログラムの一つの命令の処理を開始する前に乱数生成器により生成された乱数を確認し当該乱数が所定値である場合、第１のプログラムの一つの命令の処理を行うように構成したので、高速性、かつセキュリティ性を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係る通信システムＳの概要構成例を示す図である。
【図２】（Ａ）は、本実施形態に係る携帯端末１の概要構成例を示すブロック図であり、（Ｂ）は、ＣＰＵの概要構成例を示す図であり、（Ｃ）は、ＣＰＵで実行されるソフトウェアの概要構成例を示す図である。
【図３】（Ａ）は、通常のパイプライン処理の一例を示す図であり、（Ｂ）は、乱数を確認する場合のパイプライン処理の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、通信システムに対して本発明を適用した場合の実施の形態である。
【００１４】
先ず、図１等を参照して、本実施形態に係る通信システムＳの構成及び機能概要を説明する。
【００１５】
図１は、本実施形態に係る通信システムＳの概要構成例を示す図である。図１に示すように、通信システムＳは、携帯端末１、決済処理端末２、決済処理ホスト３、及び情報提供サーバ４等を備えて構成される。情報提供サーバ４は、インターネットにより構成される通信ネットワークＮＷに接続されている。携帯端末１は、無線通信回線（例えば、３Ｇ（3rd Generation）回線又はＷｉ−Ｆｉ（Wireless Fidelity）回線）、及び通信ネットワークＮＷを介して情報提供サーバ４へアクセスし、情報を取得可能になっている。決済処理端末２は、例えば店舗に設置され、専用線を介して決済処理ホスト３に接続可能になっている。また、決済処理端末２は、当該決済処理端末２に接続された読取器（例えば、ＩＣカードリーダライタ）により発せられる電波により携帯端末１との間で無線通信（例えばＮＦＣ（Near Field Communication）の規格で規定される非接触通信）を行いつつ取引の決済処理を行うことが可能になっている。このような決済処理の方式には、オンライン決済方式とオフライン決済方式とがある。オンライン決済方式は、決済処理端末２が決済処理ホスト３とオンラインで接続して上記決済処理を行う。オフライン決済方式は、決済処理端末２が決済処理ホスト３と接続せずに決済処理を行う。
【００１６】
携帯端末１には、ＳＩＭカード１８（小型ＩＣカード）、及びＣＬＦ（Contactless Front End)１９が搭載される。携帯端末１は、本発明の情報処理装置の一例である。なお、携帯端末１には、例えば携帯電話機やスマートフォン等が適用可能である。ＳＩＭカード１８は、ＵＩＣＣ（Universal Integrated Circuit Card）の一つであり、例えば、従来のＳＩＭ（Subscriber Identity Module）をベースに機能を拡張された接触型ＩＣチップを搭載する。ＳＩＭカード１８は、図示しないが、公知のＣ１〜Ｃ８の８個の端子を有する。ＣＬＦ１９は、決済処理端末２に接続された読取器と電波により無線通信（例えばＮＦＣの規格で規定される非接触通信）するための非接触型ＩＣチップ（例えばＮＦＣモジュール）である。ＣＬＦ１９には、非接触通信のフィールド内で当該通信を行うためのアンテナが接続されている。なお、ＣＬＦ１９は、携帯端末１のＯＳにより操作可能になっている。
【００１７】
図２（Ａ）は、本実施形態に係る携帯端末１の概要構成例を示すブロック図である。図２（Ａ）に示すように、携帯端末１は、処理部１１、記憶部１２、無線通信部１３、乱数生成器１４、入力部１５、ＩＣカードプロトコル処理部１６、及びＩＣカードコネクタ１６ａ等を備えて構成され、これらの構成要素はバス１７を介して相互に接続される。
【００１８】
処理部１１は、ＣＰＵ（Central Processing Unit）等により構成される。ＣＰＵは、本発明におけるプロセッサの一例である。記憶部１２は、例えばＲＡＭ、ＲＯＭ、及び不揮発性メモリ（例えばフラッシュメモリ）により構成される。記憶部１２におけるＲＯＭまたは不揮発性メモリには、ＯＳ（オペレーティングシステム）、ＡＰＩ（Application Program Interface）、及びアプリケーションソフトウェア（アプリケーションプログラム言語から構成されるソフトウェア）等が記憶される。ＡＰＩは、アプリケーションソフトウェアからＯＳの機能を利用するためのインターフェースである。アプリケーションソフトウェア（単に、「アプリ」ともいう）は、例えば所定のサーバからダウンロード可能なプログラムである。アプリケーションソフトウェアには、ユーザからの指示入力機能や表示機能を担うアプリケーションプログラム、無線通信部１３を介した通信機能を担うアプリケーションプログラム、決済処理端末２による決済処理時にＣＬＦ１９とのデータ通信を担うアプリケーションプログラムが含まれる。
【００１９】
また、ＯＳには、ＴＥＥ及びＲＥＥが含まれる。つまり、本実施形態では、１つのＣＰＵの上にＴＥＥとＲＥＥが並存するように構成される。ここで、ＲＥＥのプログラムは、本発明における第１のプログラムの一例であり、処理の高速性が要求される。一方、ＴＥＥのプログラムは、本発明における第２のプログラムの一例であり、処理のセキュリティ性が要求される。ＣＰＵは、ＲＥＥのプログラムの一つ以上の命令の処理の終了前にＴＥＥのプログラムの一つ以上の命令の処理を開始するパイプライン処理機能（例えば、論理回路により構成）を有する。
【００２０】
図２（Ｂ）は、ＣＰＵの概要構成例及び不揮発性メモリに格納されたＲＥＥ及びＴＥＥのプログラム例を示す図であり、図２（Ｃ）は、ＣＰＵで実行されるソフトウェアの概要構成例を示す図である。図２（Ｂ）に示すように、ＣＰＵは、プログラムカウンタ１１１（第１のプログラムカウンタ）、プログラムカウンタ１１２（第２のプログラムカウンタ）、及び命令レジスタを有する命令処理部１１３等を有する。ここで、プログラムカウンタ（ＲＥＥ用）１１１は、ＲＥＥのプログラムの命令（以下、ＲＥＥの命令」という）を記憶するメモリ（ＲＡＭ、ＲＯＭ、または不揮発性メモリ）のアドレスを格納する。プログラムカウンタ（ＴＥＥ用）１１２は、ＴＥＥのプログラムの命令（以下、ＴＥＥの命令」という）を記憶する上記メモリのアドレスを格納する。プログラムカウンタ１１１及びプログラムカウンタ１１２は、所定ビット長からなるレジスタであり、ＯＳの命令を先頭アドレスから順次実行するために一つ以上の命令が実行された後、その次に実行される命令が格納されているアドレスを示す役割がある。命令処理部１１３は、プログラムカウンタ１１１またはプログラムカウンタ１１２が示す命令をメモリから読み込み（フェッチして）、解釈（デコード）、実行、及び実行結果の書き込みなどの処理を行う。命令処理部１１３は、パイプライン処理機能により、ＲＥＥの一つ以上の命令の処理の終了前（つまり、当該命令に係る命令サイクル（フェッチサイクル）の途中で）ＴＥＥの一つ以上の命令の処理を開始するようになっている。また、命令処理部１１３は、ＴＥＥの一つ以上の命令の処理の終了前（つまり、当該命令に係る命令サイクル（フェッチサイクル）の途中で）ＲＥＥの一つ以上の命令の処理を開始するようになっている。なお、ＲＥＥの命令の処理と、ＴＥＥの命令との処理の切り替えは、例えば、図２（Ｃ）に示すスイッチングドライバーにより行われる。また、図２（Ｃ）に示すように、ＲＥＥ上で実行されるＡＰＩ及びアプリと、ＴＥＥ上で実行されるＡＰＩ及びアプリとは、独立分離している。
【００２１】
無線通信部１３は、アンテナを有し、無線通信回線との間で行われる無線通信を制御する。乱数生成器１４は、乱数を生成し処理部１１へ出力する。入力部１５は、例えばタッチパネル式の入力インターフェースであり、ユーザからの操作指示を受け付け、操作指示に応じた信号を処理部１１に出力する。
【００２２】
ＩＣカードコネクタ１６ａは、ＩＣカードプロトコル処理部１６と、ＳＩＭカード１８のＣ７端子とを接続する。ＩＣカードプロトコル処理部１６と、ＩＣカードプロトコル処理部１６は、ＳＩＭカード１８との間の通信を制御する。ＩＣカードプロトコル処理部１６とＳＩＭカード１８との間では、ＩＳＯ／ＩＥＣ７８１６規格で規定されるＴ＝０プロトコル通信が行われる。Ｔ＝０プロトコル通信は、半二重通信方式であり、電圧レベル変化で通信データを認識し、二者間通信の一方が送信の場合は他方は受信となる。また、ＩＣカードコネクタ１６ａは、ＣＬＦ１９と、ＳＩＭカード１８のＣ６端子とを接続する。ＣＬＦ１９とＳＩＭカード１８との間では、ＳＷＰ（Single Wire Protocol）通信が行われる。ＳＷＰ通信は、同時に双方向に送信可能な全二重通信方式である。
【００２３】
ＣＰＵは、ＴＥＥの一つ以上の命令の処理を開始する前又は開始した後に、乱数生成器１４により生成された乱数（乱数値）を確認し当該乱数が所定値である場合、ＲＥＥの命令の処理を行う。ここで、所定値は、どのような値であってもよい。例えば、所定値は“１１１１”（以下、「ＯＮ」という）にセットされる。“１１１１”をＯＮと称し、これ以外はＯＦＦと称する。
【００２４】
図３（Ａ）は、通常のパイプライン処理の一例を示す図であり、図３（Ｂ）は、乱数を確認する場合のパイプライン処理の一例を示す図である。なお、図３において、Ｔ１〜Ｔ９はタイミング（時間）を示す。図３（Ａ）の例では、命令処理部１１３は、プログラムカウンタ１１１が示すアドレスの「ＲＥＥの命令１」を例えば不揮発性メモリから読み込み、解釈、実行、及び書き込みの処理を行うが、その命令サイクル中に、プログラムカウンタ１１２が示すアドレスの「ＴＥＥの命令１」を上記メモリから読み込み、解釈、実行、及び書き込みの処理を行うようになっている。なお、図３（Ｂ）の例では、ＲＥＥの命令とＴＥＥの命令とは交互に行われているが、必ずしも交互に行われなくてもよい。
【００２５】
一方、図３（Ｂ）の例では、命令処理部１１３は、プログラムカウンタ１１１が示すアドレスの「ＲＥＥの命令１」を上記メモリから読み込み、解釈、実行等する処理を行うが、その命令サイクル中に、乱数生成器１４により生成された乱数を確認、つまり、プログラムカウンタ１１２が示すアドレスの「ＴＥＥの命令１」を上記メモリから読み込む直前に乱数を確認しており、当該乱数がＯＦＦであったため（if;OFF）、当該「ＴＥＥの命令１」を上記メモリから読み込んでいる。その後、命令処理部１１３は、プログラムカウンタ１１１が示すアドレスの「ＲＥＥの命令２」を上記メモリから読み込み、解釈、実行等する処理を行うが、その命令サイクル中に、乱数生成器１４により生成された乱数を確認、つまり、プログラムカウンタ１１２が示すアドレスの「ＴＥＥの命令２」を上記メモリから読み込む直前に乱数を確認しており、当該乱数がＯＮであったため（if;ON）、当該「ＴＥＥの命令２」の代わりに、プログラムカウンタ１１２が示すアドレスの「ＲＥＥの命令３」を読み込み、解釈及び実行等する処理を行っている。このようにＴＥＥの命令の処理タイミングは、乱数生成器１４により生成された乱数に従って変化（つまり、処理周期が変化）するので、ＳＣＡに対抗しセキュリティを保つことができる。一方、ＲＥＥの命令の処理タイミングは、乱数生成器１４により生成された乱数に従って短縮されるので、高速化を実現することができる。
【００２６】
以上説明したように、上記実施形態によれば、ＣＰＵは、ＴＥＥの一つ以上の命令の処理を開始する前又は開始した後に、乱数生成器１４により生成された乱数を確認し当該乱数が所定値である場合、ＲＥＥの命令の処理を行うように構成したので、高速性、かつセキュリティ性を実現することできる。
【００２７】
なお、上記実施形態においては、本発明におけるプログラムとしてＯＳを例にとって説明したが、アプリケーションソフトウェアに対しても適用することができる。また、上記実施形態においては、２つのプログラムカウンタ１１１及び１１２が用いられて命令の処理が行われる場合を例にとって説明したが、他の例として、ＴＥＥのタスクの状態（例えば、レジスタの値）とＲＥＥのタスクの状態を管理することで、命令の処理が行われるものであってもよい。
【符号の説明】
【００２８】
１  携帯端末
１１  処理部
１２  記憶部
１３  無線通信部
１４  乱数生成器
１５  入力部
１６  ＩＣカードプロトコル処理部
１６ａ  ＩＣカードコネクタ
１８  ＳＩＭカード
１９  ＣＬＦ
【図１】
2015162115.tif 000003
【図２】
2015162115.tif 000004
【図３】
2015162115.tif 000005