(57)【要約】  情報処理装置は、保護対象データを処理する情報処理装置であって、第１記憶部（３０１）と、第２記憶部（３０２）と、第１記憶部（３０１）における記憶データを第２記憶部（３０２）にキャッシュするキャッシュ制御部（３０３）とを備え、キャッシュ制御部（３０３）は、第２記憶部（３０２）にキャッシュされた記憶データのキャッシュ領域から得られるキャッシュデータが第１記憶部（３０１）に書き戻されないように、第２記憶部（３０２）におけるキャッシュ領域をロックし、第２記憶部（３０２）におけるキャッシュ領域がロックされた後に、第２記憶部（３０２）におけるキャッシュ領域に、記憶データとは異なる保護対象データを書き込む。
2012160760.tif 000002
【特許請求の範囲】
【請求項１】
保護対象データを処理する情報処理装置であって、
第１記憶部と、
第２記憶部と、
前記第１記憶部における記憶データを前記第２記憶部にキャッシュするキャッシュ制御部とを備え、
前記キャッシュ制御部は、
前記第２記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、
前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
情報処理装置。
【請求項２】
前記キャッシュ制御部は、プロセッサから出力された前記保護対象データが外部の装置によって取得されないように物理的に保護されている回路を通じて、前記第２記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込み、
前記第２記憶部は、前記キャッシュ領域における前記保護対象データが外部の装置によって取得されないように、物理的に保護されている
請求項１に記載の情報処理装置。
【請求項３】
前記キャッシュ制御部は、
前記保護対象データが処理される際に、前記保護対象データに対して、前記第１記憶部におけるデータ領域を割り当て、
割り当てられた前記データ領域における前記記憶データを前記第２記憶部にキャッシュし、
前記第２記憶部にキャッシュされた前記記憶データの前記キャッシュ領域から得られる前記キャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、
前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
請求項１または２に記載の情報処理装置。
【請求項４】
前記キャッシュ制御部は、
前記保護対象データが処理された後に、前記第２記憶部における前記キャッシュ領域をクリアし、
クリアされた前記キャッシュ領域から得られる前記キャッシュデータが前記第１記憶部に書き戻されるように、前記キャッシュ領域のロックを解除する
請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、さらに、前記保護対象データを生成し、生成された前記保護対象データを出力するプロセッサを備え、
前記キャッシュ制御部は、前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込む
請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記情報処理装置は、さらに、集積回路を備え、
前記第２記憶部、前記キャッシュ制御部および前記プロセッサは、前記集積回路に含まれる
請求項５に記載の情報処理装置。
【請求項７】
前記プロセッサは、暗号化データを復号することによって、前記保護対象データを生成し、生成された前記保護対象データを出力する
請求項５または６に記載の情報処理装置。
【請求項８】
前記キャッシュ制御部は、プログラムによって前記第１記憶部への書き込みが予定されている前記保護対象データを前記第２記憶部における前記キャッシュ領域に書き込む
請求項１〜７のいずれか１項に記載の情報処理装置。
【請求項９】
前記キャッシュ制御部は、前記第２記憶部における前記キャッシュ領域に、実行可能なプログラムを前記保護対象データとして書き込む
請求項１〜８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記プロセッサは、セキュアモードでセキュアプログラムを実行し、ノーマルモードでノーマルプログラムを実行し、
前記第１記憶部は、
前記ノーマルプログラムを記憶するための第１記憶領域と、
前記セキュアプログラムを記憶するための領域であり、前記ノーマルプログラムからのアクセスが禁止される領域である第２記憶領域とを有する
請求項５〜７のいずれか１項に記載の情報処理装置。
【請求項１１】
前記キャッシュ制御部は、前記セキュアプログラムによって前記第２記憶領域への書き込みが予定されている前記保護対象データを前記第２記憶部における前記キャッシュ領域に書き込む
請求項１０に記載の情報処理装置。
【請求項１２】
前記情報処理装置は、さらに、前記ノーマルプログラムから前記第２記憶領域へのアクセスを禁止するアクセス制御部を備える
請求項１０または１１に記載の情報処理装置。
【請求項１３】
保護対象データを処理する情報処理方法であって、
第１記憶部における記憶データを第２記憶部にキャッシュし、
前記第２記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、
前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
情報処理方法。
【請求項１４】
請求項１３に記載の情報処理方法をコンピュータに実行させるための
プログラム。
【請求項１５】
請求項１３に記載の情報処理方法をコンピュータに実行させるためのプログラムが記録された
非一時的なコンピュータ読み取り可能な記録媒体。
【請求項１６】
保護対象データを処理する集積回路であって、
記憶部と、
記憶装置における記憶データを前記記憶部にキャッシュするキャッシュ制御部とを備え、
前記キャッシュ制御部は、
前記記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記記憶装置に書き戻されないように、前記記憶部における前記キャッシュ領域をロックし、
前記記憶部における前記キャッシュ領域がロックされた後に、前記記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、保護対象データを処理する情報処理装置に関する。
【背景技術】
【０００２】
従来、保護対象データを処理する様々な情報処理装置がある。例えば、特許文献１および非特許文献１には、このような情報処理装置に関する技術が示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２８８１５５号公報
【非特許文献】
【０００４】
【非特許文献１】ＡＲＭ  Ｓｅｃｕｒｉｔｙ  Ｔｅｃｈｎｏｌｏｇｙ（ｈｔｔｐ：／／ｉｎｆｏｃｅｎｔｅｒ．ａｒｍ．ｃｏｍ／ｈｅｌｐ／ｔｏｐｉｃ／ｃｏｍ．ａｒｍ．ｄｏｃ．ｐｒｄ２９−ｇｅｎｃ−００９４９２ｃ／ＰＲＤ２９−ＧＥＮＣ−００９４９２Ｃ＿ｔｒｕｓｔｚｏｎｅ＿ｓｅｃｕｒｉｔｙ＿ｗｈｉｔｅｐａｐｅｒ．ｐｄｆ）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の情報処理装置において、保護対象データの保護が十分ではない場合がある。【０００６】
そこで、本発明は、保護対象データを適切に保護することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の一態様に係る情報処理装置は、保護対象データを処理する情報処理装置であって、第１記憶部と、第２記憶部と、前記第１記憶部における記憶データを前記第２記憶部にキャッシュするキャッシュ制御部とを備え、前記キャッシュ制御部は、前記第２記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む。【０００８】
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたは記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意の組み合わせで実現されてもよい。
【発明の効果】
【０００９】
本発明の一態様に係る情報処理装置は、保護対象データを処理する際に、保護対象データを適切に保護することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態１に係るコンテンツ配信システムの全体構成図である。
【図２】図２は、実施の形態１に係るコンテンツ表示装置のハードウェア構成図である。
【図３】図３は、実施の形態１に係るキャッシュの構成図である。
【図４】図４は、実施の形態１に係るコンテンツ表示装置のソフトウェア構成図である。
【図５】図５は、実施の形態１に係る暗号化秘匿データの構成図である。
【図６】図６は、実施の形態１に係るパッケージ生成部の構成図である。
【図７】図７は、実施の形態１に係るセキュアアプリケーションの構成図である。
【図８】図８は、実施の形態１に係るセキュアブート処理のシーケンス図である。
【図９】図９は、実施の形態１に係る秘匿データのロード処理のシーケンス図である。
【図１０】図１０は、実施の形態１に係る秘匿データのアンロード処理のシーケンス図である。
【図１１】図１１は、実施の形態２に係るセキュアオペレーティングシステムの構成図である。
【図１２】図１２は、実施の形態２に係るアプリケーション本体の構成図である。
【図１３】図１３は、実施の形態２に係るセキュアアプリケーションのロード処理のフローチャートである。
【図１４Ａ】図１４Ａは、実施の形態３に係るキャッシュのロック処理のシーケンス図である。
【図１４Ｂ】図１４Ｂは、実施の形態３に係るキャッシュのアンロック処理のシーケンス図である。
【図１５Ａ】図１５Ａは、実施の形態４に係る情報処理装置のハードウェア構成図である。
【図１５Ｂ】図１５Ｂは、実施の形態４に係る情報処理装置の動作を示すフローチャートである。
【図１６】図１６は、実施の形態５に係る情報処理装置のハードウェア構成図である。
【図１７】図１７は、その他の変形例に係るコンテンツ表示装置のハードウェア構成図である。
【図１８】図１８は、その他の変形例に係る安全なソフトウェア実行環境の構成図である。
【発明を実施するための形態】
【００１１】
（本発明の基礎となった知見）
著作権を管理するためのプログラム等に、不正な解析等の不正行為がなされることは望ましくない。そのため、このようなプログラム（以下、「保護対象プログラム」という）を保護する技術が広く用いられている。保護が不十分であると、プログラムの権利者に限らず様々な方面で損害が発生し得るからである。
【００１２】
例えば、暗号化されたデジタルコンテンツを復号して再生するためのプログラムを不正者が不正に解析して改ざんすることができるとすれば、デジタルコンテンツが不正に利用されるおそれが出てくる。
【００１３】
具体的には、不正者が、暗号化されたデジタルコンテンツを復号するためのプログラムを不正に解析し、デジタルコンテンツの復号に用いられる復号鍵を取得することで、デジタルコンテンツを不正に再生するかもしれない。また、デジタルコンテンツの複製回数または再生回数等が制限されている場合でも、不正者が、デジタルコンテンツの複製回数または再生回数等をチェックするためのプログラムを改ざんすることで、その制限を無効化するかもしれない。
【００１４】
非特許文献１には、不正者による不正な解析からプログラム等のデータを保護する技術が開示されている。非特許文献１に開示されている技術では、外部からの不正アクセスを防止する機構を有するセキュアドメインが構築されている。そして、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）は、セキュアドメインにおいて処理を行うセキュアモードと、セキュアドメインを用いないで処理を行うノーマルモードとを有し、ノーマルモードとセキュアモードとを切り換えて動作する。
【００１５】
この技術は、セキュアモードで保護対象プログラムを動作させることで、保護対象プログラムを不正な解析等から保護する。これにより、復号処理に使用する復号鍵が不正な取得から保護され、再生回数をチェックするためのプログラムが不正な改ざんから保護される。
【００１６】
より具体的には、不正アクセスを防止する機構として、ＬＳＩ内部において、プロセッサと周辺回路とを接続しているバスにＮＳ−ｂｉｔ（Ｎｏｎ  Ｓｅｃｕｒｅ  ｂｉｔ）と呼ばれる信号が付加される。このＮＳ−ｂｉｔは、プロセッサコアのモードがノーマルモードの時、Ｈｉｇｈに設定され、プロセッサコアのモードがセキュアモードの時、Ｌｏｗに設定される。
【００１７】
そして、このバスに接続しているメモリ制御部（メモリコントローラ）、キャッシュおよびＤＭＡ制御部（ＤＭＡコントローラ）等の周辺回路が、このＮＳ−ｂｉｔに応じて、アクセス制御を行う。例えば、メモリ制御部は、メモリの一定領域ごと（例えば、４ＫＢサイズごと）に、ＮＳ−ｂｉｔを設定する。これにより、プロセッサコアがメモリへアクセスする時、メモリ制御部は、バスのＮＳ−ｂｉｔの値とメモリのＮＳ−ｂｉｔの値とを比較して、アクセス制御を行う。
【００１８】
具体的には、プロセッサコアのモードがノーマルモード（バスのＮＳ−ｂｉｔがＨｉｇｈ）であり、かつ、セキュアモード用のメモリ領域（メモリのＮＳ−ｂｉｔがＬｏｗ）へプロセッサコアがアクセスしようとする場合、メモリ制御部はそのアクセスを禁止する。そして、メモリ制御部はそれ以外のアクセスを許可する。
【００１９】
情報処理装置は、このような不正アクセス防止機構を利用することで、ノーマルモードで動作するプログラムが、セキュアなメモリ領域、および、セキュアモードに限定して利用される機能等へアクセスすることを禁止できる。つまり、情報処理装置は、復号処理に使用する復号鍵をセキュアモード用のメモリ領域へ記憶し、復号処理をセキュアモードで実行し、再生回数をチェックする処理をセキュアモードで実行する。これにより、情報処理装置は、不正者による不正な解析および改ざんを防止することができる。
【００２０】
しかしながら、非特許文献１の構成では、プロセッサコアおよび周辺回路の両方がＮＳ−ｂｉｔを正しく処理することで、プログラムに対してアクセス制御が実現され、攻撃用のプログラムを用いた解析および改ざんが防止されているに過ぎない。そのため、例えばＬＳＩにおいて実行されるプログラムがＬＳＩの外部のメモリ（ＳＤＲＡＭ等）を利用する場合、非特許文献１の構成では、ＬＳＩとメモリとを接続している信号線に対する攻撃を防止できないという課題が有る。
【００２１】
具体的には、不正者は、オシロスコープまたはロジックアナライザ等を用いて、信号線上に流れているデータをキャプチャ（プローブ）することで、セキュアなメモリ領域へ書き込まれるデータを直接取得するかもしれない。そして、不正者は、取得したデータを解析し、デジタルコンテンツを保護している鍵等を取得することで、デジタルコンテンツを不正にコピーするかもしれない。
【００２２】
情報処理装置は、このような攻撃から、すなわち、ロジックアナライザ等のハードウェアを用いて信号線をプローブすること等によって発生し得るデータ流出から、保護対象データを適切に保護することが望まれる。
【００２３】
そこで、本発明の一態様に係る情報処理装置は、保護対象データを処理する情報処理装置であって、第１記憶部と、第２記憶部と、前記第１記憶部における記憶データを前記第２記憶部にキャッシュするキャッシュ制御部とを備え、前記キャッシュ制御部は、前記第２記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む。
【００２４】
これにより、保護対象データが、ＳＤＲＡＭ等のメモリ（第１記憶部）に書き込まれずに、メモリにおけるデータをキャッシュするためのキャッシュ（第２記憶部）に書き込まれる。外部の装置がキャッシュに書き込まれるデータにアクセスすることは困難である。また、保護対象データは、ロックされたキャッシュ領域に書き込まれるため、メモリに書き戻されない。したがって、保護対象データは、適切に保護される。
【００２５】
例えば、前記キャッシュ制御部は、プロセッサから出力された前記保護対象データが外部の装置によって取得されないように物理的に保護されている回路を通じて、前記第２記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込み、前記第２記憶部は、前記キャッシュ領域における前記保護対象データが外部の装置によって取得されないように、物理的に保護されていてもよい。
【００２６】
これにより、外部の装置が保護対象データを取得することは物理的に困難になる。したがって、保護対象データが、適切に保護される。
【００２７】
また、例えば、前記キャッシュ制御部は、前記保護対象データが処理される際に、前記保護対象データに対して、前記第１記憶部におけるデータ領域を割り当て、割り当てられた前記データ領域における前記記憶データを前記第２記憶部にキャッシュし、前記第２記憶部にキャッシュされた前記記憶データの前記キャッシュ領域から得られる前記キャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込んでもよい。
【００２８】
これにより、保護対象データが処理される際に、保護対象データのためのデータ領域が、メモリにおいて割り当てられる。したがって、メモリの領域とキャッシュの領域との適切な対応関係が維持される。
【００２９】
また、例えば、前記キャッシュ制御部は、前記保護対象データが処理された後に、前記第２記憶部における前記キャッシュ領域をクリアし、クリアされた前記キャッシュ領域から得られる前記キャッシュデータが前記第１記憶部に書き戻されるように、前記キャッシュ領域のロックを解除してもよい。
【００３０】
これにより、保護対象データが、キャッシュからメモリに書き戻される前に、消去される。したがって、保護対象データが、適切に保護される。
【００３１】
また、例えば、前記情報処理装置は、さらに、前記保護対象データを生成し、生成された前記保護対象データを出力するプロセッサを備え、前記キャッシュ制御部は、前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込んでもよい。
【００３２】
これにより、プロセッサによって生成された保護対象データが、キャッシュに書き込まれる。したがって、プロセッサによって生成された保護対象データが、適切に保護される。
【００３３】
また、例えば、前記情報処理装置は、さらに、集積回路を備え、前記第２記憶部、前記キャッシュ制御部および前記プロセッサは、前記集積回路に含まれてもよい。
【００３４】
これにより、キャッシュおよびプロセッサが１つの集積回路を構成する。集積回路内のデータに外部の装置がアクセスすることは困難である。したがって、保護対象データが、適切に保護される。
【００３５】
また、例えば、前記プロセッサは、暗号化データを復号することによって、前記保護対象データを生成し、生成された前記保護対象データを出力してもよい。
【００３６】
これにより、暗号化データの復号によって得られる保護対象データが、適切に保護される。
【００３７】
また、例えば、前記キャッシュ制御部は、プログラムによって前記第１記憶部への書き込みが予定されている前記保護対象データを前記第２記憶部における前記キャッシュ領域に書き込んでもよい。
【００３８】
これにより、プログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、適切に保護される。
【００３９】
また、例えば、前記キャッシュ制御部は、前記第２記憶部における前記キャッシュ領域に、実行可能なプログラムを前記保護対象データとして書き込んでもよい。
【００４０】
これにより、保護対象プログラムが、改ざんから保護される。したがって、保護対象プログラムが、適切に実行される。
【００４１】
また、例えば、前記プロセッサは、セキュアモードでセキュアプログラムを実行し、ノーマルモードでノーマルプログラムを実行し、前記第１記憶部は、前記ノーマルプログラムを記憶するための第１記憶領域と、前記セキュアプログラムを記憶するための領域であり、前記ノーマルプログラムからのアクセスが禁止される領域である第２記憶領域とを有してもよい。
【００４２】
これにより、プログラムが適切なセキュリティレベルで実行され、プログラムに対応するセキュリティレベルに基づいてアクセス制御が実行される。
【００４３】
また、例えば、前記キャッシュ制御部は、前記セキュアプログラムによって前記第２記憶領域への書き込みが予定されている前記保護対象データを前記第２記憶部における前記キャッシュ領域に書き込んでもよい。
【００４４】
これにより、セキュアプログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、より高いレベルで保護される。
【００４５】
また、例えば、前記情報処理装置は、さらに、前記ノーマルプログラムから前記第２記憶領域へのアクセスを禁止するアクセス制御部を備えてもよい。
【００４６】
これにより、メモリにおける複数の記憶領域に対するアクセスが適切に制御される。したがって、不正プログラムの実行が適切に制限される。
【００４７】
さらに、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたは記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
【００４８】
以下、本発明の一態様に係る情報処理装置について、図面を参照しながら具体的に説明する。
【００４９】
なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置および接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する趣旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００５０】
（実施の形態１）
本実施の形態に係る情報処理装置は、アンテナから受信した放送波を記録するコンテンツ記録装置からコンテンツを受信し、コンテンツを表示するコンテンツ表示装置である。
【００５１】
＜コンテンツ配信システムの構成＞
図１は、本実施の形態に係るコンテンツ配信システムの構成図である。図１のように、コンテンツ配信システム１００は、コンテンツ表示装置１１０と、コンテンツ記録装置１２０と、アンテナ１２１とを含む。
【００５２】
コンテンツ表示装置１１０は、本実施の形態に係る情報処理装置である。コンテンツ表示装置１１０は、コンテンツ記録装置１２０にネットワークを介して接続している。そして、コンテンツ表示装置１１０は、コンテンツ記録装置１２０が記録しているコンテンツを受信し、受信したコンテンツを表示する。
【００５３】
コンテンツ記録装置１２０は、アンテナ１２１に接続している。そして、コンテンツ記録装置１２０は、アンテナ１２１で受信したコンテンツを記録する。また、コンテンツ記録装置１２０は、コンテンツ表示装置１１０からの要求に応じて、記録したコンテンツをコンテンツ表示装置１１０へ送信する。コンテンツ記録装置１２０は、可搬性を有する記録媒体からコンテンツを読み出して、読み出されたコンテンツをコンテンツ表示装置１１０へ送信してもよい。
【００５４】
コンテンツ表示装置１１０およびコンテンツ記録装置１２０は、共通の暗復号鍵を持つ。そして、コンテンツ記録装置１２０は、暗復号鍵を使用してコンテンツを暗号化して、暗号化されたコンテンツをコンテンツ表示装置１１０へ送信する。これにより、コンテンツ表示装置１１０およびコンテンツ記録装置１２０を接続しているネットワークに流れるデータをキャプチャすることでコンテンツを不正に取得することが、防止される。
【００５５】
コンテンツ表示装置１１０およびコンテンツ記録装置１２０が共通で持つ暗復号鍵は、適切に保護されるべきである。暗復号鍵は、デバッガまたは不正アプリケーション（以下、アプリケーションをアプリとも呼ぶ）を使用したソフトウェアによる攻撃からはもちろんのこと、バスプローブ等のハードウェアによる攻撃からも保護されていなければ、漏洩するおそれがある。
【００５６】
そして、この暗復号鍵と、ネットワークに流れる暗号化されたコンテンツとが入手された場合、コンテンツが不正に復号されるおそれがある。そのため、暗復号鍵は、コンテンツ表示装置１１０の内部においても、秘匿データとして、適切に保護されることが望ましい。
【００５７】
＜コンテンツ表示装置１１０のハードウェア構成＞
図２は、図１に示されたコンテンツ表示装置１１０のハードウェア構成図である。図２のように、コンテンツ表示装置１１０は、システムＬＳＩ１０００と、メモリ１０２０と、不揮発性記憶装置１０５０とを含む。
【００５８】
システムＬＳＩ１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１と、ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）１００２と、メモリ制御部（メモリコントローラ）１００３と、キャッシュ１００４と、鍵保持部１００６とを含む。
【００５９】
ＣＰＵ１００１は、メモリ１０２０に格納された汎用オペレーティングシステム（汎用ＯＳ）１０３１またはプレーヤアプリ１０３２等に含まれる命令コードを実行する。これにより、ＣＰＵ１００１は、コンテンツ表示装置１１０全体の動作を制御する。また、ＣＰＵ１００１は、セキュアモードおよびノーマルモードの２つのモードを持つ。
【００６０】
ブートローダ１０４１、セキュアオペレーティングシステム（セキュアＯＳ）１０４２およびコンテンツ再生アプリ１０４３は、セキュアモードで動作する。セキュアモードで動作しているプログラムは、セキュアモードのプログラムが使用しているメモリ領域（セキュア領域１０４０）にも、ノーマルモードのプログラムが使用しているメモリ領域（ノーマル領域１０３０）にもアクセスできる。さらに、セキュアモードで動作しているプログラムは、セキュアモードで利用可能な周辺回路（暗号エンジン等）を利用することもできる。
【００６１】
一方、汎用オペレーティングシステム１０３１、プレーヤアプリ１０３２およびコンテンツ受信アプリ１０３３は、ノーマルモードで動作する。ノーマルモードで動作しているプログラムは、ノーマルモードのプログラムが使用しているノーマル領域１０３０へアクセスできるが、セキュアモードのプログラムが使用しているセキュア領域１０４０へアクセスできない。
【００６２】
また、セキュアモードおよびノーマルモードのそれぞれは、さらに、特権モードおよび非特権モードの２つのモードを持つ。ブートローダ１０４１、セキュアオペレーティングシステム１０４２および汎用オペレーティングシステム１０３１は特権モードで動作する。これらは、メモリ１０２０、ネットワークＩ／Ｆおよび入出力Ｉ／Ｆ等の各種リソースに、自由にアクセスできる。
【００６３】
一方、コンテンツ再生アプリ１０４３は、非特権モードで動作し、セキュアオペレーティングシステム１０４２が設定した範囲内のリソースにアクセス可能である。また、プレーヤアプリ１０３２およびコンテンツ受信アプリ１０３３は、非特権モードで動作し、汎用オペレーティングシステム１０３１が設定した範囲内のリソースにアクセス可能である。
【００６４】
ＣＰＵ１００１は、メモリ制御部１００３等の周辺回路へアクセスする時に、ＮＳ−ｂｉｔ（Ｎｏｎ  Ｓｅｃｕｒｅ  ｂｉｔ）の信号を出力する。ＣＰＵ１００１がセキュアモードで動作中である場合、ＣＰＵ１００１はＮＳ−ｂｉｔをＬｏｗに設定する。一方、ＣＰＵ１００１がノーマルモードで動作中である場合、ＣＰＵ１００１はＮＳ−ｂｉｔをＨｉｇｈに設定する。メモリ制御部１００３等のようにバスに接続している周辺回路は、このＮＳ−ｂｉｔの状態に応じて、アクセス制御を行う。
【００６５】
ＩＰＬ１００２は、コンテンツ表示装置１１０の電源が投入された後、最初に起動するプログラムである。ＩＰＬ１００２は、バス、メモリ制御部１００３、メモリ１０２０および不揮発性記憶装置１０５０等のハードウェアの初期設定を行う。その際、ＩＰＬ１００２は、メモリ１０２０にブートローダ１０４１を展開し、実行する。ＩＰＬ１００２は、システムＬＳＩ１０００におけるマスクＲＯＭ等に、改ざんされない状態で、格納されている。
【００６６】
メモリ制御部１００３は、メモリコントローラとも呼ばれ、バスにつながった他の回路からメモリ１０２０へのアクセスを制御する。メモリ制御部１００３は、メモリ１０２０の内部をノーマル領域１０３０およびセキュア領域１０４０の２つの領域に分けて管理する。
【００６７】
そして、ＣＰＵ１００１がノーマルモードで動作中（ＮＳ−ｂｉｔがＨｉｇｈ）であり、かつ、ＣＰＵ１００１がセキュア領域１０４０へアクセスしようとした場合、メモリ制御部１００３は、そのアクセスを禁止する。そして、ＣＰＵ１００１がノーマルモードで動作中（ＮＳ−ｂｉｔがＨｉｇｈ）であり、かつ、ＣＰＵ１００１がノーマル領域１０３０へアクセスしようとした場合、メモリ制御部１００３は、そのアクセスを許可する。
【００６８】
また、ＣＰＵ１００１がセキュアモードで動作中（ＮＳ−ｂｉｔがＬｏｗ）であり、かつ、ＣＰＵ１００１がノーマル領域１０３０またはセキュア領域１０４０へアクセスしようとした場合、メモリ制御部１００３は、そのアクセスを許可する。
【００６９】
ＣＰＵ１００１がメモリ１０２０へアクセスしようとした時に、キャッシュ１００４は、ＣＰＵ１００１がアクセスしようとしたメモリ１０２０におけるデータを含む一定のサイズのデータを、キャッシュ１００４の内部へ読み込む。その後、キャッシュ１００４は、ＣＰＵ１００１がデータを読み込もうとしていた場合には、データをＣＰＵ１００１へ返し、ＣＰＵ１００１がデータを書き込もうとしていた場合には、キャッシュ１００４の内部へ読み込まれたデータを書き換える。
【００７０】
この時、ＣＰＵ１００１がアクセスしようとしたメモリ１０２０におけるデータが、既にキャッシュ１００４の内部へ読み込まれていた場合、キャッシュ１００４は、メモリ１０２０からデータを読み込まずに、キャッシュ１００４の内部のデータを使って処理を行う。これにより、ＣＰＵ１００１が、メモリ１０２０における連続したデータに対してアクセスを行う時、アクセス速度が向上する。
【００７１】
キャッシュ１００４は、キャッシュ１００４の内部においてデータを記憶するための領域がいっぱいになった時に、既に記憶されているデータを、新しくキャッシュ１００４の内部に読み込まれるデータで上書きする。
【００７２】
ＣＰＵ１００１がデータを書き込もうとしていた場合、キャッシュ１００４は、キャッシュ１００４の内部のデータを更新すると共に、適切なタイミングでメモリ１０２０にその更新を反映する。更新を反映する方法として、ライトスルー方式（Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ  Ａｌｇｏｒｉｔｈｍ）およびライトバック方式（Ｗｒｉｔｅ  Ｂａｃｋ  Ａｌｇｏｒｉｔｈｍ）の２つの方式がある。
【００７３】
ライトスルー方式では、ＣＰＵ１００１がデータを書き込もうとした時に、キャッシュ１００４の内部のデータが更新されると同時に、メモリ１０２０にその更新が反映される。
【００７４】
ライトバック方式では、ＣＰＵ１００１がデータを書き込もうとした時に、キャッシュ１００４の内部のデータが更新される。そして、その更新されたデータが新たにキャッシュ１００４の内部に読み込まれるデータで上書きされる直前に、メモリ１０２０にその更新が反映される。
【００７５】
本実施の形態では、メモリ１０２０へ秘匿データが書き込まれることを防止するため、キャッシュ１００４は、ライトバック方式で更新を反映するように設定される。
【００７６】
キャッシュ１００４は、ＣＰＵ１００１からデータのアクセス要求があった時に、そのデータがキャッシュ１００４の内部に存在しているかを瞬時に検索することが望まれる。そのため、キャッシュ１００４は、キャッシュ１００４の内部にデータを記憶する際、特殊なデータ構造でデータを記憶する。
【００７７】
例えば、キャッシュ１００４は、内部に記憶されるデータを「ライン」と呼ばれるまとまった単位で管理する。具体的には、キャッシュ１００４は、キャッシュ１００４の内部に格納されるデータについてのメモリ１０２０におけるアドレスの下位数ビット（以下、セットインデックス：Ｓｅｔ  Ｉｎｄｅｘ）に基づいて、格納位置を限定する。
【００７８】
各ラインには、アドレスからセットインデックスを除いた部分（タグ）と、データとが格納される。キャッシュ１００４は、格納位置およびタグの情報に基づいて、そのラインに格納されているデータがメモリ１０２０においてどこに記憶されていたデータであるかを識別する。
【００７９】
キャッシュ１００４は、同一のセットインデックスを有する格納位置に対して、複数のタグとデータを格納することが可能である。これらの格納場所のそれぞれは、ウェイ（Ｗａｙ）と呼ばれる。４つのタグとデータを格納することができるキャッシュは、４ウェイキャッシュと呼ばれる。
【００８０】
キャッシュ１００４は、メモリ１０２０におけるデータをキャッシュ１００４の内部へ読み込む際に、そのデータがノーマル領域１０３０およびセキュア領域１０４０のどちらの領域に記録されていたかを識別するための情報（ＮＳ−ｂｉｔ）も、データと一緒に記録する。
【００８１】
キャッシュ１００４は、ノーマル領域１０３０からデータを読み込んだ場合、そのデータと一緒にＨｉｇｈのＮＳ−ｂｉｔを記録する。一方、キャッシュ１００４は、セキュア領域１０４０からデータを読み込んだ場合、そのデータと一緒にＬｏｗのＮＳ−ｂｉｔを記録する。ＣＰＵ１００１が、キャッシュ１００４にアクセスしようとした時に、キャッシュ１００４は、メモリ制御部１００３と同様に、ＣＰＵ１００１のモードと、データと一緒に記録されているＮＳ−ｂｉｔの値を参照し、アクセス制御を行う。
【００８２】
具体的には、ＣＰＵ１００１がノーマルモードで動作中である場合、キャッシュ１００４は、ＮＳ−ｂｉｔがＬｏｗに設定されているキャッシュデータ（セキュア領域１０４０から読み込んだデータ）へのアクセスを禁止する。そして、それ以外の場合、キャッシュ１００４は、アクセスを許可する。
【００８３】
キャッシュ１００４は、データと、データのアドレスと、Ｄｉｒｔｙフラグと、Ｖａｌｉｄフラグとを有する。データは、メモリ１０２０から読み込まれる。アドレスは、メモリ１０２０におけるデータのアドレスである。Ｄｉｒｔｙフラグは、キャッシュ１００４のデータが書き換えられた時に設定されるフラグである。Ｖａｌｉｄフラグは、キャッシュ１００４に有効なデータが格納されていることを示すフラグである。
【００８４】
鍵保持部１００６は、暗復号鍵を保持している。この暗復号鍵は、暗号化秘匿データ１０５１、暗号化ブートローダ１０５２、暗号化セキュアオペレーティングシステム１０５３、および、暗号化コンテンツ再生アプリ１０５４の復号に用いられる。また、この暗復号鍵は、復号された秘匿データ、ブートローダ１０４１、セキュアオペレーティングシステム１０４２およびコンテンツ再生アプリ１０４３の暗号化に用いられる。
【００８５】
さらに、その他のデータの暗復号に、この暗復号鍵が用いられてもよい。また、データおよびプログラム等の暗復号に用いられる別の鍵の暗復号に、この暗復号鍵が用いられてもよい。
【００８６】
また、鍵保持部１００６は、複数のプログラムに対応する複数の暗復号鍵を保持してもよい。また、鍵保持部１００６は、公開鍵暗号方式に基づく互いに異なる暗号鍵および復号鍵を保持してもよい。あるいは、鍵保持部１００６は、共通鍵暗号方式に基づく共通の暗復号鍵を保持してもよい。
【００８７】
メモリ１０２０は、揮発性のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ノーマル領域１０３０とセキュア領域１０４０とを含む。
【００８８】
ノーマル領域１０３０には、ＣＰＵ１００１がノーマルモードで動作中に実行するプログラムが格納される。具体的には、汎用オペレーティングシステム１０３１、プレーヤアプリ１０３２およびコンテンツ受信アプリ１０３３が格納される。また、ノーマル領域１０３０には、ノーマルモードで動作するプログラムと、セキュアモードで動作するプログラムとの両方からアクセスされる共有データ１０３４が格納される。
【００８９】
セキュア領域１０４０には、ＣＰＵ１００１がセキュアモードで動作中に実行するプログラムが格納される。具体的には、ブートローダ１０４１、セキュアオペレーティングシステム１０４２およびコンテンツ再生アプリ１０４３が格納される。
【００９０】
ＣＰＵ１００１がセキュアモードで動作中である場合もノーマルモードで動作中である場合も、ＣＰＵ１００１はノーマル領域１０３０にアクセスできる。ＣＰＵ１００１がセキュアモードで動作中である場合、ＣＰＵ１００１はセキュア領域１０４０にアクセスできる。しかし、ＣＰＵ１００１がノーマルモードで動作中である場合、ＣＰＵ１００１はセキュア領域１０４０にアクセスできない。このようなアクセス制御は、メモリ制御部１００３によって実現される。
【００９１】
なお、アプリがユーザによってインストールされない環境では、デバッガまたは不正アプリがインストールされない。このような環境では、ノーマル領域１０３０とセキュア領域１０４０とが区別されていなくてもよい。そして、すべての処理がノーマルモードで行われてもよい。
【００９２】
不揮発性記憶装置１０５０は、フラッシュメモリ等の記憶素子であり、コンテンツ表示装置１１０に内蔵されている。そして、不揮発性記憶装置１０５０には、暗号化秘匿データ１０５１が格納される。暗号化秘匿データ１０５１の構造に関しては後述する。また、不揮発性記憶装置１０５０には、暗号化ブートローダ１０５２と、暗号化セキュアオペレーティングシステム１０５３と、暗号化コンテンツ再生アプリ１０５４と、メモリ１０２０に格納される他のセキュアアプリ（図示せず）とが格納される。
【００９３】
不揮発性記憶装置１０５０には、さらに、プレーヤアプリ１０３２、コンテンツ受信アプリ１０３３およびコンテンツ再生アプリ１０４３等のアプリが格納されてもよい。セキュア領域１０４０に格納されるプログラムは、暗号化ブートローダ１０５２、暗号化セキュアオペレーティングシステム１０５３および暗号化コンテンツ再生アプリ１０５４のように、不揮発性記憶装置１０５０に暗号化して格納される。暗号化されたプログラムの構造に関しては後述する。
【００９４】
コンテンツ表示装置１１０は、さらに、図２に示されていない入出力部等を備えている。しかし、これらは本技術の本質ではないので説明を省略する。また、システムＬＳＩ１０００は、さらに、図２に示されていない周辺回路等を備えている。しかし、これらも本技術の本質ではないので説明を省略する。
【００９５】
＜キャッシュ１００４のハードウェア構成＞
図３は、図２に示されたキャッシュ１００４の構成図である。図３のように、キャッシュ１００４は、記憶領域１０１１と、キャッシュ制御部（キャッシュコントローラ）１０１２とを含む。
【００９６】
記憶領域１０１１は、メモリ１０２０におけるデータをキャッシュするための領域である。すなわち、メモリ１０２０におけるデータが記憶領域１０１１にキャッシュされる。
【００９７】
キャッシュ制御部１０１２は、キャッシュコントローラとも呼ばれ、キャッシュ１００４の動作を制御する。例えば、キャッシュ制御部１０１２は、メモリ１０２０におけるデータをキャッシュ１００４における記憶領域１０１１にキャッシュする。
【００９８】
より具体的には、キャッシュ制御部１０１２は、ＣＰＵ１００１からのデータの要求を受けて、記憶領域１０１１にキャッシュされたデータをＣＰＵ１００１へ送信する。要求されたデータが記憶領域１０１１にキャッシュされていない場合、キャッシュ制御部１０１２は、メモリ制御部１００３等を介してメモリ１０２０におけるデータを記憶領域１０１１にキャッシュする。そして、キャッシュ制御部１０１２は、記憶領域１０１１にキャッシュされたデータをＣＰＵ１００１へ送信する。
【００９９】
なお、図３の構成は、一例である。例えば、キャッシュ制御部１０１２は、キャッシュ１００４から独立した構成要素でもよい。また、キャッシュ１００４は、Ｌ２キャッシュ（Ｌｅｖｅｌ  ２  Ｃａｃｈｅ）と呼ばれるキャッシュでもよいし、Ｌ１キャッシュ（Ｌｅｖｅｌ  １  Ｃａｃｈｅ）と呼ばれるキャッシュでもよいし、その他のキャッシュでもよい。
【０１００】
＜コンテンツ表示装置１１０のソフトウェア構成＞
図４は、図１に示されたコンテンツ表示装置１１０のソフトウェア構成図である。図４のように、コンテンツ表示装置１１０は、通常のソフトウェア実行環境（以下、「ノーマル環境（Ｎｏｒｍａｌ  Ｗｏｒｌｄ）」という）１１００と、安全なソフトウェア実行環境（以下、「セキュア環境（Ｓｅｃｕｒｅ  Ｗｏｒｌｄ）」という）１２００とを含む。
【０１０１】
コンテンツ表示装置１１０は、ノーマル環境１１００とセキュア環境１２００とを切り替えて、プログラムを実行する。なお、ノーマル環境１１００とセキュア環境１２００とを切り替える方法には、例えば特許文献１に記載の方法が用いられてもよい。
【０１０２】
＜ノーマル環境１１００のソフトウェア構成＞
ノーマル環境１１００は、汎用オペレーティングシステム１０３１と、プレーヤアプリ１０３２と、コンテンツ受信アプリ１０３３と、共有データ１０３４とを含む。
【０１０３】
汎用オペレーティングシステム１０３１は、ノーマル環境１１００で動作するアプリ（プレーヤアプリ１０３２およびコンテンツ受信アプリ１０３３等）を管理する。また、汎用オペレーティングシステム１０３１は、ノーマル環境１１００で動作するアプリがネットワーク等のハードウェアを利用する場合のアクセス管理およびリソース管理を行う。
【０１０４】
プレーヤアプリ１０３２は、コンテンツの再生を制御するアプリであり、コンテンツの選択、再生または停止等を行うためのインターフェースをユーザに提供する。また、プレーヤアプリ１０３２は、ユーザがコンテンツの再生を依頼した時に、コンテンツ受信アプリ１０３３およびコンテンツ再生アプリ１０４３に指示を行う。そして、コンテンツ受信アプリ１０３３は、コンテンツ記録装置１２０からコンテンツを受信し、コンテンツ再生アプリ１０４３は、受信されたコンテンツの再生処理を行う。
【０１０５】
コンテンツ受信アプリ１０３３は、プレーヤアプリ１０３２から依頼があった時に、依頼されたコンテンツを、ネットワークを介してコンテンツ記録装置１２０から受信する。
【０１０６】
ノーマル環境１１００は、さらに、図４に示されていないアプリを含んでいてもよい。
【０１０７】
＜セキュア環境１２００のソフトウェア構成＞
セキュア環境１２００は、ブートローダ１０４１と、セキュアオペレーティングシステム１０４２と、コンテンツ再生アプリ１０４３とを含む。
【０１０８】
ブートローダ１０４１は、コンテンツ表示装置１１０の起動時に、ＩＰＬ１００２によって起動される。そして、ブートローダ１０４１は、セキュア環境１２００の初期化、セキュア領域１０４０の設定処理、および、セキュアオペレーティングシステム１０４２のメモリ１０２０へのロード処理等を行う。
【０１０９】
セキュアオペレーティングシステム１０４２は、セキュア環境１２００で動作するセキュアアプリ（コンテンツ再生アプリ１０４３等）を管理する。また、セキュアオペレーティングシステム１０４２は、セキュアアプリの起動時にセキュアアプリをセキュア領域１０４０へロードする。これにより、セキュアオペレーティングシステム１０４２は、ノーマル環境１１００で動作するアプリからセキュアアプリを保護する。
【０１１０】
さらに、セキュアオペレーティングシステム１０４２は、秘匿データロード部１０４４とキャッシュロック部１０４５とを含む。
【０１１１】
例えば、セキュアアプリであるコンテンツ再生アプリ１０４３は、不揮発性記憶装置１０５０に記録されている暗号化秘匿データ１０５１を秘匿データ１０１０としてロードすることをセキュアオペレーティングシステム１０４２に依頼する。セキュアオペレーティングシステム１０４２は、秘匿データ１０１０をキャッシュ１００４にロードするための領域をロックすることをキャッシュロック部１０４５に依頼する。
【０１１２】
その後、セキュアオペレーティングシステム１０４２は、暗号化秘匿データ１０５１を秘匿データ１０１０としてロードすることを秘匿データロード部１０４４に依頼する。これにより、キャッシュ１００４にロードされた秘匿データ１０１０が、メモリ１０２０へ書き出されないように制御される。
【０１１３】
秘匿データロード部１０４４は、セキュアオペレーティングシステム１０４２からの依頼に応じて、不揮発性記憶装置１０５０へ記録されている暗号化秘匿データ１０５１の復号および検証を行う。そして、秘匿データロード部１０４４は、指定された領域へ秘匿データ１０１０をロードする。また、秘匿データロード部１０４４は、セキュアオペレーティングシステム１０４２からの依頼に応じて、秘匿データ１０１０の検証値（Ｖｅｒｉｆｉｃａｔｉｏｎ  Ｖａｌｕｅ）を算出し、秘匿データ１０１０を暗号化して、暗号化秘匿データ１０５１を生成する。
【０１１４】
キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２からの依頼に応じて、メモリ１０２０において指定された領域のデータをキャッシュ１００４に読み込む。そして、キャッシュロック部１０４５は、キャッシュ１００４の内部のデータがメモリ１０２０へ書き出されないようにキャッシュ１００４（キャッシュ１００４の一部）をロックする。
【０１１５】
ここで、キャッシュ１００４をロックすることは、キャッシュ１００４におけるデータがメモリ１０２０へ書き戻されないように制御することを意味する。例えば、キャッシュ１００４をロックすることによって、使用頻度の高いデータがキャッシュ１００４の内部に維持され、データ処理の性能が向上する。
【０１１６】
典型的なキャッシュ１００４の動作として、メモリ１０２０におけるデータがキャッシュ１００４に読み込まれた状態でロックが行われる。そのため、本実施の形態におけるキャッシュロック部１０４５は、キャッシュ１００４をロックする前に、メモリ１０２０におけるデータをキャッシュ１００４に読み込む。この時にキャッシュ１００４に読み込まれたデータは、使用されない。
【０１１７】
また、キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２からの依頼に応じて、キャッシュ１００４においてアンロックされる領域へ０値（０の値）を書き込む。その後、キャッシュロック部１０４５は、キャッシュ１００４のアンロック処理を行う。
【０１１８】
ここで、０値が書き込まれずにキャッシュ１００４がそのままアンロックされてしまうと、キャッシュ１００４に書き込まれた秘匿データがメモリ１０２０へ書き込まれてしまう。そのため、キャッシュロック部１０４５は、キャッシュ１００４のアンロック処理を行う前に、アンロックする領域へ０値を書き込む。
【０１１９】
キャッシュ１００４をロックする方法として、例えば、キャッシュ１００４の全体（全ウェイ）をロックする方法、全ウェイのうちいくつかのウェイをロックする方法、および、いくつかのラインをロックする方法などがある。
【０１２０】
キャッシュ１００４のタグの情報をＣＰＵ１００１が読める場合、いくつかのウェイまたはラインをロックする方法等において、キャッシュロック部１０４５は、タグの情報を取得する。そして、キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２によって指定された領域に対応するウェイまたはライン等を特定し、特定されたウェイまたはライン等をロックする。
【０１２１】
キャッシュ１００４のタグの情報をＣＰＵ１００１が読めない場合、いくつかのウェイまたはラインをロックする方法等では、次のように、ウェイまたはライン等がロックされる。
【０１２２】
まず始めに、キャッシュロック部１０４５は、キャッシュ１００４の内部のロックされていないウェイまたはライン等に格納されているデータをメモリ１０２０に反映する。そして、キャッシュロック部１０４５は、キャッシュ１００４において、これらのデータを無効化する。これにより、セキュアオペレーティングシステム１０４２によって指定された領域のデータがキャッシュ１００４に格納されていない状態にする。
【０１２３】
次に、キャッシュロック部１０４５は、最終的にロックするウェイまたはライン等を残して、その他のウェイまたはライン等をロックする。その状態で、キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２によって指定された領域のデータの読み込み処理を行う。
【０１２４】
そして、キャッシュロック部１０４５は、ロックしていたその他のウェイまたはライン等のロックを解除する。一方で、キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２によって指定された領域のデータが読み込まれたウェイまたはライン等をロックする。キャッシュロック部１０４５は、ロックしていたウェイまたはライン等のロックを解除する処理において、始めからロックされていたウェイまたはライン等のロックを解除しない。
【０１２５】
これにより、セキュアオペレーティングシステム１０４２によって指定された領域に対応するウェイまたはライン等がロックされる。
【０１２６】
秘匿データ１０１０のロード処理とアンロード処理の詳細については、シーケンス図を用いて後で説明する。
【０１２７】
コンテンツ再生アプリ１０４３は、プレーヤアプリ１０３２からの依頼を受けて、コンテンツ受信アプリ１０３３がコンテンツ記録装置１２０から受信したコンテンツの再生処理を行う。しかし、コンテンツ受信アプリ１０３３がコンテンツ記録装置１２０から受信したコンテンツは暗号化されている。そこで、コンテンツ再生アプリ１０４３は、暗号化されているコンテンツを復号するため、復号鍵を含む秘匿データ１０１０のロードをセキュアオペレーティングシステム１０４２へ依頼する。
【０１２８】
セキュア環境１２００は、さらに、図４に示されていないセキュアアプリを含んでもよい。
【０１２９】
＜暗号化秘匿データ１０５１＞
図５は、図２に示された暗号化秘匿データ１０５１の構成図である。図５のように、暗号化秘匿データ１０５１は、ヘッダ情報１０６１と、秘匿データ本体１０６２と、検証値１０６３とを含む。ヘッダ情報１０６１は、暗号化されていない状態で格納され、秘匿データ本体１０６２および検証値１０６３は、暗号化されている状態で格納される。
【０１３０】
ヘッダ情報１０６１は、秘匿データ本体１０６２の開始位置およびサイズ、検証値１０６３の開始位置およびサイズ、暗号方式、並びに、識別子等を含む。暗号方式は、秘匿データ本体１０６２および検証値１０６３の暗号化に用いられた暗号方式である。また、識別子は、検証値１０６３の検証アルゴリズムを識別するための識別子である。
【０１３１】
秘匿データ本体１０６２は、コンテンツ記録装置１２０から受信された暗号化コンテンツを復号するための鍵、および、復号アルゴリズムで使用されるパラメータの情報を含む。これらの情報は、バスプローブ等のハードウェアによる攻撃、および、不正アプリを使用したソフトウェアによる攻撃から保護されるべき情報である。そのため、秘匿データ本体１０６２は、不揮発性記憶装置１０５０において、暗号化された状態で記録される。
【０１３２】
そして、秘匿データ本体１０６２は、コンテンツ再生アプリ１０４３等のセキュアアプリによって利用される時に、復号され、キャッシュ１００４にロードされる。この前に、キャッシュ１００４には、秘匿データ本体１０６２をロードするための領域に対応するメモリ領域のデータが読み込まれる。そして、秘匿データ本体１０６２がメモリ１０２０へ書き出されないように、キャッシュ１００４はロックされる。その後、秘匿データ本体１０６２が、キャッシュ１００４にロードされる。
【０１３３】
検証値１０６３は、秘匿データ本体１０６２が改ざんされていないことを検証するための値である。具体的には、検証値１０６３は、暗号化前の秘匿データ本体１０６２をハッシュ関数に入力することにより得られるハッシュ値である。そして、検証値１０６３は、秘匿データ本体１０６２と一緒に暗号化される。
【０１３４】
なお、秘匿データ１０１０は、暗号化コンテンツを復号するための鍵、および、復号アルゴリズムで使用されるパラメータの情報に限られない。秘匿データ１０１０は、他にも秘匿にしなければならないデータ（例えば、コンテンツ表示装置１１０および同種の装置がそれぞれ個別に持つデバイス鍵等）を含んでもよい。また、秘匿データ１０１０は、秘匿にしなければならないアルゴリズムのコード、または、秘匿にしなければならないデータを扱うためのコード等でもよい。
【０１３５】
なお、１つの秘匿データ本体１０６２を含む暗号化秘匿データ１０５１が示されているが、暗号化秘匿データ１０５１は、このような構成に限定されない。暗号化秘匿データ１０５１は、複数の秘匿データ本体を含んでもよい。この時、複数の秘匿データ本体は一連のデータとして暗号化されてもよいし、個別のデータとして別々に暗号化されてもよい。また、複数の秘匿データ本体は、それぞれ異なる暗号化方式、および、それぞれ異なる暗号鍵を用いて暗号化されてもよい。
【０１３６】
また、暗号化秘匿データ１０５１は、複数の秘匿データ本体に対応する複数の検証値を含んでもよいし、複数の検証値が１つにまとめられた検証値リストを含んでもよい。また、暗号化秘匿データ１０５１は、暗号化秘匿データ１０５１に含まれるすべての秘匿データ本体に対して、１つの検証値１０６３を含んでもよい。
【０１３７】
また、上述において、暗号化秘匿データ１０５１は、検証値１０６３を含んでいるが、暗号化秘匿データ１０５１は、このような構成に限定されない。検証値１０６３は、暗号化秘匿データ１０５１とは別に独立していてもよいし、無くてもよい。また、上述において、検証値１０６３は、暗号化されているが、暗号化されていなくてもよい。また、検証値１０６３は、秘匿データ本体１０６２と一緒に暗号化されてもよいし、秘匿データ本体１０６２とは別に独立して暗号化されてもよい。
【０１３８】
また、秘匿データ本体１０６２の暗号化には、ＤＥＳまたはＡＥＳのような共通鍵暗号方式が利用されてもよいし、ＲＳＡまたはＥｌＧａｍａｌ等の公開鍵暗号方式が利用されてもよいし、それらが組み合わされてもよい。
【０１３９】
また、上述では、秘匿データ本体１０６２および検証値１０６３がまとめて暗号化されているが、暗号化の態様は、これに限定されない。秘匿データ本体１０６２と検証値１０６３とは別々に暗号化されてもよいし、検証値１０６３が暗号化されずに秘匿データ本体１０６２が暗号化されてもよい。
【０１４０】
また、検証値１０６３は、秘匿データ本体１０６２の後ろではなく、秘匿データ本体１０６２の前にあってもよい。また、検証値１０６３は、ヘッダ情報１０６１に含まれてもよい。さらに、検証値１０６３は、暗号化秘匿データ１０５１に含まれず、暗号化秘匿データ１０５１とは別に、暗号化秘匿データ１０５１の複数の検証値がまとめられた検証値リストに格納されてもよい。
【０１４１】
なお、ハッシュ関数として、ＭＤ４、ＭＤ５、ＳＨＡ−１およびＳＨＡ−２等のアルゴリズムが利用可能である。また、検証値１０６３は、ハッシュ値ではなく、デジタル署名（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ）、メッセージ認証コード（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値、誤り検出符号値、または、誤り訂正符号値でもよい。
【０１４２】
ＭＡＣ値を計算するアルゴリズムとして、ＣＢＣ−ＭＡＣおよびＨＭＡＣ等が利用可能である。誤り検出符号値を計算するアルゴリズムとして、巡回冗長検査（ＣＲＣ：Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）およびチェックサム等が利用可能である。誤り訂正符号値を計算するアルゴリズムとして、リード／ソロモン符号およびターボ符号等が利用可能である。
【０１４３】
暗号化秘匿データ１０５１は、コンテンツ表示装置１１０の工場製造時に不揮発性記憶装置１０５０に格納される。この時、秘匿データ本体１０６２の初期データが、生成され、機器ごとに個別の鍵で暗号化される。これにより、暗号化秘匿データ１０５１が生成される。暗号化に使用された鍵は、システムＬＳＩ１０００における鍵保持部１００６に格納される。
【０１４４】
なお、暗号化秘匿データ１０５１は、ネットワーク等の通信路を介してコンテンツ表示装置１１０へ配信されてもよい。この時、暗号化秘匿データ１０５１は、機器ごとに個別の鍵で暗号化された暗号化秘匿データ１０５１が配信されてもよい。あるいは、すべての機器に共通の鍵で暗号化された暗号化秘匿データ１０５１が配信されてもよい。そして、コンテンツ表示装置１１０が、暗号化秘匿データ１０５１を受信した後に、さらに機器ごとに個別の鍵で暗号化秘匿データ１０５１を暗号化して、保存してもよい。
【０１４５】
また、暗号化秘匿データ１０５１は、ネットワークではなく、可搬性を有する記録媒体を用いてコンテンツ表示装置１１０へ格納されてもよい。
【０１４６】
＜パッケージ生成部の構成＞
図６は、本実施の形態に係るセキュアアプリを生成するためのパッケージ生成部の構成図である。図６のように、パッケージ生成部３０００は、コンパイラ３１００、リンカ３１０１およびパッケージ生成ツール３１０２を含む。パッケージ生成部３０００は、秘密鍵３１１２、公開鍵証明書（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｃｅｒｔｉｆｉｃａｔｅ）３１１３および設定ファイル３１１４を用いて、ソースコード（プログラムソースコード）３１１０からセキュアアプリ３１１１を生成する。
【０１４７】
コンパイラ３１００は、入力されたソースコード３１１０をコンパイルし、オブジェクトファイルを生成する。
【０１４８】
リンカ３１０１は、コンパイラ３１００が生成したオブジェクトファイルにライブラリをリンクする。そして、リンカ３１０１は、コンテンツ表示装置１１０が実行できるファイル（プログラムファイル）を生成する。
【０１４９】
パッケージ生成ツール３１０２は、リンカ３１０１が生成したプログラムファイルから、設定ファイル３１１４、秘密鍵３１１２および公開鍵証明書３１１３を用いて、セキュアアプリ３１１１を生成する。
【０１５０】
パッケージ生成部３０００は、コンテンツ表示装置１１０とは異なるセキュアアプリ開発装置に含まれる。そして、セキュアアプリ開発装置のパッケージ生成部３０００によって生成されたセキュアアプリ３１１１は、暗号化コンテンツ再生アプリ１０５４等として、コンテンツ表示装置１１０の不揮発性記憶装置１０５０に格納される。
【０１５１】
＜セキュアアプリ３１１１の構成＞
図７は、本実施の形態に係るセキュアアプリ３１１１の構成図である。図７のように、セキュアアプリ３１１１は、アプリヘッダ情報３２０１と、アプリ本体３２０２と、設定ファイル３２０３と、アプリ署名リスト（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｉｇｎａｔｕｒｅ  Ｌｉｓｔ）３２０４と、公開鍵証明書３２０５と、署名（Ｓｉｇｎａｔｕｒｅ）３２０６とを含む。
【０１５２】
図７では、セキュアアプリ３１１１の構造が示されているが、コンテンツ再生アプリ１０４３の構造に限らず、ブートローダ１０４１およびセキュアオペレーティングシステム１０４２の構造も図７に示す構造と同様であってもよい。
【０１５３】
アプリヘッダ情報３２０１は、セキュアアプリ３１１１を識別するための識別子を含む。また、アプリヘッダ情報３２０１は、アプリ本体３２０２、設定ファイル３２０３、アプリ署名リスト３２０４および公開鍵証明書３２０５のそれぞれについて、開始アドレス、サイズおよびファイル数等を含む。また、アプリヘッダ情報３２０１は、アプリ本体３２０２、設定ファイル３２０３およびアプリ署名リスト３２０４を暗号化する時に使用された暗号方式に関する情報等を含む。
【０１５４】
アプリ本体３２０２は、ソースコード３１１０から、コンパイラ３１００とリンカ３１０１とを使用して生成されたプログラムファイルである。
【０１５５】
設定ファイル３２０３は、パッケージ生成ツール３１０２に入力される設定ファイル３１１４と同じである。
【０１５６】
アプリ署名リスト３２０４は、アプリ本体３２０２および設定ファイル３２０３の両方の署名が並んだリストである。パッケージ生成ツール３１０２は、セキュアアプリ３１１１の生成時に、入力されたアプリ本体３２０２および設定ファイル３２０３から、それぞれの署名を生成し、アプリ署名リスト３２０４を生成する。署名の生成には、秘密鍵３１１２が使用される。
【０１５７】
公開鍵証明書３２０５は、パッケージ生成ツール３１０２に入力される公開鍵証明書３１１３と同じである。
【０１５８】
署名３２０６は、アプリヘッダ情報３２０１、アプリ本体３２０２、設定ファイル３２０３、アプリ署名リスト３２０４および公開鍵証明書３２０５で構成される一連のデータの署名である。ここで、アプリ本体３２０２、設定ファイル３２０３およびアプリ署名リスト３２０４は暗号化されたままの状態で、署名３２０６が生成される。
【０１５９】
なお、上述のセキュアアプリ３１１１は、アプリ本体３２０２、設定ファイル３２０３、アプリ署名リスト３２０４および公開鍵証明書３２０５をそれぞれ１つずつ含むように構成されているが、セキュアアプリ３１１１の構成は、このような構成に限定されない。アプリ本体３２０２、設定ファイル３２０３、アプリ署名リスト３２０４および公開鍵証明書３２０５のいずれかは、複数のファイルであってもよいし、無くてもよい。
【０１６０】
また、上述では、セキュアアプリ３１１１は、アプリ本体３２０２および設定ファイル３２０３の両方の署名が並んだアプリ署名リスト３２０４を含んでいるが、セキュアアプリ３１１１の構成は、このような構成に限定されない。セキュアアプリ３１１１は、アプリ本体３２０２および設定ファイル３２０３に対応する２つの署名を別々に含んでもよい。
【０１６１】
＜セキュアブート処理＞
コンテンツ表示装置１１０は、セキュア環境１２００で動作するブートローダ１０４１およびセキュアオペレーティングシステム１０４２が改ざんされていないことをコンテンツ表示装置１１０の起動時に検証する。
【０１６２】
以下、コンテンツ表示装置１１０の電源が投入されてから、汎用オペレーティングシステム１０３１が起動するまでの方法（セキュアブート処理）を、図８のシーケンス図を用いて説明する。
【０１６３】
コンテンツ表示装置１１０の電源が投入された後、ＣＰＵ１００１が、セキュアモードかつ特権モードの状態で、システムＬＳＩ１０００におけるＩＰＬ１００２を実行する。なお、ＣＰＵ１００１がＩＰＬ１００２に従って処理を実行することをＩＰＬ１００２が処理を実行すると表現する場合がある。また、ＣＰＵ１００１がプログラム等に従って処理を実行することをプログラム等が処理を実行すると表現する場合がある。
【０１６４】
ＩＰＬ１００２は、まずコンテンツ表示装置１１０のハードウェアの初期化処理を行う（Ｓ１０００）。初期化処理において、ＩＰＬ１００２は、メモリ１０２０の動作チェック、メモリ制御部１００３の初期化、および、周辺回路（図示せず）の初期化等の処理を行う。そして、ＩＰＬ１００２は、メモリ制御部１００３の初期化時に、メモリ１０２０に、ノーマル領域１０３０およびセキュア領域１０４０を設定する。
【０１６５】
ＩＰＬ１００２は、初期化処理後、ブートローダ１０４１を不揮発性記憶装置１０５０からセキュア領域１０４０へロードする（Ｓ１００１）。ＩＰＬ１００２は、セキュア領域１０４０へロードしたブートローダ１０４１の改ざんチェックを行う（Ｓ１００２）。この時、ＩＰＬ１００２は、ブートローダ１０４１に付加されている署名と公開鍵証明書とを利用して、ブートローダ１０４１の改ざんチェックを行う。
【０１６６】
ＩＰＬ１００２は、検証の結果、ブートローダ１０４１が改ざんされていないと判定した場合（Ｓ１００２でＯＫ）、ブートローダ１０４１を起動する（Ｓ１００３）。一方、ＩＰＬ１００２は、検証の結果、ブートローダ１０４１が改ざんされていると判定した場合（Ｓ１００２でＮＧ）、コンテンツ表示装置１１０の起動を終了する。
【０１６７】
ブートローダ１０４１は、ＩＰＬ１００２によって起動された後（Ｓ１００３）、セキュア環境１２００の初期設定を行う（Ｓ１００４）。ブートローダ１０４１は、初期設定（Ｓ１００４）で、セキュア環境１２００でセキュアオペレーティングシステム１０４２およびセキュアアプリ３１１１等を実行するための各種設定を行う。
【０１６８】
ブートローダ１０４１は、初期設定の終了後、セキュアオペレーティングシステム１０４２を不揮発性記憶装置１０５０からセキュア領域１０４０へロードする（Ｓ１００５）。ブートローダ１０４１は、セキュア領域１０４０へロードしたセキュアオペレーティングシステム１０４２の改ざんチェックを行う（Ｓ１００６）。この時、ブートローダ１０４１は、セキュアオペレーティングシステム１０４２に付加されている署名および公開鍵証明書を利用して、セキュアオペレーティングシステム１０４２の改ざんチェックを行う。
【０１６９】
ブートローダ１０４１は、検証の結果、セキュアオペレーティングシステム１０４２が改ざんされていないと判定した場合（Ｓ１００６でＯＫ）、セキュアオペレーティングシステム１０４２を起動する（Ｓ１００７）。一方、ブートローダ１０４１は、検証の結果、セキュアオペレーティングシステム１０４２が改ざんされていると判定した場合（Ｓ１００６でＮＧ）、セキュアオペレーティングシステム１０４２を起動しない。
【０１７０】
セキュアオペレーティングシステム１０４２は、ブートローダ１０４１によって起動された場合（Ｓ１００７）、セキュアオペレーティングシステム１０４２自身、および、その環境でセキュアアプリ３１１１等を実行するための初期設定を行う（Ｓ１００８）。セキュアオペレーティングシステム１０４２は、初期設定が終了した後、ブートローダ１０４１へ初期化終了を通知する（Ｓ１００９）。
【０１７１】
ブートローダ１０４１は、セキュアオペレーティングシステム１０４２が改ざんされていると判定した場合（Ｓ１００６でＮＧ）、セキュアブート失敗フラグを設定する（Ｓ１０１０）。セキュアブート失敗フラグは、ソフトウェア実行環境がノーマル環境１１００からセキュア環境１２００へ遷移した時にチェックされる。
【０１７２】
そして、セキュアブートが失敗していた場合、ブートローダ１０４１は、セキュアブート失敗フラグを用いて、ノーマル環境１１００へ処理エラーを通知する。また、ノーマル環境１１００で動作するアプリも、読み込み専用（Ｒｅａｄ−Ｏｎｌｙ）でセキュアブート失敗フラグにアクセスできる。すなわち、ノーマル環境１１００で実行しているアプリがセキュアブート失敗フラグを参照できる。
【０１７３】
ブートローダ１０４１は、初期化終了通知（Ｓ１００９）またはフラグ設定（Ｓ１０１０）の後、汎用オペレーティングシステム１０３１を不揮発性記憶装置１０５０からノーマル領域１０３０へロードする（Ｓ１０１１）。その後、ブートローダ１０４１は、ＣＰＵ１００１をノーマルモードへ変更し、汎用オペレーティングシステム１０３１を実行する（Ｓ１０１２）。
【０１７４】
なお、上述では、ブートローダ１０４１が、汎用オペレーティングシステム１０３１をロードするが、処理の態様は、これに限定されない。
【０１７５】
セキュアオペレーティングシステム１０４２は、初期化処理を終えた後、ブートローダ１０４１へ処理を戻さずに、汎用オペレーティングシステム１０３１をロードしてもよい。そして、セキュアオペレーティングシステム１０４２は、汎用オペレーティングシステム１０３１のロード後、ＣＰＵ１００１をノーマルモードへ変更し、汎用オペレーティングシステム１０３１を実行してもよい。
【０１７６】
また、上述では、汎用オペレーティングシステム１０３１がロードされた後に、ＣＰＵ１００１がノーマルモードに変更され、汎用オペレーティングシステム１０３１が実行されるが、処理の態様は、これに限定されない。
【０１７７】
汎用オペレーティングシステム１０３１がロードされた後に、汎用オペレーティングシステム１０３１が改ざんされていないことがチェックされてもよい。そして、汎用オペレーティングシステム１０３１が改ざんされていない場合、ＣＰＵ１００１がノーマルモードへ変更され、汎用オペレーティングシステム１０３１が実行されてもよい。
【０１７８】
そして、汎用オペレーティングシステム１０３１が改ざんされていた場合、コンテンツ表示装置１１０の起動は終了してもよい。あるいは、汎用オペレーティングシステム１０３１が改ざんされていた場合、セキュアブート失敗フラグが設定されてもよい。そして、セキュアブート失敗フラグが設定された状態で、ＣＰＵ１００１がノーマルモードへ変更され、汎用オペレーティングシステム１０３１が実行されてもよい。
【０１７９】
＜秘匿データ１０１０のロード処理＞
セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１から秘匿データ１０１０のロード処理を依頼された時に、秘匿データ１０１０をロードする。この時、セキュアオペレーティングシステム１０４２は、秘匿データロード部１０４４およびキャッシュロック部１０４５を用いて秘匿データ１０１０をシステムＬＳＩ１０００の内部にロードする。
【０１８０】
これにより、セキュアオペレーティングシステム１０４２は、バスプローブ等のハードウェアによる攻撃からも、デバッガまたは不正アプリ等のソフトウェアによる攻撃からも、秘匿データ１０１０を保護する。
【０１８１】
以下、セキュア領域１０４０のデータ用として設定されたキャッシュ１００４の内部に、秘匿データ１０１０をロードする処理を、図９のシーケンス図を用いて説明する。
【０１８２】
コンテンツ再生アプリ１０４３等のセキュアアプリ３１１１から秘匿データ１０１０のロードが依頼された時、セキュアオペレーティングシステム１０４２は秘匿データ１０１０のためのメモリ領域をセキュア領域１０４０に確保する（Ｓ１１００）。
【０１８３】
そして、セキュアオペレーティングシステム１０４２は、確保したメモリ領域の情報（アドレスおよびサイズ）をキャッシュロック部１０４５に通知し、キャッシュロック部１０４５にキャッシュ１００４のロックを依頼する（Ｓ１１０１）。
【０１８４】
キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２から通知されたメモリ領域（セキュア領域１０４０の一部）のデータがキャッシュ１００４に読み込まれるように、データの読み込み処理を行う（Ｓ１１０２）。この処理（Ｓ１１０２）の目的は、キャッシュ１００４にデータを読み込ませることであるため、実際に読み込まれたデータは使用されない。したがって、キャッシュロック部１０４５は、値を持たない空データの読み込み処理を行ってもよい。
【０１８５】
キャッシュロック部１０４５は、前の処理（Ｓ１１０２）でキャッシュ１００４に読み込まれたデータが、キャッシュ１００４から除外され、システムＬＳＩ１０００の外部のメモリ１０２０へ書き出されないようにロックする（Ｓ１１０３）。この処理により、ロックされた領域のデータが変更された場合でも、その変更されたデータがメモリ１０２０へ書き込まれることがなくなる。
【０１８６】
キャッシュロック部１０４５は、ロック処理が終了したことをセキュアオペレーティングシステム１０４２へ通知する（Ｓ１１０４）。
【０１８７】
次に、セキュアオペレーティングシステム１０４２は、キャッシュ１００４のロックされた領域へ秘匿データ１０１０をロードすることを秘匿データロード部１０４４へ依頼する（Ｓ１１０５）。この時、セキュアオペレーティングシステム１０４２は、ロードされるキャッシュ領域の情報（アドレスおよびサイズ）を秘匿データロード部１０４４へ通知する。
【０１８８】
秘匿データロード部１０４４は、不揮発性記憶装置１０５０から暗号化秘匿データ１０５１を読み込む（Ｓ１１０６）。この時、秘匿データロード部１０４４は、メモリ１０２０のセキュア領域１０４０に暗号化秘匿データ１０５１をロードしてもよい。
【０１８９】
そして、秘匿データロード部１０４４は、鍵保持部１００６で保持されている鍵を用いて、暗号化秘匿データ１０５１を復号することにより、秘匿データ１０１０を取得する（Ｓ１１０７）。そして、秘匿データロード部１０４４は、セキュアオペレーティングシステム１０４２から通知された領域に復号した秘匿データ１０１０を書き込む（Ｓ１１０８）。
【０１９０】
秘匿データロード部１０４４は、書き込みの完了後、データが改ざんされていないことを暗号化秘匿データ１０５１に付加されている検証値１０６３を用いて検証する（Ｓ１１０９）。秘匿データロード部１０４４は、検証の結果、改ざんされていた場合には、ロードしたデータのすべてを０で上書きする。
【０１９１】
その後、秘匿データロード部１０４４は、ロード処理の終了をセキュアオペレーティングシステム１０４２へ通知する（Ｓ１１１０）。秘匿データ１０１０が、正常にロードされ、検証の結果、改ざんされていなかった場合、秘匿データロード部１０４４は、正常終了をセキュアオペレーティングシステム１０４２へ通知する。一方、秘匿データ１０１０が改ざんされていた場合、秘匿データロード部１０４４は、エラーをセキュアオペレーティングシステム１０４２へ通知する。
【０１９２】
上述において、秘匿データ１０１０のロード前に、キャッシュ１００４のロック処理が行われる。これにより、秘匿データ１０１０がキャッシュ１００４に書き込まれても、システムＬＳＩ１０００の外部に秘匿データ１０１０が流出することはない。そのため、バスプローブ等のハードウェアによる攻撃から秘匿データ１０１０が保護される。
【０１９３】
また、秘匿データ１０１０に対応するメモリ領域は、セキュア領域１０４０に確保される。したがって、ノーマル環境１１００で動作するデバッガまたは不正アプリ等のソフトウェアによる攻撃からも秘匿データ１０１０は保護される。
【０１９４】
なお、上述では、キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２から通知されたメモリ領域のデータがキャッシュ１００４に読み込まれるように、データの読み込み処理を行っている（Ｓ１１０２）。しかし、処理の態様は、これに限定されない。
【０１９５】
例えば、キャッシュロック部１０４５は、セキュアオペレーティングシステム１０４２から通知されたメモリ領域のデータがキャッシュ１００４に既に読み込まれているか否かを判定してもよい。そして、キャッシュロック部１０４５は、当該データが読み込まれていない場合に、読み込み処理（Ｓ１１０２）を実施してもよい。または、セキュアオペレーティングシステム１０４２が読み込み処理（Ｓ１１０２）を行ってもよい。データが既に読み込まれている場合、読み込み処理（Ｓ１１０２）は実施されなくてもよい。
【０１９６】
また、例えば、既にキャッシュ１００４において上書き可能なキャッシュ領域が存在する場合、そのキャッシュ領域が秘匿データ１０１０のロードに用いられてもよい。すなわち、キャッシュロック部１０４５は、上書きされてもよいキャッシュ領域をロックし、秘匿データロード部１０４４は、そのキャッシュ領域に秘匿データ１０１０をロードしてもよい。
【０１９７】
また、上述では、セキュアオペレーティングシステム１０４２は、秘匿データ１０１０のためのメモリ領域をセキュア領域１０４０に確保するが、確保されるメモリ領域は、セキュア領域１０４０に限定されない。デバッガまたは不正アプリ等のソフトウェアによる攻撃を受けない環境において、秘匿データ１０１０がハードウェアによる攻撃から保護されればよい場合、セキュアオペレーティングシステム１０４２は、秘匿データ１０１０のためのメモリ領域をノーマル領域１０３０に確保してもよい。
【０１９８】
＜秘匿データ１０１０のアンロード処理＞
セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１から秘匿データ１０１０のアンロード処理が依頼された時に、秘匿データロード部１０４４およびキャッシュロック部１０４５を用いて、秘匿データ１０１０をアンロードする。キャッシュロック部１０４５は、秘匿データ１０１０がシステムＬＳＩ１０００の外部に書き出されないように、キャッシュ領域を０データ（０の値）で上書きする。その後、キャッシュロック部１０４５は、ロード処理でロックされたキャッシュ領域のロックを解除する。
【０１９９】
以下、秘匿データ１０１０のアンロードが依頼されてから、秘匿データ１０１０がアンロードされるまでの処理を図１０のシーケンス図を用いて説明する。
【０２００】
セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１から秘匿データ１０１０のアンロード処理が依頼された時に、秘匿データ１０１０の保存処理を秘匿データロード部１０４４へ依頼する（Ｓ１１２０）。
【０２０１】
秘匿データロード部１０４４は、秘匿データ１０１０から検証値１０６３を算出する（Ｓ１１２１）。また、秘匿データロード部１０４４は、鍵保持部１００６に保持されている鍵を用いて秘匿データ１０１０を暗号化し、暗号化秘匿データ１０５１を生成する（Ｓ１１２２）。そして、秘匿データロード部１０４４は、生成した暗号化秘匿データ１０５１を不揮発性記憶装置１０５０へ保存する（Ｓ１１２３）。その後、秘匿データロード部１０４４は、保存結果をセキュアオペレーティングシステム１０４２へ通知する（Ｓ１１２４）。
【０２０２】
次に、セキュアオペレーティングシステム１０４２は、キャッシュロック部１０４５に、ロックされたキャッシュ１００４のアンロックを依頼する（Ｓ１１２５）。
【０２０３】
キャッシュロック部１０４５は、秘匿データ１０１０を記録しているキャッシュ領域のすべてに０の値を書き込む（Ｓ１１２６）。そして、キャッシュロック部１０４５は、秘匿データ１０１０のロード処理においてロックされたキャッシュ１００４のロックを解除する（Ｓ１１２７）。その後、キャッシュロック部１０４５は、アンロック処理の終了をセキュアオペレーティングシステム１０４２へ通知する（Ｓ１１２８）。
【０２０４】
セキュアオペレーティングシステム１０４２は、秘匿データ１０１０がロードされたキャッシュ領域に対応するセキュア領域１０４０におけるメモリ領域を解放する（Ｓ１１２９）。
【０２０５】
秘匿データ１０１０のアンロードにおいて、０の値を書き込む処理（Ｓ１１２６）が行われずにキャッシュ１００４のロックが解除された場合、キャッシュ１００４に残っている秘匿データ１０１０が、メモリ１０２０へ書き出されてしまう。０の値を書き込む処理（Ｓ１１２６）が行われることにより、秘匿データ１０１０ではなく、０の値がメモリ１０２０へ書き出される。
【０２０６】
したがって、キャッシュ１００４のロックが解除され、キャッシュ１００４におけるデータがメモリ１０２０へ書き出されたとしても、秘匿データ１０１０が、メモリ１０２０へ書き出されることはない。
【０２０７】
以上のように、本実施の形態に係るコンテンツ表示装置１１０は、コンテンツを再生する際に利用する鍵等の秘匿データ１０１０をシステムＬＳＩ１０００の内部で扱う。これにより、コンテンツ表示装置１１０は、秘匿データ１０１０をハードウェアによる攻撃から保護することができる。また、コンテンツ表示装置１１０は、秘匿データ１０１０のためのメモリ領域をセキュア領域１０４０に確保することで、秘匿データ１０１０をソフトウェアによる攻撃からも保護することができる。
【０２０８】
これにより、コンテンツ表示装置１１０は、セキュリティ強度（保護強度）が互いに異なる３種類の領域を持つことができる。第１の領域は、保護されていないノーマル領域１０３０である。第２の領域は、ソフトウェアによる攻撃から保護されたセキュア領域１０４０である。第３の領域は、ハードウェアによる攻撃、および、ソフトウェアによる攻撃の両方から保護された領域である。
【０２０９】
また、秘匿データロード部１０４４は、セキュア環境１２００で、秘匿データ１０１０をロードする。これにより、ノーマル環境１１００で動作するデバッガまたは不正プログラム等により、秘匿データ１０１０が不正に取得されることが防止される。
【０２１０】
また、本実施の形態では、システムＬＳＩ１０００におけるキャッシュ１００４の一部が利用される。したがって、システムＬＳＩ１０００は、システムＬＳＩ１０００の内部に専用メモリを持たなくてもよい。そして、共用メモリが効率的に利用される。また、キャッシュ１００４が本来持っている機能が利用されるため、本実施の形態で示された処理は、新たなハードウェアを追加することなく、既存システムに応用可能である。
【０２１１】
また、ロード処理またはアンロード処理によって、キャッシュ１００４の一部が常に占有（ロック）されるという状態が回避される。そして、秘匿データ１０１０が処理される時に、キャッシュ１００４がロックされる。そのため、キャッシュ１００４では、データをキャッシュする機能も、有効に活用される。
【０２１２】
なお、上述では、秘匿データ１０１０の処理が開始される時に、キャッシュ１００４のロックが開始される。しかし、秘匿データ１０１０を用いるアプリが開始した時に、キャッシュ１００４のロックが開始されてもよい。そして、秘匿データ１０１０を用いるアプリが終了した時に、キャッシュ１００４のロックが解除されてもよい。
【０２１３】
これにより、秘匿データ１０１０を用いるアプリの動作中において、秘匿データ１０１０がキャッシュ１００４に維持される。したがって、秘匿データ１０１０のロードおよびアンロードによって発生する処理量が低減する。
【０２１４】
また、キャッシュ１００４に十分な容量が存在する場合、コンテンツ表示装置１１０の起動時に、キャッシュ１００４のロックが開始されてもよい。例えば、セキュアオペレーティングシステム１０４２の起動時に、キャッシュロック部１０４５が、秘匿データ１０１０のため、キャッシュ１００４のロックを開始してもよい。そして、キャッシュ１００４のロックは、解除されなくてもよい。このような処理によっても、秘匿データ１０１０が適切に保護される。
【０２１５】
（実施の形態２）
実施の形態１では、セキュアオペレーティングシステム１０４２が、コンテンツ再生アプリ１０４３等のセキュアアプリ３１１１からの要求に応じて、秘匿データ１０１０をキャッシュ１００４へロードする。本実施の形態では、セキュアアプリ３１１１のアプリ本体３２０２の内部に、セキュア領域１０４０へロードされる部分と、キャッシュ１００４へロードされる部分とが含まれる。そして、セキュアアプリ３１１１のロード時に、これらの部分のそれぞれが個別にロードされる。
【０２１６】
以下、本実施の形態に係るセキュアオペレーティングシステム１０４２、パッケージ生成部３０００、セキュアアプリ３１１１およびアプリ本体３２０２の構成を説明し、セキュアアプリ３１１１のロード処理を説明する。なお、実施の形態１と同様の構成要素については、同じ符号を用いて、説明を省略する。
【０２１７】
＜セキュアオペレーティングシステム１０４２の構成＞
図１１は、本実施の形態に係るセキュアオペレーティングシステム１０４２の構成図である。図１１のように、セキュアオペレーティングシステム１０４２は、秘匿データロード部１０４４と、キャッシュロック部１０４５と、アプリロード部１０４６とを含む。
【０２１８】
アプリロード部１０４６は、セキュアアプリ３１１１のロード時に、セキュアアプリ３１１１に含まれるアプリヘッダ情報３２０１を取得する。そして、アプリロード部１０４６は、アプリヘッダ情報３２０１に基づいて、ハードウェアによる攻撃からも秘匿にされるべきコードまたはデータがアプリ本体３２０２に含まれるか否かを判定する。
【０２１９】
秘匿にされるべきコードまたはデータが含まれる場合、アプリロード部１０４６は、秘匿にされるべきコードまたはデータをロードするためのキャッシュ１００４の領域をロックするようにキャッシュロック部１０４５へ依頼する。その後、アプリロード部１０４６は、セキュアアプリ３１１１を復号し、ロードする。
【０２２０】
秘匿データロード部１０４４およびキャッシュロック部１０４５は、実施の形態１の秘匿データロード部１０４４およびキャッシュロック部１０４５と同様の構成要素である。
【０２２１】
なお、アプリ本体３２０２の全体が、キャッシュ１００４においてロックされた領域へロードされてもよい。また、アプリ本体３２０２がキャッシュ１００４にロードされるすべての領域がロックされ、復号およびロード処理が行われた後、秘匿にしなくてもよいデータについて一部の領域のロックが解除されてもよい。この場合、秘匿データ１０１０のアンロード処理とは異なり、データは０値で上書きされない。
【０２２２】
＜パッケージ生成部３０００の構成＞
本実施の形態に係るパッケージ生成部３０００は、実施の形態１のパッケージ生成部３０００と同様の構成要素を備えるが、動作の一部が異なる。実施の形態１と同じ動作を行う構成要素については、説明を省略する。
【０２２３】
コンパイラ３１００は、入力されたソースコード３１１０をコンパイルし、オブジェクトファイルを生成する。この時、コンパイラ３１００は、ソースコード３１１０のうち、秘匿データ１０１０を表す識別子が付けられているデータ、秘匿データ１０１０を処理する関数、または、秘匿にされることを表す識別子が付けられているコード等を特定のセクションへ格納する。
【０２２４】
この特定のセクションには、秘匿データ１０１０または秘匿データ１０１０に関連するコードであることを表す識別子が付けられている。セクションに関しては、後で詳細に説明する。
【０２２５】
リンカ３１０１およびパッケージ生成ツール３１０２は、実施の形態１のリンカ３１０１およびパッケージ生成ツール３１０２と同様の構成要素である。
【０２２６】
なお、本実施の形態では、コンパイラ３１００が、秘匿データ１０１０および秘匿データ１０１０に関連するコードを特定のセクションへ格納する。しかし、秘匿データ１０１０および秘匿データ１０１０に関連するコードを特定のセクションへ格納する処理部は、コンパイラ３１００に限定されない。
【０２２７】
例えば、コンパイラ３１００は、ソースコード３１１０に秘匿データ１０１０または秘匿データ１０１０に関連するコードが含まれていることをリンカ３１０１へ通知してもよい。そして、リンカ３１０１が、リンク処理時に、秘匿データ１０１０または秘匿データ１０１０に関連するコードを特定のセクションへ格納してもよい。
【０２２８】
また、コンパイラ３１００は、ソースコード３１１０に秘匿データ１０１０または秘匿データ１０１０に関連するコードが含まれていることをパッケージ生成ツール３１０２へ通知してもよい。そして、パッケージ生成ツール３１０２が、パッケージの生成処理時に、秘匿データ１０１０または秘匿データ１０１０に関連するコードを特定のセクションへ格納してもよい。
【０２２９】
＜セキュアアプリ３１１１の構成＞
本実施の形態に係るセキュアアプリ３１１１は、アプリヘッダ情報３２０１、アプリ本体３２０２、設定ファイル３２０３、アプリ署名リスト３２０４、公開鍵証明書３２０５および署名３２０６を含む。
【０２３０】
アプリヘッダ情報３２０１は、アプリ本体３２０２に秘匿にされるべきコードまたはデータが含まれるか否かを示すフラグを持つ。他の情報は、実施の形態１と同様であるため説明を省略する。
【０２３１】
アプリ本体３２０２、設定ファイル３２０３、アプリ署名リスト３２０４、公開鍵証明書３２０５および署名３２０６は、実施の形態１と同様であるため説明を省略する。
【０２３２】
＜アプリ本体３２０２の構成＞
図１２は、本実施の形態に係るアプリ本体３２０２の構成図である。図１２のように、アプリ本体３２０２は、ヘッダ部３２１０と、．ｔｅｘｔセクション３２１１と、．ｈｃｔｅｘｔセクション３２１２と、．ｒｏｄａｔａセクション３２１３と、．ｄａｔａセクション３２１４と、．ｂｓｓセクション３２１５と、．ｈｃｄａｔａセクション３２１６とを含む。
【０２３３】
ヘッダ部３２１０は、ヘッダ部３２１０の後に続く複数のセクションのそれぞれの種類、開始アドレスおよびサイズ等の情報を持つ。
【０２３４】
．ｔｅｘｔセクション３２１１は、プログラムのコードを格納するためのセクションであり、読み取り専用かつ実行可能として設定される。
【０２３５】
．ｈｃｔｅｘｔセクション３２１２は、秘匿データ１０１０に関連するコードを含むプログラムのコードを格納するためのセクションであり、読み取り専用かつ実行可能として設定される。
【０２３６】
．ｒｏｄａｔａセクション３２１３は、定数データを格納するためのセクションであり、読み取り専用かつ実行不可として設定される。
【０２３７】
．ｄａｔａセクション３２１４は、初期値が設定されているデータを格納するためのセクションであり、読み書き可かつ実行不可として設定される。
【０２３８】
．ｂｓｓセクション３２１５は、初期値が設定されていないデータを格納するためのセクションであり、読み書き可かつ実行不可として設定される。
【０２３９】
．ｈｃｄａｔａセクション３２１６は、秘匿データ１０１０を格納するセクションであり、読み書き可かつ実行不可として設定される。
【０２４０】
上述のように構成されるアプリ本体３２０２のうち、アプリロード部１０４６は、．ｈｃｔｅｘｔセクション３２１２および．ｈｃｄａｔａセクション３２１６をキャッシュ１００４のロックされた領域へロードする。アプリロード部１０４６は、その他のセクションをセキュア領域１０４０へロードする。
【０２４１】
なお、上述では、ロックされた領域へロードされるセクションの種類として、．ｈｃｔｅｘｔセクション３２１２および．ｈｃｄａｔａセクション３２１６が示されている。しかし、ロックされた領域へロードされるセクションの種類は、これらに限定されない。
【０２４２】
ヘッダ部３２１０に、．ｔｅｘｔセクション３２１１および．ｄａｔａセクション３２１４のデータをキャッシュ１００４のロックされた領域へロードするか、セキュア領域１０４０へロードするかを示すフラグが含まれてもよい。そして、アプリロード部１０４６が、そのフラグにより、キャッシュ１００４のロックした領域へデータをロードするか、セキュア領域１０４０へデータをロードするかを判定してもよい。
【０２４３】
また、上述では、アプリ本体３２０２において、キャッシュ１００４のロックされた領域へロードする部分と、セキュア領域１０４０へロードする部分とが混在する構成が示されている。しかし、セキュアアプリ３１１１の構成は、このような構成に限定されない。セキュアアプリ３１１１は、２つのアプリ本体３２０２、３２０２ａ（図示せず）を含んでもよい。そして、アプリ本体３２０２はセキュア領域１０４０へロードされ、アプリ本体３２０２ａはキャッシュ１００４のロックされた領域へロードされてもよい。
【０２４４】
＜セキュアアプリ３１１１のロード処理＞
セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１をロードする時に、セキュアアプリ３１１１の中に秘匿にされるべきコードまたはデータが含まれるか否かを判定する。そして、セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１の秘匿にされるべきコードおよびデータをキャッシュ１００４へロードし、その他をセキュア領域１０４０へロードする。
【０２４５】
以下、セキュアアプリ３１１１をロードする処理を、図１３のフローチャートを用いて説明する。
【０２４６】
セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１を読み込み、署名３２０６を検証する（Ｓ１２００）。セキュアオペレーティングシステム１０４２は、署名３２０６の検証に失敗した場合、セキュアアプリ３１１１のロード処理を停止する。
【０２４７】
セキュアオペレーティングシステム１０４２は、署名の検証（Ｓ１２００）に成功した場合、セキュアアプリ３１１１のアプリヘッダ情報３２０１を読み込む（Ｓ１２０１）。
【０２４８】
セキュアオペレーティングシステム１０４２は、読み込んだアプリヘッダ情報３２０１から、アプリ本体３２０２に秘匿にされるべきコードまたはデータが含まれるか否かを示すフラグを取得する。そして、セキュアオペレーティングシステム１０４２は、フラグに基づいて、アプリ本体３２０２に秘匿にされるべきコードまたはデータが含まれるか否かを判定する（Ｓ１２０２）。
【０２４９】
セキュアオペレーティングシステム１０４２は、秘匿にされるべきコードまたはデータがアプリ本体３２０２に含まれると判定した場合（Ｓ１２０２でＹｅｓ）、アプリ本体３２０２のヘッダ部３２１０を復号する。そして、セキュアオペレーティングシステム１０４２は、秘匿にされるべきコードおよびデータのサイズを算出し、ロード処理を行う（Ｓ１２０３）。ロード処理は、図９の秘匿データ１０１０のロード処理と同様であるため、詳細な説明は省略する。
【０２５０】
セキュアオペレーティングシステム１０４２は、ヘッダ部３２１０に記載された各セクションの開始アドレスおよびサイズの情報に基づいて、秘匿にされるべきコードおよびデータを復号し、ロックされたキャッシュ１００４にロードする。
【０２５１】
セキュアオペレーティングシステム１０４２は、秘匿にされるべきコードまたはデータがアプリ本体３２０２に含まれないと判定した場合（Ｓ１２０２でＮｏ）、秘匿にされなくてもよいコードまたはデータを復号する。あるいは、セキュアオペレーティングシステム１０４２は、秘匿にされるべきコードまたはデータをキャッシュ１００４にロードした後（Ｓ１２０３）、秘匿にされなくてもよいコードまたはデータを復号する。
【０２５２】
そして、セキュアオペレーティングシステム１０４２は、秘匿にされなくてもよい復号されたコードまたはデータをセキュア領域１０４０へロードする（Ｓ１２０４）。
【０２５３】
なお、上述では、セキュアオペレーティングシステム１０４２が、秘匿にされるべきコードまたはデータがアプリ本体３２０２に含まれるか否かを判定し、秘匿にされるべきコードまたはデータをキャッシュ１００４のロックした領域へロードする。しかし、処理の態様は、このような態様に限定されない。
【０２５４】
まず、セキュアオペレーティングシステム１０４２は、すべてのデータを秘匿されるべきコードまたはデータとみなし、キャッシュ１００４のロックされた領域へロードしてもよい（Ｓ１２０３）。
【０２５５】
そして、セキュアオペレーティングシステム１０４２は、ヘッダ部３２１０を読み込み（Ｓ１２０１）、ヘッダ部３２１０の情報から、ロックされた領域のうち、秘匿にされるべきコードまたはデータの領域を判定してもよい（Ｓ１２０２）。そして、セキュアオペレーティングシステム１０４２は、ロックされた領域のうち、秘匿にされるべきコードまたはデータが含まれない領域のロックを解除してもよい。
【０２５６】
以上のように、本実施の形態によれば、コンテンツ再生アプリ１０４３等のセキュアアプリ３１１１に、秘匿にされるべきコードまたはデータを含めることが可能となる。これにより、セキュアアプリ３１１１は、秘匿データ１０１０のロード処理を、セキュアオペレーティングシステム１０４２に個別に依頼しなくてもよい。
【０２５７】
また、セキュアアプリ３１１１に、秘匿データ１０１０のロード処理およびアンロード処理がプログラムとして組み込まれなくてもよい。秘匿にされるべきコードまたはデータのセクションが適切に設定されることで、セキュアオペレーティングシステム１０４２が秘匿にされるべきコードまたはデータを適切な領域へロードする。そのため、ハードウェアの構成によってロード先が変更された場合でも、セキュアアプリ３１１１が変更されなくてもよい。したがって、セキュアアプリ３１１１の移植性が向上する。
【０２５８】
（実施の形態３）
実施の形態１では、セキュアオペレーティングシステム１０４２が、コンテンツ再生アプリ１０４３等のセキュアアプリ３１１１からの要求に応じて、秘匿データ１０１０をキャッシュ１００４へロードする。また、実施の形態２では、セキュアアプリ３１１１のアプリ本体３２０２が、その内部に、セキュア領域１０４０へロードされる部分と、キャッシュ１００４へロードされる部分とを有し、セキュアアプリ３１１１のロード時に、２つの部分のそれぞれを個別にロードする。
【０２５９】
本実施の形態において、セキュアオペレーティングシステム１０４２は、秘匿データ１０１０を処理する時に、秘匿データ１０１０およびその他のデータを処理する関数が使用するスタック領域をキャッシュ１００４においてロックする。これにより、秘匿データ１０１０が安全に処理される。また、セキュアオペレーティングシステム１０４２は、秘匿データ１０１０を処理しない時に、キャッシュ１００４をアンロックする。これにより、キャッシュ１００４の利用効率が向上する。
【０２６０】
以下、本実施の形態に係るキャッシュ１００４のロック処理とアンロック処理を説明する。なお、実施の形態１と同様の処理および構成については、同じ符号を用いて、説明を省略する。
【０２６１】
＜キャッシュ１００４のロック処理＞
セキュアアプリ３１１１が、ハードウェアによる攻撃からもソフトウェアによる攻撃からも保護されるべき秘匿データ１０１０をキャッシュ１００４のロックされた領域へロードした場合でも、保護が不十分な場合がある。
【０２６２】
例えば、秘匿データ１０１０と別の値とで演算が行われ、その演算結果が、秘匿データ１０１０を格納している領域へ上書き保存された場合には、問題は生じない。しかし、メモリ１０２０におけるスタック領域に配置されているローカル変数へ演算結果を格納する場合等において、問題が生じる。演算結果から元の秘匿データ１０１０自身を求めることが可能である場合があるからである。
【０２６３】
そこで、セキュアアプリ３１１１は、秘匿データ１０１０を扱う時にスタック領域をキャッシュ１００４においてロックすることで、秘匿データ１０１０とそれに関するデータを保護する。
【０２６４】
以下、スタック領域をキャッシュ１００４においてロックする処理を、図１４Ａのシーケンス図を用いて説明する。
【０２６５】
セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１からの依頼に応じて、セキュアアプリ３１１１のスタックが使用しているアドレスを求める（Ｓ２０００）。
【０２６６】
セキュアオペレーティングシステム１０４２は、スタック領域の情報（アドレスおよびサイズ）をキャッシュロック部１０４５に通知し、キャッシュ１００４のロックを依頼する（Ｓ２００１）。
【０２６７】
キャッシュロック部１０４５は、スタック領域のデータがキャッシュ１００４から除外され、システムＬＳＩ１０００の外部のメモリ１０２０へ書き出されないように、キャッシュ１００４におけるスタック領域をロックする（Ｓ１１０３）。ロックの処理自体は、実施の形態１と同様である。本実施の形態では、ロックする対象であるスタック領域は、関数の実行中においてキャッシュ１００４に読み込まれている。そのため、データを読み込む処理（Ｓ１１０２）は行われなくてもよい。
【０２６８】
キャッシュロック部１０４５は、ロック処理が終了したことをセキュアオペレーティングシステム１０４２へ通知する（Ｓ１１０４）。
【０２６９】
以上で処理は終了である。この後、セキュアアプリ３１１１は、秘匿データ１０１０を用いて演算処理を行い、その結果または途中結果等をスタック領域へ格納する。
【０２７０】
但し、新たなメモリ領域がスタック領域として割り当てられた場合、セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１のスタック領域をキャッシュ１００４においてロックしているか否かを判定する。スタック領域がロックされていた場合、セキュアオペレーティングシステム１０４２は、追加でスタックに割り当てられた領域もキャッシュ１００４においてロックする。
【０２７１】
なお、上述において、セキュアオペレーティングシステム１０４２は、セキュアアプリ３１１１からの依頼に応じてキャッシュ１００４におけるスタック領域をロックする。しかし、処理のタイミングは、このようなタイミングに限定されない。セキュアオペレーティングシステム１０４２は、秘匿データ１０１０のロード処理を依頼された時に、ロード処理を依頼したセキュアアプリ３１１１のスタック領域をキャッシュ１００４においてロックしてもよい。
【０２７２】
また、予め設定された特定の領域にセキュアアプリ３１１１がアクセスした時に、セキュアアプリ３１１１のスタック領域をキャッシュ１００４においてロックしてもよい。
【０２７３】
また、上述において、セキュアオペレーティングシステム１０４２は、キャッシュ１００４におけるスタック領域をロックする。しかし、ロックされる領域は、スタック領域に限定されない。セキュアオペレーティングシステム１０４２は、他のデータを格納している領域をロックしてもよい。ロックされる領域は、例えば、ｍａｌｌｏｃ関数等を使用して、動的に確保される領域でもよいし、セキュアアプリ３１１１における任意の関数からアクセス可能なグローバル変数を含む領域でもよい。
【０２７４】
＜キャッシュ１００４のアンロック処理＞
セキュアアプリ３１１１は、秘匿データ１０１０を利用した処理が終了した時、秘匿データ１０１０に関連するスタック領域内のデータを消去する。そして、セキュアアプリ３１１１は、セキュアオペレーティングシステム１０４２へ、キャッシュ１００４におけるスタック領域のアンロックを依頼する。セキュアオペレーティングシステム１０４２は、依頼を受け、キャッシュ１００４におけるスタック領域をアンロックする。
【０２７５】
これにより、キャッシュ１００４においてロックされていた領域を他のプログラムまたは他のデータが利用することが可能になる。したがって、キャッシュ１００４が有効利用される。
【０２７６】
以下、スタック領域をキャッシュ１００４においてアンロックする処理を、図１４Ｂのシーケンス図を用いて説明する。
【０２７７】
セキュアアプリ３１１１は、キャッシュ１００４におけるスタック領域のアンロックをセキュアオペレーティングシステム１０４２に依頼する。依頼を受けたセキュアオペレーティングシステム１０４２は、キャッシュ１００４においてロックされたスタック領域のアンロックをキャッシュロック部１０４５へ依頼する（Ｓ１１２５）。
【０２７８】
キャッシュロック部１０４５は、キャッシュ１００４においてロックされたスタック領域のロックを解除する（Ｓ２０１０）。そして、キャッシュロック部１０４５は、アンロック処理の終了をセキュアオペレーティングシステム１０４２へ通知する（Ｓ１１２８）。
【０２７９】
以上で、処理は終了する。この後、通常通りセキュアアプリ３１１１が動作し、スタック領域のデータがキャッシュ１００４へ読み込まれたり、キャッシュ１００４のデータがメモリ１０２０へ書き出されたりする。これにより、キャッシュ１００４が効率的に利用される。
【０２８０】
以上のように、本実施の形態によれば、データを格納しているスタック領域等が、プログラムの実行中に、キャッシュ１００４において、ロックされ、アンロックされる。これにより、秘匿データ１０１０自身に限らず、秘匿データ１０１０を処理するプログラムによって生成されるデータ、および、秘匿データ１０１０に基づいて計算された結果も保護される。
【０２８１】
（実施の形態４）
本実施の形態に係る情報処理装置は、実施の形態１〜３に示されたコンテンツ表示装置１１０の特徴的な構成要素を備える。
【０２８２】
図１５Ａは、本実施の形態に係る情報処理装置のハードウェア構成図である。図１５Ａに示された情報処理装置３００は、保護対象データを処理する装置である。そして、情報処理装置３００は、２つの記憶部３０１、３０２、および、キャッシュ制御部３０３を備える。
【０２８３】
記憶部３０１は、図２に示されたメモリ１０２０に対応する。記憶部３０２は、図３に示された記憶領域１０１１に対応する。キャッシュ制御部３０３は、図３に示されたキャッシュ制御部１０１２に対応する。
【０２８４】
図１５Ｂは、図１５Ａに示された情報処理装置３００の動作を示すフローチャートである。まず、キャッシュ制御部３０３は、記憶部３０１における記憶データを記憶部３０２にキャッシュする（Ｓ３０１）。
【０２８５】
次に、キャッシュ制御部３０３は、記憶部３０２にキャッシュされた記憶データのキャッシュ領域から得られるキャッシュデータが記憶部３０１に書き戻されないように、記憶部３０２におけるキャッシュ領域をロックする（Ｓ３０２）。次に、キャッシュ制御部３０３は、記憶部３０２におけるキャッシュ領域がロックされた後に、記憶部３０２におけるキャッシュ領域に記憶データとは異なる保護対象データを書き込む（Ｓ３０３）。
【０２８６】
これにより、保護対象データが、キャッシュ（記憶部３０２）に書き込まれる。外部の装置がキャッシュに書き込まれるデータにアクセスすることは困難である。したがって、保護対象データは、適切に保護される。
【０２８７】
次に、キャッシュ制御部３０３は、保護対象データが処理された後に、記憶部３０２におけるキャッシュ領域をクリアする（Ｓ３０４）。次に、キャッシュ制御部３０３は、クリアされたキャッシュ領域から得られるキャッシュデータが記憶部３０１に書き戻されるように、キャッシュ領域のロックを解除する（Ｓ３０５）。これにより、保護対象データが、キャッシュからメモリに書き戻される前に、消去される。したがって、保護対象データが、適切に保護される。
【０２８８】
なお、キャッシュ制御部３０３は、保護対象データが処理される際に、保護対象データに対して、記憶部３０１におけるデータ領域を割り当ててもよい。そして、キャッシュ制御部３０３は、割り当てられたデータ領域における記憶データを記憶部３０２にキャッシュしてもよい（Ｓ３０１）。これにより、保護対象データのためのデータ領域が、ＳＤＲＡＭ等のメモリ（記憶部３０１）において割り当てられる。したがって、メモリの領域とキャッシュの領域との適切な対応関係が維持される。
【０２８９】
また、保護対象データが処理された後の処理（Ｓ３０４、Ｓ３０５）は、省略されてもよい。保護対象データが書き戻されなければ、保護対象データは適切に保護される。
【０２９０】
また、キャッシュ制御部３０３は、プロセッサから出力された保護対象データが外部の装置によって取得されないように物理的に保護されている回路を通じて、記憶部３０２におけるキャッシュ領域に、保護対象データを書き込んでもよい。そして、記憶部３０２は、キャッシュ領域における保護対象データが外部の装置によって取得されないように、物理的に保護されていてもよい。
【０２９１】
例えば、保護対象データが外部の装置によって取得されないように、プロセッサ、記憶部３０２、および、プロセッサと記憶部３０２との間の回路が、１つの集積回路で構成されてもよい。これにより、外部の装置が保護対象データを取得することは物理的に困難になる。したがって、保護対象データが、適切に保護される。
【０２９２】
また、キャッシュ制御部３０３は、プログラムによって記憶部３０１への書き込みが予定されている保護対象データを記憶部３０２におけるキャッシュ領域に書き込んでもよい。これにより、プログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、適切に保護される。
【０２９３】
また、キャッシュ制御部３０３は、記憶部３０２におけるキャッシュ領域に、実行可能なプログラムを保護対象データとして書き込んでもよい。これにより、保護対象プログラムが、改ざんから保護される。したがって、保護対象プログラムが、適切に実行される。
【０２９４】
（実施の形態５）
本実施の形態に係る情報処理装置は、実施の形態１〜３で示されたコンテンツ表示装置１１０の特徴的な構成要素を備える。また、本実施の形態では、実施の形態４で示された構成要素に加えて、任意に追加可能な構成要素が示される。
【０２９５】
図１６は、本実施の形態に係る情報処理装置のハードウェア構成図である。図１６に示された情報処理装置４００は、保護対象データを処理する装置である。そして、情報処理装置４００は、記憶部４０１および集積回路４０５を備える。
【０２９６】
記憶部４０１は、図２に示されたメモリ１０２０、および、図１５Ａに示された記憶部３０１に対応する記憶装置である。また、記憶部４０１は、２つの記憶領域４１１、４１２を含む。記憶領域４１１は、図２に示されたノーマル領域１０３０に対応し、記憶領域４１２は、図２に示されたセキュア領域１０４０に対応する。記憶領域４１１は、ノーマルプログラムを記憶するための領域である。記憶領域４１２は、セキュアプログラムを記憶するための領域であり、ノーマルプログラムからのアクセスが禁止される領域である。
【０２９７】
集積回路４０５は、図２に示されたシステムＬＳＩ１０００に対応する。また、集積回路４０５は、記憶部４０２、キャッシュ制御部４０３、プロセッサ４０４およびアクセス制御部４０６を含む。
【０２９８】
記憶部４０２は、図３に示された記憶領域１０１１、および、図１５Ａに示された記憶部３０２に対応する。キャッシュ制御部４０３は、図３に示されたキャッシュ制御部１０１２、および、図１５Ａに示されたキャッシュ制御部３０３に対応する。プロセッサ４０４は、図２に示されたＣＰＵ１００１に対応する。アクセス制御部４０６は、主に、図２に示されたメモリ制御部１００３に対応する。
【０２９９】
記憶部４０２、キャッシュ制御部４０３およびプロセッサ４０４は、集積回路４０５に含まれる。集積回路４０５の内部のデータに外部の装置がアクセスすることは困難である。したがって、保護対象データが、適切に保護される。
【０３００】
プロセッサ４０４は、保護対象データを生成し、生成された保護対象データを出力してもよい。そして、キャッシュ制御部４０３は、記憶部４０２におけるキャッシュ領域がロックされた後に、記憶部４０２におけるキャッシュ領域に、プロセッサ４０４から出力された保護対象データを書き込んでもよい。これにより、プロセッサによって生成された保護対象データが、キャッシュに書き込まれる。したがって、プロセッサによって生成された保護対象データが、適切に保護される。
【０３０１】
例えば、プロセッサ４０４は、暗号化データを復号することによって、保護対象データを生成し、生成された保護対象データを出力してもよい。これにより、暗号化データの復号によって得られる保護対象データが、適切に保護される。
【０３０２】
また、プロセッサ４０４は、セキュアモードでセキュアプログラムを実行し、ノーマルモードでノーマルプログラムを実行してもよい。これにより、プログラムが適切なセキュリティレベルで実行され、プログラムに対応するセキュリティレベルに基づいてアクセス制御が実行される。
【０３０３】
また、キャッシュ制御部４０３は、セキュアプログラムによって記憶領域４１２への書き込みが予定されている保護対象データを記憶部４０２におけるキャッシュ領域に書き込んでもよい。これにより、セキュアプログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、より高いレベルで保護される。
【０３０４】
また、アクセス制御部４０６は、ノーマルプログラムから記憶領域４１２へのアクセスを禁止してもよい。これにより、２つの記憶領域４１１、４１２に対するアクセスが適切に制御される。したがって、不正プログラムの実行が適切に制限される。
【０３０５】
（その他の変形例）
本開示に係る情報処理装置は、実施の形態１〜５に限定されない。情報処理装置は、以下のように構成されてもよい。
【０３０６】
（１）上述の構成では、セキュア領域１０４０に格納されるプログラム（暗号化ブートローダ１０５２、暗号化セキュアオペレーティングシステム１０５３および暗号化コンテンツ再生アプリ１０５４）は、不揮発性記憶装置１０５０に個別に格納される。しかし、格納の態様は、このような態様に限定されない。
【０３０７】
セキュア領域１０４０に格納されるプログラムは、１つにまとめられてもよい。つまり、不揮発性記憶装置１０５０に、ブートローダ１０４１と、セキュアオペレーティングシステム１０４２と、コンテンツ再生アプリ１０４３とが、１つのファイルにまとめられ、暗号化されて、不揮発性記憶装置１０５０へ格納されてもよい。
【０３０８】
セキュア領域１０４０に格納されるプログラムが１つにまとめられた場合、ＩＰＬ１００２は、ブートローダ１０４１のロードおよび検証を行う際に（図８のＳ１００１およびＳ１００２）、１つにまとめられたファイル全体のロードおよび検証を行ってもよい。また、この場合、ブートローダ１０４１は、セキュアオペレーティングシステム１０４２のロードおよび検証（図８のＳ１００５とＳ１００６）を行わなくてもよい。
【０３０９】
あるいは、すべてのプログラムが１つのファイルにまとめられなくてもよい。ブートローダ１０４１とセキュアオペレーティングシステム１０４２とが１つのファイルにまとめられ、その他のすべてのセキュアアプリが１つのファイルにまとめられてもよい。あるいは、ブートローダ１０４１が１つのファイルで構成され、セキュアオペレーティングシステム１０４２とその他のすべてのセキュアアプリとが１つのファイルにまとめられてもよい。あるいは、他のまとめ方が用いられてもよい。
【０３１０】
なお、セキュアオペレーティングシステム１０４２とすべてのセキュアアプリとが１つのファイルにまとめられた場合、セキュアオペレーティングシステム１０４２がこれらのセキュアアプリをセキュア領域１０４０へロードしなくてもよい。そのため、セキュアオペレーティングシステム１０４２は、これらのセキュアアプリをセキュア領域１０４０へロードする機能を持たなくてもよい。
【０３１１】
（２）上述の構成では、秘匿データ１０１０のアンロード処理の際、キャッシュ１００４がアンロックされる前に、秘匿データ１０１０が０の値で上書きされるが、処理の態様はこのような態様に限定されない。秘匿データ１０１０は０の値ではなく他の値で上書きされてもよい。また、秘匿データ１０１０は、同じ値で上書きされなくてもよい。すなわち、秘匿データ１０１０は、複数の値で上書きされてもよい。
【０３１２】
また、キャッシュ１００４におけるデータが書き換えられた時に設定されるＤｉｒｔｙフラグ、または、キャッシュ１００４に有効なデータが格納されていることを示すＶａｌｉｄフラグがクリアされてもよい。これにより、秘匿データ１０１０が、メモリ１０２０へ書き出されないように制御される。この場合、秘匿データ１０１０は、所定の値で上書きされなくてもよい。
【０３１３】
（３）上述の構成では、秘匿データ１０１０は、システムＬＳＩ１０００の内部のキャッシュ１００４へロードされる。しかし、秘匿データ１０１０のロード先は、システムＬＳＩ１０００の内部に限定されない。例えば、システムＬＳＩ１０００の外部に設置され、かつ、バスプローブ等のハードウェアによる攻撃から保護されたメモリに秘匿データ１０１０がロードされてもよい。
【０３１４】
バスプローブ等のハードウェアによる攻撃から保護されるようにメモリを設置するには、いくつかの方法がある。例えば、システムＬＳＩ１０００およびメモリの間の信号線と、システムＬＳＩ１０００と、メモリの端子とが、基盤の内部に埋め込まれてもよい。また、信号線および端子に接着剤がつけられていてもよい。これにより、接着剤がはがされた時に信号線または端子が破壊される。また、システムＬＳＩ１０００とメモリとが、同一のパッケージ内に封入されてもよい。
【０３１５】
また、図１７に示すように、秘匿データ１０１０は、システムＬＳＩ１０００の内部に配置されたＯＣＭ（Ｏｎ  Ｃｈｉｐ  Ｍｅｍｏｒｙ）１００５にロードされてもよい。
【０３１６】
（４）上述の構成では、セキュアオペレーティングシステム１０４２は、秘匿データロード部１０４４と、キャッシュロック部１０４５とを含む。あるいは、セキュアオペレーティングシステム１０４２は、秘匿データロード部１０４４と、キャッシュロック部１０４５と、アプリロード部１０４６とを含む。しかし、セキュアオペレーティングシステム１０４２の構成は、このような構成に限定されない。これらのすべてがセキュアオペレーティングシステム１０４２に含まれなくてもよい。
【０３１７】
例えば、これらは、後でセキュアオペレーティングシステム１０４２へロードすることが可能なローダブルモジュールでもよいし、デバイスドライバでもよい。また、これらは、図１８に示すようにセキュアオペレーティングシステム１０４２から独立したファームウェアであってもよい。
【０３１８】
また、これらは、セキュアオペレーティングシステム１０４２に含まれず、ブートローダ１０４１に含まれてもよいし、セキュアオペレーティングシステム１０４２およびブートローダ１０４１の両方に含まれてもよい。秘匿データロード部１０４４と、キャッシュロック部１０４５と、アプリロード部１０４６とは、いずれの構成においても、ＣＰＵ１００１がセキュアモードかつ特権モードで動作している時に、動作可能である。
【０３１９】
（５）例えば、上述の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボードおよびマウス等から構成されるコンピュータシステムであってもよい。
【０３２０】
具体的には、ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。そして、マイクロプロセッサが、コンピュータプログラムに従って動作することにより、各装置は、その機能を果たす。ここでコンピュータプログラムは、所定の機能を達成するために、それぞれがコンピュータに対する指令を示す複数の命令コードの組み合わせで構成されている。
【０３２１】
（６）また、例えば、上述の各装置を構成する複数の構成要素の一部または全部は、１個のシステムＬＳＩで構成されてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭおよびＲＡＭ等を含んで構成されるコンピュータシステムである。ＲＡＭには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を果たす。
【０３２２】
また、上述の各装置を構成する複数の構成要素は、それぞれ別々に１チップ化されてもよいし、一部または全部を含むように１チップ化されてもよい。
【０３２３】
また、ここでは、システムＬＳＩが示されているが、システムＬＳＩは、集積度の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０３２４】
また、集積回路化の手法はＬＳＩに限られず、集積回路化は専用回路または汎用プロセッサで実現されてもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、または、ＬＳＩ内部の回路セルの接続および設定を再構成可能なリコンフィギュラブル・プロセッサが用いられてもよい。
【０３２５】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックが集積化されてもよい。バイオ技術の適用等が可能性としてありえる。
【０３２６】
（７）また、例えば、上述の各装置を構成する複数の構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールで構成されてもよい。ＩＣカードまたはモジュールは、マイクロプロセッサ、ＲＯＭおよびＲＡＭ等で構成されるコンピュータシステムである。
【０３２７】
ＩＣカードまたはモジュールは、上述の超多機能ＬＳＩを含んでもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、ＩＣカードまたはモジュールは、その機能を果たす。このＩＣカードまたはこのモジュールは、耐タンパー性を有してもよい。
【０３２８】
（８）本開示に係る概念は、複数の実施の形態および複数の変形例で示された方法として実現されてもよい。また、本開示に係る概念は、それらの方法をコンピュータにより実現するコンピュータプログラムとして実現されてもよいし、コンピュータプログラムを構成するデジタル信号として実現されてもよい。
【０３２９】
また、本開示に係る概念は、コンピュータプログラムまたはデジタル信号が記録された非一時的なコンピュータ読み取り可能な記録媒体として実現されてもよい。この記録媒体は、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、または、半導体メモリ等でもよい。また、本開示に係る概念は、この記録媒体に記録されているデジタル信号として実現されてもよい。
【０３３０】
また、コンピュータプログラムまたはデジタル信号は、電気通信回線、無線通信回線、有線通信回線、インターネットを代表とする通信ネットワーク、または、データ放送等を経由して伝送されてもよい。
【０３３１】
また、本開示に係る概念は、マイクロプロセッサおよびメモリを備えたコンピュータシステムとして実現されてもよい。そして、メモリは、コンピュータプログラムを記憶していてもよいし、マイクロプロセッサは、コンピュータプログラムに従って動作してもよい。
【０３３２】
また、コンピュータプログラムまたはデジタル信号が記録媒体に記録されて移送されてもよいし、コンピュータプログラムまたはデジタル信号がネットワーク等を経由して移送されてもよい。そして、本開示に係る概念が、独立した他のコンピュータシステムにより実施されてもよい。
【０３３３】
（９）上述の複数の実施の形態、および、上述の複数の変形例は、組み合わされてもよい。ある構成要素が実行する処理を別の構成要素が実行してもよい。また、処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
【０３３４】
（補足）
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサ等のプログラム実行部が、ハードディスクまたは半導体メモリ等の記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の情報処理装置等を実現するソフトウェアは、次のようなプログラムである。
【０３３５】
すなわち、このプログラムは、コンピュータに、保護対象データを処理する情報処理方法であって、第１記憶部における記憶データを第２記憶部にキャッシュし、前記第２記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第１記憶部に書き戻されないように、前記第２記憶部における前記キャッシュ領域をロックし、前記第２記憶部における前記キャッシュ領域がロックされた後に、前記第２記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む情報処理方法を実行させる。
【０３３６】
以上、本発明の一つまたは複数の態様に係る情報処理装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨に逸脱しない限り、当業者が思いつく各種変形を実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の一つまたは複数の態様の範囲内に含まれてもよい。
【産業上の利用可能性】
【０３３７】
本発明の一態様に係る情報処理装置は、秘匿データを扱う情報処理装置として有用であり、例えば、著作権が保護されるコンテンツを再生するためのソフトウェアを実行する携帯電話機またはパーソナルコンピュータ等の情報処理装置に適用できる。
【符号の説明】
【０３３８】
１００  コンテンツ配信システム
１１０  コンテンツ表示装置
１２０  コンテンツ記録装置
１２１  アンテナ
３００、４００  情報処理装置
３０１、３０２、４０１、４０２  記憶部
３０３、４０３、１０１２  キャッシュ制御部（キャッシュコントローラ）
４０４  プロセッサ
４０５  集積回路
４０６  アクセス制御部
４１１、４１２、１０１１  記憶領域
１０００  システムＬＳＩ
１００１  ＣＰＵ
１００２  ＩＰＬ
１００３  メモリ制御部（メモリコントローラ）
１００４  キャッシュ
１００５  ＯＣＭ
１００６  鍵保持部
１０１０  秘匿データ
１０２０  メモリ
１０３０  ノーマル領域
１０３１  汎用オペレーティングシステム（汎用ＯＳ）
１０３２  プレーヤアプリ
１０３３  コンテンツ受信アプリ
１０３４  共有データ
１０４０  セキュア領域
１０４１  ブートローダ
１０４２  セキュアオペレーティングシステム（セキュアＯＳ）
１０４３  コンテンツ再生アプリ
１０４４  秘匿データロード部
１０４５  キャッシュロック部
１０４６  アプリロード部
１０５０  不揮発性記憶装置
１０５１  暗号化秘匿データ
１０５２  暗号化ブートローダ
１０５３  暗号化セキュアオペレーティングシステム
１０５４  暗号化コンテンツ再生アプリ
１０６１  ヘッダ情報
１０６２  秘匿データ本体
１０６３  検証値
１１００  通常のソフトウェア実行環境（ノーマル環境）
１２００  安全なソフトウェア実行環境（セキュア環境）
３０００  パッケージ生成部
３１００  コンパイラ
３１０１  リンカ
３１０２  パッケージ生成ツール
３１１０  ソースコード（プログラムソースコード）
３１１１  セキュアアプリ
３１１２  秘密鍵
３１１３、３２０５  公開鍵証明書
３１１４、３２０３  設定ファイル
３２０１  アプリヘッダ情報
３２０２  アプリ本体
３２０４  アプリ署名リスト
３２０６  署名
３２１０  ヘッダ部
３２１１  ．ｔｅｘｔセクション
３２１２  ．ｈｃｔｅｘｔセクション
３２１３  ．ｒｏｄａｔａセクション
３２１４  ．ｄａｔａセクション
３２１５  ．ｂｓｓセクション
３２１６  ．ｈｃｄａｔａセクション
【図１】
2012160760.tif 000003
【図２】
2012160760.tif 000004
【図３】
2012160760.tif 000005
【図４】
2012160760.tif 000006
【図５】
2012160760.tif 000007
【図６】
2012160760.tif 000008
【図７】
2012160760.tif 000009
【図８】
2012160760.tif 000010
【図９】
2012160760.tif 000011
【図１０】
2012160760.tif 000012
【図１１】
2012160760.tif 000013
【図１２】
2012160760.tif 000014
【図１３】
2012160760.tif 000015
【図１４Ａ】
2012160760.tif 000016
【図１４Ｂ】
2012160760.tif 000017
【図１５Ａ】
2012160760.tif 000018
【図１５Ｂ】
2012160760.tif 000019
【図１６】
2012160760.tif 000020
【図１７】
2012160760.tif 000021
【図１８】
2012160760.tif 000022
【国際調査報告】
2012160760.tif 000023
2012160760.tif 000024