JP5879527B2 - 情報処理装置および情報処理方法 - Google Patents

情報処理装置および情報処理方法 Download PDF

Info

Publication number
JP5879527B2
JP5879527B2 JP2012537259A JP2012537259A JP5879527B2 JP 5879527 B2 JP5879527 B2 JP 5879527B2 JP 2012537259 A JP2012537259 A JP 2012537259A JP 2012537259 A JP2012537259 A JP 2012537259A JP 5879527 B2 JP5879527 B2 JP 5879527B2
Authority
JP
Japan
Prior art keywords
data
cache
storage unit
area
secure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012537259A
Other languages
English (en)
Other versions
JPWO2012160760A1 (ja
Inventor
前田 学
学 前田
廣田 照人
照人 廣田
松島 秀樹
秀樹 松島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2012537259A priority Critical patent/JP5879527B2/ja
Publication of JPWO2012160760A1 publication Critical patent/JPWO2012160760A1/ja
Application granted granted Critical
Publication of JP5879527B2 publication Critical patent/JP5879527B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Description

本発明は、保護対象データを処理する情報処理装置に関する。
従来、保護対象データを処理する様々な情報処理装置がある。例えば、特許文献1および非特許文献1には、このような情報処理装置に関する技術が示されている。
特開2004−288155号公報
ARM Security Technology(http://infocenter.arm.com/help/topic/com.arm.doc.prd29−genc−009492c/PRD29−GENC−009492C_trustzone_security_whitepaper.pdf)
しかしながら、従来の情報処理装置において、保護対象データの保護が十分ではない場合がある。
そこで、本発明は、保護対象データを適切に保護することができる情報処理装置を提供することを目的とする。
上記目的を達成するために、本発明の一態様に係る情報処理装置は、保護対象データを処理する情報処理装置であって、第1記憶部と、第2記憶部と、前記第1記憶部における記憶データを前記第2記憶部にキャッシュするキャッシュ制御部とを備え、前記キャッシュ制御部は、前記第2記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む。
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたは記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意の組み合わせで実現されてもよい。
本発明の一態様に係る情報処理装置は、保護対象データを処理する際に、保護対象データを適切に保護することができる。
図1は、実施の形態1に係るコンテンツ配信システムの全体構成図である。 図2は、実施の形態1に係るコンテンツ表示装置のハードウェア構成図である。 図3は、実施の形態1に係るキャッシュの構成図である。 図4は、実施の形態1に係るコンテンツ表示装置のソフトウェア構成図である。 図5は、実施の形態1に係る暗号化秘匿データの構成図である。 図6は、実施の形態1に係るパッケージ生成部の構成図である。 図7は、実施の形態1に係るセキュアアプリケーションの構成図である。 図8は、実施の形態1に係るセキュアブート処理のシーケンス図である。 図9は、実施の形態1に係る秘匿データのロード処理のシーケンス図である。 図10は、実施の形態1に係る秘匿データのアンロード処理のシーケンス図である。 図11は、実施の形態2に係るセキュアオペレーティングシステムの構成図である。 図12は、実施の形態2に係るアプリケーション本体の構成図である。 図13は、実施の形態2に係るセキュアアプリケーションのロード処理のフローチャートである。 図14Aは、実施の形態3に係るキャッシュのロック処理のシーケンス図である。 図14Bは、実施の形態3に係るキャッシュのアンロック処理のシーケンス図である。 図15Aは、実施の形態4に係る情報処理装置のハードウェア構成図である。 図15Bは、実施の形態4に係る情報処理装置の動作を示すフローチャートである。 図16は、実施の形態5に係る情報処理装置のハードウェア構成図である。 図17は、その他の変形例に係るコンテンツ表示装置のハードウェア構成図である。 図18は、その他の変形例に係る安全なソフトウェア実行環境の構成図である。
(本発明の基礎となった知見)
著作権を管理するためのプログラム等に、不正な解析等の不正行為がなされることは望ましくない。そのため、このようなプログラム(以下、「保護対象プログラム」という)を保護する技術が広く用いられている。保護が不十分であると、プログラムの権利者に限らず様々な方面で損害が発生し得るからである。
例えば、暗号化されたデジタルコンテンツを復号して再生するためのプログラムを不正者が不正に解析して改ざんすることができるとすれば、デジタルコンテンツが不正に利用されるおそれが出てくる。
具体的には、不正者が、暗号化されたデジタルコンテンツを復号するためのプログラムを不正に解析し、デジタルコンテンツの復号に用いられる復号鍵を取得することで、デジタルコンテンツを不正に再生するかもしれない。また、デジタルコンテンツの複製回数または再生回数等が制限されている場合でも、不正者が、デジタルコンテンツの複製回数または再生回数等をチェックするためのプログラムを改ざんすることで、その制限を無効化するかもしれない。
非特許文献1には、不正者による不正な解析からプログラム等のデータを保護する技術が開示されている。非特許文献1に開示されている技術では、外部からの不正アクセスを防止する機構を有するセキュアドメインが構築されている。そして、LSI(Large Scale Integration:大規模集積回路)は、セキュアドメインにおいて処理を行うセキュアモードと、セキュアドメインを用いないで処理を行うノーマルモードとを有し、ノーマルモードとセキュアモードとを切り換えて動作する。
この技術は、セキュアモードで保護対象プログラムを動作させることで、保護対象プログラムを不正な解析等から保護する。これにより、復号処理に使用する復号鍵が不正な取得から保護され、再生回数をチェックするためのプログラムが不正な改ざんから保護される。
より具体的には、不正アクセスを防止する機構として、LSI内部において、プロセッサと周辺回路とを接続しているバスにNS−bit(Non Secure bit)と呼ばれる信号が付加される。このNS−bitは、プロセッサコアのモードがノーマルモードの時、Highに設定され、プロセッサコアのモードがセキュアモードの時、Lowに設定される。
そして、このバスに接続しているメモリ制御部(メモリコントローラ)、キャッシュおよびDMA制御部(DMAコントローラ)等の周辺回路が、このNS−bitに応じて、アクセス制御を行う。例えば、メモリ制御部は、メモリの一定領域ごと(例えば、4KBサイズごと)に、NS−bitを設定する。これにより、プロセッサコアがメモリへアクセスする時、メモリ制御部は、バスのNS−bitの値とメモリのNS−bitの値とを比較して、アクセス制御を行う。
具体的には、プロセッサコアのモードがノーマルモード(バスのNS−bitがHigh)であり、かつ、セキュアモード用のメモリ領域(メモリのNS−bitがLow)へプロセッサコアがアクセスしようとする場合、メモリ制御部はそのアクセスを禁止する。そして、メモリ制御部はそれ以外のアクセスを許可する。
情報処理装置は、このような不正アクセス防止機構を利用することで、ノーマルモードで動作するプログラムが、セキュアなメモリ領域、および、セキュアモードに限定して利用される機能等へアクセスすることを禁止できる。つまり、情報処理装置は、復号処理に使用する復号鍵をセキュアモード用のメモリ領域へ記憶し、復号処理をセキュアモードで実行し、再生回数をチェックする処理をセキュアモードで実行する。これにより、情報処理装置は、不正者による不正な解析および改ざんを防止することができる。
しかしながら、非特許文献1の構成では、プロセッサコアおよび周辺回路の両方がNS−bitを正しく処理することで、プログラムに対してアクセス制御が実現され、攻撃用のプログラムを用いた解析および改ざんが防止されているに過ぎない。そのため、例えばLSIにおいて実行されるプログラムがLSIの外部のメモリ(SDRAM等)を利用する場合、非特許文献1の構成では、LSIとメモリとを接続している信号線に対する攻撃を防止できないという課題が有る。
具体的には、不正者は、オシロスコープまたはロジックアナライザ等を用いて、信号線上に流れているデータをキャプチャ(プローブ)することで、セキュアなメモリ領域へ書き込まれるデータを直接取得するかもしれない。そして、不正者は、取得したデータを解析し、デジタルコンテンツを保護している鍵等を取得することで、デジタルコンテンツを不正にコピーするかもしれない。
情報処理装置は、このような攻撃から、すなわち、ロジックアナライザ等のハードウェアを用いて信号線をプローブすること等によって発生し得るデータ流出から、保護対象データを適切に保護することが望まれる。
そこで、本発明の一態様に係る情報処理装置は、保護対象データを処理する情報処理装置であって、第1記憶部と、第2記憶部と、前記第1記憶部における記憶データを前記第2記憶部にキャッシュするキャッシュ制御部とを備え、前記キャッシュ制御部は、前記第2記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む。
これにより、保護対象データが、SDRAM等のメモリ(第1記憶部)に書き込まれずに、メモリにおけるデータをキャッシュするためのキャッシュ(第2記憶部)に書き込まれる。外部の装置がキャッシュに書き込まれるデータにアクセスすることは困難である。また、保護対象データは、ロックされたキャッシュ領域に書き込まれるため、メモリに書き戻されない。したがって、保護対象データは、適切に保護される。
例えば、前記キャッシュ制御部は、プロセッサから出力された前記保護対象データが外部の装置によって取得されないように物理的に保護されている回路を通じて、前記第2記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込み、前記第2記憶部は、前記キャッシュ領域における前記保護対象データが外部の装置によって取得されないように、物理的に保護されていてもよい。
これにより、外部の装置が保護対象データを取得することは物理的に困難になる。したがって、保護対象データが、適切に保護される。
また、例えば、前記キャッシュ制御部は、前記保護対象データが処理される際に、前記保護対象データに対して、前記第1記憶部におけるデータ領域を割り当て、割り当てられた前記データ領域における前記記憶データを前記第2記憶部にキャッシュし、前記第2記憶部にキャッシュされた前記記憶データの前記キャッシュ領域から得られる前記キャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込んでもよい。
これにより、保護対象データが処理される際に、保護対象データのためのデータ領域が、メモリにおいて割り当てられる。したがって、メモリの領域とキャッシュの領域との適切な対応関係が維持される。
また、例えば、前記キャッシュ制御部は、前記保護対象データが処理された後に、前記第2記憶部における前記キャッシュ領域をクリアし、クリアされた前記キャッシュ領域から得られる前記キャッシュデータが前記第1記憶部に書き戻されるように、前記キャッシュ領域のロックを解除してもよい。
これにより、保護対象データが、キャッシュからメモリに書き戻される前に、消去される。したがって、保護対象データが、適切に保護される。
また、例えば、前記情報処理装置は、さらに、前記保護対象データを生成し、生成された前記保護対象データを出力するプロセッサを備え、前記キャッシュ制御部は、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込んでもよい。
これにより、プロセッサによって生成された保護対象データが、キャッシュに書き込まれる。したがって、プロセッサによって生成された保護対象データが、適切に保護される。
また、例えば、前記情報処理装置は、さらに、集積回路を備え、前記第2記憶部、前記キャッシュ制御部および前記プロセッサは、前記集積回路に含まれてもよい。
これにより、キャッシュおよびプロセッサが1つの集積回路を構成する。集積回路内のデータに外部の装置がアクセスすることは困難である。したがって、保護対象データが、適切に保護される。
また、例えば、前記プロセッサは、暗号化データを復号することによって、前記保護対象データを生成し、生成された前記保護対象データを出力してもよい。
これにより、暗号化データの復号によって得られる保護対象データが、適切に保護される。
また、例えば、前記キャッシュ制御部は、プログラムによって前記第1記憶部への書き込みが予定されている前記保護対象データを前記第2記憶部における前記キャッシュ領域に書き込んでもよい。
これにより、プログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、適切に保護される。
また、例えば、前記キャッシュ制御部は、前記第2記憶部における前記キャッシュ領域に、実行可能なプログラムを前記保護対象データとして書き込んでもよい。
これにより、保護対象プログラムが、改ざんから保護される。したがって、保護対象プログラムが、適切に実行される。
また、例えば、前記プロセッサは、セキュアモードでセキュアプログラムを実行し、ノーマルモードでノーマルプログラムを実行し、前記第1記憶部は、前記ノーマルプログラムを記憶するための第1記憶領域と、前記セキュアプログラムを記憶するための領域であり、前記ノーマルプログラムからのアクセスが禁止される領域である第2記憶領域とを有してもよい。
これにより、プログラムが適切なセキュリティレベルで実行され、プログラムに対応するセキュリティレベルに基づいてアクセス制御が実行される。
また、例えば、前記キャッシュ制御部は、前記セキュアプログラムによって前記第2記憶領域への書き込みが予定されている前記保護対象データを前記第2記憶部における前記キャッシュ領域に書き込んでもよい。
これにより、セキュアプログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、より高いレベルで保護される。
また、例えば、前記情報処理装置は、さらに、前記ノーマルプログラムから前記第2記憶領域へのアクセスを禁止するアクセス制御部を備えてもよい。
これにより、メモリにおける複数の記憶領域に対するアクセスが適切に制御される。したがって、不正プログラムの実行が適切に制限される。
さらに、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたは記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、本発明の一態様に係る情報処理装置について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置および接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する趣旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
本実施の形態に係る情報処理装置は、アンテナから受信した放送波を記録するコンテンツ記録装置からコンテンツを受信し、コンテンツを表示するコンテンツ表示装置である。
<コンテンツ配信システムの構成>
図1は、本実施の形態に係るコンテンツ配信システムの構成図である。図1のように、コンテンツ配信システム100は、コンテンツ表示装置110と、コンテンツ記録装置120と、アンテナ121とを含む。
コンテンツ表示装置110は、本実施の形態に係る情報処理装置である。コンテンツ表示装置110は、コンテンツ記録装置120にネットワークを介して接続している。そして、コンテンツ表示装置110は、コンテンツ記録装置120が記録しているコンテンツを受信し、受信したコンテンツを表示する。
コンテンツ記録装置120は、アンテナ121に接続している。そして、コンテンツ記録装置120は、アンテナ121で受信したコンテンツを記録する。また、コンテンツ記録装置120は、コンテンツ表示装置110からの要求に応じて、記録したコンテンツをコンテンツ表示装置110へ送信する。コンテンツ記録装置120は、可搬性を有する記録媒体からコンテンツを読み出して、読み出されたコンテンツをコンテンツ表示装置110へ送信してもよい。
コンテンツ表示装置110およびコンテンツ記録装置120は、共通の暗復号鍵を持つ。そして、コンテンツ記録装置120は、暗復号鍵を使用してコンテンツを暗号化して、暗号化されたコンテンツをコンテンツ表示装置110へ送信する。これにより、コンテンツ表示装置110およびコンテンツ記録装置120を接続しているネットワークに流れるデータをキャプチャすることでコンテンツを不正に取得することが、防止される。
コンテンツ表示装置110およびコンテンツ記録装置120が共通で持つ暗復号鍵は、適切に保護されるべきである。暗復号鍵は、デバッガまたは不正アプリケーション(以下、アプリケーションをアプリとも呼ぶ)を使用したソフトウェアによる攻撃からはもちろんのこと、バスプローブ等のハードウェアによる攻撃からも保護されていなければ、漏洩するおそれがある。
そして、この暗復号鍵と、ネットワークに流れる暗号化されたコンテンツとが入手された場合、コンテンツが不正に復号されるおそれがある。そのため、暗復号鍵は、コンテンツ表示装置110の内部においても、秘匿データとして、適切に保護されることが望ましい。
<コンテンツ表示装置110のハードウェア構成>
図2は、図1に示されたコンテンツ表示装置110のハードウェア構成図である。図2のように、コンテンツ表示装置110は、システムLSI1000と、メモリ1020と、不揮発性記憶装置1050とを含む。
システムLSI1000は、CPU(Central Processing Unit)1001と、IPL(Initial Program Loader)1002と、メモリ制御部(メモリコントローラ)1003と、キャッシュ1004と、鍵保持部1006とを含む。
CPU1001は、メモリ1020に格納された汎用オペレーティングシステム(汎用OS)1031またはプレーヤアプリ1032等に含まれる命令コードを実行する。これにより、CPU1001は、コンテンツ表示装置110全体の動作を制御する。また、CPU1001は、セキュアモードおよびノーマルモードの2つのモードを持つ。
ブートローダ1041、セキュアオペレーティングシステム(セキュアOS)1042およびコンテンツ再生アプリ1043は、セキュアモードで動作する。セキュアモードで動作しているプログラムは、セキュアモードのプログラムが使用しているメモリ領域(セキュア領域1040)にも、ノーマルモードのプログラムが使用しているメモリ領域(ノーマル領域1030)にもアクセスできる。さらに、セキュアモードで動作しているプログラムは、セキュアモードで利用可能な周辺回路(暗号エンジン等)を利用することもできる。
一方、汎用オペレーティングシステム1031、プレーヤアプリ1032およびコンテンツ受信アプリ1033は、ノーマルモードで動作する。ノーマルモードで動作しているプログラムは、ノーマルモードのプログラムが使用しているノーマル領域1030へアクセスできるが、セキュアモードのプログラムが使用しているセキュア領域1040へアクセスできない。
また、セキュアモードおよびノーマルモードのそれぞれは、さらに、特権モードおよび非特権モードの2つのモードを持つ。ブートローダ1041、セキュアオペレーティングシステム1042および汎用オペレーティングシステム1031は特権モードで動作する。これらは、メモリ1020、ネットワークI/Fおよび入出力I/F等の各種リソースに、自由にアクセスできる。
一方、コンテンツ再生アプリ1043は、非特権モードで動作し、セキュアオペレーティングシステム1042が設定した範囲内のリソースにアクセス可能である。また、プレーヤアプリ1032およびコンテンツ受信アプリ1033は、非特権モードで動作し、汎用オペレーティングシステム1031が設定した範囲内のリソースにアクセス可能である。
CPU1001は、メモリ制御部1003等の周辺回路へアクセスする時に、NS−bit(Non Secure bit)の信号を出力する。CPU1001がセキュアモードで動作中である場合、CPU1001はNS−bitをLowに設定する。一方、CPU1001がノーマルモードで動作中である場合、CPU1001はNS−bitをHighに設定する。メモリ制御部1003等のようにバスに接続している周辺回路は、このNS−bitの状態に応じて、アクセス制御を行う。
IPL1002は、コンテンツ表示装置110の電源が投入された後、最初に起動するプログラムである。IPL1002は、バス、メモリ制御部1003、メモリ1020および不揮発性記憶装置1050等のハードウェアの初期設定を行う。その際、IPL1002は、メモリ1020にブートローダ1041を展開し、実行する。IPL1002は、システムLSI1000におけるマスクROM等に、改ざんされない状態で、格納されている。
メモリ制御部1003は、メモリコントローラとも呼ばれ、バスにつながった他の回路からメモリ1020へのアクセスを制御する。メモリ制御部1003は、メモリ1020の内部をノーマル領域1030およびセキュア領域1040の2つの領域に分けて管理する。
そして、CPU1001がノーマルモードで動作中(NS−bitがHigh)であり、かつ、CPU1001がセキュア領域1040へアクセスしようとした場合、メモリ制御部1003は、そのアクセスを禁止する。そして、CPU1001がノーマルモードで動作中(NS−bitがHigh)であり、かつ、CPU1001がノーマル領域1030へアクセスしようとした場合、メモリ制御部1003は、そのアクセスを許可する。
また、CPU1001がセキュアモードで動作中(NS−bitがLow)であり、かつ、CPU1001がノーマル領域1030またはセキュア領域1040へアクセスしようとした場合、メモリ制御部1003は、そのアクセスを許可する。
CPU1001がメモリ1020へアクセスしようとした時に、キャッシュ1004は、CPU1001がアクセスしようとしたメモリ1020におけるデータを含む一定のサイズのデータを、キャッシュ1004の内部へ読み込む。その後、キャッシュ1004は、CPU1001がデータを読み込もうとしていた場合には、データをCPU1001へ返し、CPU1001がデータを書き込もうとしていた場合には、キャッシュ1004の内部へ読み込まれたデータを書き換える。
この時、CPU1001がアクセスしようとしたメモリ1020におけるデータが、既にキャッシュ1004の内部へ読み込まれていた場合、キャッシュ1004は、メモリ1020からデータを読み込まずに、キャッシュ1004の内部のデータを使って処理を行う。これにより、CPU1001が、メモリ1020における連続したデータに対してアクセスを行う時、アクセス速度が向上する。
キャッシュ1004は、キャッシュ1004の内部においてデータを記憶するための領域がいっぱいになった時に、既に記憶されているデータを、新しくキャッシュ1004の内部に読み込まれるデータで上書きする。
CPU1001がデータを書き込もうとしていた場合、キャッシュ1004は、キャッシュ1004の内部のデータを更新すると共に、適切なタイミングでメモリ1020にその更新を反映する。更新を反映する方法として、ライトスルー方式(Write Through Algorithm)およびライトバック方式(Write Back Algorithm)の2つの方式がある。
ライトスルー方式では、CPU1001がデータを書き込もうとした時に、キャッシュ1004の内部のデータが更新されると同時に、メモリ1020にその更新が反映される。
ライトバック方式では、CPU1001がデータを書き込もうとした時に、キャッシュ1004の内部のデータが更新される。そして、その更新されたデータが新たにキャッシュ1004の内部に読み込まれるデータで上書きされる直前に、メモリ1020にその更新が反映される。
本実施の形態では、メモリ1020へ秘匿データが書き込まれることを防止するため、キャッシュ1004は、ライトバック方式で更新を反映するように設定される。
キャッシュ1004は、CPU1001からデータのアクセス要求があった時に、そのデータがキャッシュ1004の内部に存在しているかを瞬時に検索することが望まれる。そのため、キャッシュ1004は、キャッシュ1004の内部にデータを記憶する際、特殊なデータ構造でデータを記憶する。
例えば、キャッシュ1004は、内部に記憶されるデータを「ライン」と呼ばれるまとまった単位で管理する。具体的には、キャッシュ1004は、キャッシュ1004の内部に格納されるデータについてのメモリ1020におけるアドレスの下位数ビット(以下、セットインデックス:Set Index)に基づいて、格納位置を限定する。
各ラインには、アドレスからセットインデックスを除いた部分(タグ)と、データとが格納される。キャッシュ1004は、格納位置およびタグの情報に基づいて、そのラインに格納されているデータがメモリ1020においてどこに記憶されていたデータであるかを識別する。
キャッシュ1004は、同一のセットインデックスを有する格納位置に対して、複数のタグとデータを格納することが可能である。これらの格納場所のそれぞれは、ウェイ(Way)と呼ばれる。4つのタグとデータを格納することができるキャッシュは、4ウェイキャッシュと呼ばれる。
キャッシュ1004は、メモリ1020におけるデータをキャッシュ1004の内部へ読み込む際に、そのデータがノーマル領域1030およびセキュア領域1040のどちらの領域に記録されていたかを識別するための情報(NS−bit)も、データと一緒に記録する。
キャッシュ1004は、ノーマル領域1030からデータを読み込んだ場合、そのデータと一緒にHighのNS−bitを記録する。一方、キャッシュ1004は、セキュア領域1040からデータを読み込んだ場合、そのデータと一緒にLowのNS−bitを記録する。CPU1001が、キャッシュ1004にアクセスしようとした時に、キャッシュ1004は、メモリ制御部1003と同様に、CPU1001のモードと、データと一緒に記録されているNS−bitの値を参照し、アクセス制御を行う。
具体的には、CPU1001がノーマルモードで動作中である場合、キャッシュ1004は、NS−bitがLowに設定されているキャッシュデータ(セキュア領域1040から読み込んだデータ)へのアクセスを禁止する。そして、それ以外の場合、キャッシュ1004は、アクセスを許可する。
キャッシュ1004は、データと、データのアドレスと、Dirtyフラグと、Validフラグとを有する。データは、メモリ1020から読み込まれる。アドレスは、メモリ1020におけるデータのアドレスである。Dirtyフラグは、キャッシュ1004のデータが書き換えられた時に設定されるフラグである。Validフラグは、キャッシュ1004に有効なデータが格納されていることを示すフラグである。
鍵保持部1006は、暗復号鍵を保持している。この暗復号鍵は、暗号化秘匿データ1051、暗号化ブートローダ1052、暗号化セキュアオペレーティングシステム1053、および、暗号化コンテンツ再生アプリ1054の復号に用いられる。また、この暗復号鍵は、復号された秘匿データ、ブートローダ1041、セキュアオペレーティングシステム1042およびコンテンツ再生アプリ1043の暗号化に用いられる。
さらに、その他のデータの暗復号に、この暗復号鍵が用いられてもよい。また、データおよびプログラム等の暗復号に用いられる別の鍵の暗復号に、この暗復号鍵が用いられてもよい。
また、鍵保持部1006は、複数のプログラムに対応する複数の暗復号鍵を保持してもよい。また、鍵保持部1006は、公開鍵暗号方式に基づく互いに異なる暗号鍵および復号鍵を保持してもよい。あるいは、鍵保持部1006は、共通鍵暗号方式に基づく共通の暗復号鍵を保持してもよい。
メモリ1020は、揮発性のRAM(Random Access Memory)であり、ノーマル領域1030とセキュア領域1040とを含む。
ノーマル領域1030には、CPU1001がノーマルモードで動作中に実行するプログラムが格納される。具体的には、汎用オペレーティングシステム1031、プレーヤアプリ1032およびコンテンツ受信アプリ1033が格納される。また、ノーマル領域1030には、ノーマルモードで動作するプログラムと、セキュアモードで動作するプログラムとの両方からアクセスされる共有データ1034が格納される。
セキュア領域1040には、CPU1001がセキュアモードで動作中に実行するプログラムが格納される。具体的には、ブートローダ1041、セキュアオペレーティングシステム1042およびコンテンツ再生アプリ1043が格納される。
CPU1001がセキュアモードで動作中である場合もノーマルモードで動作中である場合も、CPU1001はノーマル領域1030にアクセスできる。CPU1001がセキュアモードで動作中である場合、CPU1001はセキュア領域1040にアクセスできる。しかし、CPU1001がノーマルモードで動作中である場合、CPU1001はセキュア領域1040にアクセスできない。このようなアクセス制御は、メモリ制御部1003によって実現される。
なお、アプリがユーザによってインストールされない環境では、デバッガまたは不正アプリがインストールされない。このような環境では、ノーマル領域1030とセキュア領域1040とが区別されていなくてもよい。そして、すべての処理がノーマルモードで行われてもよい。
不揮発性記憶装置1050は、フラッシュメモリ等の記憶素子であり、コンテンツ表示装置110に内蔵されている。そして、不揮発性記憶装置1050には、暗号化秘匿データ1051が格納される。暗号化秘匿データ1051の構造に関しては後述する。また、不揮発性記憶装置1050には、暗号化ブートローダ1052と、暗号化セキュアオペレーティングシステム1053と、暗号化コンテンツ再生アプリ1054と、メモリ1020に格納される他のセキュアアプリ(図示せず)とが格納される。
不揮発性記憶装置1050には、さらに、プレーヤアプリ1032、コンテンツ受信アプリ1033およびコンテンツ再生アプリ1043等のアプリが格納されてもよい。セキュア領域1040に格納されるプログラムは、暗号化ブートローダ1052、暗号化セキュアオペレーティングシステム1053および暗号化コンテンツ再生アプリ1054のように、不揮発性記憶装置1050に暗号化して格納される。暗号化されたプログラムの構造に関しては後述する。
コンテンツ表示装置110は、さらに、図2に示されていない入出力部等を備えている。しかし、これらは本技術の本質ではないので説明を省略する。また、システムLSI1000は、さらに、図2に示されていない周辺回路等を備えている。しかし、これらも本技術の本質ではないので説明を省略する。
<キャッシュ1004のハードウェア構成>
図3は、図2に示されたキャッシュ1004の構成図である。図3のように、キャッシュ1004は、記憶領域1011と、キャッシュ制御部(キャッシュコントローラ)1012とを含む。
記憶領域1011は、メモリ1020におけるデータをキャッシュするための領域である。すなわち、メモリ1020におけるデータが記憶領域1011にキャッシュされる。
キャッシュ制御部1012は、キャッシュコントローラとも呼ばれ、キャッシュ1004の動作を制御する。例えば、キャッシュ制御部1012は、メモリ1020におけるデータをキャッシュ1004における記憶領域1011にキャッシュする。
より具体的には、キャッシュ制御部1012は、CPU1001からのデータの要求を受けて、記憶領域1011にキャッシュされたデータをCPU1001へ送信する。要求されたデータが記憶領域1011にキャッシュされていない場合、キャッシュ制御部1012は、メモリ制御部1003等を介してメモリ1020におけるデータを記憶領域1011にキャッシュする。そして、キャッシュ制御部1012は、記憶領域1011にキャッシュされたデータをCPU1001へ送信する。
なお、図3の構成は、一例である。例えば、キャッシュ制御部1012は、キャッシュ1004から独立した構成要素でもよい。また、キャッシュ1004は、L2キャッシュ(Level 2 Cache)と呼ばれるキャッシュでもよいし、L1キャッシュ(Level 1 Cache)と呼ばれるキャッシュでもよいし、その他のキャッシュでもよい。
<コンテンツ表示装置110のソフトウェア構成>
図4は、図1に示されたコンテンツ表示装置110のソフトウェア構成図である。図4のように、コンテンツ表示装置110は、通常のソフトウェア実行環境(以下、「ノーマル環境(Normal World)」という)1100と、安全なソフトウェア実行環境(以下、「セキュア環境(Secure World)」という)1200とを含む。
コンテンツ表示装置110は、ノーマル環境1100とセキュア環境1200とを切り替えて、プログラムを実行する。なお、ノーマル環境1100とセキュア環境1200とを切り替える方法には、例えば特許文献1に記載の方法が用いられてもよい。
<ノーマル環境1100のソフトウェア構成>
ノーマル環境1100は、汎用オペレーティングシステム1031と、プレーヤアプリ1032と、コンテンツ受信アプリ1033と、共有データ1034とを含む。
汎用オペレーティングシステム1031は、ノーマル環境1100で動作するアプリ(プレーヤアプリ1032およびコンテンツ受信アプリ1033等)を管理する。また、汎用オペレーティングシステム1031は、ノーマル環境1100で動作するアプリがネットワーク等のハードウェアを利用する場合のアクセス管理およびリソース管理を行う。
プレーヤアプリ1032は、コンテンツの再生を制御するアプリであり、コンテンツの選択、再生または停止等を行うためのインターフェースをユーザに提供する。また、プレーヤアプリ1032は、ユーザがコンテンツの再生を依頼した時に、コンテンツ受信アプリ1033およびコンテンツ再生アプリ1043に指示を行う。そして、コンテンツ受信アプリ1033は、コンテンツ記録装置120からコンテンツを受信し、コンテンツ再生アプリ1043は、受信されたコンテンツの再生処理を行う。
コンテンツ受信アプリ1033は、プレーヤアプリ1032から依頼があった時に、依頼されたコンテンツを、ネットワークを介してコンテンツ記録装置120から受信する。
ノーマル環境1100は、さらに、図4に示されていないアプリを含んでいてもよい。
<セキュア環境1200のソフトウェア構成>
セキュア環境1200は、ブートローダ1041と、セキュアオペレーティングシステム1042と、コンテンツ再生アプリ1043とを含む。
ブートローダ1041は、コンテンツ表示装置110の起動時に、IPL1002によって起動される。そして、ブートローダ1041は、セキュア環境1200の初期化、セキュア領域1040の設定処理、および、セキュアオペレーティングシステム1042のメモリ1020へのロード処理等を行う。
セキュアオペレーティングシステム1042は、セキュア環境1200で動作するセキュアアプリ(コンテンツ再生アプリ1043等)を管理する。また、セキュアオペレーティングシステム1042は、セキュアアプリの起動時にセキュアアプリをセキュア領域1040へロードする。これにより、セキュアオペレーティングシステム1042は、ノーマル環境1100で動作するアプリからセキュアアプリを保護する。
さらに、セキュアオペレーティングシステム1042は、秘匿データロード部1044とキャッシュロック部1045とを含む。
例えば、セキュアアプリであるコンテンツ再生アプリ1043は、不揮発性記憶装置1050に記録されている暗号化秘匿データ1051を秘匿データ1010としてロードすることをセキュアオペレーティングシステム1042に依頼する。セキュアオペレーティングシステム1042は、秘匿データ1010をキャッシュ1004にロードするための領域をロックすることをキャッシュロック部1045に依頼する。
その後、セキュアオペレーティングシステム1042は、暗号化秘匿データ1051を秘匿データ1010としてロードすることを秘匿データロード部1044に依頼する。これにより、キャッシュ1004にロードされた秘匿データ1010が、メモリ1020へ書き出されないように制御される。
秘匿データロード部1044は、セキュアオペレーティングシステム1042からの依頼に応じて、不揮発性記憶装置1050へ記録されている暗号化秘匿データ1051の復号および検証を行う。そして、秘匿データロード部1044は、指定された領域へ秘匿データ1010をロードする。また、秘匿データロード部1044は、セキュアオペレーティングシステム1042からの依頼に応じて、秘匿データ1010の検証値(Verification Value)を算出し、秘匿データ1010を暗号化して、暗号化秘匿データ1051を生成する。
キャッシュロック部1045は、セキュアオペレーティングシステム1042からの依頼に応じて、メモリ1020において指定された領域のデータをキャッシュ1004に読み込む。そして、キャッシュロック部1045は、キャッシュ1004の内部のデータがメモリ1020へ書き出されないようにキャッシュ1004(キャッシュ1004の一部)をロックする。
ここで、キャッシュ1004をロックすることは、キャッシュ1004におけるデータがメモリ1020へ書き戻されないように制御することを意味する。例えば、キャッシュ1004をロックすることによって、使用頻度の高いデータがキャッシュ1004の内部に維持され、データ処理の性能が向上する。
典型的なキャッシュ1004の動作として、メモリ1020におけるデータがキャッシュ1004に読み込まれた状態でロックが行われる。そのため、本実施の形態におけるキャッシュロック部1045は、キャッシュ1004をロックする前に、メモリ1020におけるデータをキャッシュ1004に読み込む。この時にキャッシュ1004に読み込まれたデータは、使用されない。
また、キャッシュロック部1045は、セキュアオペレーティングシステム1042からの依頼に応じて、キャッシュ1004においてアンロックされる領域へ0値(0の値)を書き込む。その後、キャッシュロック部1045は、キャッシュ1004のアンロック処理を行う。
ここで、0値が書き込まれずにキャッシュ1004がそのままアンロックされてしまうと、キャッシュ1004に書き込まれた秘匿データがメモリ1020へ書き込まれてしまう。そのため、キャッシュロック部1045は、キャッシュ1004のアンロック処理を行う前に、アンロックする領域へ0値を書き込む。
キャッシュ1004をロックする方法として、例えば、キャッシュ1004の全体(全ウェイ)をロックする方法、全ウェイのうちいくつかのウェイをロックする方法、および、いくつかのラインをロックする方法などがある。
キャッシュ1004のタグの情報をCPU1001が読める場合、いくつかのウェイまたはラインをロックする方法等において、キャッシュロック部1045は、タグの情報を取得する。そして、キャッシュロック部1045は、セキュアオペレーティングシステム1042によって指定された領域に対応するウェイまたはライン等を特定し、特定されたウェイまたはライン等をロックする。
キャッシュ1004のタグの情報をCPU1001が読めない場合、いくつかのウェイまたはラインをロックする方法等では、次のように、ウェイまたはライン等がロックされる。
まず始めに、キャッシュロック部1045は、キャッシュ1004の内部のロックされていないウェイまたはライン等に格納されているデータをメモリ1020に反映する。そして、キャッシュロック部1045は、キャッシュ1004において、これらのデータを無効化する。これにより、セキュアオペレーティングシステム1042によって指定された領域のデータがキャッシュ1004に格納されていない状態にする。
次に、キャッシュロック部1045は、最終的にロックするウェイまたはライン等を残して、その他のウェイまたはライン等をロックする。その状態で、キャッシュロック部1045は、セキュアオペレーティングシステム1042によって指定された領域のデータの読み込み処理を行う。
そして、キャッシュロック部1045は、ロックしていたその他のウェイまたはライン等のロックを解除する。一方で、キャッシュロック部1045は、セキュアオペレーティングシステム1042によって指定された領域のデータが読み込まれたウェイまたはライン等をロックする。キャッシュロック部1045は、ロックしていたウェイまたはライン等のロックを解除する処理において、始めからロックされていたウェイまたはライン等のロックを解除しない。
これにより、セキュアオペレーティングシステム1042によって指定された領域に対応するウェイまたはライン等がロックされる。
秘匿データ1010のロード処理とアンロード処理の詳細については、シーケンス図を用いて後で説明する。
コンテンツ再生アプリ1043は、プレーヤアプリ1032からの依頼を受けて、コンテンツ受信アプリ1033がコンテンツ記録装置120から受信したコンテンツの再生処理を行う。しかし、コンテンツ受信アプリ1033がコンテンツ記録装置120から受信したコンテンツは暗号化されている。そこで、コンテンツ再生アプリ1043は、暗号化されているコンテンツを復号するため、復号鍵を含む秘匿データ1010のロードをセキュアオペレーティングシステム1042へ依頼する。
セキュア環境1200は、さらに、図4に示されていないセキュアアプリを含んでもよい。
<暗号化秘匿データ1051>
図5は、図2に示された暗号化秘匿データ1051の構成図である。図5のように、暗号化秘匿データ1051は、ヘッダ情報1061と、秘匿データ本体1062と、検証値1063とを含む。ヘッダ情報1061は、暗号化されていない状態で格納され、秘匿データ本体1062および検証値1063は、暗号化されている状態で格納される。
ヘッダ情報1061は、秘匿データ本体1062の開始位置およびサイズ、検証値1063の開始位置およびサイズ、暗号方式、並びに、識別子等を含む。暗号方式は、秘匿データ本体1062および検証値1063の暗号化に用いられた暗号方式である。また、識別子は、検証値1063の検証アルゴリズムを識別するための識別子である。
秘匿データ本体1062は、コンテンツ記録装置120から受信された暗号化コンテンツを復号するための鍵、および、復号アルゴリズムで使用されるパラメータの情報を含む。これらの情報は、バスプローブ等のハードウェアによる攻撃、および、不正アプリを使用したソフトウェアによる攻撃から保護されるべき情報である。そのため、秘匿データ本体1062は、不揮発性記憶装置1050において、暗号化された状態で記録される。
そして、秘匿データ本体1062は、コンテンツ再生アプリ1043等のセキュアアプリによって利用される時に、復号され、キャッシュ1004にロードされる。この前に、キャッシュ1004には、秘匿データ本体1062をロードするための領域に対応するメモリ領域のデータが読み込まれる。そして、秘匿データ本体1062がメモリ1020へ書き出されないように、キャッシュ1004はロックされる。その後、秘匿データ本体1062が、キャッシュ1004にロードされる。
検証値1063は、秘匿データ本体1062が改ざんされていないことを検証するための値である。具体的には、検証値1063は、暗号化前の秘匿データ本体1062をハッシュ関数に入力することにより得られるハッシュ値である。そして、検証値1063は、秘匿データ本体1062と一緒に暗号化される。
なお、秘匿データ1010は、暗号化コンテンツを復号するための鍵、および、復号アルゴリズムで使用されるパラメータの情報に限られない。秘匿データ1010は、他にも秘匿にしなければならないデータ(例えば、コンテンツ表示装置110および同種の装置がそれぞれ個別に持つデバイス鍵等)を含んでもよい。また、秘匿データ1010は、秘匿にしなければならないアルゴリズムのコード、または、秘匿にしなければならないデータを扱うためのコード等でもよい。
なお、1つの秘匿データ本体1062を含む暗号化秘匿データ1051が示されているが、暗号化秘匿データ1051は、このような構成に限定されない。暗号化秘匿データ1051は、複数の秘匿データ本体を含んでもよい。この時、複数の秘匿データ本体は一連のデータとして暗号化されてもよいし、個別のデータとして別々に暗号化されてもよい。また、複数の秘匿データ本体は、それぞれ異なる暗号化方式、および、それぞれ異なる暗号鍵を用いて暗号化されてもよい。
また、暗号化秘匿データ1051は、複数の秘匿データ本体に対応する複数の検証値を含んでもよいし、複数の検証値が1つにまとめられた検証値リストを含んでもよい。また、暗号化秘匿データ1051は、暗号化秘匿データ1051に含まれるすべての秘匿データ本体に対して、1つの検証値1063を含んでもよい。
また、上述において、暗号化秘匿データ1051は、検証値1063を含んでいるが、暗号化秘匿データ1051は、このような構成に限定されない。検証値1063は、暗号化秘匿データ1051とは別に独立していてもよいし、無くてもよい。また、上述において、検証値1063は、暗号化されているが、暗号化されていなくてもよい。また、検証値1063は、秘匿データ本体1062と一緒に暗号化されてもよいし、秘匿データ本体1062とは別に独立して暗号化されてもよい。
また、秘匿データ本体1062の暗号化には、DESまたはAESのような共通鍵暗号方式が利用されてもよいし、RSAまたはElGamal等の公開鍵暗号方式が利用されてもよいし、それらが組み合わされてもよい。
また、上述では、秘匿データ本体1062および検証値1063がまとめて暗号化されているが、暗号化の態様は、これに限定されない。秘匿データ本体1062と検証値1063とは別々に暗号化されてもよいし、検証値1063が暗号化されずに秘匿データ本体1062が暗号化されてもよい。
また、検証値1063は、秘匿データ本体1062の後ろではなく、秘匿データ本体1062の前にあってもよい。また、検証値1063は、ヘッダ情報1061に含まれてもよい。さらに、検証値1063は、暗号化秘匿データ1051に含まれず、暗号化秘匿データ1051とは別に、暗号化秘匿データ1051の複数の検証値がまとめられた検証値リストに格納されてもよい。
なお、ハッシュ関数として、MD4、MD5、SHA−1およびSHA−2等のアルゴリズムが利用可能である。また、検証値1063は、ハッシュ値ではなく、デジタル署名(Digital Signature)、メッセージ認証コード(MAC:Message Authentication Code)値、誤り検出符号値、または、誤り訂正符号値でもよい。
MAC値を計算するアルゴリズムとして、CBC−MACおよびHMAC等が利用可能である。誤り検出符号値を計算するアルゴリズムとして、巡回冗長検査(CRC:Cyclic Redundancy Check)およびチェックサム等が利用可能である。誤り訂正符号値を計算するアルゴリズムとして、リード/ソロモン符号およびターボ符号等が利用可能である。
暗号化秘匿データ1051は、コンテンツ表示装置110の工場製造時に不揮発性記憶装置1050に格納される。この時、秘匿データ本体1062の初期データが、生成され、機器ごとに個別の鍵で暗号化される。これにより、暗号化秘匿データ1051が生成される。暗号化に使用された鍵は、システムLSI1000における鍵保持部1006に格納される。
なお、暗号化秘匿データ1051は、ネットワーク等の通信路を介してコンテンツ表示装置110へ配信されてもよい。この時、暗号化秘匿データ1051は、機器ごとに個別の鍵で暗号化された暗号化秘匿データ1051が配信されてもよい。あるいは、すべての機器に共通の鍵で暗号化された暗号化秘匿データ1051が配信されてもよい。そして、コンテンツ表示装置110が、暗号化秘匿データ1051を受信した後に、さらに機器ごとに個別の鍵で暗号化秘匿データ1051を暗号化して、保存してもよい。
また、暗号化秘匿データ1051は、ネットワークではなく、可搬性を有する記録媒体を用いてコンテンツ表示装置110へ格納されてもよい。
<パッケージ生成部の構成>
図6は、本実施の形態に係るセキュアアプリを生成するためのパッケージ生成部の構成図である。図6のように、パッケージ生成部3000は、コンパイラ3100、リンカ3101およびパッケージ生成ツール3102を含む。パッケージ生成部3000は、秘密鍵3112、公開鍵証明書(Public Key Certificate)3113および設定ファイル3114を用いて、ソースコード(プログラムソースコード)3110からセキュアアプリ3111を生成する。
コンパイラ3100は、入力されたソースコード3110をコンパイルし、オブジェクトファイルを生成する。
リンカ3101は、コンパイラ3100が生成したオブジェクトファイルにライブラリをリンクする。そして、リンカ3101は、コンテンツ表示装置110が実行できるファイル(プログラムファイル)を生成する。
パッケージ生成ツール3102は、リンカ3101が生成したプログラムファイルから、設定ファイル3114、秘密鍵3112および公開鍵証明書3113を用いて、セキュアアプリ3111を生成する。
パッケージ生成部3000は、コンテンツ表示装置110とは異なるセキュアアプリ開発装置に含まれる。そして、セキュアアプリ開発装置のパッケージ生成部3000によって生成されたセキュアアプリ3111は、暗号化コンテンツ再生アプリ1054等として、コンテンツ表示装置110の不揮発性記憶装置1050に格納される。
<セキュアアプリ3111の構成>
図7は、本実施の形態に係るセキュアアプリ3111の構成図である。図7のように、セキュアアプリ3111は、アプリヘッダ情報3201と、アプリ本体3202と、設定ファイル3203と、アプリ署名リスト(Application Signature List)3204と、公開鍵証明書3205と、署名(Signature)3206とを含む。
図7では、セキュアアプリ3111の構造が示されているが、コンテンツ再生アプリ1043の構造に限らず、ブートローダ1041およびセキュアオペレーティングシステム1042の構造も図7に示す構造と同様であってもよい。
アプリヘッダ情報3201は、セキュアアプリ3111を識別するための識別子を含む。また、アプリヘッダ情報3201は、アプリ本体3202、設定ファイル3203、アプリ署名リスト3204および公開鍵証明書3205のそれぞれについて、開始アドレス、サイズおよびファイル数等を含む。また、アプリヘッダ情報3201は、アプリ本体3202、設定ファイル3203およびアプリ署名リスト3204を暗号化する時に使用された暗号方式に関する情報等を含む。
アプリ本体3202は、ソースコード3110から、コンパイラ3100とリンカ3101とを使用して生成されたプログラムファイルである。
設定ファイル3203は、パッケージ生成ツール3102に入力される設定ファイル3114と同じである。
アプリ署名リスト3204は、アプリ本体3202および設定ファイル3203の両方の署名が並んだリストである。パッケージ生成ツール3102は、セキュアアプリ3111の生成時に、入力されたアプリ本体3202および設定ファイル3203から、それぞれの署名を生成し、アプリ署名リスト3204を生成する。署名の生成には、秘密鍵3112が使用される。
公開鍵証明書3205は、パッケージ生成ツール3102に入力される公開鍵証明書3113と同じである。
署名3206は、アプリヘッダ情報3201、アプリ本体3202、設定ファイル3203、アプリ署名リスト3204および公開鍵証明書3205で構成される一連のデータの署名である。ここで、アプリ本体3202、設定ファイル3203およびアプリ署名リスト3204は暗号化されたままの状態で、署名3206が生成される。
なお、上述のセキュアアプリ3111は、アプリ本体3202、設定ファイル3203、アプリ署名リスト3204および公開鍵証明書3205をそれぞれ1つずつ含むように構成されているが、セキュアアプリ3111の構成は、このような構成に限定されない。アプリ本体3202、設定ファイル3203、アプリ署名リスト3204および公開鍵証明書3205のいずれかは、複数のファイルであってもよいし、無くてもよい。
また、上述では、セキュアアプリ3111は、アプリ本体3202および設定ファイル3203の両方の署名が並んだアプリ署名リスト3204を含んでいるが、セキュアアプリ3111の構成は、このような構成に限定されない。セキュアアプリ3111は、アプリ本体3202および設定ファイル3203に対応する2つの署名を別々に含んでもよい。
<セキュアブート処理>
コンテンツ表示装置110は、セキュア環境1200で動作するブートローダ1041およびセキュアオペレーティングシステム1042が改ざんされていないことをコンテンツ表示装置110の起動時に検証する。
以下、コンテンツ表示装置110の電源が投入されてから、汎用オペレーティングシステム1031が起動するまでの方法(セキュアブート処理)を、図8のシーケンス図を用いて説明する。
コンテンツ表示装置110の電源が投入された後、CPU1001が、セキュアモードかつ特権モードの状態で、システムLSI1000におけるIPL1002を実行する。なお、CPU1001がIPL1002に従って処理を実行することをIPL1002が処理を実行すると表現する場合がある。また、CPU1001がプログラム等に従って処理を実行することをプログラム等が処理を実行すると表現する場合がある。
IPL1002は、まずコンテンツ表示装置110のハードウェアの初期化処理を行う(S1000)。初期化処理において、IPL1002は、メモリ1020の動作チェック、メモリ制御部1003の初期化、および、周辺回路(図示せず)の初期化等の処理を行う。そして、IPL1002は、メモリ制御部1003の初期化時に、メモリ1020に、ノーマル領域1030およびセキュア領域1040を設定する。
IPL1002は、初期化処理後、ブートローダ1041を不揮発性記憶装置1050からセキュア領域1040へロードする(S1001)。IPL1002は、セキュア領域1040へロードしたブートローダ1041の改ざんチェックを行う(S1002)。この時、IPL1002は、ブートローダ1041に付加されている署名と公開鍵証明書とを利用して、ブートローダ1041の改ざんチェックを行う。
IPL1002は、検証の結果、ブートローダ1041が改ざんされていないと判定した場合(S1002でOK)、ブートローダ1041を起動する(S1003)。一方、IPL1002は、検証の結果、ブートローダ1041が改ざんされていると判定した場合(S1002でNG)、コンテンツ表示装置110の起動を終了する。
ブートローダ1041は、IPL1002によって起動された後(S1003)、セキュア環境1200の初期設定を行う(S1004)。ブートローダ1041は、初期設定(S1004)で、セキュア環境1200でセキュアオペレーティングシステム1042およびセキュアアプリ3111等を実行するための各種設定を行う。
ブートローダ1041は、初期設定の終了後、セキュアオペレーティングシステム1042を不揮発性記憶装置1050からセキュア領域1040へロードする(S1005)。ブートローダ1041は、セキュア領域1040へロードしたセキュアオペレーティングシステム1042の改ざんチェックを行う(S1006)。この時、ブートローダ1041は、セキュアオペレーティングシステム1042に付加されている署名および公開鍵証明書を利用して、セキュアオペレーティングシステム1042の改ざんチェックを行う。
ブートローダ1041は、検証の結果、セキュアオペレーティングシステム1042が改ざんされていないと判定した場合(S1006でOK)、セキュアオペレーティングシステム1042を起動する(S1007)。一方、ブートローダ1041は、検証の結果、セキュアオペレーティングシステム1042が改ざんされていると判定した場合(S1006でNG)、セキュアオペレーティングシステム1042を起動しない。
セキュアオペレーティングシステム1042は、ブートローダ1041によって起動された場合(S1007)、セキュアオペレーティングシステム1042自身、および、その環境でセキュアアプリ3111等を実行するための初期設定を行う(S1008)。セキュアオペレーティングシステム1042は、初期設定が終了した後、ブートローダ1041へ初期化終了を通知する(S1009)。
ブートローダ1041は、セキュアオペレーティングシステム1042が改ざんされていると判定した場合(S1006でNG)、セキュアブート失敗フラグを設定する(S1010)。セキュアブート失敗フラグは、ソフトウェア実行環境がノーマル環境1100からセキュア環境1200へ遷移した時にチェックされる。
そして、セキュアブートが失敗していた場合、ブートローダ1041は、セキュアブート失敗フラグを用いて、ノーマル環境1100へ処理エラーを通知する。また、ノーマル環境1100で動作するアプリも、読み込み専用(Read−Only)でセキュアブート失敗フラグにアクセスできる。すなわち、ノーマル環境1100で実行しているアプリがセキュアブート失敗フラグを参照できる。
ブートローダ1041は、初期化終了通知(S1009)またはフラグ設定(S1010)の後、汎用オペレーティングシステム1031を不揮発性記憶装置1050からノーマル領域1030へロードする(S1011)。その後、ブートローダ1041は、CPU1001をノーマルモードへ変更し、汎用オペレーティングシステム1031を実行する(S1012)。
なお、上述では、ブートローダ1041が、汎用オペレーティングシステム1031をロードするが、処理の態様は、これに限定されない。
セキュアオペレーティングシステム1042は、初期化処理を終えた後、ブートローダ1041へ処理を戻さずに、汎用オペレーティングシステム1031をロードしてもよい。そして、セキュアオペレーティングシステム1042は、汎用オペレーティングシステム1031のロード後、CPU1001をノーマルモードへ変更し、汎用オペレーティングシステム1031を実行してもよい。
また、上述では、汎用オペレーティングシステム1031がロードされた後に、CPU1001がノーマルモードに変更され、汎用オペレーティングシステム1031が実行されるが、処理の態様は、これに限定されない。
汎用オペレーティングシステム1031がロードされた後に、汎用オペレーティングシステム1031が改ざんされていないことがチェックされてもよい。そして、汎用オペレーティングシステム1031が改ざんされていない場合、CPU1001がノーマルモードへ変更され、汎用オペレーティングシステム1031が実行されてもよい。
そして、汎用オペレーティングシステム1031が改ざんされていた場合、コンテンツ表示装置110の起動は終了してもよい。あるいは、汎用オペレーティングシステム1031が改ざんされていた場合、セキュアブート失敗フラグが設定されてもよい。そして、セキュアブート失敗フラグが設定された状態で、CPU1001がノーマルモードへ変更され、汎用オペレーティングシステム1031が実行されてもよい。
<秘匿データ1010のロード処理>
セキュアオペレーティングシステム1042は、セキュアアプリ3111から秘匿データ1010のロード処理を依頼された時に、秘匿データ1010をロードする。この時、セキュアオペレーティングシステム1042は、秘匿データロード部1044およびキャッシュロック部1045を用いて秘匿データ1010をシステムLSI1000の内部にロードする。
これにより、セキュアオペレーティングシステム1042は、バスプローブ等のハードウェアによる攻撃からも、デバッガまたは不正アプリ等のソフトウェアによる攻撃からも、秘匿データ1010を保護する。
以下、セキュア領域1040のデータ用として設定されたキャッシュ1004の内部に、秘匿データ1010をロードする処理を、図9のシーケンス図を用いて説明する。
コンテンツ再生アプリ1043等のセキュアアプリ3111から秘匿データ1010のロードが依頼された時、セキュアオペレーティングシステム1042は秘匿データ1010のためのメモリ領域をセキュア領域1040に確保する(S1100)。
そして、セキュアオペレーティングシステム1042は、確保したメモリ領域の情報(アドレスおよびサイズ)をキャッシュロック部1045に通知し、キャッシュロック部1045にキャッシュ1004のロックを依頼する(S1101)。
キャッシュロック部1045は、セキュアオペレーティングシステム1042から通知されたメモリ領域(セキュア領域1040の一部)のデータがキャッシュ1004に読み込まれるように、データの読み込み処理を行う(S1102)。この処理(S1102)の目的は、キャッシュ1004にデータを読み込ませることであるため、実際に読み込まれたデータは使用されない。したがって、キャッシュロック部1045は、値を持たない空データの読み込み処理を行ってもよい。
キャッシュロック部1045は、前の処理(S1102)でキャッシュ1004に読み込まれたデータが、キャッシュ1004から除外され、システムLSI1000の外部のメモリ1020へ書き出されないようにロックする(S1103)。この処理により、ロックされた領域のデータが変更された場合でも、その変更されたデータがメモリ1020へ書き込まれることがなくなる。
キャッシュロック部1045は、ロック処理が終了したことをセキュアオペレーティングシステム1042へ通知する(S1104)。
次に、セキュアオペレーティングシステム1042は、キャッシュ1004のロックされた領域へ秘匿データ1010をロードすることを秘匿データロード部1044へ依頼する(S1105)。この時、セキュアオペレーティングシステム1042は、ロードされるキャッシュ領域の情報(アドレスおよびサイズ)を秘匿データロード部1044へ通知する。
秘匿データロード部1044は、不揮発性記憶装置1050から暗号化秘匿データ1051を読み込む(S1106)。この時、秘匿データロード部1044は、メモリ1020のセキュア領域1040に暗号化秘匿データ1051をロードしてもよい。
そして、秘匿データロード部1044は、鍵保持部1006で保持されている鍵を用いて、暗号化秘匿データ1051を復号することにより、秘匿データ1010を取得する(S1107)。そして、秘匿データロード部1044は、セキュアオペレーティングシステム1042から通知された領域に復号した秘匿データ1010を書き込む(S1108)。
秘匿データロード部1044は、書き込みの完了後、データが改ざんされていないことを暗号化秘匿データ1051に付加されている検証値1063を用いて検証する(S1109)。秘匿データロード部1044は、検証の結果、改ざんされていた場合には、ロードしたデータのすべてを0で上書きする。
その後、秘匿データロード部1044は、ロード処理の終了をセキュアオペレーティングシステム1042へ通知する(S1110)。秘匿データ1010が、正常にロードされ、検証の結果、改ざんされていなかった場合、秘匿データロード部1044は、正常終了をセキュアオペレーティングシステム1042へ通知する。一方、秘匿データ1010が改ざんされていた場合、秘匿データロード部1044は、エラーをセキュアオペレーティングシステム1042へ通知する。
上述において、秘匿データ1010のロード前に、キャッシュ1004のロック処理が行われる。これにより、秘匿データ1010がキャッシュ1004に書き込まれても、システムLSI1000の外部に秘匿データ1010が流出することはない。そのため、バスプローブ等のハードウェアによる攻撃から秘匿データ1010が保護される。
また、秘匿データ1010に対応するメモリ領域は、セキュア領域1040に確保される。したがって、ノーマル環境1100で動作するデバッガまたは不正アプリ等のソフトウェアによる攻撃からも秘匿データ1010は保護される。
なお、上述では、キャッシュロック部1045は、セキュアオペレーティングシステム1042から通知されたメモリ領域のデータがキャッシュ1004に読み込まれるように、データの読み込み処理を行っている(S1102)。しかし、処理の態様は、これに限定されない。
例えば、キャッシュロック部1045は、セキュアオペレーティングシステム1042から通知されたメモリ領域のデータがキャッシュ1004に既に読み込まれているか否かを判定してもよい。そして、キャッシュロック部1045は、当該データが読み込まれていない場合に、読み込み処理(S1102)を実施してもよい。または、セキュアオペレーティングシステム1042が読み込み処理(S1102)を行ってもよい。データが既に読み込まれている場合、読み込み処理(S1102)は実施されなくてもよい。
また、例えば、既にキャッシュ1004において上書き可能なキャッシュ領域が存在する場合、そのキャッシュ領域が秘匿データ1010のロードに用いられてもよい。すなわち、キャッシュロック部1045は、上書きされてもよいキャッシュ領域をロックし、秘匿データロード部1044は、そのキャッシュ領域に秘匿データ1010をロードしてもよい。
また、上述では、セキュアオペレーティングシステム1042は、秘匿データ1010のためのメモリ領域をセキュア領域1040に確保するが、確保されるメモリ領域は、セキュア領域1040に限定されない。デバッガまたは不正アプリ等のソフトウェアによる攻撃を受けない環境において、秘匿データ1010がハードウェアによる攻撃から保護されればよい場合、セキュアオペレーティングシステム1042は、秘匿データ1010のためのメモリ領域をノーマル領域1030に確保してもよい。
<秘匿データ1010のアンロード処理>
セキュアオペレーティングシステム1042は、セキュアアプリ3111から秘匿データ1010のアンロード処理が依頼された時に、秘匿データロード部1044およびキャッシュロック部1045を用いて、秘匿データ1010をアンロードする。キャッシュロック部1045は、秘匿データ1010がシステムLSI1000の外部に書き出されないように、キャッシュ領域を0データ(0の値)で上書きする。その後、キャッシュロック部1045は、ロード処理でロックされたキャッシュ領域のロックを解除する。
以下、秘匿データ1010のアンロードが依頼されてから、秘匿データ1010がアンロードされるまでの処理を図10のシーケンス図を用いて説明する。
セキュアオペレーティングシステム1042は、セキュアアプリ3111から秘匿データ1010のアンロード処理が依頼された時に、秘匿データ1010の保存処理を秘匿データロード部1044へ依頼する(S1120)。
秘匿データロード部1044は、秘匿データ1010から検証値1063を算出する(S1121)。また、秘匿データロード部1044は、鍵保持部1006に保持されている鍵を用いて秘匿データ1010を暗号化し、暗号化秘匿データ1051を生成する(S1122)。そして、秘匿データロード部1044は、生成した暗号化秘匿データ1051を不揮発性記憶装置1050へ保存する(S1123)。その後、秘匿データロード部1044は、保存結果をセキュアオペレーティングシステム1042へ通知する(S1124)。
次に、セキュアオペレーティングシステム1042は、キャッシュロック部1045に、ロックされたキャッシュ1004のアンロックを依頼する(S1125)。
キャッシュロック部1045は、秘匿データ1010を記録しているキャッシュ領域のすべてに0の値を書き込む(S1126)。そして、キャッシュロック部1045は、秘匿データ1010のロード処理においてロックされたキャッシュ1004のロックを解除する(S1127)。その後、キャッシュロック部1045は、アンロック処理の終了をセキュアオペレーティングシステム1042へ通知する(S1128)。
セキュアオペレーティングシステム1042は、秘匿データ1010がロードされたキャッシュ領域に対応するセキュア領域1040におけるメモリ領域を解放する(S1129)。
秘匿データ1010のアンロードにおいて、0の値を書き込む処理(S1126)が行われずにキャッシュ1004のロックが解除された場合、キャッシュ1004に残っている秘匿データ1010が、メモリ1020へ書き出されてしまう。0の値を書き込む処理(S1126)が行われることにより、秘匿データ1010ではなく、0の値がメモリ1020へ書き出される。
したがって、キャッシュ1004のロックが解除され、キャッシュ1004におけるデータがメモリ1020へ書き出されたとしても、秘匿データ1010が、メモリ1020へ書き出されることはない。
以上のように、本実施の形態に係るコンテンツ表示装置110は、コンテンツを再生する際に利用する鍵等の秘匿データ1010をシステムLSI1000の内部で扱う。これにより、コンテンツ表示装置110は、秘匿データ1010をハードウェアによる攻撃から保護することができる。また、コンテンツ表示装置110は、秘匿データ1010のためのメモリ領域をセキュア領域1040に確保することで、秘匿データ1010をソフトウェアによる攻撃からも保護することができる。
これにより、コンテンツ表示装置110は、セキュリティ強度(保護強度)が互いに異なる3種類の領域を持つことができる。第1の領域は、保護されていないノーマル領域1030である。第2の領域は、ソフトウェアによる攻撃から保護されたセキュア領域1040である。第3の領域は、ハードウェアによる攻撃、および、ソフトウェアによる攻撃の両方から保護された領域である。
また、秘匿データロード部1044は、セキュア環境1200で、秘匿データ1010をロードする。これにより、ノーマル環境1100で動作するデバッガまたは不正プログラム等により、秘匿データ1010が不正に取得されることが防止される。
また、本実施の形態では、システムLSI1000におけるキャッシュ1004の一部が利用される。したがって、システムLSI1000は、システムLSI1000の内部に専用メモリを持たなくてもよい。そして、共用メモリが効率的に利用される。また、キャッシュ1004が本来持っている機能が利用されるため、本実施の形態で示された処理は、新たなハードウェアを追加することなく、既存システムに応用可能である。
また、ロード処理またはアンロード処理によって、キャッシュ1004の一部が常に占有(ロック)されるという状態が回避される。そして、秘匿データ1010が処理される時に、キャッシュ1004がロックされる。そのため、キャッシュ1004では、データをキャッシュする機能も、有効に活用される。
なお、上述では、秘匿データ1010の処理が開始される時に、キャッシュ1004のロックが開始される。しかし、秘匿データ1010を用いるアプリが開始した時に、キャッシュ1004のロックが開始されてもよい。そして、秘匿データ1010を用いるアプリが終了した時に、キャッシュ1004のロックが解除されてもよい。
これにより、秘匿データ1010を用いるアプリの動作中において、秘匿データ1010がキャッシュ1004に維持される。したがって、秘匿データ1010のロードおよびアンロードによって発生する処理量が低減する。
また、キャッシュ1004に十分な容量が存在する場合、コンテンツ表示装置110の起動時に、キャッシュ1004のロックが開始されてもよい。例えば、セキュアオペレーティングシステム1042の起動時に、キャッシュロック部1045が、秘匿データ1010のため、キャッシュ1004のロックを開始してもよい。そして、キャッシュ1004のロックは、解除されなくてもよい。このような処理によっても、秘匿データ1010が適切に保護される。
(実施の形態2)
実施の形態1では、セキュアオペレーティングシステム1042が、コンテンツ再生アプリ1043等のセキュアアプリ3111からの要求に応じて、秘匿データ1010をキャッシュ1004へロードする。本実施の形態では、セキュアアプリ3111のアプリ本体3202の内部に、セキュア領域1040へロードされる部分と、キャッシュ1004へロードされる部分とが含まれる。そして、セキュアアプリ3111のロード時に、これらの部分のそれぞれが個別にロードされる。
以下、本実施の形態に係るセキュアオペレーティングシステム1042、パッケージ生成部3000、セキュアアプリ3111およびアプリ本体3202の構成を説明し、セキュアアプリ3111のロード処理を説明する。なお、実施の形態1と同様の構成要素については、同じ符号を用いて、説明を省略する。
<セキュアオペレーティングシステム1042の構成>
図11は、本実施の形態に係るセキュアオペレーティングシステム1042の構成図である。図11のように、セキュアオペレーティングシステム1042は、秘匿データロード部1044と、キャッシュロック部1045と、アプリロード部1046とを含む。
アプリロード部1046は、セキュアアプリ3111のロード時に、セキュアアプリ3111に含まれるアプリヘッダ情報3201を取得する。そして、アプリロード部1046は、アプリヘッダ情報3201に基づいて、ハードウェアによる攻撃からも秘匿にされるべきコードまたはデータがアプリ本体3202に含まれるか否かを判定する。
秘匿にされるべきコードまたはデータが含まれる場合、アプリロード部1046は、秘匿にされるべきコードまたはデータをロードするためのキャッシュ1004の領域をロックするようにキャッシュロック部1045へ依頼する。その後、アプリロード部1046は、セキュアアプリ3111を復号し、ロードする。
秘匿データロード部1044およびキャッシュロック部1045は、実施の形態1の秘匿データロード部1044およびキャッシュロック部1045と同様の構成要素である。
なお、アプリ本体3202の全体が、キャッシュ1004においてロックされた領域へロードされてもよい。また、アプリ本体3202がキャッシュ1004にロードされるすべての領域がロックされ、復号およびロード処理が行われた後、秘匿にしなくてもよいデータについて一部の領域のロックが解除されてもよい。この場合、秘匿データ1010のアンロード処理とは異なり、データは0値で上書きされない。
<パッケージ生成部3000の構成>
本実施の形態に係るパッケージ生成部3000は、実施の形態1のパッケージ生成部3000と同様の構成要素を備えるが、動作の一部が異なる。実施の形態1と同じ動作を行う構成要素については、説明を省略する。
コンパイラ3100は、入力されたソースコード3110をコンパイルし、オブジェクトファイルを生成する。この時、コンパイラ3100は、ソースコード3110のうち、秘匿データ1010を表す識別子が付けられているデータ、秘匿データ1010を処理する関数、または、秘匿にされることを表す識別子が付けられているコード等を特定のセクションへ格納する。
この特定のセクションには、秘匿データ1010または秘匿データ1010に関連するコードであることを表す識別子が付けられている。セクションに関しては、後で詳細に説明する。
リンカ3101およびパッケージ生成ツール3102は、実施の形態1のリンカ3101およびパッケージ生成ツール3102と同様の構成要素である。
なお、本実施の形態では、コンパイラ3100が、秘匿データ1010および秘匿データ1010に関連するコードを特定のセクションへ格納する。しかし、秘匿データ1010および秘匿データ1010に関連するコードを特定のセクションへ格納する処理部は、コンパイラ3100に限定されない。
例えば、コンパイラ3100は、ソースコード3110に秘匿データ1010または秘匿データ1010に関連するコードが含まれていることをリンカ3101へ通知してもよい。そして、リンカ3101が、リンク処理時に、秘匿データ1010または秘匿データ1010に関連するコードを特定のセクションへ格納してもよい。
また、コンパイラ3100は、ソースコード3110に秘匿データ1010または秘匿データ1010に関連するコードが含まれていることをパッケージ生成ツール3102へ通知してもよい。そして、パッケージ生成ツール3102が、パッケージの生成処理時に、秘匿データ1010または秘匿データ1010に関連するコードを特定のセクションへ格納してもよい。
<セキュアアプリ3111の構成>
本実施の形態に係るセキュアアプリ3111は、アプリヘッダ情報3201、アプリ本体3202、設定ファイル3203、アプリ署名リスト3204、公開鍵証明書3205および署名3206を含む。
アプリヘッダ情報3201は、アプリ本体3202に秘匿にされるべきコードまたはデータが含まれるか否かを示すフラグを持つ。他の情報は、実施の形態1と同様であるため説明を省略する。
アプリ本体3202、設定ファイル3203、アプリ署名リスト3204、公開鍵証明書3205および署名3206は、実施の形態1と同様であるため説明を省略する。
<アプリ本体3202の構成>
図12は、本実施の形態に係るアプリ本体3202の構成図である。図12のように、アプリ本体3202は、ヘッダ部3210と、.textセクション3211と、.hctextセクション3212と、.rodataセクション3213と、.dataセクション3214と、.bssセクション3215と、.hcdataセクション3216とを含む。
ヘッダ部3210は、ヘッダ部3210の後に続く複数のセクションのそれぞれの種類、開始アドレスおよびサイズ等の情報を持つ。
.textセクション3211は、プログラムのコードを格納するためのセクションであり、読み取り専用かつ実行可能として設定される。
.hctextセクション3212は、秘匿データ1010に関連するコードを含むプログラムのコードを格納するためのセクションであり、読み取り専用かつ実行可能として設定される。
.rodataセクション3213は、定数データを格納するためのセクションであり、読み取り専用かつ実行不可として設定される。
.dataセクション3214は、初期値が設定されているデータを格納するためのセクションであり、読み書き可かつ実行不可として設定される。
.bssセクション3215は、初期値が設定されていないデータを格納するためのセクションであり、読み書き可かつ実行不可として設定される。
.hcdataセクション3216は、秘匿データ1010を格納するセクションであり、読み書き可かつ実行不可として設定される。
上述のように構成されるアプリ本体3202のうち、アプリロード部1046は、.hctextセクション3212および.hcdataセクション3216をキャッシュ1004のロックされた領域へロードする。アプリロード部1046は、その他のセクションをセキュア領域1040へロードする。
なお、上述では、ロックされた領域へロードされるセクションの種類として、.hctextセクション3212および.hcdataセクション3216が示されている。しかし、ロックされた領域へロードされるセクションの種類は、これらに限定されない。
ヘッダ部3210に、.textセクション3211および.dataセクション3214のデータをキャッシュ1004のロックされた領域へロードするか、セキュア領域1040へロードするかを示すフラグが含まれてもよい。そして、アプリロード部1046が、そのフラグにより、キャッシュ1004のロックした領域へデータをロードするか、セキュア領域1040へデータをロードするかを判定してもよい。
また、上述では、アプリ本体3202において、キャッシュ1004のロックされた領域へロードする部分と、セキュア領域1040へロードする部分とが混在する構成が示されている。しかし、セキュアアプリ3111の構成は、このような構成に限定されない。セキュアアプリ3111は、2つのアプリ本体3202、3202a(図示せず)を含んでもよい。そして、アプリ本体3202はセキュア領域1040へロードされ、アプリ本体3202aはキャッシュ1004のロックされた領域へロードされてもよい。
<セキュアアプリ3111のロード処理>
セキュアオペレーティングシステム1042は、セキュアアプリ3111をロードする時に、セキュアアプリ3111の中に秘匿にされるべきコードまたはデータが含まれるか否かを判定する。そして、セキュアオペレーティングシステム1042は、セキュアアプリ3111の秘匿にされるべきコードおよびデータをキャッシュ1004へロードし、その他をセキュア領域1040へロードする。
以下、セキュアアプリ3111をロードする処理を、図13のフローチャートを用いて説明する。
セキュアオペレーティングシステム1042は、セキュアアプリ3111を読み込み、署名3206を検証する(S1200)。セキュアオペレーティングシステム1042は、署名3206の検証に失敗した場合、セキュアアプリ3111のロード処理を停止する。
セキュアオペレーティングシステム1042は、署名の検証(S1200)に成功した場合、セキュアアプリ3111のアプリヘッダ情報3201を読み込む(S1201)。
セキュアオペレーティングシステム1042は、読み込んだアプリヘッダ情報3201から、アプリ本体3202に秘匿にされるべきコードまたはデータが含まれるか否かを示すフラグを取得する。そして、セキュアオペレーティングシステム1042は、フラグに基づいて、アプリ本体3202に秘匿にされるべきコードまたはデータが含まれるか否かを判定する(S1202)。
セキュアオペレーティングシステム1042は、秘匿にされるべきコードまたはデータがアプリ本体3202に含まれると判定した場合(S1202でYes)、アプリ本体3202のヘッダ部3210を復号する。そして、セキュアオペレーティングシステム1042は、秘匿にされるべきコードおよびデータのサイズを算出し、ロード処理を行う(S1203)。ロード処理は、図9の秘匿データ1010のロード処理と同様であるため、詳細な説明は省略する。
セキュアオペレーティングシステム1042は、ヘッダ部3210に記載された各セクションの開始アドレスおよびサイズの情報に基づいて、秘匿にされるべきコードおよびデータを復号し、ロックされたキャッシュ1004にロードする。
セキュアオペレーティングシステム1042は、秘匿にされるべきコードまたはデータがアプリ本体3202に含まれないと判定した場合(S1202でNo)、秘匿にされなくてもよいコードまたはデータを復号する。あるいは、セキュアオペレーティングシステム1042は、秘匿にされるべきコードまたはデータをキャッシュ1004にロードした後(S1203)、秘匿にされなくてもよいコードまたはデータを復号する。
そして、セキュアオペレーティングシステム1042は、秘匿にされなくてもよい復号されたコードまたはデータをセキュア領域1040へロードする(S1204)。
なお、上述では、セキュアオペレーティングシステム1042が、秘匿にされるべきコードまたはデータがアプリ本体3202に含まれるか否かを判定し、秘匿にされるべきコードまたはデータをキャッシュ1004のロックした領域へロードする。しかし、処理の態様は、このような態様に限定されない。
まず、セキュアオペレーティングシステム1042は、すべてのデータを秘匿されるべきコードまたはデータとみなし、キャッシュ1004のロックされた領域へロードしてもよい(S1203)。
そして、セキュアオペレーティングシステム1042は、ヘッダ部3210を読み込み(S1201)、ヘッダ部3210の情報から、ロックされた領域のうち、秘匿にされるべきコードまたはデータの領域を判定してもよい(S1202)。そして、セキュアオペレーティングシステム1042は、ロックされた領域のうち、秘匿にされるべきコードまたはデータが含まれない領域のロックを解除してもよい。
以上のように、本実施の形態によれば、コンテンツ再生アプリ1043等のセキュアアプリ3111に、秘匿にされるべきコードまたはデータを含めることが可能となる。これにより、セキュアアプリ3111は、秘匿データ1010のロード処理を、セキュアオペレーティングシステム1042に個別に依頼しなくてもよい。
また、セキュアアプリ3111に、秘匿データ1010のロード処理およびアンロード処理がプログラムとして組み込まれなくてもよい。秘匿にされるべきコードまたはデータのセクションが適切に設定されることで、セキュアオペレーティングシステム1042が秘匿にされるべきコードまたはデータを適切な領域へロードする。そのため、ハードウェアの構成によってロード先が変更された場合でも、セキュアアプリ3111が変更されなくてもよい。したがって、セキュアアプリ3111の移植性が向上する。
(実施の形態3)
実施の形態1では、セキュアオペレーティングシステム1042が、コンテンツ再生アプリ1043等のセキュアアプリ3111からの要求に応じて、秘匿データ1010をキャッシュ1004へロードする。また、実施の形態2では、セキュアアプリ3111のアプリ本体3202が、その内部に、セキュア領域1040へロードされる部分と、キャッシュ1004へロードされる部分とを有し、セキュアアプリ3111のロード時に、2つの部分のそれぞれを個別にロードする。
本実施の形態において、セキュアオペレーティングシステム1042は、秘匿データ1010を処理する時に、秘匿データ1010およびその他のデータを処理する関数が使用するスタック領域をキャッシュ1004においてロックする。これにより、秘匿データ1010が安全に処理される。また、セキュアオペレーティングシステム1042は、秘匿データ1010を処理しない時に、キャッシュ1004をアンロックする。これにより、キャッシュ1004の利用効率が向上する。
以下、本実施の形態に係るキャッシュ1004のロック処理とアンロック処理を説明する。なお、実施の形態1と同様の処理および構成については、同じ符号を用いて、説明を省略する。
<キャッシュ1004のロック処理>
セキュアアプリ3111が、ハードウェアによる攻撃からもソフトウェアによる攻撃からも保護されるべき秘匿データ1010をキャッシュ1004のロックされた領域へロードした場合でも、保護が不十分な場合がある。
例えば、秘匿データ1010と別の値とで演算が行われ、その演算結果が、秘匿データ1010を格納している領域へ上書き保存された場合には、問題は生じない。しかし、メモリ1020におけるスタック領域に配置されているローカル変数へ演算結果を格納する場合等において、問題が生じる。演算結果から元の秘匿データ1010自身を求めることが可能である場合があるからである。
そこで、セキュアアプリ3111は、秘匿データ1010を扱う時にスタック領域をキャッシュ1004においてロックすることで、秘匿データ1010とそれに関するデータを保護する。
以下、スタック領域をキャッシュ1004においてロックする処理を、図14Aのシーケンス図を用いて説明する。
セキュアオペレーティングシステム1042は、セキュアアプリ3111からの依頼に応じて、セキュアアプリ3111のスタックが使用しているアドレスを求める(S2000)。
セキュアオペレーティングシステム1042は、スタック領域の情報(アドレスおよびサイズ)をキャッシュロック部1045に通知し、キャッシュ1004のロックを依頼する(S2001)。
キャッシュロック部1045は、スタック領域のデータがキャッシュ1004から除外され、システムLSI1000の外部のメモリ1020へ書き出されないように、キャッシュ1004におけるスタック領域をロックする(S1103)。ロックの処理自体は、実施の形態1と同様である。本実施の形態では、ロックする対象であるスタック領域は、関数の実行中においてキャッシュ1004に読み込まれている。そのため、データを読み込む処理(S1102)は行われなくてもよい。
キャッシュロック部1045は、ロック処理が終了したことをセキュアオペレーティングシステム1042へ通知する(S1104)。
以上で処理は終了である。この後、セキュアアプリ3111は、秘匿データ1010を用いて演算処理を行い、その結果または途中結果等をスタック領域へ格納する。
但し、新たなメモリ領域がスタック領域として割り当てられた場合、セキュアオペレーティングシステム1042は、セキュアアプリ3111のスタック領域をキャッシュ1004においてロックしているか否かを判定する。スタック領域がロックされていた場合、セキュアオペレーティングシステム1042は、追加でスタックに割り当てられた領域もキャッシュ1004においてロックする。
なお、上述において、セキュアオペレーティングシステム1042は、セキュアアプリ3111からの依頼に応じてキャッシュ1004におけるスタック領域をロックする。しかし、処理のタイミングは、このようなタイミングに限定されない。セキュアオペレーティングシステム1042は、秘匿データ1010のロード処理を依頼された時に、ロード処理を依頼したセキュアアプリ3111のスタック領域をキャッシュ1004においてロックしてもよい。
また、予め設定された特定の領域にセキュアアプリ3111がアクセスした時に、セキュアアプリ3111のスタック領域をキャッシュ1004においてロックしてもよい。
また、上述において、セキュアオペレーティングシステム1042は、キャッシュ1004におけるスタック領域をロックする。しかし、ロックされる領域は、スタック領域に限定されない。セキュアオペレーティングシステム1042は、他のデータを格納している領域をロックしてもよい。ロックされる領域は、例えば、malloc関数等を使用して、動的に確保される領域でもよいし、セキュアアプリ3111における任意の関数からアクセス可能なグローバル変数を含む領域でもよい。
<キャッシュ1004のアンロック処理>
セキュアアプリ3111は、秘匿データ1010を利用した処理が終了した時、秘匿データ1010に関連するスタック領域内のデータを消去する。そして、セキュアアプリ3111は、セキュアオペレーティングシステム1042へ、キャッシュ1004におけるスタック領域のアンロックを依頼する。セキュアオペレーティングシステム1042は、依頼を受け、キャッシュ1004におけるスタック領域をアンロックする。
これにより、キャッシュ1004においてロックされていた領域を他のプログラムまたは他のデータが利用することが可能になる。したがって、キャッシュ1004が有効利用される。
以下、スタック領域をキャッシュ1004においてアンロックする処理を、図14Bのシーケンス図を用いて説明する。
セキュアアプリ3111は、キャッシュ1004におけるスタック領域のアンロックをセキュアオペレーティングシステム1042に依頼する。依頼を受けたセキュアオペレーティングシステム1042は、キャッシュ1004においてロックされたスタック領域のアンロックをキャッシュロック部1045へ依頼する(S1125)。
キャッシュロック部1045は、キャッシュ1004においてロックされたスタック領域のロックを解除する(S2010)。そして、キャッシュロック部1045は、アンロック処理の終了をセキュアオペレーティングシステム1042へ通知する(S1128)。
以上で、処理は終了する。この後、通常通りセキュアアプリ3111が動作し、スタック領域のデータがキャッシュ1004へ読み込まれたり、キャッシュ1004のデータがメモリ1020へ書き出されたりする。これにより、キャッシュ1004が効率的に利用される。
以上のように、本実施の形態によれば、データを格納しているスタック領域等が、プログラムの実行中に、キャッシュ1004において、ロックされ、アンロックされる。これにより、秘匿データ1010自身に限らず、秘匿データ1010を処理するプログラムによって生成されるデータ、および、秘匿データ1010に基づいて計算された結果も保護される。
(実施の形態4)
本実施の形態に係る情報処理装置は、実施の形態1〜3に示されたコンテンツ表示装置110の特徴的な構成要素を備える。
図15Aは、本実施の形態に係る情報処理装置のハードウェア構成図である。図15Aに示された情報処理装置300は、保護対象データを処理する装置である。そして、情報処理装置300は、2つの記憶部301、302、および、キャッシュ制御部303を備える。
記憶部301は、図2に示されたメモリ1020に対応する。記憶部302は、図3に示された記憶領域1011に対応する。キャッシュ制御部303は、図3に示されたキャッシュ制御部1012に対応する。
図15Bは、図15Aに示された情報処理装置300の動作を示すフローチャートである。まず、キャッシュ制御部303は、記憶部301における記憶データを記憶部302にキャッシュする(S301)。
次に、キャッシュ制御部303は、記憶部302にキャッシュされた記憶データのキャッシュ領域から得られるキャッシュデータが記憶部301に書き戻されないように、記憶部302におけるキャッシュ領域をロックする(S302)。次に、キャッシュ制御部303は、記憶部302におけるキャッシュ領域がロックされた後に、記憶部302におけるキャッシュ領域に記憶データとは異なる保護対象データを書き込む(S303)。
これにより、保護対象データが、キャッシュ(記憶部302)に書き込まれる。外部の装置がキャッシュに書き込まれるデータにアクセスすることは困難である。したがって、保護対象データは、適切に保護される。
次に、キャッシュ制御部303は、保護対象データが処理された後に、記憶部302におけるキャッシュ領域をクリアする(S304)。次に、キャッシュ制御部303は、クリアされたキャッシュ領域から得られるキャッシュデータが記憶部301に書き戻されるように、キャッシュ領域のロックを解除する(S305)。これにより、保護対象データが、キャッシュからメモリに書き戻される前に、消去される。したがって、保護対象データが、適切に保護される。
なお、キャッシュ制御部303は、保護対象データが処理される際に、保護対象データに対して、記憶部301におけるデータ領域を割り当ててもよい。そして、キャッシュ制御部303は、割り当てられたデータ領域における記憶データを記憶部302にキャッシュしてもよい(S301)。これにより、保護対象データのためのデータ領域が、SDRAM等のメモリ(記憶部301)において割り当てられる。したがって、メモリの領域とキャッシュの領域との適切な対応関係が維持される。
また、保護対象データが処理された後の処理(S304、S305)は、省略されてもよい。保護対象データが書き戻されなければ、保護対象データは適切に保護される。
また、キャッシュ制御部303は、プロセッサから出力された保護対象データが外部の装置によって取得されないように物理的に保護されている回路を通じて、記憶部302におけるキャッシュ領域に、保護対象データを書き込んでもよい。そして、記憶部302は、キャッシュ領域における保護対象データが外部の装置によって取得されないように、物理的に保護されていてもよい。
例えば、保護対象データが外部の装置によって取得されないように、プロセッサ、記憶部302、および、プロセッサと記憶部302との間の回路が、1つの集積回路で構成されてもよい。これにより、外部の装置が保護対象データを取得することは物理的に困難になる。したがって、保護対象データが、適切に保護される。
また、キャッシュ制御部303は、プログラムによって記憶部301への書き込みが予定されている保護対象データを記憶部302におけるキャッシュ領域に書き込んでもよい。これにより、プログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、適切に保護される。
また、キャッシュ制御部303は、記憶部302におけるキャッシュ領域に、実行可能なプログラムを保護対象データとして書き込んでもよい。これにより、保護対象プログラムが、改ざんから保護される。したがって、保護対象プログラムが、適切に実行される。
(実施の形態5)
本実施の形態に係る情報処理装置は、実施の形態1〜3で示されたコンテンツ表示装置110の特徴的な構成要素を備える。また、本実施の形態では、実施の形態4で示された構成要素に加えて、任意に追加可能な構成要素が示される。
図16は、本実施の形態に係る情報処理装置のハードウェア構成図である。図16に示された情報処理装置400は、保護対象データを処理する装置である。そして、情報処理装置400は、記憶部401および集積回路405を備える。
記憶部401は、図2に示されたメモリ1020、および、図15Aに示された記憶部301に対応する記憶装置である。また、記憶部401は、2つの記憶領域411、412を含む。記憶領域411は、図2に示されたノーマル領域1030に対応し、記憶領域412は、図2に示されたセキュア領域1040に対応する。記憶領域411は、ノーマルプログラムを記憶するための領域である。記憶領域412は、セキュアプログラムを記憶するための領域であり、ノーマルプログラムからのアクセスが禁止される領域である。
集積回路405は、図2に示されたシステムLSI1000に対応する。また、集積回路405は、記憶部402、キャッシュ制御部403、プロセッサ404およびアクセス制御部406を含む。
記憶部402は、図3に示された記憶領域1011、および、図15Aに示された記憶部302に対応する。キャッシュ制御部403は、図3に示されたキャッシュ制御部1012、および、図15Aに示されたキャッシュ制御部303に対応する。プロセッサ404は、図2に示されたCPU1001に対応する。アクセス制御部406は、主に、図2に示されたメモリ制御部1003に対応する。
記憶部402、キャッシュ制御部403およびプロセッサ404は、集積回路405に含まれる。集積回路405の内部のデータに外部の装置がアクセスすることは困難である。したがって、保護対象データが、適切に保護される。
プロセッサ404は、保護対象データを生成し、生成された保護対象データを出力してもよい。そして、キャッシュ制御部403は、記憶部402におけるキャッシュ領域がロックされた後に、記憶部402におけるキャッシュ領域に、プロセッサ404から出力された保護対象データを書き込んでもよい。これにより、プロセッサによって生成された保護対象データが、キャッシュに書き込まれる。したがって、プロセッサによって生成された保護対象データが、適切に保護される。
例えば、プロセッサ404は、暗号化データを復号することによって、保護対象データを生成し、生成された保護対象データを出力してもよい。これにより、暗号化データの復号によって得られる保護対象データが、適切に保護される。
また、プロセッサ404は、セキュアモードでセキュアプログラムを実行し、ノーマルモードでノーマルプログラムを実行してもよい。これにより、プログラムが適切なセキュリティレベルで実行され、プログラムに対応するセキュリティレベルに基づいてアクセス制御が実行される。
また、キャッシュ制御部403は、セキュアプログラムによって記憶領域412への書き込みが予定されている保護対象データを記憶部402におけるキャッシュ領域に書き込んでもよい。これにより、セキュアプログラムがメモリに書き込もうとする保護対象データが、メモリではなくキャッシュに書き込まれる。したがって、保護対象データが、より高いレベルで保護される。
また、アクセス制御部406は、ノーマルプログラムから記憶領域412へのアクセスを禁止してもよい。これにより、2つの記憶領域411、412に対するアクセスが適切に制御される。したがって、不正プログラムの実行が適切に制限される。
(その他の変形例)
本開示に係る情報処理装置は、実施の形態1〜5に限定されない。情報処理装置は、以下のように構成されてもよい。
(1)上述の構成では、セキュア領域1040に格納されるプログラム(暗号化ブートローダ1052、暗号化セキュアオペレーティングシステム1053および暗号化コンテンツ再生アプリ1054)は、不揮発性記憶装置1050に個別に格納される。しかし、格納の態様は、このような態様に限定されない。
セキュア領域1040に格納されるプログラムは、1つにまとめられてもよい。つまり、不揮発性記憶装置1050に、ブートローダ1041と、セキュアオペレーティングシステム1042と、コンテンツ再生アプリ1043とが、1つのファイルにまとめられ、暗号化されて、不揮発性記憶装置1050へ格納されてもよい。
セキュア領域1040に格納されるプログラムが1つにまとめられた場合、IPL1002は、ブートローダ1041のロードおよび検証を行う際に(図8のS1001およびS1002)、1つにまとめられたファイル全体のロードおよび検証を行ってもよい。また、この場合、ブートローダ1041は、セキュアオペレーティングシステム1042のロードおよび検証(図8のS1005とS1006)を行わなくてもよい。
あるいは、すべてのプログラムが1つのファイルにまとめられなくてもよい。ブートローダ1041とセキュアオペレーティングシステム1042とが1つのファイルにまとめられ、その他のすべてのセキュアアプリが1つのファイルにまとめられてもよい。あるいは、ブートローダ1041が1つのファイルで構成され、セキュアオペレーティングシステム1042とその他のすべてのセキュアアプリとが1つのファイルにまとめられてもよい。あるいは、他のまとめ方が用いられてもよい。
なお、セキュアオペレーティングシステム1042とすべてのセキュアアプリとが1つのファイルにまとめられた場合、セキュアオペレーティングシステム1042がこれらのセキュアアプリをセキュア領域1040へロードしなくてもよい。そのため、セキュアオペレーティングシステム1042は、これらのセキュアアプリをセキュア領域1040へロードする機能を持たなくてもよい。
(2)上述の構成では、秘匿データ1010のアンロード処理の際、キャッシュ1004がアンロックされる前に、秘匿データ1010が0の値で上書きされるが、処理の態様はこのような態様に限定されない。秘匿データ1010は0の値ではなく他の値で上書きされてもよい。また、秘匿データ1010は、同じ値で上書きされなくてもよい。すなわち、秘匿データ1010は、複数の値で上書きされてもよい。
また、キャッシュ1004におけるデータが書き換えられた時に設定されるDirtyフラグ、または、キャッシュ1004に有効なデータが格納されていることを示すValidフラグがクリアされてもよい。これにより、秘匿データ1010が、メモリ1020へ書き出されないように制御される。この場合、秘匿データ1010は、所定の値で上書きされなくてもよい。
(3)上述の構成では、秘匿データ1010は、システムLSI1000の内部のキャッシュ1004へロードされる。しかし、秘匿データ1010のロード先は、システムLSI1000の内部に限定されない。例えば、システムLSI1000の外部に設置され、かつ、バスプローブ等のハードウェアによる攻撃から保護されたメモリに秘匿データ1010がロードされてもよい。
バスプローブ等のハードウェアによる攻撃から保護されるようにメモリを設置するには、いくつかの方法がある。例えば、システムLSI1000およびメモリの間の信号線と、システムLSI1000と、メモリの端子とが、基盤の内部に埋め込まれてもよい。また、信号線および端子に接着剤がつけられていてもよい。これにより、接着剤がはがされた時に信号線または端子が破壊される。また、システムLSI1000とメモリとが、同一のパッケージ内に封入されてもよい。
また、図17に示すように、秘匿データ1010は、システムLSI1000の内部に配置されたOCM(On Chip Memory)1005にロードされてもよい。
(4)上述の構成では、セキュアオペレーティングシステム1042は、秘匿データロード部1044と、キャッシュロック部1045とを含む。あるいは、セキュアオペレーティングシステム1042は、秘匿データロード部1044と、キャッシュロック部1045と、アプリロード部1046とを含む。しかし、セキュアオペレーティングシステム1042の構成は、このような構成に限定されない。これらのすべてがセキュアオペレーティングシステム1042に含まれなくてもよい。
例えば、これらは、後でセキュアオペレーティングシステム1042へロードすることが可能なローダブルモジュールでもよいし、デバイスドライバでもよい。また、これらは、図18に示すようにセキュアオペレーティングシステム1042から独立したファームウェアであってもよい。
また、これらは、セキュアオペレーティングシステム1042に含まれず、ブートローダ1041に含まれてもよいし、セキュアオペレーティングシステム1042およびブートローダ1041の両方に含まれてもよい。秘匿データロード部1044と、キャッシュロック部1045と、アプリロード部1046とは、いずれの構成においても、CPU1001がセキュアモードかつ特権モードで動作している時に、動作可能である。
(5)例えば、上述の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボードおよびマウス等から構成されるコンピュータシステムであってもよい。
具体的には、RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。そして、マイクロプロセッサが、コンピュータプログラムに従って動作することにより、各装置は、その機能を果たす。ここでコンピュータプログラムは、所定の機能を達成するために、それぞれがコンピュータに対する指令を示す複数の命令コードの組み合わせで構成されている。
(6)また、例えば、上述の各装置を構成する複数の構成要素の一部または全部は、1個のシステムLSIで構成されてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROMおよびRAM等を含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、システムLSIは、その機能を果たす。
また、上述の各装置を構成する複数の構成要素は、それぞれ別々に1チップ化されてもよいし、一部または全部を含むように1チップ化されてもよい。
また、ここでは、システムLSIが示されているが、システムLSIは、集積度の違いにより、IC(Integrated Circuit)、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限られず、集積回路化は専用回路または汎用プロセッサで実現されてもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)、または、LSI内部の回路セルの接続および設定を再構成可能なリコンフィギュラブル・プロセッサが用いられてもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックが集積化されてもよい。バイオ技術の適用等が可能性としてありえる。
(7)また、例えば、上述の各装置を構成する複数の構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールで構成されてもよい。ICカードまたはモジュールは、マイクロプロセッサ、ROMおよびRAM等で構成されるコンピュータシステムである。
ICカードまたはモジュールは、上述の超多機能LSIを含んでもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、ICカードまたはモジュールは、その機能を果たす。このICカードまたはこのモジュールは、耐タンパー性を有してもよい。
(8)本開示に係る概念は、複数の実施の形態および複数の変形例で示された方法として実現されてもよい。また、本開示に係る概念は、それらの方法をコンピュータにより実現するコンピュータプログラムとして実現されてもよいし、コンピュータプログラムを構成するデジタル信号として実現されてもよい。
また、本開示に係る概念は、コンピュータプログラムまたはデジタル信号が記録された非一時的なコンピュータ読み取り可能な記録媒体として実現されてもよい。この記録媒体は、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、または、半導体メモリ等でもよい。また、本開示に係る概念は、この記録媒体に記録されているデジタル信号として実現されてもよい。
また、コンピュータプログラムまたはデジタル信号は、電気通信回線、無線通信回線、有線通信回線、インターネットを代表とする通信ネットワーク、または、データ放送等を経由して伝送されてもよい。
また、本開示に係る概念は、マイクロプロセッサおよびメモリを備えたコンピュータシステムとして実現されてもよい。そして、メモリは、コンピュータプログラムを記憶していてもよいし、マイクロプロセッサは、コンピュータプログラムに従って動作してもよい。
また、コンピュータプログラムまたはデジタル信号が記録媒体に記録されて移送されてもよいし、コンピュータプログラムまたはデジタル信号がネットワーク等を経由して移送されてもよい。そして、本開示に係る概念が、独立した他のコンピュータシステムにより実施されてもよい。
(9)上述の複数の実施の形態、および、上述の複数の変形例は、組み合わされてもよい。ある構成要素が実行する処理を別の構成要素が実行してもよい。また、処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
(補足)
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサ等のプログラム実行部が、ハードディスクまたは半導体メモリ等の記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の情報処理装置等を実現するソフトウェアは、次のようなプログラムである。
すなわち、このプログラムは、コンピュータに、保護対象データを処理する情報処理方法であって、第1記憶部における記憶データを第2記憶部にキャッシュし、前記第2記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む情報処理方法を実行させる。
以上、本発明の一つまたは複数の態様に係る情報処理装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨に逸脱しない限り、当業者が思いつく各種変形を実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の一つまたは複数の態様の範囲内に含まれてもよい。
本発明の一態様に係る情報処理装置は、秘匿データを扱う情報処理装置として有用であり、例えば、著作権が保護されるコンテンツを再生するためのソフトウェアを実行する携帯電話機またはパーソナルコンピュータ等の情報処理装置に適用できる。
100 コンテンツ配信システム
110 コンテンツ表示装置
120 コンテンツ記録装置
121 アンテナ
300、400 情報処理装置
301、302、401、402 記憶部
303、403、1012 キャッシュ制御部(キャッシュコントローラ)
404 プロセッサ
405 集積回路
406 アクセス制御部
411、412、1011 記憶領域
1000 システムLSI
1001 CPU
1002 IPL
1003 メモリ制御部(メモリコントローラ)
1004 キャッシュ
1005 OCM
1006 鍵保持部
1010 秘匿データ
1020 メモリ
1030 ノーマル領域
1031 汎用オペレーティングシステム(汎用OS)
1032 プレーヤアプリ
1033 コンテンツ受信アプリ
1034 共有データ
1040 セキュア領域
1041 ブートローダ
1042 セキュアオペレーティングシステム(セキュアOS)
1043 コンテンツ再生アプリ
1044 秘匿データロード部
1045 キャッシュロック部
1046 アプリロード部
1050 不揮発性記憶装置
1051 暗号化秘匿データ
1052 暗号化ブートローダ
1053 暗号化セキュアオペレーティングシステム
1054 暗号化コンテンツ再生アプリ
1061 ヘッダ情報
1062 秘匿データ本体
1063 検証値
1100 通常のソフトウェア実行環境(ノーマル環境)
1200 安全なソフトウェア実行環境(セキュア環境)
3000 パッケージ生成部
3100 コンパイラ
3101 リンカ
3102 パッケージ生成ツール
3110 ソースコード(プログラムソースコード)
3111 セキュアアプリ
3112 秘密鍵
3113、3205 公開鍵証明書
3114、3203 設定ファイル
3201 アプリヘッダ情報
3202 アプリ本体
3204 アプリ署名リスト
3206 署名
3210 ヘッダ部
3211 .textセクション
3212 .hctextセクション
3213 .rodataセクション
3214 .dataセクション
3215 .bssセクション
3216 .hcdataセクション

Claims (16)

  1. 保護対象データを処理する情報処理装置であって、
    第1記憶部と、
    第2記憶部と、
    前記第1記憶部における記憶データを前記第2記憶部にキャッシュするキャッシュ制御部とを備え、
    前記キャッシュ制御部は、
    前記第2記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、
    前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
    情報処理装置。
  2. 前記キャッシュ制御部は、プロセッサから出力された前記保護対象データが外部の装置によって取得されないように物理的に保護されている回路を通じて、前記第2記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込み、
    前記第2記憶部は、前記キャッシュ領域における前記保護対象データが外部の装置によって取得されないように、物理的に保護されている
    請求項1に記載の情報処理装置。
  3. 前記キャッシュ制御部は、
    前記保護対象データが処理される際に、前記保護対象データに対して、前記第1記憶部におけるデータ領域を割り当て、
    割り当てられた前記データ領域における前記記憶データを前記第2記憶部にキャッシュし、
    前記第2記憶部にキャッシュされた前記記憶データの前記キャッシュ領域から得られる前記キャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、
    前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
    請求項1または2に記載の情報処理装置。
  4. 前記キャッシュ制御部は、
    前記保護対象データが処理された後に、前記第2記憶部における前記キャッシュ領域をクリアし、
    クリアされた前記キャッシュ領域から得られる前記キャッシュデータが前記第1記憶部に書き戻されるように、前記キャッシュ領域のロックを解除する
    請求項1〜3のいずれか1項に記載の情報処理装置。
  5. 前記情報処理装置は、さらに、前記保護対象データを生成し、生成された前記保護対象データを出力するプロセッサを備え、
    前記キャッシュ制御部は、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記プロセッサから出力された前記保護対象データを書き込む
    請求項1〜4のいずれか1項に記載の情報処理装置。
  6. 前記情報処理装置は、さらに、集積回路を備え、
    前記第2記憶部、前記キャッシュ制御部および前記プロセッサは、前記集積回路に含まれる
    請求項5に記載の情報処理装置。
  7. 前記プロセッサは、暗号化データを復号することによって、前記保護対象データを生成し、生成された前記保護対象データを出力する
    請求項5または6に記載の情報処理装置。
  8. 前記キャッシュ制御部は、プログラムによって前記第1記憶部への書き込みが予定されている前記保護対象データを前記第2記憶部における前記キャッシュ領域に書き込む
    請求項1〜7のいずれか1項に記載の情報処理装置。
  9. 前記キャッシュ制御部は、前記第2記憶部における前記キャッシュ領域に、実行可能なプログラムを前記保護対象データとして書き込む
    請求項1〜8のいずれか1項に記載の情報処理装置。
  10. 前記プロセッサは、セキュアモードでセキュアプログラムを実行し、ノーマルモードでノーマルプログラムを実行し、
    前記第1記憶部は、
    前記ノーマルプログラムを記憶するための第1記憶領域と、
    前記セキュアプログラムを記憶するための領域であり、前記ノーマルプログラムからのアクセスが禁止される領域である第2記憶領域とを有する
    請求項5〜7のいずれか1項に記載の情報処理装置。
  11. 前記キャッシュ制御部は、前記セキュアプログラムによって前記第2記憶領域への書き込みが予定されている前記保護対象データを前記第2記憶部における前記キャッシュ領域に書き込む
    請求項10に記載の情報処理装置。
  12. 前記情報処理装置は、さらに、前記ノーマルプログラムから前記第2記憶領域へのアクセスを禁止するアクセス制御部を備える
    請求項10または11に記載の情報処理装置。
  13. 保護対象データを処理するコンピュータが実行する情報処理方法であって、
    前記コンピュータが、第1記憶部における記憶データを第2記憶部にキャッシュし、
    前記コンピュータが、前記第2記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記第1記憶部に書き戻されないように、前記第2記憶部における前記キャッシュ領域をロックし、
    前記コンピュータが、前記第2記憶部における前記キャッシュ領域がロックされた後に、前記第2記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
    情報処理方法。
  14. 請求項13に記載の情報処理方法をコンピュータに実行させるための
    プログラム。
  15. 請求項13に記載の情報処理方法をコンピュータに実行させるためのプログラムが記録された
    非一時的なコンピュータ読み取り可能な記録媒体。
  16. 保護対象データを処理する集積回路であって、
    記憶部と、
    記憶装置における記憶データを前記記憶部にキャッシュするキャッシュ制御部とを備え、
    前記キャッシュ制御部は、
    前記記憶部にキャッシュされた前記記憶データのキャッシュ領域から得られるキャッシュデータが前記記憶装置に書き戻されないように、前記記憶部における前記キャッシュ領域をロックし、
    前記記憶部における前記キャッシュ領域がロックされた後に、前記記憶部における前記キャッシュ領域に、前記記憶データとは異なる前記保護対象データを書き込む
    集積回路。
JP2012537259A 2011-05-25 2012-05-02 情報処理装置および情報処理方法 Expired - Fee Related JP5879527B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012537259A JP5879527B2 (ja) 2011-05-25 2012-05-02 情報処理装置および情報処理方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011117255 2011-05-25
JP2011117255 2011-05-25
PCT/JP2012/002965 WO2012160760A1 (ja) 2011-05-25 2012-05-02 情報処理装置および情報処理方法
JP2012537259A JP5879527B2 (ja) 2011-05-25 2012-05-02 情報処理装置および情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2012160760A1 JPWO2012160760A1 (ja) 2014-07-31
JP5879527B2 true JP5879527B2 (ja) 2016-03-08

Family

ID=47216854

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012537259A Expired - Fee Related JP5879527B2 (ja) 2011-05-25 2012-05-02 情報処理装置および情報処理方法

Country Status (4)

Country Link
US (1) US9158924B2 (ja)
EP (1) EP2717186A4 (ja)
JP (1) JP5879527B2 (ja)
WO (1) WO2012160760A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10061718B2 (en) * 2012-06-28 2018-08-28 Microsoft Technology Licensing, Llc Protecting secret state from memory attacks
US9141613B2 (en) * 2012-10-30 2015-09-22 Appsense Limited Systems and methods for determining an address for a private function
US20140164753A1 (en) * 2012-12-06 2014-06-12 Samsung Electronics Co., Ltd System on chip for performing secure boot, image forming apparatus using the same, and method thereof
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
JP6055574B2 (ja) * 2013-03-14 2016-12-27 インテル・コーポレーション セキュアなオペレーティングシステム環境へのコンテキストベースのスイッチング
KR102095912B1 (ko) * 2013-05-15 2020-04-02 삼성전자 주식회사 보안 기능 운용 방법 및 이를 지원하는 전자 장치
US9329931B2 (en) * 2013-07-24 2016-05-03 Seagate Technology Llc Solid state drive emergency pre-boot application providing expanded data recovery function
JP6129702B2 (ja) * 2013-09-24 2017-05-17 株式会社東芝 情報処理装置、情報処理システム、プログラム
JP5741722B1 (ja) * 2014-01-28 2015-07-01 日本電気株式会社 情報処理装置、及び、情報処理方法
US9520994B2 (en) 2014-03-20 2016-12-13 Oracle International Corporation System and method for deriving secrets from a master key bound to an application on a device
US10474454B2 (en) * 2014-03-20 2019-11-12 Oracle International Corporation System and method for updating a trusted application (TA) on a device
JP6584823B2 (ja) 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
JP6181004B2 (ja) * 2014-06-20 2017-08-16 株式会社東芝 メモリ管理装置、プログラム、及び方法
JP6162652B2 (ja) 2014-06-20 2017-07-12 株式会社東芝 メモリ管理装置、プログラム、及び方法
JP6547306B2 (ja) * 2015-01-27 2019-07-24 富士ゼロックス株式会社 情報処理装置、データ退避方法およびプログラム
US9760432B2 (en) 2015-07-28 2017-09-12 Futurewei Technologies, Inc. Intelligent code apparatus, method, and computer program for memory
US9921754B2 (en) 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US10180803B2 (en) 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US10437480B2 (en) 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
JP6867156B2 (ja) * 2016-12-28 2021-04-28 ルネサスエレクトロニクス株式会社 半導体装置
US10419402B2 (en) * 2017-01-26 2019-09-17 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using signing key
US10984136B2 (en) * 2017-04-21 2021-04-20 Micron Technology, Inc. Secure memory device with unique identifier for authentication
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
WO2019026137A1 (ja) * 2017-07-31 2019-02-07 日本電気株式会社 プログラム検証システム、方法およびプログラム
JP6999385B2 (ja) * 2017-11-30 2022-01-18 株式会社テクノ・コモンズ 物体のデータ測定装置
JP6776292B2 (ja) * 2018-03-20 2020-10-28 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
JP7042709B2 (ja) * 2018-06-28 2022-03-28 ルネサスエレクトロニクス株式会社 半導体装置、制御システムおよび半導体装置の制御方法
JP6877388B2 (ja) * 2018-07-09 2021-05-26 株式会社東芝 情報処理装置、移動体、情報処理方法、およびプログラム
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
US11550728B2 (en) * 2019-09-27 2023-01-10 Advanced Micro Devices, Inc. System and method for page table caching memory
JP7428049B2 (ja) 2020-03-30 2024-02-06 大日本印刷株式会社 デバイス、セキュアエレメント及びデバイスのセキュアブート方法
US11822664B2 (en) 2020-06-22 2023-11-21 Apple Inc. Securely signing configuration settings
US11775391B2 (en) * 2020-07-13 2023-10-03 Samsung Electronics Co., Ltd. RAID system with fault resilient storage devices
US20220197813A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
JP2023182388A (ja) * 2022-06-14 2023-12-26 日立Astemo株式会社 情報処理装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305558A (ja) * 1995-04-27 1996-11-22 Casio Comput Co Ltd 暗号化プログラム演算装置
US5678026A (en) * 1995-12-28 1997-10-14 Unisys Corporation Multi-processor data processing system with control for granting multiple storage locks in parallel and parallel lock priority and second level cache priority queues
JP2001043139A (ja) * 1999-07-29 2001-02-16 Pioneer Electronic Corp 信号処理装置及びそれに用いる情報記録媒体
JP2003167783A (ja) * 2001-11-30 2003-06-13 Matsushita Electric Ind Co Ltd メモリプロテクト制御装置
US7370210B2 (en) 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
WO2004046924A1 (en) 2002-11-18 2004-06-03 Arm Limited Processor switching between secure and non-secure modes
WO2004046925A1 (en) 2002-11-18 2004-06-03 Arm Limited Security mode switching via an exception vector
US7383587B2 (en) 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
GB2396451B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Delivering data processing requests to a suspended operating system
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
GB2396713B (en) 2002-11-18 2005-09-14 Advanced Risc Mach Ltd Apparatus and method for controlling access to a memory unit
AU2003278350A1 (en) 2002-11-18 2004-06-15 Arm Limited Secure memory for protecting against malicious programs
GB2410348B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Exception types within a secure processing system
GB2396712B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
US7539853B2 (en) 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
GB2411254B (en) 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2396930B (en) 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
RU2005115094A (ru) 2002-11-18 2006-01-20 Арм Лимитед (Gb) Отображение адресов виртуальной памяти на физические адреса в системе с наличием защищенного домена и незащищенного домена
GB0226874D0 (en) 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB2395583B (en) 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
US7117284B2 (en) 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
GB2396034B (en) 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
US7231476B2 (en) 2002-11-18 2007-06-12 Arm Limited Function control for a processor
US7149862B2 (en) 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
JP4263976B2 (ja) 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US20070067826A1 (en) * 2005-09-19 2007-03-22 Texas Instruments Incorporated Method and system for preventing unsecure memory accesses
US20070118693A1 (en) * 2005-11-19 2007-05-24 International Business Machines Cor Method, apparatus and computer program product for cache restoration in a storage system
JP2008052360A (ja) 2006-08-22 2008-03-06 Fujitsu Ltd ストレージ装置およびライト実行プログラム
US20110153944A1 (en) * 2009-12-22 2011-06-23 Klaus Kursawe Secure Cache Memory Architecture

Also Published As

Publication number Publication date
CN102985930A (zh) 2013-03-20
EP2717186A1 (en) 2014-04-09
US20130111605A1 (en) 2013-05-02
JPWO2012160760A1 (ja) 2014-07-31
US9158924B2 (en) 2015-10-13
EP2717186A4 (en) 2015-05-13
WO2012160760A1 (ja) 2012-11-29

Similar Documents

Publication Publication Date Title
JP5879527B2 (ja) 情報処理装置および情報処理方法
JP5631334B2 (ja) 情報処理装置
JP4392241B2 (ja) 付属記憶装置を採用したコンピュータ・システム内の安全保護を促進するための方法ならびにシステム
JP5260081B2 (ja) 情報処理装置及びその制御方法
JP5475475B2 (ja) プログラム実行装置、制御方法、制御プログラム及び集積回路
JP4157595B2 (ja) セキュア処理装置、方法、プログラム
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
US9135417B2 (en) Apparatus for generating secure key using device and user authentication information
CN101894224B (zh) 保护客户端平台上的内容
US11474954B2 (en) Cache unit useful for secure execution
JP2005527019A (ja) マルチトークンのシール及びシール解除
TW201030550A (en) Multi-layer content protecting microcontroller
TW201535145A (zh) 使用保護讀取儲存器安全地儲存韌體數據之系統及方法
JP2014529262A (ja) ソフトウェアクリプトプロセッサ
JPWO2006129654A1 (ja) 電子機器、更新サーバ装置、鍵更新装置
KR20060108710A (ko) 신뢰성 있는 이동 플랫폼 구조
TW200832427A (en) Virtual secure on-chip one time programming
US20180260151A1 (en) Data Storage Device and Operating Method Therefor
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
JP6696352B2 (ja) プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラム
JP7077872B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2021060721A (ja) メモリシステム
CN102985930B (zh) 信息处理装置以及信息处理方法
CN111291389A (zh) 一种计算机核心程序全生命周期的保护方法及系统

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141006

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150824

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150915

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150929

R151 Written notification of patent or utility model registration

Ref document number: 5879527

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

SZ03 Written request for cancellation of trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z03

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees