(57)【要約】【課題】攻撃者からのメモリダンプによる重要データの盗聴を防止することのできる処理デバイスを提供する。【解決手段】処理デバイスにおいて、特徴的な構造や値を持っているライセンスなどの重要データをメモリ１４０上に平文で格納する際に、同じメモリ１４０上にその重要データと類似した疑似ライセンスなどの擬似データを大量に生成し、重要データと共にメモリ１４０内に格納する。【選択図】図１
2007310580.tif 000002
【特許請求の範囲】
【請求項１】
メモリを用いて、複数の規定要素を含む構造を有するデータを処理する処理デバイスであって、
前記データと同じ構造を有し、前記規定要素に前記データとは異なる値を持つ複数の疑似データを生成する疑似データ生成モジュールを有し、前記データおよび前記疑似データ生成モジュールにより生成された前記複数の疑似データを前記メモリに格納し、前記メモリ内の前記データと前記複数の擬似データを暗号化する疑似セキュアモジュールを備えたことを特徴とする処理デバイス。
【請求項２】
メモリを用いて、複数の規定要素を含む構造を有するデータを処理する処理デバイスであって、
前記データと同じ構造を有し、前記規定要素に前記データとは異なる値を持つ複数の疑似データを生成する疑似データ生成モジュールを有し、暗号化された前記データを復号化して前記メモリに格納する際、復号化された前記データおよび前記疑似データ生成モジュールにより生成された前記複数の疑似データを前記メモリに格納する疑似セキュアモジュールを備えたことを特徴とする処理デバイス。
【請求項３】
請求項１または２記載の処理デバイスにおいて、
前記データは、前記処理デバイス内で実行中のアプリケーションが利用するライセンスデータであることを特徴とする処理デバイス。
【請求項４】
請求項１、２または３記載の処理デバイスにおいて、
前記疑似データ生成モジュールは、前記疑似データを生成する際、前記データ内に含まれる前記規定要素のうち、既知な前記規定要素の値以外を、前記データとは異なる値とすることを特徴とする処理デバイス。
【請求項５】
請求項４記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、前記データの構造を解析し、前記データ内の前記既知な前記規定要素を抽出するデータ解析モジュールを有することを特徴とする処理デバイス。
【請求項６】
請求項１、２または３記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、前記データを格納する前記メモリ内のアドレスを生成し、生成したアドレスを格納するアドレス生成モジュールを有し、
前記疑似セキュアモジュールは、前記アドレス生成モジュール内に格納されたアドレスに基づいて、前記データを前記メモリに格納することを特徴とする処理デバイス。
【請求項７】
請求項６記載の処理デバイスにおいて、
前記アドレス生成モジュールは、前記データを格納する前記メモリ内のアドレスを、乱数を用いて生成することを特徴とする処理デバイス。
【請求項８】
請求項６または７記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、前記処理デバイス内で実行中のアプリケーションからの前記データの利用要求に対して、前記アドレス生成モジュール内に格納された前記アドレスを返信することを特徴とする処理デバイス。
【請求項９】
請求項６、７または８記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、前記データに対応したデータＩＤに対して、前記アドレス、および前記既知な前記規定要素の値を格納したテーブルを有し、
前記疑似セキュアモジュールは、前記テーブルの情報に基づいて、前記疑似データ生成モジュールにより前記疑似データを生成し、前記データおよび前記疑似データを前記メモリに格納することを特徴とする処理デバイス。
【請求項１０】
請求項１、２または３記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、前記データおよび前記複数の疑似データを、前記メモリに格納する際、前記データおよび前記複数の疑似データを前記メモリに格納するタイミングを、タイマを用いて制御することを特徴とする処理デバイス。
【請求項１１】
請求項１０記載の処理デバイスにおいて、
前記タイマは、前記疑似セキュアモジュールによる前記データの暗号化および復号化の処理に要する時間を計測し、
前記疑似セキュアモジュールは、前記タイマにより計測された時間情報に基づいて、前記タイミングを制御することを特徴とする処理デバイス。
【請求項１２】
請求項１０または１１記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、前記タイミングを、全て同じ間隔、全て異なる間隔、または１つだけ異なる間隔のいずれかで制御することを特徴とする処理デバイス。
【請求項１３】
請求項１記載の処理デバイスにおいて、
前記メモリは、データ格納バッファおよび暗号演算バッファを有し、
前記疑似セキュアモジュールは、前記データおよび前記疑似データ生成モジュールにより生成された前記複数の疑似データを前記メモリ内の暗号演算バッファに格納し、前記メモリ内の暗号演算バッファに格納された前記データおよび前記複数の擬似データを暗号化して、ライセンス格納バッファに格納することを特徴とする処理デバイス。
【請求項１４】
請求項１３記載の処理デバイスにおいて、
前記疑似セキュアモジュールは、
前記データおよび前記疑似データ生成モジュールにより生成された前記複数の疑似データを前記メモリ内の暗号演算バッファに格納した後、前記暗号演算バッファに格納された前記データおよび前記複数の疑似データをシャッフルすることを特徴とする処理デバイス。
【請求項１５】
請求項１３記載の処理デバイスにおいて、
前記データおよび前記疑似データ生成モジュールにより生成された前記複数の疑似データを前記メモリ内の暗号演算バッファに格納した後、前記暗号演算バッファに格納された前記データおよび前記複数の疑似データを、それぞれ分割し、分割された前記データおよび分割された前記複数の疑似データをシャッフルすることを特徴とする処理デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンスのような重要なデータを処理するソフトウェアを実行する処理デバイスにおけるセキュリティ技術に関し、特に、メモリ上に格納するデータの不正検索防止に適用して有効な技術に関する。
【背景技術】
【０００２】
近年、インターネットを利用したソフトウェアやコンテンツの配布が行われるようになってきた。インターネットを用いた配布形態では、ソフトウェアやコンテンツは暗号化された状態でユーザに配布され、使用時にパスワードやライセンスなどを用いて復号し使用するのが一般的である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
通常、ライセンスのような重要なデータは攻撃者からの盗聴や改ざんを防ぐため、使用時以外は暗号化され保存されている。
【０００４】
しかし、このデータを使用する際は復号化する必要があるため、メモリに平文となった重要なデータが存在する。このため、攻撃者により、メモリダンプを用いてメモリを監視することにより、この平文となった重要なデータが盗聴されてしまうといった問題があった。
【０００５】
そこで、本発明の目的は、攻撃者からのメモリダンプによる重要データの盗聴を防止することのできる処理デバイスを提供することにある。
【課題を解決するための手段】
【０００６】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【０００７】
本発明による処理デバイスは、メモリを用いて、複数の規定要素を含む構造を有するデータを処理する処理デバイスであって、データと同じ構造を有し、規定要素にデータとは異なる値を持つ複数の疑似データを生成する疑似データ生成モジュールを有し、データと前記疑似データ生成モジュールにより生成された前記複数の疑似データをメモリに格納し、メモリ内の前記データおよび複数の擬似データを暗号化する疑似セキュアモジュールを備えたものである。
【０００８】
また、本発明による処理デバイスは、メモリを用いて、複数の規定要素を含む構造を有するデータを処理する処理デバイスであって、データと同じ構造を有し、規定要素にデータとは異なる値を持つ複数の疑似データを生成する疑似データ生成モジュールを有し、暗号化されたデータを復号化してメモリに格納する際、復号化されたデータおよび疑似データ生成モジュールにより生成された複数の疑似データをメモリに格納する疑似セキュアモジュールを備えたものである。
【発明の効果】
【０００９】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１０】
本発明によれば、攻撃者が特徴的な構造に基づいてメモリ上の重要なデータを検索しても、大量の類似データが同時に検出されるため、その中から重要なデータを特定することは非常に困難となり、ライセンスなどの重要データの盗聴を防止することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１２】
（実施の形態１）
＜処理デバイスの構成＞
図１および図２により、本発明の実施の形態１に係る処理デバイスの構成について説明する。図１は本発明の実施の形態１に係る処理デバイスの構成を示す構成図、図２は本発明の実施の形態１に係る処理デバイスで使用されるライセンスおよび擬似ライセンスを説明するための説明図であり、図２（ａ）はライセンスの構造を示し、図２（ｂ）は疑似ライセンスの構造を示している。
【００１３】
図１において、処理デバイスである演算装置１１０は、アプリケーション１２０と擬似セキュアモジュール１３０を含む装置であり、アプリケーション１２０や擬似セキュアモジュール１３０の他にＣＰＵやコントローラ等を含む装置でもある。
【００１４】
アプリケーション１２０はライセンスを用いて実行するアプリケーションである。ライセンスとは特徴的な構造を持つデータのことである。
【００１５】
また、アプリケーション１２０は、例えば、ＲＯＭなどに格納されたものを演算装置１１０に読み込むか、または、演算装置１１０内に予めデータとして格納されている。
【００１６】
擬似セキュアモジュール１３０は、耐タンパが保障されているモジュールであり、ライセンステーブル１３１、タイマ１３２、暗号処理モジュール１３３、アドレス生成モジュール１３４、ライセンス解析モジュール１３５、擬似ライセンス生成モジュール１３６、乱数生成モジュール１３７から構成される。
【００１７】
また、擬似セキュアモジュール１３０は、演算装置１１０のＣＰＵとは別のモジュールとして構成されている。
【００１８】
ライセンステーブル１３１はライセンスを一意に識別するライセンスＩＤをライセンス構造の中で攻撃者が事前に知ることが可能な値とライセンス格納バッファ１４２のアドレスを対応付けるためのテーブルである。
【００１９】
タイマ１３２はライセンスの暗復号処理に要する時間をＣＰＵやクロック等を用いて制御するモジュールである。
【００２０】
暗号処理モジュール１３３はＴ−ＤＥＳ、ＡＥＳ、ＳＨＡ−１等の複数の暗号処理を行うモジュールである。アドレス生成モジュール１３４は暗号演算バッファ１４４にライセンスを格納する際の格納先アドレスを生成するモジュールである。生成するアドレスは乱数生成モジュール１３７により生成される乱数を用いるため、ライセンスを格納する毎にアドレスは変化する。
【００２１】
ライセンス解析モジュール１３５はライセンスの構造を解析し、攻撃者が事前に知ることが可能な値をライセンスから抽出するモジュールである。
【００２２】
擬似ライセンス生成モジュール１３６はライセンステーブル１３１に登録してある情報を元に擬似ライセンスを生成するモジュールである。ライセンスと擬似ライセンスの違いについては後に説明する。乱数生成モジュール１３７は擬似乱数ならびに自然乱数を生成するモジュールである。
【００２３】
また、演算装置１１０には、メモリ１４０、ＨＤＤ１５０が接続され、演算装置１１０、メモリ１４０、ＨＤＤ１５０で、例えば、暗号化されたコンテンツなどを再生する情報処理装置（以下、ＰＣという）１００を構成している。
【００２４】
メモリ１４０はライセンス格納バッファ１４２と暗号演算バッファ１４４から構成される。
【００２５】
ライセンス格納バッファ１４２はアプリケーション１２０が実行している時に暗号化したライセンスを格納しておくバッファである。ライセンス格納バッファ１４２には複数の暗号化されたライセンスが格納されている。
【００２６】
暗号演算バッファ１４４はライセンス格納バッファ１４２にライセンスを格納する際に行う暗号処理やライセンス格納バッファ１４２に格納してある暗号化ライセンスを使用する際に行う復号処理等を行うバッファである。
【００２７】
ＨＤＤ１５０はアプリケーション１２０が実行していない時にライセンス格納バッファ１４２の内容をファイルとして保存する場所であり、暗号化されたコンテンツなども保存される。
【００２８】
なお、擬似セキュアモジュール１３０はＰＣ１００の内部に存在する形態のほかにＰＣ１００の外部モジュールとして存在してもよい。
【００２９】
ここで、本実施の形態で使用される、ライセンスと擬似ライセンスとの違いについて説明する。
【００３０】
まず、ライセンスの構造は、図２（ａ）に示すように、例えば、規定要素として、ライセンス復号鍵２０２、ライセンス識別コード２０４、ライセンスの使用回数２０６、ライセンスの有効期限２０８から構成されているものとする。
【００３１】
攻撃者は仕様書を調査することにより、ライセンスの構造を知ることは可能である。使用回数や有効期限の情報はライセンスの購入に必要な情報であるため、攻撃者はライセンスの使用回数２０６やライセンスの有効期限２０８の値を知ることができるが、ライセンス復号鍵２０２やライセンス識別コード２０４の値はライセンス配布元が設定する値であるため、攻撃者は知ることができない。
【００３２】
また、擬似ライセンス２１０とは、図２（ｂ）に示すように、攻撃者が知ることのできないライセンス復号鍵２０２やライセンス識別コード２０４の値がライセンス２００とは違う値になっているデータのことである。
【００３３】
ライセンス２００のようなアプリケーションの実行に必要なデータを長時間メモリ１４０に格納することは、メモリダンプのような攻撃によって攻撃者にライセンス２００を検索される恐れがある。このような検索からライセンス２００を保護するためには、本実施の形態により提案する擬似セキュアモジュール１３０のような構成が必要となる。
【００３４】
＜暗号化されたライセンスのダウンロード動作＞
次に、図３〜図８により、本発明の実施の形態１に係る処理デバイスにおけるアプリケーション１２０が暗号化されたライセンス（以後、暗号化ライセンス）をサーバや他のＰＣからダウンロードする動作について説明する。図３は本発明の実施の形態１に係る処理デバイスにおけるアプリケーションが暗号化ライセンスをサーバや他のＰＣからダウンロードする動作を示すフローチャート、図４は本発明の実施の形態１に係る処理デバイスにおけるライセンスおよび疑似ライセンスの格納動作を示すフローチャート、図５〜図７は本発明の実施の形態１に係る処理デバイスのタイマを用いた制御動作を説明するための説明図、図８は本発明の実施の形態１に係る処理デバイスの暗号演算バッファに格納してあるライセンスを暗号化し、ＨＤＤに格納する動作を示すフローチャートである。
【００３５】
まず、図３に示すように、アプリケーション１２０は擬似セキュアモジュール１３０に対し、ダウンロード開始要求を送信する（ステップ３０１）。
【００３６】
ダウンロード開始要求を受信した擬似セキュアモジュール１３０はライセンステーブル１３１にライセンスＩＤを登録する（ステップ３０２〜ステップ３０３）。
【００３７】
ライセンスＩＤはアプリケーション１２０もしくは擬似セキュアモジュール１３０が一意に割り当てる。
【００３８】
ライセンステーブル１３１内のアドレスは事前にライセンス格納バッファ１４２のアドレスを割り当てても、その場でアドレス生成モジュール１３４を用いて生成してもよい。
【００３９】
ただし、アドレス生成モジュール１３４を用いて生成する場合、他のライセンスＩＤのアドレスと重ならないようにする必要がある。
【００４０】
ライセンステーブル１３１にライセンスＩＤを登録した後、ライセンス復号化要求を暗号処理モジュール１３３に送信する（ステップ３０４）。
【００４１】
ライセンス復号化要求を受信した暗号処理モジュール１３３はダウンロードした暗号化ライセンスの復号化を行い、復号化完了通知を擬似セキュアモジュール１３０に送信し（ステップ３０５〜ステップ３０７）、復号化完了通知を受信した擬似セキュアモジュール１３０はライセンス解析モジュール１３５にライセンス解析要求を送信する（ステップ３０８〜ステップ３０９）。
【００４２】
ライセンス解析要求を受信したライセンス解析モジュール１３５は、ライセンスの構造や、ユーザが知ることのできる情報など、ライセンスの解析を行い、擬似ライセンス生成に必要なデータをライセンステーブル１３１に登録する（ステップ３１０〜ステップ３１２）。
【００４３】
次に、擬似セキュアモジュール１３０は暗号演算バッファ１４４のアドレスを生成するためアドレス生成モジュール１３４にアドレス生成要求を送信する（ステップ３１３）。
【００４４】
アドレス生成要求を受信したアドレス生成モジュール１３４は暗号演算バッファ１４４のアドレスを生成し（ステップ３１４〜ステップ３１５）、この際のアドレス生成には乱数生成モジュール１３７を使用する。
【００４５】
生成したアドレスはアドレス生成モジュール１３４内に格納し（ステップ３１６）、格納した後、生成したアドレスを擬似セキュアモジュール１３０に送信する（ステップ３１７）。
【００４６】
暗号演算バッファ１４４のアドレスを受信した擬似セキュアモジュール１３０は、後述する図４の処理により、ライセンスを暗号演算バッファ１４４に格納する（ステップ３１８〜ステップ３２１）。
【００４７】
このような処理により、擬似セキュアモジュール１３０は暗号演算バッファ１４４の最上位アドレスから順にライセンスもしくは擬似ライセンスを格納する。
【００４８】
また、ライセンスまたは疑似ライセンスの格納処理の詳細は、図４に示すように、まず、暗号演算バッファへの格納を開始し（ステップ３１９）、擬似セキュアモジュール１３０は、図３のステップ３１６で格納したアドレスに基づいて、ライセンスを格納するアドレスかを判断する（ステップ４０１）。
【００４９】
ステップ４０１で、データを格納しようとしている暗号演算バッファ１４４のアドレスがアドレス生成モジュール１３４に格納してあるアドレスではない場合、擬似ライセンス生成モジュール１３６に擬似ライセンス生成要求を送信する（ステップ４０２）。
【００５０】
擬似ライセンス生成要求を受信した擬似ライセンス生成モジュール１３６は、擬似ライセンス生成に必要な乱数を取得するため乱数生成モジュール１３７に乱数発生要求を送信する（ステップ４０３〜ステップ４０４）。
【００５１】
乱数発生要求を受信した乱数生成モジュール１３７は擬似ライセンス生成に必要な乱数を発生させ、発生させた乱数を擬似ライセンス生成モジュール１３６に送信する（ステップ４０５〜ステップ４０７）。
【００５２】
乱数を受信した擬似ライセンス生成モジュール１３６は受信した乱数とライセンステーブル１３１に登録したある値を用いて擬似ライセンスを生成し（ステップ４０８〜ステップ４１０）、タイマ１３２を用いてある特定のタイミングで擬似ライセンスを暗号演算バッファ１４４に格納する（ステップ４１１）。
【００５３】
ステップ４０１で、データを格納しようとしている暗号演算バッファ１４４のアドレスがアドレス生成モジュール１３４に格納してあるアドレスの場合、タイマ１３２を用いてある特定のタイミングでライセンスを暗号演算バッファ１４４に格納する（ステップ４１２）。
【００５４】
そして、ステップ４０１〜ステップ４１３の処理を暗号演算バッファ１４４全てにデータが格納されるまで行う（ステップ４１３）。
【００５５】
以上の処理がサーバ等からダウンロードしたライセンスを暗号演算バッファ１４４に格納する流れである。
【００５６】
このように、ライセンスと大量の擬似ライセンスを同じバッファ内に格納することにより、メモリダンプ等を用いたライセンスの不正な検索を防ぐことができる。アプリケーション１２０がライセンスを使用する際は、アプリケーション１２０にライセンスを格納してあるアドレスもしくはライセンスを通知する。
【００５７】
また、擬似ライセンスを暗号演算バッファ１４４に格納するのに必要な時間とライセンスを暗号演算バッファ１４４に格納するのに必要な時間を比較した場合、擬似ライセンスを格納するのに必要な時間の方が擬似ライセンスを生成する分だけ長くなる。この時間の差により攻撃者に暗号演算バッファ１４４内のライセンスの位置を知られる恐れがある。このようなライセンス検索を防ぐため、本実施の形態では、タイマ１３２を用いて暗号演算バッファ１４４にデータを格納するタイミングを制御している。
【００５８】
以下、図５〜図７を用いてタイマ１３２を用いた制御方法について説明する。
【００５９】
まず、暗号演算バッファ１４４の最上位アドレスから３番目にライセンスを格納する場合を例に説明する。
【００６０】
図５に示すように、暗号演算バッファ１４４の最上位アドレスに擬似ライセンスを格納してからｔ後に、別のデータを持つ擬似ライセンスを暗号演算バッファ１４４に格納する（ステップ５０１）。
【００６１】
さらに、ｔ後にライセンスを暗号演算バッファ１４４に格納する（ステップ５０２）。この操作を暗号演算バッファ１４４にデータが埋まるまで続ける（ステップ５０３〜ステップ５０４）。
【００６２】
この際のｔの条件は擬似ライセンスを暗号演算バッファ１４４に格納するのに必要な時間より長いことである。
【００６３】
また、図６に示す例では、図５に示す例と同じように暗号演算バッファ１４４の最上位アドレスからデータを格納するが、図５に示すように全て同じタイミングでなく、反対に全て違うタイミングでデータを格納する方法を表している（ステップ６０１〜ステップ６０４）。
【００６４】
この際の条件はｔ１〜ｔＮの値が全て擬似ライセンスを暗号演算バッファ１４４に格納するのに必要な時間より長いことである。
【００６５】
さらに、図７に示す例では、擬似ライセンスを格納する１箇所だけ異なる時間にすることにより、攻撃者に擬似ライセンスをライセンスと思わせる効果もある（ステップ７０１〜ステップ７０４）。この場合の条件も図５、図６と同様である。
【００６６】
次に、暗号演算バッファ１４４に格納してあるライセンスを暗号化し、ＨＤＤ１５０に格納するまでの手順について説明する。
【００６７】
まず、図８に示すように、擬似セキュアモジュール１３０は暗号処理モジュール１３３にライセンス暗号化要求を送信する（ステップ８０１）。ライセンス暗号化要求を受信した暗号処理モジュール１３３は暗号演算バッファ１４４に格納してあるライセンスならびに擬似ライセンスをデータ毎に暗号化する（ステップ８０２〜ステップ８０３）。
【００６８】
暗号演算バッファ１４４に格納してある全データの暗号化が終了したら擬似セキュアモジュール１３０に暗号化完了通知を送信する（ステップ８０４〜ステップ８０５）。暗号化完了通知を受信した擬似セキュアモジュール１３０はライセンステーブル１３１のアドレスを元にライセンス格納バッファ１４２に暗号化ライセンスを格納し、暗号演算バッファ１４４をクリアする（ステップ８０６〜ステップ８０８）。
【００６９】
アプリケーション１２０の実行が終了した場合、ライセンス格納バッファ１４２に格納してある暗号化ライセンスをＨＤＤ１５０に保存する（ステップ８０９）。さらに、長時間、暗号化していないライセンスを暗号演算バッファ１４４に格納することを避けるため、タイマ１３２を用いてある時刻を経過した場合、自動的に上記の暗号処理（ステップ８０１〜ステップ８０９）を行ってもよい。
【００７０】
＜ライセンスの読み出し動作＞
次に、図９〜図１２により、本発明の実施の形態１に係る処理デバイスにおけるＨＤＤ１５０に格納してある暗号化ライセンスをアプリケーション１２０が読み出す動作について説明する。図９は本発明の実施の形態１に係る処理デバイスにおけるＨＤＤに格納してある暗号化ライセンスをアプリケーションが読み出す動作を示すフローチャート、図１０は本発明の実施の形態１に係る処理デバイスの暗号化ライセンスを暗号演算バッファに格納する処理を説明するための説明図、図１１は本発明の実施の形態１に係る処理デバイスのライセンスの復号処理の動作を示すフローチャート、図１２は本発明の実施の形態１に係る処理デバイスの復号化したライセンスを暗号演算バッファに格納するタイミングを説明するための説明図である。
【００７１】
まず、図９に示すように、アプリケーション１２０が実行されるとファイルとしてＨＤＤ１５０に格納してある暗号化ライセンスをライセンス格納バッファ１４２に展開する（ステップ９０１）。
【００７２】
アプリケーション１２０は読み出したいライセンスのライセンスＩＤを擬似セキュアモジュール１３０に送信する（ステップ９０２）。ライセンスＩＤを受信した擬似セキュアモジュール１３０はライセンステーブル１３１を検索し、暗号化ライセンスが格納されているライセンス格納バッファ１４２のアドレスを取得する（ステップ９０３〜ステップ９０６）。
【００７３】
暗号化ライセンスを復号化するため、擬似セキュアモジュール１３０はアドレス生成モジュール１３４に暗号演算バッファ１４４のアドレスの生成要求を送信し（ステップ９０７）、アドレス生成要求を受信したアドレス生成モジュール１３４は暗号演算バッファ１４４のアドレスを生成し、生成したアドレスをアドレス生成モジュール１３４内に格納する（ステップ９０８〜ステップ９１０）。
【００７４】
格納した後、生成したアドレスを擬似セキュアモジュール１３０に送信する（ステップ９１１）。アドレスを受信した擬似セキュアモジュール１３０はタイマ１３２を用いて暗号化ライセンスを暗号演算バッファ１４４に格納する処理を行う（ステップ９１２〜ステップ９１３）。この暗号化ライセンスを格納する処理の詳細については、図１０を参照して後述する。
【００７５】
格納処理後、擬似セキュアモジュール１３０は暗号処理モジュール１３３にライセンス復号化要求を送信する（ステップ９１４）。ライセンス復号化要求を受信した暗号処理モジュール１３３は、後述する図１１の処理により、ライセンスの復号化処理を行い、復号化完了通知を擬似セキュアモジュール１３０に送信する（ステップ９１５〜ステップ９１７）。
【００７６】
復号化完了通知を受信した擬似セキュアモジュール１３０はライセンスが格納されている暗号演算バッファ１４４のアドレスを取得するため、アドレス生成モジュール１３４にアドレス取得要求を送信する（ステップ９１８〜ステップ９１９）。
【００７７】
アドレス取得要求を受信したアドレス生成モジュール１３４は、暗号演算バッファ１１４にライセンスを格納する際に生成され、アドレス生成モジュール１３４内に格納してある暗号演算バッファ１４４のアドレスを擬似セキュアモジュール１３０に送信する（ステップ９２０〜ステップ９２１）。アドレスを受信した擬似セキュアモジュール１３０はそのアドレスもしくはそのアドレスに格納してあるデータをアプリケーション１２０に送信する（ステップ９２２〜ステップ９２３）。
【００７８】
擬似ライセンスを格納する場合と同様、暗号化ライセンスを暗号演算バッファ１４４に格納するのに必要な時間と乱数を暗号演算バッファ１４４に格納するのに必要な時間を比較した場合、乱数を格納する方が乱数を生成する分だけ長くなる。この差による攻撃を防ぐため、擬似ライセンスの格納の場合と同様に暗号演算バッファ１４４にデータを格納するタイミングを制御する。
【００７９】
このタイミングの制御を図１０を用いて説明する。
【００８０】
図１０においては、暗号演算バッファ１４４の最上位アドレスから２番目に暗号化ライセンスを格納する場合を例に説明する。
【００８１】
まず、乱数生成モジュール１３７で生成した乱数１を暗号演算バッファ１４４に格納する。乱数１を格納してからｔ後（もしくはｔ１後）に暗号化ライセンスを格納する（ステップ１００１）。暗号化ライセンスを格納してからさらにｔ後（もしくはｔ２後）に乱数生成モジュール１３７で生成した乱数２を暗号演算バッファ１４４に格納する（ステップ１００２）。
【００８２】
さらに、ｔ後（もしくはｔ３後）に乱数生成モジュール１３７で生成した乱数３を暗号演算バッファ１４４に格納する（ステップ１００３）。この操作を暗号演算バッファ１４４に全てデータが埋まるまで続ける（ステップ１００４）。
【００８３】
この操作の条件は擬似ライセンスを格納する時と同様、ｔもしくはｔ１〜ｔＮの値が乱数を暗号演算バッファ１４４に格納するのに必要な時間より長いことである。
【００８４】
次に、ライセンスの復号処理（ステップ９１６）の動作としては、図１１に示すように、まず、ライセンスの復号化要求を受信した暗号処理モジュール１３３は、暗号演算バッファ１４４の最上位アドレスから順に擬似ライセンスもしくは暗号化ライセンスを復号化したライセンスを格納する。
【００８５】
このとき、データを格納しようとしているアドレスがアドレス生成モジュール１３４に格納してあるアドレスでない場合、擬似ライセンス生成モジュール１３６に擬似ライセンス生成要求を送信する（ステップ１１０１〜ステップ１１０２）。
【００８６】
擬似ライセンス生成要求を受信した擬似ライセンス生成モジュール１３６は、擬似ライセンス生成に必要な乱数を取得するため乱数生成モジュール１３７に乱数発生要求を送信する（ステップ１１０３〜ステップ１１０４）。
【００８７】
乱数発生要求を受信した乱数生成モジュール１３７は擬似ライセンス生成に必要な乱数を発生させ、発生させた乱数を擬似ライセンス生成モジュール１３６に送信する（ステップ１１０５〜ステップ１１０７）。
【００８８】
乱数を受信した擬似ライセンス生成モジュール１３６は受信した乱数とライセンステーブル１３１に登録してある値を用いて擬似ライセンスを生成し（ステップ１１０８〜ステップ１１１０）、タイマ１３２を用いてある特定のタイミングで擬似ライセンスを暗号演算バッファ１４４に格納する（ステップ１１１１）。
【００８９】
また、データを格納しようとしているアドレスがアドレス生成モジュール１３４に格納してあるアドレスである場合、タイマ１３２を用いてある特定のタイミングで暗号化ライセンスを復号化し、復号化したライセンスを暗号演算バッファ１４４に格納する（ステップ１１０１、ステップ１１１２）。
【００９０】
そして、ステップ１１０１〜ステップ１１１２の処理を暗号演算バッファ１４４全てにデータが格納されるまで行う（ステップ１１１３）。
【００９１】
ライセンスまた擬似ライセンスを格納するタイミングは、ライセンスを復号化し暗号演算バッファ１４４に格納するのに必要な時間と擬似ライセンスを生成し暗号演算バッファ１４４に格納するのに必要な時間の両方より長いものとする。格納するタイミングは、図１２に示すように、図５〜図７にと同様なタイミングで格納する。
【００９２】
以上のように、本実施の形態では、メモリ１４０上に、ライセンスと、ライセンスと構造が同じである疑似ライセンスのデータが格納されるため、攻撃者が特徴的な構造に基づいてメモリ１４０上のライセンスなどの重要なデータを検索しても、大量の疑似ライセンスなどの類似データが同時に検出されるため、その中から重要なデータを特定することは非常に困難となり、ライセンスなどの重要データの盗聴を防止することが可能となる。
【００９３】
（実施の形態２）
実施の形態２は、実施の形態１の図５〜図７に示した処理をさらに複雑にし、ライセンスの不正検索をより困難にしたものである。
【００９４】
＜処理デバイスの構成＞
図１３により、本発明の実施の形態２に係る処理デバイスの構成について説明する。図１３は本発明の実施の形態２に係る処理デバイスの構成を説明するための説明図であり、本実施の形態の処理デバイスの全体構成は、実施の形態１の図１と同様である。本実施の形態では、図１３に示すように、メモリ１４０内に、暗号演算バッファ１４４を２つ用意している（それぞれ暗号演算バッファａ、暗号演算バッファｂとする）。
【００９５】
＜処理デバイスの動作＞
次に、本発明の実施の形態２に係る処理デバイスの動作について説明する。
【００９６】
まず、暗号演算バッファａに実施の形態１の図３に示すステップ３０１〜ステップ３２１の手順で擬似ライセンスならびにライセンスを格納する（ステップ１３０１）。
【００９７】
各データを暗号化する際、暗号化結果を暗号演算バッファｂに格納する。
【００９８】
このとき、暗号演算バッファｂに格納するアドレスはアドレス生成モジュール１３４を用いて生成する（ステップ１３０２）。したがって、暗号処理バッファｂに格納されるデータは、暗号処理バッファａのデータがシャッフルされた状態となる。
【００９９】
ライセンス格納バッファ１４２に暗号化ライセンスを格納する際はアドレス生成モジュール１３４からアドレスを取得して、そのアドレスのデータを格納する（ステップ１３０３）。
【０１００】
以上のように、本実施の形態では、メモリ１４０上に、ライセンスと、ライセンスと構造が同じである疑似ライセンスのデータが格納されるため、攻撃者が特徴的な構造に基づいてメモリ１４０上のライセンスなどの重要なデータを検索しても、大量の疑似ライセンスなどの類似データが同時に検出され、さらに、暗号処理バッファｂへ格納される暗号ライセンスは暗号処理バッファｂにシャッフルして格納されるため、さらにその中から重要なデータを特定することは非常に困難となり、ライセンスなどの重要データの盗聴を防止することが可能となる。
【０１０１】
（実施の形態３）
実施の形態３は、実施の形態１の図５〜図７に示した処理をさらに複雑にし、ライセンスの不正検索をより困難にしたものである。
【０１０２】
＜処理デバイスの構成＞
図１４により、本発明の実施の形態３に係る処理デバイスの構成について説明する。図１４は本発明の実施の形態３に係る処理デバイスの構成を説明するための説明図であり、本実施の形態の処理デバイスの全体構成は、実施の形態１の図１と同様である。本実施の形態では、図１４に示すように、メモリ１４０内に、暗号演算バッファ１４４を２つ用意している（それぞれ暗号演算バッファａ、暗号演算バッファｂとする）。
【０１０３】
＜処理デバイスの動作＞
次に、本発明の実施の形態２に係る処理デバイスの動作について、説明する。
【０１０４】
まず、暗号演算バッファａに実施の形態１の図３に示すステップ３０１〜ステップ３２１の手順で擬似ライセンスならびにライセンスを格納する（ステップ１４０１）。
【０１０５】
このとき、各データを暗号化する前に、データを２つ分割し、それぞれを暗号演算バッファｂの別アドレスに格納する（ステップ１４０２）。暗号演算バッファｂに格納するアドレスはアドレス生成モジュール１３４を用いて生成する。したがって、暗号処理バッファｂに格納されるデータは、暗号処理バッファａのデータがシャッフルされた状態となる。暗号演算バッファｂ上の各分割したデータ毎に暗号化を行う（ステップ１４０３）。
【０１０６】
なお、図１４に示す処理方法は、図１３に示す処理方法と組み合わせて使うことも可能である。
【０１０７】
以上のように、本実施の形態では、メモリ１４０上に、ライセンスと、ライセンスと構造が同じである疑似ライセンスのデータが格納されるため、攻撃者が特徴的な構造に基づいてメモリ１４０上のライセンスなどの重要なデータを検索しても、大量の疑似ライセンスなどの類似データが同時に検出され、さらに、暗号処理バッファｂへ格納されるライセンスは分割され、さらにシャッフルして格納されるため、さらにその中から重要なデータを特定することは非常に困難となり、ライセンスなどの重要データの盗聴を防止することが可能となる。
【０１０８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１０９】
本発明は、ライセンスのような重要なデータを処理するソフトウェアを実行する処理デバイスに関し、特にメモリ上に格納するデータの不正検索防止などが必要なセキュリティ技術を用いる処理デバイスに適用可能である。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施の形態１に係る処理デバイスの構成を示す構成図である。
【図２】（ａ）、（ｂ）は本発明の実施の形態１に係る処理デバイスで使用されるライセンスおよび擬似ライセンスを説明するための説明図である。
【図３】本発明の実施の形態１に係る処理デバイスにおけるアプリケーションが暗号化ライセンスをサーバや他のＰＣからダウンロードする動作を示すフローチャートである。
【図４】本発明の実施の形態１に係る処理デバイスにおけるライセンスおよび疑似ライセンスの格納動作を示すフローチャートである。
【図５】本発明の実施の形態１に係る処理デバイスのタイマを用いた制御動作を説明するための説明図である。
【図６】本発明の実施の形態１に係る処理デバイスのタイマを用いた制御動作を説明するための説明図である。
【図７】本発明の実施の形態１に係る処理デバイスのタイマを用いた制御動作を説明するための説明図である。
【図８】本発明の実施の形態１に係る処理デバイスの暗号演算バッファに格納してあるライセンスを暗号化し、ＨＤＤに格納する動作を示すフローチャートである。
【図９】本発明の実施の形態１に係る処理デバイスにおけるＨＤＤに格納してある暗号化ライセンスをアプリケーションが読み出す動作を示すフローチャートである。
【図１０】本発明の実施の形態１に係る処理デバイスの暗号化ライセンスを暗号演算バッファに格納する処理を説明するための説明図である。
【図１１】本発明の実施の形態１に係る処理デバイスのライセンスの復号処理の動作を示すフローチャートである。
【図１２】本発明の実施の形態１に係る処理デバイスの復号化したライセンスを暗号演算バッファに格納するタイミングを説明するための説明図である。
【図１３】本発明の実施の形態２に係る処理デバイスの構成を説明するための説明図である。
【図１４】本発明の実施の形態３に係る処理デバイスの構成を説明するための説明図である。
【符号の説明】
【０１１１】
１００…情報処理装置（ＰＣ）、１１０…演算装置、１１４…暗号演算バッファ、１２０…アプリケーション、１３０…擬似セキュアモジュール、１３１…ライセンステーブル、１３２…タイマ、１３３…暗号処理モジュール、１３４…アドレス生成モジュール、１３５…ライセンス解析モジュール、１３６…擬似ライセンス生成モジュール、１３７…乱数生成モジュール、１４０…メモリ、１４２…ライセンス格納バッファ、１４４…暗号演算バッファ、２００…ライセンス、２０２…ライセンス復号鍵、２０４…ライセンス識別コード、２０６…使用回数、２０８…有効期限、２１０…擬似ライセンス。
【図１】
2007310580.tif 000003
【図２】
2007310580.tif 000004
【図３】
2007310580.tif 000005
【図４】
2007310580.tif 000006
【図５】
2007310580.tif 000007
【図６】
2007310580.tif 000008
【図７】
2007310580.tif 000009
【図８】
2007310580.tif 000010
【図９】
2007310580.tif 000011
【図１０】
2007310580.tif 000012
【図１１】
2007310580.tif 000013
【図１２】
2007310580.tif 000014
【図１３】
2007310580.tif 000015
【図１４】
2007310580.tif 000016