本発明は、データへの不正アクセスを防止する情報処理装置に関する。
従来のテレビまたは携帯電話では、ユーザが機器購入後、機能を新たに追加するために、アプリケーションプログラム(以下、「アプリ」という)をダウンロードし、利用することが可能である。この様なアプリは、従来、機器内の各種リソースに対するアクセスが制限されていた。しかし、近年、多種多様なアプリを開発可能にするために、アクセス制限を緩和し、様々なリソースへのアクセスを可能にした機器が登場してきている。将来的には、アプリだけでなくデバイスドライバプログラム(以下、「デバドラ」という)も、ダウンロード可能にすることで、より多くのリソースにアクセス可能な機器が登場するものと考えられる。特に、デバドラがインストール可能になることにより、ユーザは、購入後の機器に対して、新たなハードウェアの追加が可能になり、機能追加の幅が現在と比べて拡大する。
また、従来、上記のようなアプリは、特定のアプリ開発会社のみが開発および配布をしている。しかし、近年、一般ユーザもアプリの開発および配布が可能な仕組みができつつある。この様な仕組みの中では、一般ユーザがアプリを簡単に開発可能にするために、Personal Computer(以下、「PC」という)で一般的に利用されている開発ツールが利用可能であったり、販売されている機器に対してデバッグ装置が接続可能であったりする。
一方、PCまたは携帯電話などに格納されている個人情報などのデータの漏えいが問題になっている。特にPCについては、インターネットなどのオープンなネットワークからダウンロードされる不正なダウンロードプログラムによって、PCの記憶装置に格納されている個人情報などのデータが読み取られ、ユーザの意図に反して、データがネットワークを介してPCの外部に送付されるなどの行為が行われている。不正なダウンロードプログラムは、メールを利用するなどしてユーザに有益なプログラムだと思わせダウンロードさせたり、PC上で動作するプログラムの脆弱性を衝いてダウンロードさせたりする。
この様に、PC、テレビまたは携帯電話などにおいて、ダウンロードしたアプリまたはデバドラが多くのリソースにアクセス可能である、または、一般ユーザがアプリまたはデバドラを開発および配布可能であることで、機器に格納された個人情報などに対する攻撃の脅威が増加する。具体的には、悪意を持った攻撃者による、攻撃用のアプリ(以下、「不正アプリ」という)または攻撃用のデバドラ(以下、「不正デバドラ」という)の開発またはインストールが、容易になる。これにより、不正アプリまたは不正デバドラが機器内部の情報にアクセス可能となり、情報の漏えいまたは改ざんといった攻撃が行われる危険性が増加する。
この様な攻撃は、主に不正アプリを使用し、機器内部の不揮発性記憶装置に格納されているファイルに対して行われることが多く、この様な攻撃に対してはファイルを暗号化して対処することが一般的である。しかし、アプリがデータを使用する時には、暗号化されたファイルを復号する必要があり、その復号したタイミングを狙って攻撃される危険性がある。特に、不正デバドラは、機器内のすべてのメモリにアクセス可能である。このため、不正デバドラが、動作中のアプリがRAM上に展開しているデータにアクセスし、データを漏えいまたは改ざんする危険性が増加する。
従来、RAM上のデータへの不正なアクセスを防止する方法として、メモリ管理ユニット(以下、MMUと記す)を利用する方法、またはメモリ保護ユニット(Memory Protection Unit)を利用する方法がある(例えば、特許文献1参照)。図40は、前記特許文献1に記載された従来のメモリアクセス保護方式を示す図である。
図40において、プログラム領域生成部11およびプログラム制御部12は、メモリ(図示しない)上のシステムコアエリアに置かれるプログラムであり、プログラム管理エリア14は、メモリ(図示しない)上のシステムコアエリアに置かれるデータであり、アクセスチェック機構9は、ハードウェアである。メモリ(図示しない)は、システムプログラムの内のコアとなるプログラム用のシステムコアエリアの他に、通常のシステムプログラム用のシステムエリアとユーザレベルプログラム用のユーザエリアとに区分して使用される。
プログラム制御部12は操作者からの指示によりプログラムファイル(図示しない)をメモリ(図示しない)上のユーザエリアへロードし、プログラム識別子を付与する。また、プログラム制御部12は、プログラム領域生成部11に対して、ロードしたプログラムファイルの実行に必要なメモリ上の領域の確保と、属性表生成とを指示する。プログラム制御部12は、プログラム領域生成部11から、属性表のアドレスを得て、アクセスチェック機構9に属性表のロードを指示する。また、プログラム制御部12は、そのほか、プログラムファイルの実行に必要な設定を行い、当該プログラムの実行を開始する。
プログラム領域生成部11は、ロードされるプログラムのプログラムファイルより、命令別、データ別およびスタック別にそれぞれセグメントを列挙する。プログラム領域生成部11は、属性に関する指定に基づいてプログラムをグループ化する。プログラム領域生成部11は、各グループにそのサイズに応じてページ識別子(仮の連番)と属性(実行可、読み出し可、書き込み可、キャッシュバイパス)とを付与し、属性表を作成する。プログラム領域生成部11は、作成した属性表のアドレスをプログラム制御部12に返すとともに、その属性表を属性エリアディレクトリ(ATDR)16に登録する。
プログラム管理エリア14は、属性エリアディレクトリ(ATDR)16と属性エリア18とを含む。属性エリアディレクトリ16には、プログラム単位で、プログラム識別子と属性エリアアドレスとが格納される。属性エリア18には、プログラム単位で、属性ごとのビットマップを含む属性表が格納される。属性表は、メモリ(図示しない)の全領域を所定数のブロックにブロック化したものであり、そのページブロック番号と、ブロックの各ページの属性ごとのビットマップとを含む。
アクセスチェック機構9は、メモリ(図示しない)上の属性表の写しを持ち、命令演算処理部(図示しない)がメモリへアクセスする時に、アクセス種別を指定するアクセスコード(E:命令の実行、R:読み出し、W:書き込み)とアクセスしたページの属性とをつき合わせチェックし、チェック結果に応じメモリアクセスを許可または抑制する。
特許第3607540号公報
特開2005−011336号公報
岡本龍明、山本博資、「現代暗号」、産業図書(1997年)
黒澤馨、尾形わかは、「現代暗号の基礎数理」、コロナ社(2004年)
ITU−T Recommendation X.509 (1997 E): Information Technology − Open Systems Interconnection − The Directory: Authentication Framework,1997
しかしながら、前記従来の構成を、テレビまたは携帯電話などで広く使用されているLinux(登録商標)などの汎用オペレーティングシステムに適用する時に、システムコアエリアに含まれるプログラムとシステムエリアに含まれるプログラムとは、同一のモード(特権モード)で動作させる必要がある。そのため、不正デバドラがインストールされ、特権モードで動作した時に、特権モードで動作するプログラムに対するメモリアクセス保護機構がないため、不正デバドラによりRAM上のデータが不正にアクセスされるという課題を有している。
また、前記従来の構成では、メモリアクセスの許可または不許可を決定する属性表の生成を、特権モードのプログラムが行う。このため、不正デバドラによって属性表が不正に生成、または、改ざんされる可能性がある。そのため、不正アプリが他のアプリに割り当てられたメモリ領域へアクセス可能になるように、不正デバドラが不正アプリの属性表を改ざんすることができる。このことにより、不正アプリが他のアプリが管理するRAM上のデータに不正アクセスすることができるという課題を有している。
本発明は、前記従来の課題を解決するもので、不正アプリまたは不正デバドラによる他のアプリが管理するRAM上のデータへのアクセスを防止可能としたメモリアクセス保護機能を有する情報処理装置を提供することを目的とする。
前記従来の課題を解決するために、本発明の情報処理装置は、動作モードとして、特権モードと非特権モードとを有するプロセッサと、前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部とを備え、前記トラステッドメモリ制御部は、前記プロセッサが前記トラステッドメモリへアクセスした時に、前記プロセッサの動作モードを判定し、前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止する。
本構成によって、特権モードで動作するプログラムから、アプリが使用する保護データ(情報資産)へのアクセスを防止することができる。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
なお、本発明は、このような特徴的な処理部を備える情報処理装置として実現することができるだけでなく、情報処理装置に含まれる特徴的な処理部が実行する処理をステップとするメモリアクセス制御方法として実現することができる。また、情報処理装置に含まれる特徴的な処理部としてコンピュータを機能させるためのプログラムまたはメモリアクセス制御方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムを、CD−ROM(Compact Disc−Read Only Memory)等のコンピュータ読取可能な非一時的な記録媒体またはインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
本発明によると、不正アプリまたは不正デバドラによる他のアプリが管理するRAM上のデータへのアクセスを防止可能としたメモリアクセス保護機能を有する情報処理装置を提供することができる。
図1は、本発明の実施の形態1におけるアプリ配信システムの全体構成図である。
図2は、本発明の実施の形態1における機器のソフトウェア構成図である。
図3は、本発明の実施の形態1における機器のハードウェア構成図である。
図4は、本発明の実施の形態1における暗号化された保護データの構成図である。
図5は、本発明の実施の形態1におけるアプリ配信サーバの構成図である。
図6は、本発明の実施の形態1における開発装置の構成図である。
図7は、本発明の実施の形態1におけるパッケージ生成部の構成図である。
図8は、本発明の実施の形態1におけるダウンロードアプリパッケージの構成図である。
図9は、本発明の実施の形態1におけるセキュアブートのフローチャートである。
図10は、本発明の実施の形態1における保護データの読み込み処理のフローチャートである。
図11は、本発明の実施の形態1における復号処理のフローチャートである。
図12は、本発明の実施の形態1における保護データの書き込み処理のフローチャートである。
図13は、本発明の実施の形態1における暗号処理のフローチャートである。
図14は、本発明の実施の形態1におけるトラステッドメモリ制御部の構成図である。
図15は、本発明の実施の形態1におけるアクセス判定部の構成図である。
図16は、本発明の実施の形態1における領域判定部の構成図である。
図17Aは、本発明の実施の形態1におけるアドレスリストの構成図である。
図17Bは、本発明の実施の形態1におけるアドレスリストの構成図である。
図18は、本発明の実施の形態1におけるモード判定部の構成図である。
図19は、本発明の実施の形態1におけるプログラム・領域対応判定部の構成図である。
図20Aは、本発明の実施の形態1におけるアプリID・領域対応リストの構成図である。
図20Bは、本発明の実施の形態1におけるアプリID・領域対応リストの構成図である。
図21は、本発明の実施の形態1におけるアクセス判定部の判定処理のフローチャートである。
図22は、本発明の実施の形態1における領域判定部の判定処理のフローチャートである。
図23は、本発明の実施の形態1におけるプログラム・領域対応判定部の判定処理のフローチャートである。
図24は、本発明の実施の形態1における設定値の生成処理のフローチャートである。
図25は、本発明の実施の形態1におけるメモリ設定部の設定解除依頼処理のフローチャートである。
図26は、本発明の実施の形態2におけるトラステッドメモリ制御部の構成図である。
図27は、本発明の実施の形態2におけるプログラム・領域判定部の構成図である。
図28Aは、本発明の実施の形態2におけるアプリID・アドレス対応リストの構成図である。
図28Bは、本発明の実施の形態2におけるアプリID・アドレス対応リストの構成図である。
図29は、本発明の実施の形態2におけるアクセス判定部の判定処理のフローチャートである。
図30は、本発明の実施の形態2におけるプログラム・領域判定部の判定処理のフローチャートである。
図31は、本発明の実施の形態3における機器のハードウェア構成図である。
図32は、本発明の実施の形態3におけるトラステッドメモリ制御部の構成図である。
図33は、本発明の実施の形態3におけるアクセス判定部の構成図である。
図34は、本発明の実施の形態3における領域判定部の構成図である。
図35は、本発明の実施の形態4におけるアクセス判定部の構成図である。
図36は、本発明の実施の形態4におけるデバドラアクセス許可アプリIDリストの構成図である。
図37は、本発明の実施の形態4におけるアクセス判定部の判定処理のフローチャートである。
図38は、本発明の変形例2における機器のハードウェア構成図である。
図39は、本発明の変形例6における初期化処理のフローチャートである。
図40は、従来のメモリ属性管理方式の構成図である。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
<アプリ配信システム100の構成>
図1は、本発明の実施の形態1におけるアプリ配信システム100の構成図である。
図1において、アプリ配信システム100は、機器110と、アプリ配信サーバ120と、開発装置130と、機器111とを含む。
機器110は、アプリ配信サーバ120とネットワークを介して接続され、アプリをダウンロードする。アプリをダウンロードした機器110は、アプリをインストールすることで、新しい機能を追加する。
アプリ配信サーバ120は、機器110および開発装置130とネットワークを介して接続され、開発装置130がアップロードしたアプリの管理、および、機器110へのアプリのダウンロード処理を行う。
開発装置130は、アプリ配信サーバ120とネットワークを介して接続され、機器110で動作するアプリの開発を行う装置である。また、開発装置130は、機器111とUniversal Serial Bus(以下、「USB」という)規格等のインターフェースで接続される。開発者は、開発装置130上でアプリを開発し、機器111上でアプリが想定通りの動作を行うかのテストを実施する。その後、開発装置130が開発したアプリをアプリ配信サーバ120へアップロードすることで、機器110でアプリが使用可能になる。なお、機器110と機器111は、同じ機能を持つ機器であり、一般ユーザによって使用されている(機器110)か、開発者によって使用されている(機器111)かが、異なるだけである。
<機器110、111のソフトウェア構成>
図2は、本発明の実施の形態1における機器110、111のソフトウェア構成図である。
図2において、機器110、111は、通常のソフトウェア実行環境(以下、「通常環境」という)1000と、安全なソフトウェア実行環境(以下、「保護環境」という)1100とを有する。機器110、111は、通常環境1000と保護環境1100とを切り替えながら、ソフトウェア(通常環境1000または保護環境1100のソフトウェア)を実行する。つまり、機器110、111は、通常環境1000と保護環境1100とのいずれかの環境を有し、両方の環境を有することはないし、いずれの環境も有しないこともない。機器110、111は、通常環境1000では、通常環境1000でのアクセスが許可されているメモリ領域のみにアクセスが可能であり、保護環境1100では、通常環境1000でのアクセスが許可されているメモリ領域と保護環境1100でのアクセスが許可されているメモリ領域とにアクセスが可能である。
なお、通常環境1000と保護環境1100を切り替える方法に関しては、例えば特許文献2に記されている方式が使用できる。
<通常環境1000のソフトウェア構成>
通常環境1000のソフトウェアは、汎用オペレーティングシステム(以下、「汎用OS」という)1001と、ダウンロード制御アプリ1007と、アプリA1008と、アプリB1009とを含む。汎用OS1001は、カーネル1002と、不揮発性メモリ管理部1003と、デバドラA1005と、デバドラB1006とを含む。不揮発性メモリ管理部1003は、保護データ管理部1004を含む。
汎用OS1001は、カーネル1002を用いて、アプリをメモリ上にロードして実行する、あるいは、アプリをメモリ上から削除(アンロード)する。また、汎用OS1001は、不揮発性メモリ管理部1003を用いて、機器110、111に装着されている不揮発性メモリに記憶するデータの管理を行う。特に、アプリA1008またはアプリB1009がアクセスする保護データは、保護データ管理部1004を用いて管理する。保護データ管理部1004を用いた、保護データの管理方法については、フローチャートを用いて後ほど説明する。
さらに、汎用OS1001は、デバドラA1005またはデバドラB1006を用いて、機器110、111に装着されている、あるいは、今後装着されるハードウェアへのアクセスを管理する。デバドラA1005またはデバドラB1006は、汎用OS1001内または汎用OS1001上で動作するアプリからの要求に応じて動作する。
ダウンロード制御アプリ1007は、機器110とインターネットを介して接続されているアプリ配信サーバ120と通信し、アプリ配信サーバ120からのアプリのダウンロード処理と、機器110へのアプリのインストール処理とを行う。
アプリA1008とアプリB1009は、それぞれ、アドレス管理機能、Webブラウズ機能、および電子メール機能などの機能を持ち、ユーザに対してこれらの機能を提供する。
<保護環境1100のソフトウェア構成>
保護環境1100のソフトウェアは、セキュアオペレーティングシステム(以下、「セキュアOS」という)1101と、セキュアブート部1102と、メモリ設定部1103と、暗復号処理部1104とを含む。
セキュアOS1101は、保護環境1100のソフトウェアを管理する。
セキュアブート部1102は、機器110、111の電源投入時にセキュアブートを行う。セキュアブートの処理については、フローチャートを用いて後ほど説明する。
メモリ設定部1103は、アプリA1008またはアプリB1009がアクセスする保護データを展開するメモリに対して、各種の設定を行う。
暗復号処理部1104は、暗号化されて保存されている保護データの復号処理と、メモリに展開した保護データを暗号化する処理とを行う。暗復号処理については、フローチャートを用いて後ほど説明する。
<機器110、111のハードウェア構成>
図3は、本発明の実施の形態1における機器110、111のハードウェア構成図である。
図2の各構成要素は、図3の内部保護メモリ1205とメモリ1250に格納された各構成要素に対応する。これらの各構成要素を実現するためのプログラムが、CPU1201上で実行されることにより、各機能が実現される。
図3において、機器110、111は、システムLSI1200と、不揮発性記憶装置1230と、メモリ1250とを含む。システムLSI1200は、不揮発性記憶装置1230と外部バスを介して接続されている。また、システムLSI1200は、メモリ1250と専用の外部バスを用いて接続されている。
システムLSI1200は、CPU1201とInitial Program Loader(以下、「IPL」という)1202と、トラステッドメモリ制御部1203と、実行環境切替部1204と、内部保護メモリ1205と、不揮発性保護メモリ1206とを含む。詳細は後述する。
不揮発性記憶装置1230は、アプリA用の暗号化された保護データ1231とアプリB用の暗号化された保護データ1232を格納する。アプリA用の暗号化された保護データ1231とは、アプリAがプログラム実行時にアクセスする保護データを暗号化したものである。アプリB用の暗号化された保護データ1232も同様である。図4に、暗号化された保護データ1231および1232の構造を示す。暗号化された保護データ1231、1232は、暗号化されていないヘッダ情報と、保護データ本体および検証値をまとめて暗号化した情報とを含む構造を有する。検証値は、保護データ本体をハッシュ関数に入力した時に得られるハッシュ値である。
なお、不揮発性記憶装置1230は、アプリA用の暗号化された保護データ1231とアプリB用の暗号化された保護データ1232のどちらか一方のみを格納するとしてもよい。
なお、暗号化された保護データは、暗号化されていないヘッダ情報を含むとしたが、これに限定されるものではなく、ヘッダ情報を暗号化してもよいし、ヘッダ情報はなくてもよい。ヘッダ情報をなくす場合には、ヘッダ情報に含まれるデータを、別途、不揮発性記憶装置1230または不揮発性保護メモリ1206へ格納する。
なお、保護データ本体の暗号化には、DES(Data Encryption Standard)またはAES(Advanced Encryption Standard)のような共通鍵暗号方式を利用してもよいし、RSA(Rivest Shamir Adleman)またはElGamalなどの公開鍵暗号方式を利用してもよいし、それらを組み合わせてもよい。
なお、保護データ本体と検証値をまとめて暗号化するとしたが、これに限定されるものではない。保護データ本体と検証値は別々に暗号化するとしてもよいし、保護データ本体のみを暗号化するとしてもよい。また、検証値は保護データ本体の後ろの記憶領域に記憶されるのではなく、保護データ本体の前の記憶領域に記憶されるとしてもよいし、検証値はヘッダ情報に含めるとしてもよい。さらに、検証値は、暗号化された保護データに含めるのではなく、暗号化された保護データとは別に、各暗号化された保護データの検証値を集めた検証値リストに格納するとしてもよいし、暗号化された保護データと関連づけた状態で、不揮発性保護メモリに格納するとしてもよい。
なお、ハッシュ関数としては、MD4、MD5、SHA(Secure Hash Algorithm)−1、またはSHA−2などのアルゴリズムが利用可能である。また、検証値は、ハッシュ値ではなく、デジタル署名、メッセージ認証コード(MAC:Message Authentication Code)値、誤り検出符号値、または誤り訂正符号値でもよい。MAC値を計算するアルゴリズムとしては、CBC−MAC(Cipher Block Chaining Message Authentication Code)またはHMAC(Keyed−Hashing for Message Authentication Code)などが利用可能である。誤り検出符号値を計算するアルゴリズムとしては、巡回冗長検査(CRC:Cyclic Redundancy Check)またはチェックサムなどが利用可能である。誤り訂正符号値を計算するアルゴリズムとしては、リード・ソロモン符号またはターボ符号などが利用可能である。
なお、共通鍵暗号方式に関しては非特許文献2の8ページから19ページに、公開鍵暗号方式に関しては非特許文献2の40ページから95ページに、ハッシュ関数に関しては非特許文献2の96ページから105ページに、デジタル署名方式に関しては非特許文献1の171ページから188ページに、メッセージ認証コードに関しては非特許文献2の30ページから39ページにそれぞれ詳しく説明されている。
暗号化された保護データ1231および1232は、機器110、111の工場製造時に不揮発性記憶装置1230に格納される。この時、保護データの初期データが生成され、機器ごとに個別の鍵で暗号化することで、暗号化された保護データ1231および1232が生成される。暗号化に使用した鍵は、システムLSI1200内の不揮発性保護メモリ1206に格納される。
また、図示しないが、不揮発性記憶装置1230は、メモリ1250または内部保護メモリ1205に格納されるプログラムを格納する。さらに、不揮発性記憶装置1230は、アプリA1008およびアプリB1009以外のアプリ、または、アプリA1008およびアプリB1009以外の暗号化された保護データを格納していてもよい。内部保護メモリ1205に格納するプログラムは、予め定められた鍵で暗号化された状態で不揮発性記憶装置1230に格納される。これらのプログラムは、機器110、111の工場製造時に不揮発性記憶装置1230に格納され、システム起動時またはアプリの起動要求時に、不揮発性記憶装置1230から、メモリ1250または内部保護メモリ1205へ展開される。
なお、内部保護メモリ1205に格納するプログラムを暗号化する鍵は、すべての機器で同一の鍵を利用してもよいし、システムLSI1200ごとに個別の鍵を用いてもよいし、プログラムごとに個別の鍵を用いてもよい。また、暗号化されたプログラムを復号する鍵は、システムLSI1200内部に鍵格納部(図示しない)を持ち、その中に格納されてもよいし、不揮発性保護メモリ1206に格納されてもよいし、システムLSI1200内部に格納された鍵を用いて暗号化された状態で不揮発性記憶装置1230に格納されてもよい。
メモリ1250は、通常メモリ領域1220とトラステッドメモリ領域1240とを含む。
通常メモリ領域1220は、汎用OS1221と、ダウンロード制御アプリ1222と、アプリA1223と、アプリB1224と、ダウンロード制御アプリ用のデータ1225と、アプリA用のデータ1226と、アプリB用のデータ1227とを格納する。
トラステッドメモリ領域1240は、アプリA用の保護データ1241とアプリB用の保護データ1242を格納する。トラステッドメモリ領域1240は、格納している保護データを利用するアプリのみがアクセス可能なメモリ領域であり、アクセス可能または不可能の制御は、トラステッドメモリ制御部1203が行う。
機器110、111は、さらに、図3に図示されていない入出力部などを備えているが、これらは本発明の本質ではないので説明を省略する。また、システムLSI1200は、さらに、図3に図示されていない周辺回路などを備えているが、これらは本発明の本質ではないので説明を省略する。
<システムLSI1200の構成>
以下、本発明の実施の形態1におけるシステムLSI1200の各構成要素の詳細について説明する。
CPU1201は、メモリ1250と内部保護メモリ1205とに格納されたプログラム等に含まれる命令コードを実行することにより、機器110、111全体の動作を制御する。CPU1201は、動作モードとして特権モードと非特権モードの2つのモードを持ち、汎用OS(デバドラも含む)1001は特権モードで動作し、ダウンロード制御アプリ1007、アプリA1008およびアプリB1009は非特権モードで動作する。ここで特権モードとは、汎用OSが動作可能なモードである。特権モードは、非特権モードで動作するアプリがアクセスすることのできないリソースまたはメモリ領域へのアクセスが可能である。つまり、特権モードで操作するアプリには、非特権モードで動作するアプリがアクセスすることができるリソースまたはメモリ領域に加えて、特権モードで動作するアプリのみがアクセスすることができるリソースまたはメモリ領域が対応付けられている。特権モードは、カーネルモード、マスターモードまたはスーパーバイザモードなどと呼ばれ、非特権モードは、ユーザモードなどと呼ばれる。
IPL1202は、機器110、111の電源が投入された時に一番はじめに起動するプログラムであり、内部保護メモリ1205に展開されたセキュアOS1210およびメモリ1250に展開された汎用OS1221を起動する。IPL1202は、システムLSI1200内に設けられたマスクROMに格納されている。
トラステッドメモリ制御部1203は、トラステッドメモリ領域1240へのアクセスを制御する。詳細は、構成図を用いて後ほど説明する。
実行環境切替部1204は、システムLSI1200の通常環境と保護環境を切り替える機能を実現する。実行環境切替部1204は、システムLSI1200の実行環境が保護環境の時にのみCPU1201等から内部保護メモリ1205または不揮発性保護メモリ1206へアクセス可能になるようアクセス制御する。また、実行環境切替部1204は、システムLSI1200の実行環境が通常環境と保護環境のどちらの実行環境であるかを示す状態情報を保持し、トラステッドメモリ制御部1203へ実行環境の状態情報を通知する。
内部保護メモリ1205は、セキュアOS1210と、セキュアブート部1211と、メモリ設定部1212と、暗復号処理部1213とを格納する。
不揮発性保護メモリ1206は、鍵A1214と鍵B1215を格納する。鍵A1214は、アプリA用の暗号化された保護データ1231の暗復号処理に使用される鍵であり、鍵B1215は、アプリB用の暗号化された保護データ1232の暗復号処理に使用される鍵である。
なお、不揮発性保護メモリ1206は、鍵A1214と鍵B1215を格納するとしたが、これに限定されるものではなく、どちらか一方の鍵のみを格納するとしてもよいし、別の鍵またはデータを格納するとしてもよい。また、鍵A1214と鍵B1215は、他の鍵Mで暗号化され、暗号化された鍵Aおよび鍵Bを不揮発性記憶装置1230に格納し、鍵Mのみを内部保護メモリ1205に格納するとしてもよい。この場合、鍵Mで暗号化された鍵Aと鍵Bは、機器110、111の工場製造時に、暗号化された保護データ1231および1232と一緒に不揮発性記憶装置1230に格納される。さらに、不揮発性保護メモリ1206は、内部保護メモリ1205に格納されるプログラムを格納してもよい。
<アプリ配信サーバ120の構成>
図5は、本発明の実施の形態1におけるアプリ配信サーバ120の構成図である。
図5において、アプリ配信サーバ120は、アプリ保持部2000と、アプリ受信処理部2001と、アプリ送信処理部2002とを含む。
アプリ保持部2000は、アプリ配信サーバ120が管理するアプリを格納する。
アプリ受信処理部2001は、ネットワークを介して接続された開発装置130と通信し、開発装置130がアップロードするアプリを受信する。アプリ受信処理部2001は、受信したアプリをアプリ保持部2000へ送信し、アプリの保持と管理を依頼する。
アプリ送信処理部2002は、ネットワークを介して接続された機器110と通信し、機器110が要求したアプリをアプリ保持部2000から取得し、送信する。また、アプリ保持部2000が保持しているアプリのリストを作成し、機器110へ送信する。
<開発装置130の構成>
図6は、本発明の実施の形態1における開発装置130の構成図である。
図6において、開発装置130は、パッケージ生成部3000と、設定ファイル生成部3001と、鍵ペア保持部3002と、鍵ペア生成部3003と、デバッグ処理部3004と、アップロード処理部3005とを含む。
パッケージ生成部3000は、開発者が作成したソースコードをコンパイルし、コンパイルしたアプリに、アプリ署名(Signature)、設定ファイルまたは公開鍵証明書(Certificate)を付加したパッケージファイルを生成する。詳細は後述する。
なお、アプリ署名(デジタル署名)方式に関しては非特許文献1の171ページから188ページに詳しく説明されている。また、公開鍵証明書に関しては、非特許文献3に詳しく説明されている。
設定ファイル生成部3001は、アプリに付加する設定ファイルを生成する。設定ファイルには、機器のどのリソースを使用するかの情報、開発者に関する情報、または他のアプリに対してどのようなサービスを提供するかなどの各種情報が記されている。これらの情報は、アプリ開発者が設定する値を元に生成される。
鍵ペア保持部3002は、パッケージに付加されるアプリ署名を生成および検証するために使用する鍵(公開鍵暗号方式における秘密鍵と公開鍵との鍵対)を保持する。公開鍵は、非特許文献3(ITU−T Recommendation X.509)で説明されている公開鍵証明書のフォーマットで保持される。
鍵ペア生成部3003は、公開鍵暗号方式における秘密鍵と公開鍵との鍵対を生成する。
なお、公開鍵暗号方式に関しては非特許文献1の107ページから130ページに詳しく説明されている。
デバッグ処理部3004は、開発装置130とUSB規格等で接続された機器111と通信し、開発者が作成したアプリをデバッグするための処理を行う。デバッグするための処理としては、生成したパッケージを用いたアプリのインストール、インストールしたアプリの実行、ブレークポイントの設定、およびログ出力の取得等の処理がある。
アップロード処理部3005は、開発装置130とネットワークを介して接続されたアプリ配信サーバ120と通信し、パッケージ生成部3000で生成したパッケージをアプリ配信サーバ120へアップロードする処理を行う。
<パッケージ生成部3000の構成>
図7は、本発明の実施の形態1におけるパッケージ生成部3000の構成図である。
図7において、パッケージ生成部3000は、コンパイラ3100と、リンカ3101と、パッケージ生成ツール3102とを含む。
コンパイラ3100は、入力されたプログラムソースコード3110をコンパイルし、オブジェクトファイルを生成する。
リンカ3101は、コンパイラ3100が生成したオブジェクトファイルとライブラリをリンクし、機器110、111が実行可能なファイル(プログラムファイル)を生成する。
パッケージ生成ツール3102は、リンカ3101が生成したプログラムファイルと、設定ファイル生成部3001が生成する設定ファイル3114と、鍵ペア保持部3002が保持する秘密鍵3112および公開鍵証明書3113とからダウンロードパッケージ3111を生成する。
<ダウンロードパッケージ3111の構成>
図8は、本発明の実施の形態1におけるダウンロードパッケージ3111の構成図である。
図8において、ダウンロードパッケージ3111は、アプリ3202と、デバドラ3203と、設定ファイル3204と、アプリ署名リスト3205と、公開鍵証明書3206とを含む。
アプリ3202とデバドラ3203は、開発者が作成したプログラムソースコード3110から、コンパイラ3100とリンカ3101を使用して生成したプログラムファイルである。
設定ファイル3204は、パッケージ生成ツール3102に入力される設定ファイル3114と同じである。
アプリ署名リスト3205は、アプリ3202と、デバドラ3203と、設定ファイル3204とのそれぞれの署名が並んだリストである。パッケージ生成ツール3102は、ダウンロードパッケージ3111生成時に、入力されたアプリ3202と、デバドラ3203と、設定ファイル3204とから、それぞれ署名を生成し、アプリ署名リスト3205を生成する。署名の生成には、秘密鍵3112が使用される。
公開鍵証明書3206は、パッケージ生成ツール3102に入力される公開鍵証明書3113と同じである。
なお、ダウンロードパッケージ3111は、アプリ3202と、デバドラ3203と、設定ファイル3204と、アプリ署名リスト3205と、公開鍵証明書3206とをそれぞれ1つずつを含むとしたが、これに限定されるものではなく、各ファイルは、1つであってもよいし、複数あってもよい。また、含まれないファイルがあってもよい。
<セキュアブート処理>
機器110、111は、汎用OS1001または保護環境1100で動作するソフトウェアが改ざんされていないかを、機器起動時に検証する。
以下、機器110、111が電源投入され汎用OS1001が起動するまでの方法(セキュアブート処理)を、図9のフローチャートを用いて説明する。
機器110、111に電源が投入されると、システムLSI1200内部にあるIPL1202が起動する。
IPL1202は、まず機器110、111のハードウェアの初期化処理を行う(S1000)。初期化処理では、メモリ1250の動作チェック、実行環境切替部1204の初期化、または周辺回路(図示しない)の初期化などの処理が行われる。その後、セキュアOS1101が起動する。
セキュアOS1101は、保護環境の初期化(安全なソフトウェア実行環境の構築)を行い、保護環境でアプリが動作可能な状態にした後、セキュアブート部1102をロード(S1001)し、セキュアブート部1102を起動する。セキュアブート部1102は、暗号化された状態で不揮発性記憶装置1230に格納されているため、実行環境切替部1204がシステムLSI1200に固有の鍵を用いて暗号化されたセキュアブート部1102を復号し、復号したセキュアブート部1102を内部保護メモリ1205へロードする。
セキュアブート部1102は、セキュアブート部1102の検証を行う(S1002)。つまり、セキュアブート部1102は、プログラムのハッシュ値を生成し、あらかじめ計算しておいた参照ハッシュ値と比較することで、セキュアブート部1102が改ざんされていないかを検証する。参照ハッシュ値は、工場出荷前に計算され、セキュアブート部1102に埋め込まれる。セキュアブート部1102は、参照ハッシュ値を埋め込んだ状態で暗号化され、不揮発性記憶装置1230に格納される。
なお、プログラムの検証にはハッシュ値を利用するとしたが、これに限定されるものではなく、ハッシュ値の代わりに署名を用いる方法でもよい。この時、セキュアブート部1102は、署名の検証に用いる公開鍵を埋め込んだ状態で暗号化され、不揮発性記憶装置1230に格納されてもよいし、セキュアブート部とは別に不揮発性記憶装置1230に格納されるとしてもよい。また、公開鍵を機器外部の別の装置から取得するとしてもよい。
セキュアブート部1102は、ステップS1002でセキュアブート部1102を検証した結果、セキュアブート部1102が改ざんされていないと判定した場合には、ステップS1003でOKと判定し、ステップS1004へ遷移する。ステップS1002でセキュアブート部1102を検証した結果、セキュアブート部1102が改ざんされていると判定された場合には、ステップS1003でNGと判定し、ステップS1006へ遷移する。
セキュアブート部1102は、ステップS1003でOKと判定した場合には、汎用OS1001の検証を行う(S1004)。検証方法は、S1002と同様の方法を用いる。
セキュアブート部1102は、ステップS1004で汎用OS1001を検証した結果、汎用OS1001が改ざんされていないと判定した場合には、ステップS1005でOKと判定し、処理を終了し、セキュアOS1101へ処理を戻す。ステップS1004で検証した結果、汎用OS1001が改ざんされていると判定した場合には、ステップS1005でNGと判定し、ステップS1006へ遷移する。
セキュアブート部1102は、S1003またはS1005でNGと判定した場合には、セキュアブート失敗フラグを設定する(S1006)。セキュアブート失敗フラグは、内部保護メモリ1205上の特定の領域に保存されるデータ(図示しない)である。セキュアOS1101、またはセキュアOS1101上で動作するアプリは、セキュアブート失敗フラグをチェックすることで機器110、111の状態を把握し、動作するか否かを決定する。
セキュアブート部1102は、ステップS1006の処理終了後、セキュアOS1101へ処理を戻す。
セキュアOS1101は、セキュアブート部1102から処理が戻ると、IPL1202へ処理を戻す。
IPL1202は、不揮発性記憶装置1230に格納されている汎用OS1001をメモリ1250の通常メモリ領域1220へロード(S1007)し、汎用OS1001を実行(起動)する。
なお、セキュアブート処理は、Trusted Computing Group(以下、「TCG」という)のMobile Phone WG(以下、「MPWG」という)で規定するセキュアブートを用いてもよい。
<保護データの管理方法>
機器110、111は、アプリA1008またはアプリB1009が使用する保護データを暗号化した状態で不揮発性記憶装置1230に格納している。
アプリA1008またはアプリB1009が保護データを使用する時、機器110、111は、アプリA1008またはアプリB1009からの読み込み依頼を受けて、不揮発性記憶装置1230に格納されている暗号化された保護データを読み込み、復号して、メモリ1250のトラステッドメモリ領域1240へ展開する。
アプリA1008またはアプリB1009が保護データの使用を終了する時、機器110、111は、アプリA1008またはアプリB1009からの書き込み依頼を受けて、トラステッドメモリ領域1240に展開した保護データを暗号化して、暗号化済みの保護データを不揮発性記憶装置1230に格納する。
以下、保護データの読み込み方法と、保護データの書き込み方法の詳細を、図10から図13のフローチャートを用いて説明する。
<保護データの読み込み処理>
以下、本発明の実施の形態1におけるアプリA1008の保護データ読み込み処理を、図10のフローチャートを用いて説明する。
アプリA1008は、保護データの読み込みを汎用OS1001の不揮発性メモリ管理部1003へ依頼する(S1010)。この時、アプリA1008は、読み込む保護データのファイル名(フォルダ名も含む)を依頼と一緒に不揮発性メモリ管理部1003に通知する。
不揮発性メモリ管理部1003は、アプリA1008から依頼されたデータが保護データであるかを確認する(S1011)。確認方法としては、ファイル名に含まれるフォルダ名が予め定められた保護データ格納専用のフォルダを示しているかチェックする方法を用いる。不揮発性メモリ管理部1003は、ステップS1011で、上記データが保護データであると確認した場合には(S1011でOK)、保護データ管理部1004に保護データの読み込み依頼(S1012)を行う。この時、不揮発性メモリ管理部1003は、読み込む保護データのファイル名(フォルダ名も含む)を依頼と一緒に保護データ管理部1004に通知する。ステップS1011で、上記データが保護データでないと確認した場合には、ステップS1016へ遷移する。
なお、保護データ格納専用のフォルダ名は、システム設計時に決定し、不揮発性メモリ管理部1003に埋め込んでもよい。また、アプリが決定し、不揮発性メモリ管理部1003に通知するとしてもよい。さらに、アプリの設定ファイル3204に記述され、不揮発性メモリ管理部1003が確認するとしてもよい。
保護データ管理部1004は、不揮発性メモリ管理部1003からの保護データ読み込み依頼を受けて、暗号化された保護データを不揮発性記憶装置1230から読み込み、メモリ1250上へ書き込む(S1013)。保護データ管理部1004は、暗号化された保護データを書き込む領域として、物理アドレスが連続したメモリ領域を確保する。
保護データ管理部1004は、読み込んだ暗号化された保護データを復号した結果を書き込む領域をメモリ1250上に確保する(S1014)。確保する領域は、物理アドレスが連続したメモリ領域である。
保護データ管理部1004は、読み込んだ暗号化された保護データの復号を暗復号処理部1104へ依頼する(S1015)。この時、暗号化された保護データを読み込んだメモリ1250上の領域情報(先頭物理アドレスとサイズ)、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)を一緒に通知する。
暗復号処理部1104は、保護データ管理部1004からの復号依頼を受けて、通知されたアドレスにある暗号化された保護データを復号する(S1016)。ステップS1015の復号処理では、メモリ設定部1103とトラステッドメモリ制御部1203と連携して、トラステッドメモリの設定も行う。これら復号処理の詳細は後述する。
復号処理終了後、暗復号処理部1104から保護データ管理部1004、不揮発性メモリ管理部1003を通して、アプリA1008へ処理が戻る。
保護データ管理部1004は、暗復号処理部1104から処理が戻った時に通知されるデータ識別子と、不揮発性メモリ管理部1003から通知されたファイル名と、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)との組をリストで管理する。データ識別子は、メモリ1250上に展開されている保護データを識別するための識別子で、メモリ1250上に複数の保護データを展開する場合には、それぞれに異なる識別子を割り当てる。
不揮発性メモリ管理部1003は、ステップS1011でアプリA1008が通知したファイルが保護データでないと確認した場合には(S1011でNG)、当該ファイルのデータを通常のデータとして、不揮発性記憶装置1230からメモリ1250上へ読み込む(S1017)。
アプリA1008は、読み込まれたデータにアクセスし、データに対して処理を行う。
<暗号化された保護データの復号処理(図10のS1016)>
以下、本発明の実施の形態1における暗号化された保護データの復号処理(図10のS1016)を、図11のフローチャートを用いて説明する。
暗復号処理部1104は、トラステッドメモリの設定をメモリ設定部1103へ依頼する(S1020)。この時、保護データ管理部1004から通知された復号用に確保したメモリの領域情報(先頭物理アドレスとサイズ)を一緒に通知する。
メモリ設定部1103は、暗復号処理部1104からのトラステッドメモリの設定依頼を受けて、まず、設定値を生成する(S1021)。設定値としては、トラステッドメモリとして設定するメモリの領域情報(先頭物理アドレスとサイズ)、データを使用するアプリA1008の識別子(アプリID)がある。トラステッドメモリとして使用するメモリ領域は、暗復号処理部1104から通知される復号用に確保したメモリの領域情報が示す領域である。また、アプリA1008のアプリIDとしては、汎用OS1001がアプリの識別に使用しているプロセスIDを使用する。プロセスIDは、汎用OS1001がプロセスIDを管理するために使用しているデータ構造(プロセスディスクリプタ等)から取得する。
メモリ設定部1103は、設定値を生成後、トラステッドメモリ制御部1203にトラステッドメモリの設定を依頼する(S1022)。この時、ステップS1021で生成した設定値を通知する。
トラステッドメモリ制御部1203は、メモリ設定部1103から通知された設定値を元にトラステッドメモリ領域1240を設定する(S1023)。トラステッドメモリ制御部1203の詳細な構造と処理フローは、構成図とフローチャートを用いて後ほど説明する。
設定処理終了後、トラステッドメモリ制御部1203からメモリ設定部1103、暗復号処理部1104へ処理が戻る。
暗復号処理部1104は、不揮発性保護メモリ1206に格納されている鍵A1214を取得する(S1024)。鍵A1214は、暗号化された保護データ1231と関連づけられた状態で格納されている。暗復号処理部1104は、データのヘッダ情報にあらかじめ暗号データ(暗号化された保護データ1231)の識別子を付加し、その識別子と鍵の格納先の対をリストで管理する。
なお、鍵A1214と暗号化された保護データ1231との関連づけは、データのヘッダ情報にあらかじめ暗号データの識別子を付加し、その識別子と鍵の格納先の対をリストで管理するとしたが、これに限定されるものではなく、暗号化された保護データのハッシュ値を識別子としてもよいし、アプリIDを識別子としてもよい。
暗復号処理部1104は、暗号化された保護データ1231を復号する(S1025)。復号したデータは、ステップS1023で設定したトラステッドメモリに展開する。
暗復号処理部1104は、さらに、復号した保護データの検証を行う(S1026)。検証方法は、まず、復号した保護データ(保護データ本体)のハッシュ値を計算する。その後、計算したハッシュ値と、暗号化された保護データ1231に含まれる検証値(復号後の検証値)とを比較し、一致するかどうかで、改ざんされたかどうかを判定する。
暗復号処理部1104は、ステップS1026で検証した結果、保護データが改ざんされていないと判定された場合には、ステップS1027でOKと判定し、データ識別子の生成を行う(S1028)。暗復号処理部1104は、生成したデータ識別子と、復号に使用した鍵と、保護データ管理部1004から通知された復号用のメモリの領域情報との組をリストで管理する。
暗復号処理部1104は、ステップS1026で検証した結果、保護データが改ざんされていると判定された場合には、ステップS1027でNGと判定し、トラステッドメモリの設定解除をメモリ設定部1103に依頼する(S1029)。暗復号処理部1104は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)をメモリ設定部1103に通知する。メモリ設定部1103は、トラステッドメモリの設定解除をトラステッドメモリ制御部1203へ依頼する。
トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除する(S1030)。
設定解除処理終了後、トラステッドメモリ制御部1203からメモリ設定部1103、暗復号処理部1104へ処理が戻る。
なお、トラステッドメモリの設定後、復号処理をするとしたが、これに限定されるものではなく、復号処理後にトラステッドメモリの設定をするとしてもよい。この時、ステップS1027で「OK」と判定した場合には、データ識別子の生成(S1028)に加えて、トラステッドメモリの設定処理が行われる。ステップS1027で「NG」と判定した場合には、何も処理は行なわれない。
<保護データの書き込み処理>
以下、本発明の実施の形態1におけるアプリA1008の保護データ書き込み処理を、図12のフローチャートを用いて説明する。
アプリA1008は、保護データの書き込みを汎用OS1001の不揮発性メモリ管理部1003へ依頼する(S1040)。この時、書き込む保護データのファイル名(フォルダ名も含む)を依頼と一緒に通知する。
不揮発性メモリ管理部1003は、アプリA1008から依頼されたデータが保護データであるか確認する(S1041)。確認方法としては、保護データの読み込み時(S1011)と同様に、ファイル名に含まれるフォルダ名が保護データ格納専用のフォルダを示しているかチェックする方法を用いる。保護データ格納専用のフォルダ名は、工場出荷前に不揮発性メモリ管理部1003に埋め込まれる。不揮発性メモリ管理部1003は、ステップS1041で、保護データであると確認した場合には(S1041でOK)、保護データ管理部1004に保護データの書き込み依頼(S1042)を行う。この時、不揮発性メモリ管理部1003は、書き込む保護データのファイル名(フォルダ名を含む)を依頼と一緒に通知する。ステップS1041で、保護データではないと確認した場合には(S1041でNG)、ステップS1046へ遷移する。
保護データ管理部1004は、不揮発性メモリ管理部1003からの保護データ書き込み依頼を受けて、まず、暗復号処理部1104にトラステッドメモリ上のデータの暗号化を依頼する(S1043)。保護データ管理部1004は、この時、書き込む保護データのファイル名から、データ識別子を取得し、依頼と一緒に通知する。さらに、保護データ管理部1004は、暗号化した保護データを格納するメモリ領域を確保し、その情報(先頭物理アドレスとサイズ)も通知する。確保する領域は、物理アドレスが連続したメモリ領域である。
暗復号処理部1104は、保護データ管理部1004からの暗号化依頼を受けて、保護データ復号時に作成した、データ識別子と領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、トラステッドメモリ上の対応する領域の保護データを暗号化する(S1044)。暗復号処理部1104は、暗号化した保護データを、通知された領域へ格納する。ステップS1044の暗号化処理では、暗復号処理部1104は、メモリ設定部1103およびトラステッドメモリ制御部1203と連携して、トラステッドメモリの設定解除も行う。これら暗号化処理の詳細は後述する。
暗号化処理終了後、暗復号処理部1104から保護データ管理部1004へ処理が戻る。
保護データ管理部1004は、暗号化した保護データをファイルに書き込む(S1045)。書き込み終了後、保護データ管理部1004は、保護データを展開する領域として確保していた領域を解放する。解放する領域は、データ識別子と関連づけて管理していた領域情報から取得する。その後、保護データ管理部1004から不揮発性メモリ管理部1003を通して、アプリA1008へ処理が戻る。
不揮発性メモリ管理部1003は、ステップS1041でアプリA1008が通知したファイルが保護データではないと確認した場合には(S1041でNG)、当該ファイルのデータを通常のデータとして、不揮発性記憶装置1230へ書き込む(S1046)。
<保護データの暗号化処理(図12のS1044)>
以下、本発明の実施の形態1における保護データの暗号化処理(図12のS1044)を、図13のフローチャートを用いて説明する。
暗復号処理部1104は、保護データ管理部1004からの暗号化依頼を受けて、保護データ復号時に作成した、データ識別子と、鍵と、領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、まず、領域のハッシュ値を計算し、検証値を生成する(S1050)。生成した検証値は、データの末尾に格納する。
暗復号処理部1104は、不揮発性保護メモリ1206に格納している鍵A1214を取得する(S1051)。この時、保護データ復号時に作成した、データ識別子と、鍵と、領域情報との組のリストから、通知されたデータ識別子に対応する鍵として、鍵A1214を取得する。
暗復号処理部1104は、取得した鍵A1214を用いてトラステッドメモリ上の保護データを暗号化する。暗復号処理部1104は、この時、保護データの末尾に格納した検証値も一緒に暗号化する。暗復号処理部1104は、暗号化した保護データを、保護データ管理部1004から通知された領域に格納する。
暗復号処理部1104は、暗号化した保護データを格納していた領域のトラステッドメモリの設定解除をメモリ設定部1103へ依頼する(S1053)。暗復号処理部1104は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)をメモリ設定部1103へ通知する。メモリ設定部1103は、トラステッドメモリの設定解除をトラステッドメモリ制御部1203へ依頼する。
トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除する(S1054)。
設定解除処理終了後、トラステッドメモリ制御部1203からメモリ設定部1103、暗復号処理部1104へ処理が戻る。メモリ設定部1103では、設定を解除した領域を、空き領域として管理する。
<トラステッドメモリ制御部1203の構成>
図14は、本発明の実施の形態1におけるトラステッドメモリ制御部1203の構成図である。
図14において、トラステッドメモリ制御部1203は、アクセス判定部1300と、領域判定部1301と、モード判定部1302と、プログラム・領域対応判定部1303とを含む。
アクセス判定部1300は、メモリ1250へのアクセスを検出し、トラステッドメモリ領域1240へのアクセスであった場合には、アクセスされた領域に設定したアプリからのアクセスであるかを判定し、アクセス許可または不許可の判定を行う。
領域判定部1301は、システムLSI1200内部からメモリ1250へのアクセスを検出した時に、通常メモリ領域1220へのアクセスか、トラステッドメモリ領域1240へのアクセスかを判定する。トラステッドメモリ領域1240へのアクセスであった場合には、領域判定部1301は、さらに、トラステッドメモリ領域1240内のどの領域へのアクセスであるかの判定も行う。
モード判定部1302は、メモリ1250へアクセスしたプログラムが、非特権モードで動作するプログラム(アプリ)か、特権モードで動作するプログラム(デバドラ、汎用OS)かを判定する。
プログラム・領域対応判定部1303は、メモリ1250へアクセスしたアプリ(プログラム)が、アクセスした領域に設定したアプリかを判定する。アクセスした領域に関する情報は、領域判定部1301から取得する。
以下に、アクセス判定部1300と領域判定部1301、モード判定部1302、プログラム・領域対応判定部1303の各部の詳細を構成図を用いて説明する。
<アクセス判定部1300の構成>
図15は、本発明の実施の形態1におけるアクセス判定部1300の構成図である。
図15において、アクセス判定部1300は、アクセス制御部1310と、有効フラグ保持部1311と、判定部1312と、設定部1313とを含む。
アクセス制御部1310は、システムLSI1200とメモリ1250を接続する外部専用バスとシステムLSI1200の内部バスとに接続され、内部バスと外部専用バス間の中継を行う。内部バス側からメモリ1250へアクセスがあった場合には、アクセス制御部1310は、判定部1312の判定結果に応じてアクセス許可または不許可のアクセス制御を行う。アクセス制御部1310は、このアクセス制御を、有効フラグ保持部1311に保持されている有効フラグが、「有効」を示している時のみ行う。アクセス制御部1310は、有効フラグが「無効」を示している場合には、アクセス制御を行わず、すべてのアクセスを許可する。
有効フラグ保持部1311は、アクセス制御部1310のアクセス制御を行う(有効)か行わない(無効)かを示す有効フラグを保持する。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、領域判定部1301、モード判定部1302およびプログラム・領域対応判定部1303の判定結果を参照する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
設定部1313は、有効フラグ保持部1311が保持する有効フラグの状態を変更する。状態の変更は、保護環境1100で動作するプログラム(メモリ設定部1103)が行う。設定部1313は、有効フラグ保持部1311が保持する有効フラグの状態を通知された状態に変更する。設定部1313は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、有効フラグの状態を変更する。
なお、アクセス判定部1300は、アクセス制御部1310と判定部1312のみを含んで構成され、有効フラグ保持部1311と設定部1313を含まないとしてもよい。この時、アクセス制御部1310は、内部バス側からメモリ1250へアクセスがあった場合には、直ちに判定部1312に判定を依頼し、その判定結果に応じてアクセス許可または不許可のアクセス制御を行う。
<領域判定部1301の構成>
図16は、本発明の実施の形態1における領域判定部1301の構成図である。
図16において、領域判定部1301は、判定部1320と、アドレス取得部1321と、アドレス保持部1322と、設定部1323と、領域番号通知部1324とを含む。
判定部1320は、内部バス側からメモリ1250へアクセスがあった時に、そのアクセス先の物理アドレスがトラステッドメモリとして設定されている領域かどうかを判定する。アクセス先の物理アドレスは、アドレス取得部1321から取得し、トラステッドメモリとして設定されている領域(物理アドレス)は、アドレス保持部1322から取得する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
アドレス取得部1321は、内部バス側からメモリ1250へアクセスがあった時のアクセス情報から、アクセス先の物理アドレスを取得する。アクセス情報は、アクセス先物理アドレスと、属性(読み込み、書き込み、実行)と、動作モード(特権モード、非特権モード)とを含む。
なお、アクセス情報には、更に、どの回路(CPUまたは周辺回路)からのアクセスであるかを示す情報を含んでもよいし、実行環境が通常環境と保護環境のどちらの実行環境であるかを示す情報を含んでもよい。
アドレス保持部1322は、トラステッドメモリとして設定している領域の物理アドレスを保持する。保持する情報としては、トラステッドメモリとして設定している領域の先頭物理アドレス(開始アドレス)とその領域のサイズ、その領域設定が有効であるかどうかを示すフラグ(有効/無効フラグ)である。アドレス保持部1322は、トラステッドメモリを複数設定している場合には、アドレスリストとして先頭物理アドレスとサイズの組を管理する。また、アドレス保持部1322は、領域を識別するための領域番号も一緒に管理する。アドレスリストの構造は、図17Aに示すように、有効/無効フラグと、領域番号と、先頭物理アドレス(開始アドレス)と、サイズとを1つの組としたリストである。
設定部1323は、アドレス保持部1322が保持する領域情報(先頭物理アドレスとサイズと、有効/無効フラグ)の設定を変更する。領域情報の変更は、保護環境1100で動作するプログラム(メモリ設定部1103)のみが行う。設定部1323は、アドレス保持部1322が保持する領域情報を通知された領域情報に変更する。設定部1323は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、領域情報を変更する。
領域番号通知部1324は、判定部1320によりトラステッドメモリと判定された領域番号を、他の判定部へ通知する。
なお、トラステッドメモリとして、1つの領域のみ設定可能な場合には、領域番号通知部1324はなくてもよい。他の判定部においては、領域が1つしかないため、アクセス先物理アドレスがトラステッドメモリであった場合には、その領域を特定可能である。
なお、アドレス保持部1322で保持するアドレスリストの構造は、図17Bに示すように、有効/無効フラグと、領域番号と、開始アドレスと、終了アドレスとからなる形式であってもよい。
<モード判定部1302の構成>
図18は、本発明の実施の形態1におけるモード判定部1302の構成図である。
図18において、モード判定部1302は、判定部1330と、CPUモード取得部1331とを含む。
判定部1330は、メモリ1250へのアクセス時にCPUの動作モードが、非特権モードであるかどうかを判定し、非特権モードの場合はOKを、特権モードの場合NGを返す。CPUの動作モードは、CPUモード取得部1331から取得する。
CPUモード取得部1331は、メモリ1250へのアクセス時に、アクセス命令を発行したプログラムがCPUの特権モードと非特権モードのどちらのモードで動作していたかを、アクセス情報から取得する。
<プログラム・領域対応判定部1303の構成>
図19は、本発明の実施の形態1におけるプログラム・領域対応判定部1303の構成図である。
図19において、プログラム・領域対応判定部1303は、判定部1340と、アプリID取得部1341と、領域番号取得部1342と、アプリID・領域対応保持部1343と、設定部1344とを含む。
判定部1340は、アプリID取得部1341と領域番号取得部1342から、アプリを識別するアプリIDと領域判定部1301から通知される領域番号をそれぞれ取得する。そして、判定部1340は、アプリID・領域対応保持部1343に格納しているアプリID・領域対応リストから、取得した領域番号で示されるメモリ領域に、取得したアプリIDを持つプログラムがアクセス可能か判定する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
アプリID取得部1341は、メモリ1250へのアクセス時に、アクセス命令を発行したプログラムの識別子(アプリID)を取得する。アプリIDとしては、汎用OS1001がアプリの識別に使用しているプロセスIDが使用される。プロセスIDは、汎用OS1001がプロセスIDを管理するために使用しているデータ構造(プロセスディスクリプタ等)から取得する。
領域番号取得部1342は、領域判定部1301の領域番号通知部1324からの通知を受け、判定部1340へ領域番号を通知する。
アプリID・領域対応保持部1343は、領域番号とその領域にアクセス許可するアプリIDの組のリストをアプリID・領域対応リストとして保持する。アプリID・領域対応リストの構造は、図20Aに示すように、領域番号とアプリIDを1つの組としたリスト構造である。
設定部1344は、アプリID・領域対応保持部1343が保持する領域番号とアプリIDの対応関係を変更する。この変更は、保護環境1100で動作するプログラム(メモリ設定部1103)が行う。設定部1344は、アプリID・領域対応保持部1343が保持する領域番号とアプリIDの対応関係を、通知された領域番号とアプリIDの対応関係に変更する。設定部1344は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、領域番号とアプリIDの対応関係を変更する。
なお、トラステッドメモリとして、1つの領域のみ設定可能な場合には、領域番号取得部1342を含まない構成でもよい。この場合、アプリID・領域対応リストとしては、アプリIDのみのリスト、あるいは、アプリIDを1つだけ含むリストとなる。
なお、アプリID・領域対応リストの構造は、領域番号とアプリIDを1つの組としたリストであるとしたが、これに限定されるものではなく、アドレスリスト1400と同様に、有効/無効フラグと領域番号とアプリIDとを1つの組として管理してもよい。また、アプリID・領域対応リストの構造は、1つの領域番号に複数のアプリIDが登録できる構造でもよい。複数のアプリIDが登録できる構造としては、例えば図20Bに示すような構造である。例えば、領域番号「1」で指定されるトラステッドメモリの領域は、アプリIDが「1001」のアプリと「1104」のアプリとで共有されることが示されている。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態1におけるアクセス判定部1300のアクセス判定処理を、図21のフローチャートを用いて説明する。
アクセス制御部1310は、有効フラグ保持部1311に格納されている有効フラグを取得する(S1100)。
アクセス制御部1310は、有効フラグが「有効」を示しているか確認する(S1101)。
アクセス制御部1310は、ステップS1101で、「有効」であると確認した場合には、判定部1312へ、アクセス判定を依頼する(S1102)。
判定部1312は、領域判定部1301にトラステッドメモリへのアクセスかどうかの判定を依頼する(S1103)。領域判定部1301の判定処理の詳細は、後述する。
判定部1312は、ステップS1103の判定結果が、「トラステッドメモリへのアクセスである」である場合には、ステップS1104でYESと判定し、プログラム・領域対応判定部1303から判定結果を取得する(S1105)。プログラム・領域対応判定部1303の判定処理の詳細は、後述する。判定部1312は、ステップS1103で「トラステッドメモリへのアクセスではない」と判定した場合には、ステップS1104でNOと判定し、判定部1312の判定結果を「許可」とする(S1108)。
判定部1312は、さらに、モード判定部1302から判定結果を取得する(S1106)。判定処理の詳細は、モード判定部1302の構成で説明した通りである。
判定部1312は、プログラム・領域対応判定部1303とモード判定部1302から取得した判定結果が、どちらもOKであるか確認する(S1107)。
判定部1312は、ステップS1107で、どちらもOKであると確認した場合には、判定結果を「許可」とする(S1108)。ステップS1107で、少なくともどちらか一方がNGであると確認した場合には、判定結果を「不許可」とする(S1109)。
判定部1312は、判定結果をアクセス制御部1310へ通知する(S1110)。
アクセス制御部1310は、ステップS1101で、「無効」であると判断した場合には、判定結果を「許可」とする(S1111)。
アクセス制御部1310は、判定結果に応じてアクセス制御処理を行う(S1112)。判定結果が「許可」であった場合には、アクセス制御部1310は、メモリ1250へのアクセス処理を継続して行う。判定結果が「不許可」であった場合には、アクセス制御部1310は、メモリ1250へのアクセス処理を中止し、エラーを返す。
なお、アクセス制御部1310は、判定結果が「不許可」であった場合にはエラーを返すとしたが、これに限定されるものではなく、アクセス結果として特定の値(例えば、0x0000または0xFFFF)を返すとしてもよい。
<領域判定部1301の判定処理(図21のS1103)>
以下、本発明の実施の形態1における領域判定部1301の判定処理(図21のS1103)を、図22のフローチャートを用いて説明する。
判定部1320は、アドレス取得部1321から、アクセス先の物理アドレスを取得する(S1120)。
次に、判定部1320は、アドレス保持部1322からトラステッドメモリとして設定している領域の物理アドレスを取得する。取得する情報は、領域番号と、先頭物理アドレスと、サイズとである。
判定部1320は、取得したアクセス先物理アドレスがトラステッドメモリとして設定している領域に含まれるかを判定する(S1122)。つまり、判定部1320は、アドレスリストから1組の先頭物理アドレスとサイズの組を取得し、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認する。判定部1320は、条件を満たす場合、アクセス先物理アドレスがトラステッドメモリに含まれると判定し、その領域番号を記憶する。判定部1320は、この処理を、アドレス保持部1322に保持されているアドレスリスト内のすべての有効になっている領域に対して行う。アクセス先物理アドレスが、リスト内のどの領域にも含まれない場合には、判定部1320は、アクセス先物理アドレスがトラステッドメモリに含まれないと判定する。
判定部1320は、ステップS1122で、アクセス先物理アドレスがトラステッドメモリに含まれると判定した場合には、ステップS1123でYESと判定し、アクセス先物理アドレスが含まれる領域番号を、領域番号通知部1324を通して、プログラム・領域対応判定部1303などに通知する(S1124)。
最終的に、判定部1320は、メモリ1250へのアクセスがトラステッドメモリへのアクセスであると判定する(S1125)。
判定部1320は、ステップS1122で、アクセス先物理アドレスがトラステッドメモリに含まれないと判定した場合には、ステップS1123でNOと判定し、メモリ1250へのアクセスがトラステッドメモリへのアクセスではないと判定する(S1126)。
<プログラム・領域対応判定部1303の判定処理(図21のS1105)>
以下、プログラム・領域対応判定部1303の判定処理(図21のS1105)を、図23のフローチャートを用いて説明する。
判定部1340は、アプリID取得部1341からアプリIDを取得する(S1130)。
判定部1340は、領域番号取得部1342から領域判定部1301が通知する領域番号を取得する(S1131)。
判定部1340は、アプリID・領域対応保持部1343からアプリID・領域対応リストを取得する(S1132)。取得する情報は、領域番号とその領域にアクセス許可するアプリIDを1つの組としたリストである。
判定部1340は、ステップS1130で取得したアプリIDとステップS1131で取得した領域番号が、ステップS1132で取得したアプリID・領域対応リストに含まれる組み合わせであるかを判定する(S1133)。つまり、判定部1340は、ステップS1131で取得した領域番号がアプリID・領域対応リストに含まれるか調べる。ステップS1131で取得した領域番号が含まれる場合には、判定部1340は、その領域番号と組になっているアプリIDをアプリID・領域対応リストから抽出する。判定部1340は、抽出したアプリIDが、ステップS1130で取得したアプリIDと一致するか確認する。アプリIDが一致した場合には、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定する。アプリID・領域対応リストに領域番号が含まれない場合、またはアプリIDが一致しない場合には、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれないと判定する。ステップS1131で取得した領域番号が複数ある場合には、判定部1340は、それぞれの領域番号に対して、上記の処理を適用する。取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定した領域が1つもない場合には、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれないと判定する。それ以外の場合は、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定する。
判定部1340は、ステップS1133で、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定した場合には、ステップS1134でOKと判定し、領域に対応づけたアプリからのアクセスであると判定する(S1135)。
判定部1340は、ステップS1133で、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれないと判定した場合には、ステップS1134でNGと判定し、領域に対応づけられていないアプリからのアクセスと判定する(S1136)。
<メモリ設定部1103の設定値の生成処理(図11のS1021)>
以下、本発明の実施の形態1におけるメモリ設定部1103の設定値の生成処理(図11のS1021)を、図24のフローチャートを用いて説明する。
メモリ設定部1103は、トラステッドメモリ領域1240を使用する前に、有効フラグ保持部1311が保持する有効フラグを確認する(S1140)。
メモリ設定部1103は、ステップS1140で、有効フラグが「無効」になっていると確認した場合には、アクセス判定部1300の設定部1313に依頼して、有効フラグ保持部1311が保持する有効フラグを「有効」に設定する(S1141)。
メモリ設定部1103は、ステップS1140で、「有効」になっていると確認した場合、または、ステップS1141の処理を実行後、ステップS1142へ遷移する。
メモリ設定部1103は、自身が管理する領域番号から、トラステッドメモリの領域番号として、トラステッドメモリ制御部1203に設定していない未使用の領域番号を取得する(S1142)。領域番号の数は、システム設定時に決定される。領域番号は、「使用」または「未使用」を示すフラグと、その領域番号に設定する領域情報(先頭物理アドレスとサイズ)と一緒に領域番号管理テーブルとして管理される。
メモリ設定部1103は、ステップS1142で取得した領域番号と、トラステッドメモリ設定依頼時に暗復号処理部1104から通知される復号用に確保したメモリの領域情報(先頭物理アドレスとサイズ)とを1つの組として、領域判定部1301への設定値を生成する(S1143)。
メモリ設定部1103は、ステップS1142で取得した領域番号と、汎用OS1001から取得したアプリIDとを1つの組として、プログラム・領域対応判定部1303への設定値を生成する(S1144)。
なお、メモリ設定部1103は、ステップS1143で、領域判定部1301への設定値を生成する時に、暗復号処理部1104から通知される領域情報が示す領域が、その時点で有効になっている領域と重なるかチェックしてもよい。メモリ設定部1103は、重なる場合は、エラーを返してもよいし、重ならない領域のみトラステッドメモリの設定をするために設定値を生成してもよい。
なお、メモリ設定部1103は、ステップS1144で、プログラム・領域対応判定部1303への設定値を生成する時に、トラステッドメモリに設定する領域が他の領域と重なる場合は、アプリIDが異なるかチェックしてもよい。メモリ設定部1103は、アプリIDが異なる場合は、エラーを返してもよいし、重ならない領域のみそのアプリIDを含む設定値を生成してもよい。メモリ設定部1103は、アプリIDが同じ場合は、重なる状態のまま設定値を生成してもよい
<メモリ設定部1103の設定解除依頼処理>
以下、本発明の実施の形態1におけるメモリ設定部1103の設定解除依頼処理を、図25のフローチャートを用いて説明する。
メモリ設定部1103は、暗復号処理部1104から通知された設定を解除する領域の領域情報から、領域番号を取得する(S1150)。
メモリ設定部1103は、ステップS1150で取得した領域番号の有効/無効フラグを無効に設定するように、トラステッドメモリ制御部1203へ依頼する(S1151)。
メモリ設定部1103は、領域番号管理テーブルを参照し、すべての領域の設定が解除され、未使用の状態になっているか確認する(S1152)。
メモリ設定部1103は、ステップS1152で、すべての領域の設定が解除されていると判定した場合、「YES」と判定し、有効フラグ保持部1311が保持する有効フラグを「無効」に設定する(S1153)。
メモリ設定部1103は、ステップS1152で、すべての領域の設定が解除されていないと判定した場合、「NO」と判定し、処理を終了する。
なお、ステップS1151で、領域を無効に設定するようトラステッドメモリ制御部1203へ依頼するとしたが、その処理(S1151)後、メモリ設定部1103は、トラステッドメモリとして設定されていた領域を、異なる値(例えば、全ビット“0”、全ビット“1”、乱数、または所定のビットパターンなど)で上書きする処理を行ってもよい。また、上記処理は、メモリ設定部1103が行うのではなく、トラステッドメモリ制御部1203が行ってもよい。トラステッドメモリ制御部1203が行う場合は、ステップS1151の後で行ってもよいし、ステップS1151の依頼を受けた時に行ってもよい。ステップS1151の依頼を受けた時に行う場合は、トラステッドメモリ制御部1203は、設定を「無効」に変更する前に処理してもよいし、変更した後に処理してもよい。
以上説明したように、本発明の実施の形態1によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態1によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
(実施の形態2)
本発明の実施の形態2は、本発明の実施の形態1のトラステッドメモリ制御部1203に対して、トラステッドメモリ領域1240へのアクセス判定を、領域判定部1301とモード判定部1302と、プログラム・領域対応判定部1303との3つの判定部で判定するのではなく、モード判定部1302とプログラム・領域判定部1304の2つの判定部で判定する構成とする。
以下、本発明の実施の形態2におけるトラステッドメモリ制御部1203の構成および判定処理を説明する。なお、本発明の実施の形態1と同じ構成要素については同じ符号を用い、説明を省略する。
<トラステッドメモリ制御部1203の構成>
図26は、本発明の実施の形態2のトラステッドメモリ制御部1203の構成図である。
図26において、トラステッドメモリ制御部1203は、アクセス判定部1300と、モード判定部1302と、プログラム・領域判定部1304とを含む。
プログラム・領域判定部1304は、アクセス判定部1300がシステムLSI1200内部からメモリ1250へのアクセスを検出した時に、当該アクセスが、通常メモリ領域1220へのアクセスか、トラステッドメモリ領域1240へのアクセスかを判定し、トラステッドメモリ領域1240へアクセスしたアプリ(プログラム)が、アクセスした領域に設定されたアプリかを判定する。
以下に、本発明の実施の形態2におけるアクセス判定部1300とプログラム・領域判定部1304の各部の詳細を構成図を用いて説明する。
<アクセス判定部1300の構成>
アクセス判定部1300は、本発明の実施の形態1と同じ構成となり、アクセス制御部1310と、有効フラグ保持部1311と、判定部1312と、設定部1313とを含む。
以下、本発明の実施の形態1と動作が異なる判定部1312に関してのみ説明する。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、モード判定部1302およびプログラム・領域判定部1304の判定結果を参照する。判定処理の詳細は、後述する。
<プログラム・領域判定部1304の構成>
図27は、本発明の実施の形態2のプログラム・領域判定部1304の構成図である。
図27において、プログラム・領域判定部1304は、判定部1350と、アプリID取得部1351と、アドレス取得部1352と、アプリID・アドレス保持部1353と、設定部1354とを含む。
判定部1350は、アプリID取得部1351とアドレス取得部1352から、アプリを識別するアプリID(プロセスID)とアクセス先の物理アドレスとをそれぞれ取得する。そして、判定部1350は、アプリID・アドレス保持部1353に格納しているアプリID・アドレス対応リストに基づいて、取得した物理アドレスで示されるメモリ領域に、取得したアプリIDを持つプログラムがアクセス可能か判定する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
アプリID取得部1351は、本発明の実施の形態1における、アプリID取得部1341(図19)と同様の機能を持ち、メモリ1250へのアクセス時に、アクセス命令を発行したプログラムの識別子(アプリID)を取得する。
アドレス取得部1352は、本発明の実施の形態1における、アドレス取得部1321(図16)と同様の機能を持ち、内部バス側からメモリ1250へアクセスがあった時のアクセス情報から、アクセス先の物理アドレスを取得する。
アプリID・アドレス保持部1353は、領域情報(開始アドレスとサイズ)とその領域にアクセス許可するアプリIDとの組のリストをアプリID・アドレス対応リストとして保持する。アプリID・アドレス対応リストの構造は、図28Aに示すように、領域番号と、有効/無効フラグと、先頭物理アドレス(開始アドレス)と、サイズと、アプリIDとを1つの組とするリストである。
なお、アプリID・アドレス保持部1353で保持するアプリID・アドレス対応リストの構造は、図28Bに示すように、領域番号と、有効/無効フラグと、開始アドレスと、終了アドレスと、アプリIDとからなる形式であってもよい。
設定部1354は、アプリID・アドレス保持部1353が保持する有効/無効フラグと、領域情報(開始アドレスとサイズ)と、アプリIDの値とを変更する。この変更は、保護環境1100で動作するプログラム(メモリ設定部1103)が行う。設定部1354は、アプリID・アドレス保持部1353が保持する有効/無効フラグと、領域情報(開始アドレスとサイズ)と、アプリIDの値とを、通知された値に変更する。設定部1354は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、有効/無効フラグと、領域情報(開始アドレスとサイズ)と、アプリIDの値とを変更する。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態2におけるアクセス判定部1300のアクセス判定処理を、図29のフローチャートを用いて説明する。本発明の実施の形態1と同じ構成要素については同じ符号を付す。
アクセス制御部1310は、有効フラグ保持部1311に格納されている有効フラグを取得する(S1200)。
アクセス制御部1310は、有効フラグが「有効」を示しているか確認する(S1201)。
アクセス制御部1310は、ステップS1201で、「有効」であると確認した場合には、判定部1312へ、アクセス判定を依頼する(S1202)。
判定部1312は、プログラム・領域判定部1304にトラステッドメモリへの許可されたアプリからのアクセスかどうかの判定を依頼する(S1203)。プログラム・領域判定部1304の判定処理の詳細は、後述する。
判定部1312は、ステップS1203の判定結果が、「プログラムがアクセス可能」である場合には、ステップS1204でOKと判定し、モード判定部1302から判定結果を取得する(S1205)。判定処理の詳細は、モード判定部1302の構成で説明した通りである。
判定部1312は、ステップS1205でOKであると判定した場合には、ステップS1206でOKと判定し、判定部1312の判定結果を「許可」とする(S1207)。
判定部1312は、ステップS1205でNGであると判定した場合には、ステップS1206でNGと判定し、判定部1312の判定結果を「不許可」とする(S1208)。
判定部1312は、ステップS1203の判定結果が、「プログラムがアクセス不可能」である場合には、ステップS1204でNGと判定し、判定部1312の判定結果を「不許可」とする(S1208)。
判定部1312は、ステップS1203の判定結果が、「トラステッドメモリの領域外」である場合には、ステップS1204で領域外と判定し、判定部1312の判定結果を「許可」とする(S1207)。
判定部1312は、判定結果をアクセス制御部1310へ通知する(S1209)。
アクセス制御部1310は、ステップS1201で、「無効」であると判断した場合には、判定結果を「許可」とする(S1210)。
アクセス制御部1310は、判定結果に応じてアクセス制御処理を行う(S1211)。判定結果が「許可」であった場合には、トラステッドメモリへのアクセス処理を継続して行う。判定結果が「不許可」であった場合には、トラステッドメモリへのアクセス処理を中止し、エラーを返す。
<プログラム・領域判定部1304の判定処理(図29のS1203)>
以下、本発明の実施の形態2におけるプログラム・領域判定部1304の判定処理(図29のS1203)を、図30のフローチャートを用いて説明する。
判定部1350は、アプリID取得部1351からアプリIDを取得する(S1230)。
判定部1350は、アドレス取得部1352からアクセス先の物理アドレスを取得する(S1231)。
判定部1350は、アプリID・アドレス保持部1353に保持されているアプリID・アドレス対応リストから、先頭物理アドレス、サイズ、アプリIDの組を1つ取得する(S1232)。この時、アプリID・アドレス対応リストの有効/無効フラグを確認し、「有効」と記されている項目のみを取得する。
判定部1350は、ステップS1231で取得したアクセス先物理アドレスがステップS1232で取得した先頭物理アドレスとサイズで表される領域に含まれるか判定する(S1233)。つまり、判定部1350は、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認する。判定部1350は、条件を満たす場合、アクセス先物理アドレスがトラステッドメモリに含まれると判定し、条件を満たさない場合、アクセス先の物理アドレスがトラステッドメモリに含まれないと判定する。
判定部1350は、ステップS1233で、アクセス先物理アドレスがトラステッドメモリに含まれると判定した場合には、ステップS1234でYESと判定し、ステップS1230で取得したアプリIDが、ステップS1232で取得したアプリIDと一致するか判定する(S1235)。
ステップS1233で、アクセス先物理アドレスがトラステッドメモリに含まれないと判定した場合(S1234でNO)、または、ステップS1235の処理の後、判定部1350は、アプリID・アドレス保持部1353が保持するアプリID・アドレス対応リストの「有効」と記されている項目に関して、すべての項目に関してステップS1233の判定が終了したか判定する(S1236)。判定部1350は、ステップS1236で、すべての項目に関して判定が終了したと判定した場合、「YES」と判定し、ステップS1237へ遷移する。判定部1350は、ステップS1236で、すべての項目に関して判定が終了していないと判定した場合、「NO」と判定し、ステップS1232へ遷移する。
判定部1350は、アプリID・アドレス対応リスト内の1つ以上の項目において、アクセス先物理アドレスが含まれる領域があった場合、ステップS1237で「YES」と判定し、ステップS1238へ遷移する。
判定部1350は、ステップS1235で一致すると判定した項目が1つでもあった場合、ステップS1238で「YES」と判定し、プログラムがアクセス可能と判定する(S1239)。
判定部1350は、ステップS1235で一致すると判定した項目が1つもなかった場合、ステップS1238で「NO」と判定し、プログラムがアクセス不可能と判定する(S1240)。
判定部1350は、アプリID・アドレス対応リスト内のすべての項目において、アクセス先物理アドレスが含まれる領域がなかった場合、ステップS1237で「NO」と判定し、アクセス先がトラステッドメモリの領域外と判定する(S1241)。
以上説明したように、本発明の実施の形態2によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態2によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
(実施の形態3)
本発明の実施の形態3は、本発明の実施の形態1の機器110、111のハードウェア構成において、トラステッドメモリの領域を汎用OS1001またはアプリA1008等を格納するメモリと同じメモリ1250上に設けるのではなく、トラステッドメモリ専用のメモリを利用する構成とする。また、トラステッドメモリ1270は、特権モードで動作するプログラム(汎用OS1001)からアクセス不可能なメモリとし、複数の領域を設定することができない場合について説明する。
以下、本発明の実施の形態3における機器110、111のハードウェア構成および判定処理を説明する。なお、本発明の実施の形態1と同じ構成要素については同じ符号を用い、説明を省略する。
<機器110、111のハードウェア構成>
図31は、本発明の実施の形態3における機器110、111のハードウェア構成図である。図31において、図3と同じ構成要素については同じ符号を用い、説明を省略する。
図31において、機器110、111は、システムLSI1200と、不揮発性記憶装置1230と、通常メモリ1260と、トラステッドメモリ1270とを含む。システムLSI1200は、不揮発性記憶装置1230、通常メモリ1260とそれぞれ外部バスを介して接続されている。また、システムLSI1200は、トラステッドメモリ1270と専用の外部バスを用いて接続されている。
システムLSI1200は、トラステッドメモリ制御部1203の構成、および、動作が異なるのみで、他の構成に関しては本発明の実施の形態1と同じである。トラステッドメモリ制御部1203の構成、および、動作に関しては後述する。
通常メモリ1260は、汎用OS1221と、ダウンロード制御アプリ1222と、アプリA1223と、アプリB1224と、ダウンロード制御アプリ用のデータ1225と、アプリA用のデータ1226と、アプリB用のデータ1227とを格納する。
トラステッドメモリ1270は、アプリA用の保護データ1241とアプリB用の保護データ1242を格納する。トラステッドメモリ1270は、アプリのみがアクセス可能なメモリ領域であり、アクセス可能または不可能の制御は、トラステッドメモリ制御部1203によって実現される。
<保護データの管理方法>
以下、本発明の実施の形態3の保護データの管理方法を、本発明の実施の形態1における保護データの管理方法の説明図(図10から図13)を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図10から図13のうち、本発明の実施の形態1と異なる処理の部分のみを説明する。
まず、図10を用いて、本発明の実施の形態3における保護データの読み込み処理に関して説明する。
ステップS1010からステップS1013に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1014において、保護データ管理部1004が、読み込んだ暗号化された保護データを復号した結果を書き込む領域をメモリ1250上に確保するとしていた。しかし、本発明の実施の形態3においては、トラステッドメモリ領域として利用可能なメモリは、トラステッドメモリ1270のみである。そのため、ステップS1014は、メモリ1250上に領域を確保するのではなく、トラステッドメモリ1270を使用するフラグを設定する処理となる。保護データ管理部1004は、追加の処理として、トラステッドメモリ1270を使用するフラグが既に設定されていた場合には、復号依頼(ステップS1015)は行わず、不揮発性メモリ管理部1003へ終了通知を行う。
また、本発明の実施の形態1では、ステップS1015において、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)を一緒に通知するとしていた。しかし、本発明の実施の形態3においては、ステップS1014でメモリ1250上に領域を確保しない。このため、保護データ管理部1004は、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)を暗復号処理部1104へ通知しない。
ステップS1106以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
次に、図11を用いて、本発明の実施の形態3における暗号化された保護データの復号処理(S1012)に関して説明する。
本発明の実施の形態1では、ステップS1020において、保護データ管理部1004から通知された復号用に確保したメモリの領域情報(先頭物理アドレスとサイズ)を一緒に通知するとしていた。しかし、本発明の実施の形態3においては、復号用に確保したメモリの領域情報は通知されないため、暗復号処理部1104は、メモリ設定部1103にはこの領域情報を通知しない。
本発明の実施の形態1では、ステップS1021において、設定値を生成するとしていた。しかし、本発明の実施の形態3では、領域情報とアプリIDは生成されない。トラステッドメモリ1270の領域情報は、設計時に決定されるため、メモリ設定部1103は、このステップでは領域情報を生成しない。また、トラステッドメモリ制御部1203にはアプリIDを設定しないため、メモリ設定部1103は、アプリIDも生成しない。本ステップは不要となる。
本発明の実施の形態1では、ステップS1022において、ステップS1021で生成した設定値を通知するとしていた。しかし、本発明の実施の形態3においては、ステップS1021が不要となるため、メモリ設定部1103は、設定値を通知しない。
本発明の実施の形態1では、ステップS1023において、トラステッドメモリ制御部1203は、メモリ設定部1103から通知された設定値を元にトラステッドメモリ領域1240を設定するとしていた。しかし、本発明の実施の形態3では、トラステッドメモリ制御部1203は、設計時に決定される領域情報を元に、トラステッドメモリ1270全体をトラステッドメモリ領域として設定する。
ステップS1024からステップS1028までの処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
本発明の実施の形態1では、ステップS1029において、暗復号処理部1104は、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)をメモリ設定部1103に通知するとしていた。しかし、本発明の実施の形態3においては、暗復号処理部1104は、領域情報を通知しない。
本発明の実施の形態1では、ステップS1030において、トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除するとしていた。しかし、本発明の実施の形態3においては、トラステッドメモリ1270全体がトラステッドメモリ領域のため、領域情報は通知されず、トラステッドメモリ制御部1203は、トラステッドメモリ1270の設定を解除する。
次に、図12を用いて、本発明の実施の形態3における保護データの書き込み方法に関して説明する。
ステップS1040からステップS1043に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1044において、暗復号処理部1104は、データ識別子と領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、トラステッドメモリ上の対応する領域の保護データを暗号化するとしていた。しかし、本発明の実施の形態3においては、暗復号処理部1104は、トラステッドメモリ1270全体を暗号化する。
ステップS1045以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
次に、図13を用いて、本発明の実施の形態3における保護データの暗号化処理(S1044)に関して説明する。
ステップS1050からステップS1052に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1053において、暗復号処理部1104は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)を、メモリ設定部1103に通知するとしていた。しかし、本発明の実施の形態3においては、設定を解除する領域は、トラステッドメモリ1270全体であるため、暗復号処理部1104は、領域情報をメモリ設定部1103に通知しない。
本発明の実施の形態1では、ステップS1054において、トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除するとしていた。しかし、本発明の実施の形態3においては、領域情報は通知されない。このため、トラステッドメモリ制御部1203は、トラステッドメモリの設定解除を、トラステッドメモリ1270全体に対して行う。
以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
<トラステッドメモリ制御部1203の構成>
図32は、本発明の実施の形態3におけるトラステッドメモリ制御部1203の構成図である。
図32において、トラステッドメモリ制御部1203は、アクセス判定部1300と、領域判定部1301と、モード判定部1302とを含む。
以下に、本発明の実施の形態3におけるアクセス判定部1300と領域判定部1301の各部の詳細を構成図を用いて説明する。
<アクセス判定部1300の構成>
図33は、本発明の実施の形態3におけるアクセス判定部1300の構成図である。
図33において、アクセス判定部1300は、アクセス制御部1310と判定部1312とを含む。
アクセス制御部1310は、システムLSI1200とメモリ1250とを接続する外部専用バスと、システムLSI1200の内部バスとに接続され、内部バスと外部専用バス間のデータ中継を行う。内部バス側からメモリ1250へアクセスがあった場合には、アクセス制御部1310は、判定部1312の判定結果に応じてアクセス許可または不許可のアクセス制御を行う。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、領域判定部1301およびモード判定部1302の判定結果を参照する。判定処理の詳細は、後述する。
<領域判定部1301の構成>
図34は、本発明の実施の形態3における領域判定部1301の構成図である。
図34において、領域判定部1301は、判定部1320と、アドレス取得部1321と、アドレス保持部1322とを含む。
以下、本発明の実施の形態1と動作が異なる判定部1320とアドレス保持部1322に関してのみ説明する。
判定部1320は、内部バス側からメモリ1250へアクセスがあった時に、そのアクセス先の物理アドレスがトラステッドメモリとして設定されている領域かどうかを判定する。アクセス先の物理アドレスは、アドレス取得部1321から取得し、トラステッドメモリとして設定されている領域(物理アドレス)は、アドレス保持部1322から取得する。判定処理の詳細は、後述する。
アドレス保持部1322は、トラステッドメモリとして設定している領域の物理アドレスを保持する。保持する情報としては、トラステッドメモリとして設定している領域の先頭物理アドレス(開始アドレス)とその領域のサイズである。これらの情報は、特権モードから変更できない領域に記憶される。例えば、システムLSI内のマスクROMもしくはPROM、システムLSIの内部レジスタ、内部保護メモリ1205、または不揮発性保護メモリ1206などに記憶される。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態3のアクセス判定部1300のアクセス判定処理を、本発明の実施の形態1におけるアクセス判定部1300のアクセス判定処理の説明図(図21)を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図21のうち、本発明の実施の形態1と異なる処理の部分のみを説明する。
ステップS1100からステップS1101とステップS1111とは、有効フラグが存在しないため、処理を行わない。
ステップS1102からステップS1104に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態3ではステップS1105の処理は実行されない。判定部1312は、ステップS1103の判定結果が、「トラステッドメモリである」である場合には、ステップS1104でYESと判定し、モード判定部1302から判定結果を取得する(S1106)。ステップS1106は、本発明の実施の形態1と同じ処理である。
本発明の実施の形態1では、ステップS1107において、判定部1312は、プログラム・領域対応判定部1303とモード判定部1302とから取得した判定結果が、どちらもOKであるか確認するとしていた。しかし、本発明の実施の形態3では、判定部1312は、モード判定部1302から取得した判定結果がOKであるか確認する。
ステップS1108以降(ステップS1111を除く)の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
<領域判定部1301の判定処理>
以下、本発明の実施の形態3の領域判定部1301の判定処理を、本発明の実施の形態1における領域判定部1301の判定処理の説明図(図22)を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図22のうち、本発明の実施の形態1と異なる処理の部分のみを説明する。
ステップS1120からステップS1121に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1122において、判定部1320は、アドレスリストから1組の先頭物理アドレスとサイズの組を取得し、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認するとしていた。また、判定部1320は、この処理を、アドレス保持部1322に保持されているアドレスリスト内のすべての有効になっている領域に対して行うとしていた。しかし、本発明の実施の形態3においては、アドレス保持部1322では、アドレスリストではなく、トラステッドメモリとして設定している領域の先頭物理アドレス(開始アドレス)とその領域のサイズを1組分保持しているのみである、そのため、ステップS1121とステップS1122を繰り返す処理は行われない。
ステップS1123以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
以上説明したように、本発明の実施の形態3によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態3によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
(実施の形態4)
本発明の実施の形態1のアクセス判定部1300は、モード判定部1302の判定結果を用いてアクセス許可または不許可の判定を行うとしたが、本発明の実施の形態4では、アプリとデバドラの間でデータの送受信が必要な場合は、モード判定部1302の判定結果を用いずに、アクセス許可または不許可の判定を行う。
図35は、アプリとデバドラの間でデータの送受信を可能にするアクセス判定部1300の構成図である。
図35において、アクセス判定部1300は、アクセス制御部1310と、有効フラグ保持部1311と、判定部1312と、設定部1313と、デバドラアクセス許可アプリIDリスト保持部1314とを含む。
以下、本発明の実施の形態1と動作が異なる判定部1312とデバドラアクセス許可アプリIDリスト保持部1314に関してのみ説明する。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、領域判定部1301、モード判定部1302およびプログラム・領域対応判定部1303の判定結果を参照し、アクセスの許可または不許可を判定する。本発明の実施の形態4においては、アプリから呼び出されたデバドラがメモリ1250へアクセスした時には、プログラム・領域対応判定部1303のアプリID取得部1351は、デバドラを呼び出したアプリのアプリIDを取得する。
デバドラアクセス許可アプリIDリスト保持部1314は、特権モードで動作するデバドラによるトラステッドメモリへのアクセスを許可するアプリのアプリIDのリスト(デバドラアクセス許可アプリIDリスト)を保持する。デバドラアクセス許可アプリIDリストの構造は、図36に示すように、アプリIDをリストで管理する。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態4におけるアクセス判定部1300のアクセス判定処理を、本発明の実施の形態1におけるアクセス判定部1300のアクセス判定処理の説明図(図21)と図37を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図21のうち、本発明の実施の形態1と異なるステップS1107の処理のみを説明する。
本発明の実施の形態1では、ステップS1107において、判定部1312は、プログラム・領域対応判定部1303とモード判定部1302から取得した判定結果が、どちらもOKであるか確認する。しかし、本発明の実施の形態4では、デバドラアクセス許可アプリIDリストに含まれるアプリIDを持つアプリからのアクセスがあった場合には、判定部1312は、プログラム・領域対応判定部1303から取得した判定結果がOKであるか確認する。処理の詳細を、図37を用いて説明する。
ステップS1106の処理後、判定部1312は、デバドラアクセス許可アプリIDリスト保持部1314からデバドラアクセス許可アプリIDリストを取得する(S1113)。
判定部1312は、プログラム・領域対応判定部1303からアプリIDを取得する(S1114)。
判定部1312は、ステップS1114で取得したアプリIDが、ステップS1113で取得したデバドラアクセス許可アプリIDリストに含まれるか判定する(S1115)。
判定部1312は、ステップS1115で、アプリIDがデバドラアクセス許可アプリIDリストに含まれないと判定した場合には、ステップS1116で「NO」と判定し、本発明の実施の形態1と同様にステップS1107からS1109の処理を実施する。
判定部1312は、ステップS1115で、アプリIDがデバドラアクセス許可アプリIDリストに含まれると判定した場合には、ステップS1116で「YES」と判定し、プログラム・領域対応判定部1303がOKと判定したかどうかを確認する(S1117)。
判定部1312は、プログラム・領域対応判定部1303がOKと判定した場合には、ステップS1117で、「OK」と判定し、判定結果を「許可」とし(S1108)、プログラム・領域対応判定部1303がOKと判定しなかった場合には、ステップS1117で、「NG」と判定し、判定結果を「不許可」とする(S1109)。
以上説明したように、本発明の実施の形態4によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみならず、アプリが呼び出すデバドラからもアクセス可能とした。このため、アプリが使用するデータに、アプリが呼び出さない不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態4によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
また、アプリとデバドラとの間でデータの送受信が必要な場合には、例外的に、デバドラからもトラステッドメモリ領域にアクセス可能とした。なお、デバドラは、特権モードで実行されることとなる。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記実施の形態におけるトラステッドメモリ制御部1203の各部は、すべてハードウェアで構成されていてもよい。また、アクセス制御部1310と各保持部(有効フラグ保持部1311、アドレス保持部1322、アプリID・領域対応保持部1343、アプリID・アドレス保持部1353)以外は、ソフトウェアで構成されていてもよい。また、アクセス制御部1310と各保持部(有効フラグ保持部1311、アドレス保持部1322、アプリID・領域対応保持部1343、アプリID・アドレス保持部1353)を含むいくつかの構成要素がハードウェアで構成され、それ以外の各部がソフトウェアで構成されていてもよい。
(2)上記実施の形態における機器110、111のハードウェア構成は、図38に示すように、CPU1201と、トラステッドメモリ制御部1203と、通常メモリ1260と、トラステッドメモリ1270とが最低限あればよい。
(3)上記実施の形態における各リスト(アドレスリスト1400、1401、アプリID・領域対応リスト1402、アプリID・アドレス対応リスト1404、1405)は、トラステッドメモリ制御部1203内のメモリまたはレジスタに格納してもよいし、内部保護メモリ1205に格納してもよいし、トラステッドメモリ領域1240またはトラステッドメモリ1270に格納してもよい。また、各リストは構造図で示した表形式で格納されなくてもよい。設計時に、どの領域(レジスタ)にどの情報を格納するかの関係が決められていればよい。
(4)上記実施の形態におけるアプリIDは、プロセスIDを使用するとしたが、これに限定されるものではなく、個々のアプリが識別できる情報であればよい。例えば、MMUに設定されるページテーブルのベースアドレスであってもよいし、特定の仮想アドレスに記されたデータ(識別子)であってもよい。また、アプリIDは、保護環境で動作するプログラムが設定する値としてもよい。この時、アプリID取得部1341は、保護環境で動作するプログラムがアプリIDを設定した領域からアプリIDを取得する。
(5)上記実施の形態では、領域判定部1301でのアドレスリスト1400にアクセス先物理アドレスが含まれるかを判定する処理(S1122)、または、プログラム・領域判定部1304でのアプリID・アドレス対応リスト1404、1405にアクセス先物理アドレスが含まれるか、およびそれに対応するアプリIDが一致するかを判定する処理(S1233もしくはS1235)において、これらの処理をリスト内のすべてのデータが判定できるまで繰り返し処理するとしたが、これに限定されるものではない。つまり、ハードウェアまたはマルチプロセッサを利用してこれらの処理を並列に処理してもよい。
(6)上記実施の形態では、暗号化された保護データ1231、1232は、機器110、111の工場製造時に不揮発性記憶装置1230に格納するとしたが、これに限定されるものではない。つまり、暗号化された保護データ1231、1232が、機器製造後、初めて読み込まれる時に生成されてもよい。この場合、保護データの読み込み処理では、アプリAまたはアプリBから指定された暗号化された保護データ1231または1232が既に存在しているかが確認され、存在していない場合は、保護データの生成処理が実行される。
保護データの初期化処理を、図10、図11および図39のフローチャートを用いて説明する。
図10において、暗号化された保護データ1231、1232が存在しない場合には、保護データ管理部1004は、ステップS1013をスキップし、ステップS1015の代わりに、暗復号処理部1104に初期化依頼を行う。その後、暗復号処理部1104は、初期化処理を行う。
次に、初期化処理の詳細を、図39を用いて説明する。
まず初めに、暗復号処理部1104は、トラステッドメモリの設定を行う。設定処理(ステップS1020からステップS1023)は、図11の復号処理と同じ処理のため説明を省略する。
暗復号処理部1104は、トラステッドメモリの設定処理終了後、保護データを暗号化するための鍵の生成を行い(S1031)、不揮発性保護メモリ1206に格納する。
暗復号処理部1104は、ステップS1020でトラステッドメモリに設定した領域を初期化する(S1032)。
最後に、暗復号処理部1104は、データ識別子を生成(S1028)し、処理を終了する。ステップS1028は、図11の復号処理と同じ処理のため説明を省略する。
なお、保護データの生成処理は、アプリAまたはアプリBからデータの読み込み依頼の代わりに、データの初期化依頼があった時に行うとしてもよい。
(7)上記実施の形態では、暗号化された保護データ1231、1232を復号した保護データ1241、1242のようなデータを、トラステッドメモリ制御部1203を用いて不正アプリまたは不正デバドラから保護するとしたが、これに限定されるものではない。たとえば、不揮発性記憶装置1230に格納されたアプリA1008またはアプリB1009を通常メモリ領域1220または通常メモリ1260にロードする代わりに、トラステッドメモリ領域1240またはトラステッドメモリ1270にロードし、アプリA1008およびアプリB1009のようなプログラムを保護するとしてもよい。
(8)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(9)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部または全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)、またはLSI内部の回路セルの接続および設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(10)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(11)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(12)上記実施の形態および上記変形例をそれぞれ組み合わせるとしてもよい。
本発明は、CPUが特権モードの時に動作するプログラムからのアクセスを防止するトラステッドメモリ制御部を有し、特権モードで、悪意を持った攻撃者によるプログラムが動作しても、ユーザのデータを保護可能な情報処理装置等として有用である。また特権モードで、悪意を持った攻撃者によるプログラムによる攻撃から、アプリケーションプログラムを保護可能な情報処理装置等にも適用できる。
100 アプリ配信システム
110、111 機器
120 アプリ配信サーバ
130 開発装置
1000 通常のソフトウェア実行環境(通常環境)
1001、1221 汎用オペレーティングシステム(汎用OS)
1002 カーネル
1003 不揮発性メモリ管理部
1004 保護データ管理部
1005 デバドラA
1006 デバドラB
1007、1222 ダウンロード制御アプリ
1008、1223 アプリA
1009、1224 アプリB
1100 安全なソフトウェア実行環境(保護環境)
1101、1210 セキュアオペレーティングシステム(セキュアOS)
1102、1211 セキュアブート部
1103、1212 メモリ設定部
1104、1213 暗復号処理部
1200 システムLSI
1201 CPU
1202 IPL(Initial Program Loader)
1203 トラステッドメモリ制御部
1204 実行環境切替部
1205 内部保護メモリ
1206 不揮発性保護メモリ
1220 通常メモリ領域
1225 ダウンロード制御アプリ用のデータ
1226 アプリA用のデータ
1227 アプリB用のデータ
1230 不揮発性記憶装置
1231 アプリA用の暗号化された保護データ
1232 アプリB用の暗号化された保護データ
1240 トラステッドメモリ領域
1241 アプリA用の保護データ
1242 アプリB用の保護データ
1250 メモリ
1260 通常メモリ
1270 トラステッドメモリ
1300 アクセス判定部
1301 領域判定部
1302 モード判定部
1303 プログラム・領域対応判定部
1304 プログラム・領域判定部
1310 アクセス制御部
1311 有効フラグ保持部
1312 判定部
1313 設定部
1314 デバドラアクセス許可アプリIDリスト保持部
1320 判定部
1321 アドレス取得部
1322 アドレス保持部
1323 設定部
1324 領域番号通知部
1330 判定部
1331 CPUモード取得部
1340 判定部
1341 アプリID取得部
1342 領域番号取得部
1343 アプリID・領域対応保持部
1344 設定部
1350 判定部
1351 アプリID取得部
1352 アドレス取得部
1353 アプリID・アドレス保持部
1354 設定部
2000 アプリ保持部
2001 アプリ受信処理部
2002 アプリ送信処理部
3000 パッケージ生成部
3001 設定ファイル生成部
3002 鍵ペア保持部
3003 鍵ペア生成部
3004 デバッグ処理部
3005 アップロード処理部
3100 コンパイラ
3101 リンカ
3102 パッケージ生成ツール
3110 プログラムソースコード
3111 ダウンロードパッケージ
3112 秘密鍵
3113、3206 公開鍵証明書
3114、3204 設定ファイル
3202 アプリ
3203 デバドラ
3205 アプリ署名リスト
本発明は、データへの不正アクセスを防止する情報処理装置に関する。
従来のテレビまたは携帯電話では、ユーザが機器購入後、機能を新たに追加するために、アプリケーションプログラム(以下、「アプリ」という)をダウンロードし、利用することが可能である。この様なアプリは、従来、機器内の各種リソースに対するアクセスが制限されていた。しかし、近年、多種多様なアプリを開発可能にするために、アクセス制限を緩和し、様々なリソースへのアクセスを可能にした機器が登場してきている。将来的には、アプリだけでなくデバイスドライバプログラム(以下、「デバドラ」という)も、ダウンロード可能にすることで、より多くのリソースにアクセス可能な機器が登場するものと考えられる。特に、デバドラがインストール可能になることにより、ユーザは、購入後の機器に対して、新たなハードウェアの追加が可能になり、機能追加の幅が現在と比べて拡大する。
また、従来、上記のようなアプリは、特定のアプリ開発会社のみが開発および配布をしている。しかし、近年、一般ユーザもアプリの開発および配布が可能な仕組みができつつある。この様な仕組みの中では、一般ユーザがアプリを簡単に開発可能にするために、Personal Computer(以下、「PC」という)で一般的に利用されている開発ツールが利用可能であったり、販売されている機器に対してデバッグ装置が接続可能であったりする。
一方、PCまたは携帯電話などに格納されている個人情報などのデータの漏えいが問題になっている。特にPCについては、インターネットなどのオープンなネットワークからダウンロードされる不正なダウンロードプログラムによって、PCの記憶装置に格納されている個人情報などのデータが読み取られ、ユーザの意図に反して、データがネットワークを介してPCの外部に送付されるなどの行為が行われている。不正なダウンロードプログラムは、メールを利用するなどしてユーザに有益なプログラムだと思わせダウンロードさせたり、PC上で動作するプログラムの脆弱性を衝いてダウンロードさせたりする。
この様に、PC、テレビまたは携帯電話などにおいて、ダウンロードしたアプリまたはデバドラが多くのリソースにアクセス可能である、または、一般ユーザがアプリまたはデバドラを開発および配布可能であることで、機器に格納された個人情報などに対する攻撃の脅威が増加する。具体的には、悪意を持った攻撃者による、攻撃用のアプリ(以下、「不正アプリ」という)または攻撃用のデバドラ(以下、「不正デバドラ」という)の開発またはインストールが、容易になる。これにより、不正アプリまたは不正デバドラが機器内部の情報にアクセス可能となり、情報の漏えいまたは改ざんといった攻撃が行われる危険性が増加する。
この様な攻撃は、主に不正アプリを使用し、機器内部の不揮発性記憶装置に格納されているファイルに対して行われることが多く、この様な攻撃に対してはファイルを暗号化して対処することが一般的である。しかし、アプリがデータを使用する時には、暗号化されたファイルを復号する必要があり、その復号したタイミングを狙って攻撃される危険性がある。特に、不正デバドラは、機器内のすべてのメモリにアクセス可能である。このため、不正デバドラが、動作中のアプリがRAM上に展開しているデータにアクセスし、データを漏えいまたは改ざんする危険性が増加する。
従来、RAM上のデータへの不正なアクセスを防止する方法として、メモリ管理ユニット(以下、MMUと記す)を利用する方法、またはメモリ保護ユニット(Memory Protection Unit)を利用する方法がある(例えば、特許文献1参照)。図40は、前記特許文献1に記載された従来のメモリアクセス保護方式を示す図である。
図40において、プログラム領域生成部11およびプログラム制御部12は、メモリ(図示しない)上のシステムコアエリアに置かれるプログラムであり、プログラム管理エリア14は、メモリ(図示しない)上のシステムコアエリアに置かれるデータであり、アクセスチェック機構9は、ハードウェアである。メモリ(図示しない)は、システムプログラムの内のコアとなるプログラム用のシステムコアエリアの他に、通常のシステムプログラム用のシステムエリアとユーザレベルプログラム用のユーザエリアとに区分して使用される。
プログラム制御部12は操作者からの指示によりプログラムファイル(図示しない)をメモリ(図示しない)上のユーザエリアへロードし、プログラム識別子を付与する。また、プログラム制御部12は、プログラム領域生成部11に対して、ロードしたプログラムファイルの実行に必要なメモリ上の領域の確保と、属性表生成とを指示する。プログラム制御部12は、プログラム領域生成部11から、属性表のアドレスを得て、アクセスチェック機構9に属性表のロードを指示する。また、プログラム制御部12は、そのほか、プログラムファイルの実行に必要な設定を行い、当該プログラムの実行を開始する。
プログラム領域生成部11は、ロードされるプログラムのプログラムファイルより、命令別、データ別およびスタック別にそれぞれセグメントを列挙する。プログラム領域生成部11は、属性に関する指定に基づいてプログラムをグループ化する。プログラム領域生成部11は、各グループにそのサイズに応じてページ識別子(仮の連番)と属性(実行可、読み出し可、書き込み可、キャッシュバイパス)とを付与し、属性表を作成する。プログラム領域生成部11は、作成した属性表のアドレスをプログラム制御部12に返すとともに、その属性表を属性エリアディレクトリ(ATDR)16に登録する。
プログラム管理エリア14は、属性エリアディレクトリ(ATDR)16と属性エリア18とを含む。属性エリアディレクトリ16には、プログラム単位で、プログラム識別子と属性エリアアドレスとが格納される。属性エリア18には、プログラム単位で、属性ごとのビットマップを含む属性表が格納される。属性表は、メモリ(図示しない)の全領域を所定数のブロックにブロック化したものであり、そのページブロック番号と、ブロックの各ページの属性ごとのビットマップとを含む。
アクセスチェック機構9は、メモリ(図示しない)上の属性表の写しを持ち、命令演算処理部(図示しない)がメモリへアクセスする時に、アクセス種別を指定するアクセスコード(E:命令の実行、R:読み出し、W:書き込み)とアクセスしたページの属性とをつき合わせチェックし、チェック結果に応じメモリアクセスを許可または抑制する。
特許第3607540号公報
特開2005−011336号公報
岡本龍明、山本博資、「現代暗号」、産業図書(1997年)
黒澤馨、尾形わかは、「現代暗号の基礎数理」、コロナ社(2004年)
ITU−T Recommendation X.509 (1997 E): Information Technology − Open Systems Interconnection − The Directory: Authentication Framework,1997
しかしながら、前記従来の構成を、テレビまたは携帯電話などで広く使用されているLinux(登録商標)などの汎用オペレーティングシステムに適用する時に、システムコアエリアに含まれるプログラムとシステムエリアに含まれるプログラムとは、同一のモード(特権モード)で動作させる必要がある。そのため、不正デバドラがインストールされ、特権モードで動作した時に、特権モードで動作するプログラムに対するメモリアクセス保護機構がないため、不正デバドラによりRAM上のデータが不正にアクセスされるという課題を有している。
また、前記従来の構成では、メモリアクセスの許可または不許可を決定する属性表の生成を、特権モードのプログラムが行う。このため、不正デバドラによって属性表が不正に生成、または、改ざんされる可能性がある。そのため、不正アプリが他のアプリに割り当てられたメモリ領域へアクセス可能になるように、不正デバドラが不正アプリの属性表を改ざんすることができる。このことにより、不正アプリが他のアプリが管理するRAM上のデータに不正アクセスすることができるという課題を有している。
本発明は、前記従来の課題を解決するもので、不正アプリまたは不正デバドラによる他のアプリが管理するRAM上のデータへのアクセスを防止可能としたメモリアクセス保護機能を有する情報処理装置を提供することを目的とする。
前記従来の課題を解決するために、本発明の情報処理装置は、動作モードとして、特権モードと非特権モードとを有するプロセッサと、前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部とを備え、前記トラステッドメモリ制御部は、前記プロセッサが前記トラステッドメモリへアクセスした時に、前記プロセッサの動作モードを判定し、前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止する。
本構成によって、特権モードで動作するプログラムから、アプリが使用する保護データ(情報資産)へのアクセスを防止することができる。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
なお、本発明は、このような特徴的な処理部を備える情報処理装置として実現することができるだけでなく、情報処理装置に含まれる特徴的な処理部が実行する処理をステップとするメモリアクセス制御方法として実現することができる。また、情報処理装置に含まれる特徴的な処理部としてコンピュータを機能させるためのプログラムまたはメモリアクセス制御方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムを、CD−ROM(Compact Disc−Read Only Memory)等のコンピュータ読取可能な非一時的な記録媒体またはインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
本発明によると、不正アプリまたは不正デバドラによる他のアプリが管理するRAM上のデータへのアクセスを防止可能としたメモリアクセス保護機能を有する情報処理装置を提供することができる。
図1は、本発明の実施の形態1におけるアプリ配信システムの全体構成図である。
図2は、本発明の実施の形態1における機器のソフトウェア構成図である。
図3は、本発明の実施の形態1における機器のハードウェア構成図である。
図4は、本発明の実施の形態1における暗号化された保護データの構成図である。
図5は、本発明の実施の形態1におけるアプリ配信サーバの構成図である。
図6は、本発明の実施の形態1における開発装置の構成図である。
図7は、本発明の実施の形態1におけるパッケージ生成部の構成図である。
図8は、本発明の実施の形態1におけるダウンロードアプリパッケージの構成図である。
図9は、本発明の実施の形態1におけるセキュアブートのフローチャートである。
図10は、本発明の実施の形態1における保護データの読み込み処理のフローチャートである。
図11は、本発明の実施の形態1における復号処理のフローチャートである。
図12は、本発明の実施の形態1における保護データの書き込み処理のフローチャートである。
図13は、本発明の実施の形態1における暗号処理のフローチャートである。
図14は、本発明の実施の形態1におけるトラステッドメモリ制御部の構成図である。
図15は、本発明の実施の形態1におけるアクセス判定部の構成図である。
図16は、本発明の実施の形態1における領域判定部の構成図である。
図17Aは、本発明の実施の形態1におけるアドレスリストの構成図である。
図17Bは、本発明の実施の形態1におけるアドレスリストの構成図である。
図18は、本発明の実施の形態1におけるモード判定部の構成図である。
図19は、本発明の実施の形態1におけるプログラム・領域対応判定部の構成図である。
図20Aは、本発明の実施の形態1におけるアプリID・領域対応リストの構成図である。
図20Bは、本発明の実施の形態1におけるアプリID・領域対応リストの構成図である。
図21は、本発明の実施の形態1におけるアクセス判定部の判定処理のフローチャートである。
図22は、本発明の実施の形態1における領域判定部の判定処理のフローチャートである。
図23は、本発明の実施の形態1におけるプログラム・領域対応判定部の判定処理のフローチャートである。
図24は、本発明の実施の形態1における設定値の生成処理のフローチャートである。
図25は、本発明の実施の形態1におけるメモリ設定部の設定解除依頼処理のフローチャートである。
図26は、本発明の実施の形態2におけるトラステッドメモリ制御部の構成図である。
図27は、本発明の実施の形態2におけるプログラム・領域判定部の構成図である。
図28Aは、本発明の実施の形態2におけるアプリID・アドレス対応リストの構成図である。
図28Bは、本発明の実施の形態2におけるアプリID・アドレス対応リストの構成図である。
図29は、本発明の実施の形態2におけるアクセス判定部の判定処理のフローチャートである。
図30は、本発明の実施の形態2におけるプログラム・領域判定部の判定処理のフローチャートである。
図31は、本発明の実施の形態3における機器のハードウェア構成図である。
図32は、本発明の実施の形態3におけるトラステッドメモリ制御部の構成図である。
図33は、本発明の実施の形態3におけるアクセス判定部の構成図である。
図34は、本発明の実施の形態3における領域判定部の構成図である。
図35は、本発明の実施の形態4におけるアクセス判定部の構成図である。
図36は、本発明の実施の形態4におけるデバドラアクセス許可アプリIDリストの構成図である。
図37は、本発明の実施の形態4におけるアクセス判定部の判定処理のフローチャートである。
図38は、本発明の変形例2における機器のハードウェア構成図である。
図39は、本発明の変形例6における初期化処理のフローチャートである。
図40は、従来のメモリ属性管理方式の構成図である。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
<アプリ配信システム100の構成>
図1は、本発明の実施の形態1におけるアプリ配信システム100の構成図である。
図1において、アプリ配信システム100は、機器110と、アプリ配信サーバ120と、開発装置130と、機器111とを含む。
機器110は、アプリ配信サーバ120とネットワークを介して接続され、アプリをダウンロードする。アプリをダウンロードした機器110は、アプリをインストールすることで、新しい機能を追加する。
アプリ配信サーバ120は、機器110および開発装置130とネットワークを介して接続され、開発装置130がアップロードしたアプリの管理、および、機器110へのアプリのダウンロード処理を行う。
開発装置130は、アプリ配信サーバ120とネットワークを介して接続され、機器110で動作するアプリの開発を行う装置である。また、開発装置130は、機器111とUniversal Serial Bus(以下、「USB」という)規格等のインターフェースで接続される。開発者は、開発装置130上でアプリを開発し、機器111上でアプリが想定通りの動作を行うかのテストを実施する。その後、開発装置130が開発したアプリをアプリ配信サーバ120へアップロードすることで、機器110でアプリが使用可能になる。なお、機器110と機器111は、同じ機能を持つ機器であり、一般ユーザによって使用されている(機器110)か、開発者によって使用されている(機器111)かが、異なるだけである。
<機器110、111のソフトウェア構成>
図2は、本発明の実施の形態1における機器110、111のソフトウェア構成図である。
図2において、機器110、111は、通常のソフトウェア実行環境(以下、「通常環境」という)1000と、安全なソフトウェア実行環境(以下、「保護環境」という)1100とを有する。機器110、111は、通常環境1000と保護環境1100とを切り替えながら、ソフトウェア(通常環境1000または保護環境1100のソフトウェア)を実行する。つまり、機器110、111は、通常環境1000と保護環境1100とのいずれかの環境を有し、両方の環境を有することはないし、いずれの環境も有しないこともない。機器110、111は、通常環境1000では、通常環境1000でのアクセスが許可されているメモリ領域のみにアクセスが可能であり、保護環境1100では、通常環境1000でのアクセスが許可されているメモリ領域と保護環境1100でのアクセスが許可されているメモリ領域とにアクセスが可能である。
なお、通常環境1000と保護環境1100を切り替える方法に関しては、例えば特許文献2に記されている方式が使用できる。
<通常環境1000のソフトウェア構成>
通常環境1000のソフトウェアは、汎用オペレーティングシステム(以下、「汎用OS」という)1001と、ダウンロード制御アプリ1007と、アプリA1008と、アプリB1009とを含む。汎用OS1001は、カーネル1002と、不揮発性メモリ管理部1003と、デバドラA1005と、デバドラB1006とを含む。不揮発性メモリ管理部1003は、保護データ管理部1004を含む。
汎用OS1001は、カーネル1002を用いて、アプリをメモリ上にロードして実行する、あるいは、アプリをメモリ上から削除(アンロード)する。また、汎用OS1001は、不揮発性メモリ管理部1003を用いて、機器110、111に装着されている不揮発性メモリに記憶するデータの管理を行う。特に、アプリA1008またはアプリB1009がアクセスする保護データは、保護データ管理部1004を用いて管理する。保護データ管理部1004を用いた、保護データの管理方法については、フローチャートを用いて後ほど説明する。
さらに、汎用OS1001は、デバドラA1005またはデバドラB1006を用いて、機器110、111に装着されている、あるいは、今後装着されるハードウェアへのアクセスを管理する。デバドラA1005またはデバドラB1006は、汎用OS1001内または汎用OS1001上で動作するアプリからの要求に応じて動作する。
ダウンロード制御アプリ1007は、機器110とインターネットを介して接続されているアプリ配信サーバ120と通信し、アプリ配信サーバ120からのアプリのダウンロード処理と、機器110へのアプリのインストール処理とを行う。
アプリA1008とアプリB1009は、それぞれ、アドレス管理機能、Webブラウズ機能、および電子メール機能などの機能を持ち、ユーザに対してこれらの機能を提供する。
<保護環境1100のソフトウェア構成>
保護環境1100のソフトウェアは、セキュアオペレーティングシステム(以下、「セキュアOS」という)1101と、セキュアブート部1102と、メモリ設定部1103と、暗復号処理部1104とを含む。
セキュアOS1101は、保護環境1100のソフトウェアを管理する。
セキュアブート部1102は、機器110、111の電源投入時にセキュアブートを行う。セキュアブートの処理については、フローチャートを用いて後ほど説明する。
メモリ設定部1103は、アプリA1008またはアプリB1009がアクセスする保護データを展開するメモリに対して、各種の設定を行う。
暗復号処理部1104は、暗号化されて保存されている保護データの復号処理と、メモリに展開した保護データを暗号化する処理とを行う。暗復号処理については、フローチャートを用いて後ほど説明する。
<機器110、111のハードウェア構成>
図3は、本発明の実施の形態1における機器110、111のハードウェア構成図である。
図2の各構成要素は、図3の内部保護メモリ1205とメモリ1250に格納された各構成要素に対応する。これらの各構成要素を実現するためのプログラムが、CPU1201上で実行されることにより、各機能が実現される。
図3において、機器110、111は、システムLSI1200と、不揮発性記憶装置1230と、メモリ1250とを含む。システムLSI1200は、不揮発性記憶装置1230と外部バスを介して接続されている。また、システムLSI1200は、メモリ1250と専用の外部バスを用いて接続されている。
システムLSI1200は、CPU1201とInitial Program Loader(以下、「IPL」という)1202と、トラステッドメモリ制御部1203と、実行環境切替部1204と、内部保護メモリ1205と、不揮発性保護メモリ1206とを含む。詳細は後述する。
不揮発性記憶装置1230は、アプリA用の暗号化された保護データ1231とアプリB用の暗号化された保護データ1232を格納する。アプリA用の暗号化された保護データ1231とは、アプリAがプログラム実行時にアクセスする保護データを暗号化したものである。アプリB用の暗号化された保護データ1232も同様である。図4に、暗号化された保護データ1231および1232の構造を示す。暗号化された保護データ1231、1232は、暗号化されていないヘッダ情報と、保護データ本体および検証値をまとめて暗号化した情報とを含む構造を有する。検証値は、保護データ本体をハッシュ関数に入力した時に得られるハッシュ値である。
なお、不揮発性記憶装置1230は、アプリA用の暗号化された保護データ1231とアプリB用の暗号化された保護データ1232のどちらか一方のみを格納するとしてもよい。
なお、暗号化された保護データは、暗号化されていないヘッダ情報を含むとしたが、これに限定されるものではなく、ヘッダ情報を暗号化してもよいし、ヘッダ情報はなくてもよい。ヘッダ情報をなくす場合には、ヘッダ情報に含まれるデータを、別途、不揮発性記憶装置1230または不揮発性保護メモリ1206へ格納する。
なお、保護データ本体の暗号化には、DES(Data Encryption Standard)またはAES(Advanced Encryption Standard)のような共通鍵暗号方式を利用してもよいし、RSA(Rivest Shamir Adleman)またはElGamalなどの公開鍵暗号方式を利用してもよいし、それらを組み合わせてもよい。
なお、保護データ本体と検証値をまとめて暗号化するとしたが、これに限定されるものではない。保護データ本体と検証値は別々に暗号化するとしてもよいし、保護データ本体のみを暗号化するとしてもよい。また、検証値は保護データ本体の後ろの記憶領域に記憶されるのではなく、保護データ本体の前の記憶領域に記憶されるとしてもよいし、検証値はヘッダ情報に含めるとしてもよい。さらに、検証値は、暗号化された保護データに含めるのではなく、暗号化された保護データとは別に、各暗号化された保護データの検証値を集めた検証値リストに格納するとしてもよいし、暗号化された保護データと関連づけた状態で、不揮発性保護メモリに格納するとしてもよい。
なお、ハッシュ関数としては、MD4、MD5、SHA(Secure Hash Algorithm)−1、またはSHA−2などのアルゴリズムが利用可能である。また、検証値は、ハッシュ値ではなく、デジタル署名、メッセージ認証コード(MAC:Message Authentication Code)値、誤り検出符号値、または誤り訂正符号値でもよい。MAC値を計算するアルゴリズムとしては、CBC−MAC(Cipher Block Chaining Message Authentication Code)またはHMAC(Keyed−Hashing for Message Authentication Code)などが利用可能である。誤り検出符号値を計算するアルゴリズムとしては、巡回冗長検査(CRC:Cyclic Redundancy Check)またはチェックサムなどが利用可能である。誤り訂正符号値を計算するアルゴリズムとしては、リード・ソロモン符号またはターボ符号などが利用可能である。
なお、共通鍵暗号方式に関しては非特許文献2の8ページから19ページに、公開鍵暗号方式に関しては非特許文献2の40ページから95ページに、ハッシュ関数に関しては非特許文献2の96ページから105ページに、デジタル署名方式に関しては非特許文献1の171ページから188ページに、メッセージ認証コードに関しては非特許文献2の30ページから39ページにそれぞれ詳しく説明されている。
暗号化された保護データ1231および1232は、機器110、111の工場製造時に不揮発性記憶装置1230に格納される。この時、保護データの初期データが生成され、機器ごとに個別の鍵で暗号化することで、暗号化された保護データ1231および1232が生成される。暗号化に使用した鍵は、システムLSI1200内の不揮発性保護メモリ1206に格納される。
また、図示しないが、不揮発性記憶装置1230は、メモリ1250または内部保護メモリ1205に格納されるプログラムを格納する。さらに、不揮発性記憶装置1230は、アプリA1008およびアプリB1009以外のアプリ、または、アプリA1008およびアプリB1009以外の暗号化された保護データを格納していてもよい。内部保護メモリ1205に格納するプログラムは、予め定められた鍵で暗号化された状態で不揮発性記憶装置1230に格納される。これらのプログラムは、機器110、111の工場製造時に不揮発性記憶装置1230に格納され、システム起動時またはアプリの起動要求時に、不揮発性記憶装置1230から、メモリ1250または内部保護メモリ1205へ展開される。
なお、内部保護メモリ1205に格納するプログラムを暗号化する鍵は、すべての機器で同一の鍵を利用してもよいし、システムLSI1200ごとに個別の鍵を用いてもよいし、プログラムごとに個別の鍵を用いてもよい。また、暗号化されたプログラムを復号する鍵は、システムLSI1200内部に鍵格納部(図示しない)を持ち、その中に格納されてもよいし、不揮発性保護メモリ1206に格納されてもよいし、システムLSI1200内部に格納された鍵を用いて暗号化された状態で不揮発性記憶装置1230に格納されてもよい。
メモリ1250は、通常メモリ領域1220とトラステッドメモリ領域1240とを含む。
通常メモリ領域1220は、汎用OS1221と、ダウンロード制御アプリ1222と、アプリA1223と、アプリB1224と、ダウンロード制御アプリ用のデータ1225と、アプリA用のデータ1226と、アプリB用のデータ1227とを格納する。
トラステッドメモリ領域1240は、アプリA用の保護データ1241とアプリB用の保護データ1242を格納する。トラステッドメモリ領域1240は、格納している保護データを利用するアプリのみがアクセス可能なメモリ領域であり、アクセス可能または不可能の制御は、トラステッドメモリ制御部1203が行う。
機器110、111は、さらに、図3に図示されていない入出力部などを備えているが、これらは本発明の本質ではないので説明を省略する。また、システムLSI1200は、さらに、図3に図示されていない周辺回路などを備えているが、これらは本発明の本質ではないので説明を省略する。
<システムLSI1200の構成>
以下、本発明の実施の形態1におけるシステムLSI1200の各構成要素の詳細について説明する。
CPU1201は、メモリ1250と内部保護メモリ1205とに格納されたプログラム等に含まれる命令コードを実行することにより、機器110、111全体の動作を制御する。CPU1201は、動作モードとして特権モードと非特権モードの2つのモードを持ち、汎用OS(デバドラも含む)1001は特権モードで動作し、ダウンロード制御アプリ1007、アプリA1008およびアプリB1009は非特権モードで動作する。ここで特権モードとは、汎用OSが動作可能なモードである。特権モードは、非特権モードで動作するアプリがアクセスすることのできないリソースまたはメモリ領域へのアクセスが可能である。つまり、特権モードで操作するアプリには、非特権モードで動作するアプリがアクセスすることができるリソースまたはメモリ領域に加えて、特権モードで動作するアプリのみがアクセスすることができるリソースまたはメモリ領域が対応付けられている。特権モードは、カーネルモード、マスターモードまたはスーパーバイザモードなどと呼ばれ、非特権モードは、ユーザモードなどと呼ばれる。
IPL1202は、機器110、111の電源が投入された時に一番はじめに起動するプログラムであり、内部保護メモリ1205に展開されたセキュアOS1210およびメモリ1250に展開された汎用OS1221を起動する。IPL1202は、システムLSI1200内に設けられたマスクROMに格納されている。
トラステッドメモリ制御部1203は、トラステッドメモリ領域1240へのアクセスを制御する。詳細は、構成図を用いて後ほど説明する。
実行環境切替部1204は、システムLSI1200の通常環境と保護環境を切り替える機能を実現する。実行環境切替部1204は、システムLSI1200の実行環境が保護環境の時にのみCPU1201等から内部保護メモリ1205または不揮発性保護メモリ1206へアクセス可能になるようアクセス制御する。また、実行環境切替部1204は、システムLSI1200の実行環境が通常環境と保護環境のどちらの実行環境であるかを示す状態情報を保持し、トラステッドメモリ制御部1203へ実行環境の状態情報を通知する。
内部保護メモリ1205は、セキュアOS1210と、セキュアブート部1211と、メモリ設定部1212と、暗復号処理部1213とを格納する。
不揮発性保護メモリ1206は、鍵A1214と鍵B1215を格納する。鍵A1214は、アプリA用の暗号化された保護データ1231の暗復号処理に使用される鍵であり、鍵B1215は、アプリB用の暗号化された保護データ1232の暗復号処理に使用される鍵である。
なお、不揮発性保護メモリ1206は、鍵A1214と鍵B1215を格納するとしたが、これに限定されるものではなく、どちらか一方の鍵のみを格納するとしてもよいし、別の鍵またはデータを格納するとしてもよい。また、鍵A1214と鍵B1215は、他の鍵Mで暗号化され、暗号化された鍵Aおよび鍵Bを不揮発性記憶装置1230に格納し、鍵Mのみを内部保護メモリ1205に格納するとしてもよい。この場合、鍵Mで暗号化された鍵Aと鍵Bは、機器110、111の工場製造時に、暗号化された保護データ1231および1232と一緒に不揮発性記憶装置1230に格納される。さらに、不揮発性保護メモリ1206は、内部保護メモリ1205に格納されるプログラムを格納してもよい。
<アプリ配信サーバ120の構成>
図5は、本発明の実施の形態1におけるアプリ配信サーバ120の構成図である。
図5において、アプリ配信サーバ120は、アプリ保持部2000と、アプリ受信処理部2001と、アプリ送信処理部2002とを含む。
アプリ保持部2000は、アプリ配信サーバ120が管理するアプリを格納する。
アプリ受信処理部2001は、ネットワークを介して接続された開発装置130と通信し、開発装置130がアップロードするアプリを受信する。アプリ受信処理部2001は、受信したアプリをアプリ保持部2000へ送信し、アプリの保持と管理を依頼する。
アプリ送信処理部2002は、ネットワークを介して接続された機器110と通信し、機器110が要求したアプリをアプリ保持部2000から取得し、送信する。また、アプリ保持部2000が保持しているアプリのリストを作成し、機器110へ送信する。
<開発装置130の構成>
図6は、本発明の実施の形態1における開発装置130の構成図である。
図6において、開発装置130は、パッケージ生成部3000と、設定ファイル生成部3001と、鍵ペア保持部3002と、鍵ペア生成部3003と、デバッグ処理部3004と、アップロード処理部3005とを含む。
パッケージ生成部3000は、開発者が作成したソースコードをコンパイルし、コンパイルしたアプリに、アプリ署名(Signature)、設定ファイルまたは公開鍵証明書(Certificate)を付加したパッケージファイルを生成する。詳細は後述する。
なお、アプリ署名(デジタル署名)方式に関しては非特許文献1の171ページから188ページに詳しく説明されている。また、公開鍵証明書に関しては、非特許文献3に詳しく説明されている。
設定ファイル生成部3001は、アプリに付加する設定ファイルを生成する。設定ファイルには、機器のどのリソースを使用するかの情報、開発者に関する情報、または他のアプリに対してどのようなサービスを提供するかなどの各種情報が記されている。これらの情報は、アプリ開発者が設定する値を元に生成される。
鍵ペア保持部3002は、パッケージに付加されるアプリ署名を生成および検証するために使用する鍵(公開鍵暗号方式における秘密鍵と公開鍵との鍵対)を保持する。公開鍵は、非特許文献3(ITU−T Recommendation X.509)で説明されている公開鍵証明書のフォーマットで保持される。
鍵ペア生成部3003は、公開鍵暗号方式における秘密鍵と公開鍵との鍵対を生成する。
なお、公開鍵暗号方式に関しては非特許文献1の107ページから130ページに詳しく説明されている。
デバッグ処理部3004は、開発装置130とUSB規格等で接続された機器111と通信し、開発者が作成したアプリをデバッグするための処理を行う。デバッグするための処理としては、生成したパッケージを用いたアプリのインストール、インストールしたアプリの実行、ブレークポイントの設定、およびログ出力の取得等の処理がある。
アップロード処理部3005は、開発装置130とネットワークを介して接続されたアプリ配信サーバ120と通信し、パッケージ生成部3000で生成したパッケージをアプリ配信サーバ120へアップロードする処理を行う。
<パッケージ生成部3000の構成>
図7は、本発明の実施の形態1におけるパッケージ生成部3000の構成図である。
図7において、パッケージ生成部3000は、コンパイラ3100と、リンカ3101と、パッケージ生成ツール3102とを含む。
コンパイラ3100は、入力されたプログラムソースコード3110をコンパイルし、オブジェクトファイルを生成する。
リンカ3101は、コンパイラ3100が生成したオブジェクトファイルとライブラリをリンクし、機器110、111が実行可能なファイル(プログラムファイル)を生成する。
パッケージ生成ツール3102は、リンカ3101が生成したプログラムファイルと、設定ファイル生成部3001が生成する設定ファイル3114と、鍵ペア保持部3002が保持する秘密鍵3112および公開鍵証明書3113とからダウンロードパッケージ3111を生成する。
<ダウンロードパッケージ3111の構成>
図8は、本発明の実施の形態1におけるダウンロードパッケージ3111の構成図である。
図8において、ダウンロードパッケージ3111は、アプリ3202と、デバドラ3203と、設定ファイル3204と、アプリ署名リスト3205と、公開鍵証明書3206とを含む。
アプリ3202とデバドラ3203は、開発者が作成したプログラムソースコード3110から、コンパイラ3100とリンカ3101を使用して生成したプログラムファイルである。
設定ファイル3204は、パッケージ生成ツール3102に入力される設定ファイル3114と同じである。
アプリ署名リスト3205は、アプリ3202と、デバドラ3203と、設定ファイル3204とのそれぞれの署名が並んだリストである。パッケージ生成ツール3102は、ダウンロードパッケージ3111生成時に、入力されたアプリ3202と、デバドラ3203と、設定ファイル3204とから、それぞれ署名を生成し、アプリ署名リスト3205を生成する。署名の生成には、秘密鍵3112が使用される。
公開鍵証明書3206は、パッケージ生成ツール3102に入力される公開鍵証明書3113と同じである。
なお、ダウンロードパッケージ3111は、アプリ3202と、デバドラ3203と、設定ファイル3204と、アプリ署名リスト3205と、公開鍵証明書3206とをそれぞれ1つずつを含むとしたが、これに限定されるものではなく、各ファイルは、1つであってもよいし、複数あってもよい。また、含まれないファイルがあってもよい。
<セキュアブート処理>
機器110、111は、汎用OS1001または保護環境1100で動作するソフトウェアが改ざんされていないかを、機器起動時に検証する。
以下、機器110、111が電源投入され汎用OS1001が起動するまでの方法(セキュアブート処理)を、図9のフローチャートを用いて説明する。
機器110、111に電源が投入されると、システムLSI1200内部にあるIPL1202が起動する。
IPL1202は、まず機器110、111のハードウェアの初期化処理を行う(S1000)。初期化処理では、メモリ1250の動作チェック、実行環境切替部1204の初期化、または周辺回路(図示しない)の初期化などの処理が行われる。その後、セキュアOS1101が起動する。
セキュアOS1101は、保護環境の初期化(安全なソフトウェア実行環境の構築)を行い、保護環境でアプリが動作可能な状態にした後、セキュアブート部1102をロード(S1001)し、セキュアブート部1102を起動する。セキュアブート部1102は、暗号化された状態で不揮発性記憶装置1230に格納されているため、実行環境切替部1204がシステムLSI1200に固有の鍵を用いて暗号化されたセキュアブート部1102を復号し、復号したセキュアブート部1102を内部保護メモリ1205へロードする。
セキュアブート部1102は、セキュアブート部1102の検証を行う(S1002)。つまり、セキュアブート部1102は、プログラムのハッシュ値を生成し、あらかじめ計算しておいた参照ハッシュ値と比較することで、セキュアブート部1102が改ざんされていないかを検証する。参照ハッシュ値は、工場出荷前に計算され、セキュアブート部1102に埋め込まれる。セキュアブート部1102は、参照ハッシュ値を埋め込んだ状態で暗号化され、不揮発性記憶装置1230に格納される。
なお、プログラムの検証にはハッシュ値を利用するとしたが、これに限定されるものではなく、ハッシュ値の代わりに署名を用いる方法でもよい。この時、セキュアブート部1102は、署名の検証に用いる公開鍵を埋め込んだ状態で暗号化され、不揮発性記憶装置1230に格納されてもよいし、セキュアブート部とは別に不揮発性記憶装置1230に格納されるとしてもよい。また、公開鍵を機器外部の別の装置から取得するとしてもよい。
セキュアブート部1102は、ステップS1002でセキュアブート部1102を検証した結果、セキュアブート部1102が改ざんされていないと判定した場合には、ステップS1003でOKと判定し、ステップS1004へ遷移する。ステップS1002でセキュアブート部1102を検証した結果、セキュアブート部1102が改ざんされていると判定された場合には、ステップS1003でNGと判定し、ステップS1006へ遷移する。
セキュアブート部1102は、ステップS1003でOKと判定した場合には、汎用OS1001の検証を行う(S1004)。検証方法は、S1002と同様の方法を用いる。
セキュアブート部1102は、ステップS1004で汎用OS1001を検証した結果、汎用OS1001が改ざんされていないと判定した場合には、ステップS1005でOKと判定し、処理を終了し、セキュアOS1101へ処理を戻す。ステップS1004で検証した結果、汎用OS1001が改ざんされていると判定した場合には、ステップS1005でNGと判定し、ステップS1006へ遷移する。
セキュアブート部1102は、S1003またはS1005でNGと判定した場合には、セキュアブート失敗フラグを設定する(S1006)。セキュアブート失敗フラグは、内部保護メモリ1205上の特定の領域に保存されるデータ(図示しない)である。セキュアOS1101、またはセキュアOS1101上で動作するアプリは、セキュアブート失敗フラグをチェックすることで機器110、111の状態を把握し、動作するか否かを決定する。
セキュアブート部1102は、ステップS1006の処理終了後、セキュアOS1101へ処理を戻す。
セキュアOS1101は、セキュアブート部1102から処理が戻ると、IPL1202へ処理を戻す。
IPL1202は、不揮発性記憶装置1230に格納されている汎用OS1001をメモリ1250の通常メモリ領域1220へロード(S1007)し、汎用OS1001を実行(起動)する。
なお、セキュアブート処理は、Trusted Computing Group(以下、「TCG」という)のMobile Phone WG(以下、「MPWG」という)で規定するセキュアブートを用いてもよい。
<保護データの管理方法>
機器110、111は、アプリA1008またはアプリB1009が使用する保護データを暗号化した状態で不揮発性記憶装置1230に格納している。
アプリA1008またはアプリB1009が保護データを使用する時、機器110、111は、アプリA1008またはアプリB1009からの読み込み依頼を受けて、不揮発性記憶装置1230に格納されている暗号化された保護データを読み込み、復号して、メモリ1250のトラステッドメモリ領域1240へ展開する。
アプリA1008またはアプリB1009が保護データの使用を終了する時、機器110、111は、アプリA1008またはアプリB1009からの書き込み依頼を受けて、トラステッドメモリ領域1240に展開した保護データを暗号化して、暗号化済みの保護データを不揮発性記憶装置1230に格納する。
以下、保護データの読み込み方法と、保護データの書き込み方法の詳細を、図10から図13のフローチャートを用いて説明する。
<保護データの読み込み処理>
以下、本発明の実施の形態1におけるアプリA1008の保護データ読み込み処理を、図10のフローチャートを用いて説明する。
アプリA1008は、保護データの読み込みを汎用OS1001の不揮発性メモリ管理部1003へ依頼する(S1010)。この時、アプリA1008は、読み込む保護データのファイル名(フォルダ名も含む)を依頼と一緒に不揮発性メモリ管理部1003に通知する。
不揮発性メモリ管理部1003は、アプリA1008から依頼されたデータが保護データであるかを確認する(S1011)。確認方法としては、ファイル名に含まれるフォルダ名が予め定められた保護データ格納専用のフォルダを示しているかチェックする方法を用いる。不揮発性メモリ管理部1003は、ステップS1011で、上記データが保護データであると確認した場合には(S1011でOK)、保護データ管理部1004に保護データの読み込み依頼(S1012)を行う。この時、不揮発性メモリ管理部1003は、読み込む保護データのファイル名(フォルダ名も含む)を依頼と一緒に保護データ管理部1004に通知する。ステップS1011で、上記データが保護データでないと確認した場合には、ステップS1016へ遷移する。
なお、保護データ格納専用のフォルダ名は、システム設計時に決定し、不揮発性メモリ管理部1003に埋め込んでもよい。また、アプリが決定し、不揮発性メモリ管理部1003に通知するとしてもよい。さらに、アプリの設定ファイル3204に記述され、不揮発性メモリ管理部1003が確認するとしてもよい。
保護データ管理部1004は、不揮発性メモリ管理部1003からの保護データ読み込み依頼を受けて、暗号化された保護データを不揮発性記憶装置1230から読み込み、メモリ1250上へ書き込む(S1013)。保護データ管理部1004は、暗号化された保護データを書き込む領域として、物理アドレスが連続したメモリ領域を確保する。
保護データ管理部1004は、読み込んだ暗号化された保護データを復号した結果を書き込む領域をメモリ1250上に確保する(S1014)。確保する領域は、物理アドレスが連続したメモリ領域である。
保護データ管理部1004は、読み込んだ暗号化された保護データの復号を暗復号処理部1104へ依頼する(S1015)。この時、暗号化された保護データを読み込んだメモリ1250上の領域情報(先頭物理アドレスとサイズ)、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)を一緒に通知する。
暗復号処理部1104は、保護データ管理部1004からの復号依頼を受けて、通知されたアドレスにある暗号化された保護データを復号する(S1016)。ステップS1015の復号処理では、メモリ設定部1103とトラステッドメモリ制御部1203と連携して、トラステッドメモリの設定も行う。これら復号処理の詳細は後述する。
復号処理終了後、暗復号処理部1104から保護データ管理部1004、不揮発性メモリ管理部1003を通して、アプリA1008へ処理が戻る。
保護データ管理部1004は、暗復号処理部1104から処理が戻った時に通知されるデータ識別子と、不揮発性メモリ管理部1003から通知されたファイル名と、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)との組をリストで管理する。データ識別子は、メモリ1250上に展開されている保護データを識別するための識別子で、メモリ1250上に複数の保護データを展開する場合には、それぞれに異なる識別子を割り当てる。
不揮発性メモリ管理部1003は、ステップS1011でアプリA1008が通知したファイルが保護データでないと確認した場合には(S1011でNG)、当該ファイルのデータを通常のデータとして、不揮発性記憶装置1230からメモリ1250上へ読み込む(S1017)。
アプリA1008は、読み込まれたデータにアクセスし、データに対して処理を行う。
<暗号化された保護データの復号処理(図10のS1016)>
以下、本発明の実施の形態1における暗号化された保護データの復号処理(図10のS1016)を、図11のフローチャートを用いて説明する。
暗復号処理部1104は、トラステッドメモリの設定をメモリ設定部1103へ依頼する(S1020)。この時、保護データ管理部1004から通知された復号用に確保したメモリの領域情報(先頭物理アドレスとサイズ)を一緒に通知する。
メモリ設定部1103は、暗復号処理部1104からのトラステッドメモリの設定依頼を受けて、まず、設定値を生成する(S1021)。設定値としては、トラステッドメモリとして設定するメモリの領域情報(先頭物理アドレスとサイズ)、データを使用するアプリA1008の識別子(アプリID)がある。トラステッドメモリとして使用するメモリ領域は、暗復号処理部1104から通知される復号用に確保したメモリの領域情報が示す領域である。また、アプリA1008のアプリIDとしては、汎用OS1001がアプリの識別に使用しているプロセスIDを使用する。プロセスIDは、汎用OS1001がプロセスIDを管理するために使用しているデータ構造(プロセスディスクリプタ等)から取得する。
メモリ設定部1103は、設定値を生成後、トラステッドメモリ制御部1203にトラステッドメモリの設定を依頼する(S1022)。この時、ステップS1021で生成した設定値を通知する。
トラステッドメモリ制御部1203は、メモリ設定部1103から通知された設定値を元にトラステッドメモリ領域1240を設定する(S1023)。トラステッドメモリ制御部1203の詳細な構造と処理フローは、構成図とフローチャートを用いて後ほど説明する。
設定処理終了後、トラステッドメモリ制御部1203からメモリ設定部1103、暗復号処理部1104へ処理が戻る。
暗復号処理部1104は、不揮発性保護メモリ1206に格納されている鍵A1214を取得する(S1024)。鍵A1214は、暗号化された保護データ1231と関連づけられた状態で格納されている。暗復号処理部1104は、データのヘッダ情報にあらかじめ暗号データ(暗号化された保護データ1231)の識別子を付加し、その識別子と鍵の格納先の対をリストで管理する。
なお、鍵A1214と暗号化された保護データ1231との関連づけは、データのヘッダ情報にあらかじめ暗号データの識別子を付加し、その識別子と鍵の格納先の対をリストで管理するとしたが、これに限定されるものではなく、暗号化された保護データのハッシュ値を識別子としてもよいし、アプリIDを識別子としてもよい。
暗復号処理部1104は、暗号化された保護データ1231を復号する(S1025)。復号したデータは、ステップS1023で設定したトラステッドメモリに展開する。
暗復号処理部1104は、さらに、復号した保護データの検証を行う(S1026)。検証方法は、まず、復号した保護データ(保護データ本体)のハッシュ値を計算する。その後、計算したハッシュ値と、暗号化された保護データ1231に含まれる検証値(復号後の検証値)とを比較し、一致するかどうかで、改ざんされたかどうかを判定する。
暗復号処理部1104は、ステップS1026で検証した結果、保護データが改ざんされていないと判定された場合には、ステップS1027でOKと判定し、データ識別子の生成を行う(S1028)。暗復号処理部1104は、生成したデータ識別子と、復号に使用した鍵と、保護データ管理部1004から通知された復号用のメモリの領域情報との組をリストで管理する。
暗復号処理部1104は、ステップS1026で検証した結果、保護データが改ざんされていると判定された場合には、ステップS1027でNGと判定し、トラステッドメモリの設定解除をメモリ設定部1103に依頼する(S1029)。暗復号処理部1104は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)をメモリ設定部1103に通知する。メモリ設定部1103は、トラステッドメモリの設定解除をトラステッドメモリ制御部1203へ依頼する。
トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除する(S1030)。
設定解除処理終了後、トラステッドメモリ制御部1203からメモリ設定部1103、暗復号処理部1104へ処理が戻る。
なお、トラステッドメモリの設定後、復号処理をするとしたが、これに限定されるものではなく、復号処理後にトラステッドメモリの設定をするとしてもよい。この時、ステップS1027で「OK」と判定した場合には、データ識別子の生成(S1028)に加えて、トラステッドメモリの設定処理が行われる。ステップS1027で「NG」と判定した場合には、何も処理は行なわれない。
<保護データの書き込み処理>
以下、本発明の実施の形態1におけるアプリA1008の保護データ書き込み処理を、図12のフローチャートを用いて説明する。
アプリA1008は、保護データの書き込みを汎用OS1001の不揮発性メモリ管理部1003へ依頼する(S1040)。この時、書き込む保護データのファイル名(フォルダ名も含む)を依頼と一緒に通知する。
不揮発性メモリ管理部1003は、アプリA1008から依頼されたデータが保護データであるか確認する(S1041)。確認方法としては、保護データの読み込み時(S1011)と同様に、ファイル名に含まれるフォルダ名が保護データ格納専用のフォルダを示しているかチェックする方法を用いる。保護データ格納専用のフォルダ名は、工場出荷前に不揮発性メモリ管理部1003に埋め込まれる。不揮発性メモリ管理部1003は、ステップS1041で、保護データであると確認した場合には(S1041でOK)、保護データ管理部1004に保護データの書き込み依頼(S1042)を行う。この時、不揮発性メモリ管理部1003は、書き込む保護データのファイル名(フォルダ名を含む)を依頼と一緒に通知する。ステップS1041で、保護データではないと確認した場合には(S1041でNG)、ステップS1046へ遷移する。
保護データ管理部1004は、不揮発性メモリ管理部1003からの保護データ書き込み依頼を受けて、まず、暗復号処理部1104にトラステッドメモリ上のデータの暗号化を依頼する(S1043)。保護データ管理部1004は、この時、書き込む保護データのファイル名から、データ識別子を取得し、依頼と一緒に通知する。さらに、保護データ管理部1004は、暗号化した保護データを格納するメモリ領域を確保し、その情報(先頭物理アドレスとサイズ)も通知する。確保する領域は、物理アドレスが連続したメモリ領域である。
暗復号処理部1104は、保護データ管理部1004からの暗号化依頼を受けて、保護データ復号時に作成した、データ識別子と領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、トラステッドメモリ上の対応する領域の保護データを暗号化する(S1044)。暗復号処理部1104は、暗号化した保護データを、通知された領域へ格納する。ステップS1044の暗号化処理では、暗復号処理部1104は、メモリ設定部1103およびトラステッドメモリ制御部1203と連携して、トラステッドメモリの設定解除も行う。これら暗号化処理の詳細は後述する。
暗号化処理終了後、暗復号処理部1104から保護データ管理部1004へ処理が戻る。
保護データ管理部1004は、暗号化した保護データをファイルに書き込む(S1045)。書き込み終了後、保護データ管理部1004は、保護データを展開する領域として確保していた領域を解放する。解放する領域は、データ識別子と関連づけて管理していた領域情報から取得する。その後、保護データ管理部1004から不揮発性メモリ管理部1003を通して、アプリA1008へ処理が戻る。
不揮発性メモリ管理部1003は、ステップS1041でアプリA1008が通知したファイルが保護データではないと確認した場合には(S1041でNG)、当該ファイルのデータを通常のデータとして、不揮発性記憶装置1230へ書き込む(S1046)。
<保護データの暗号化処理(図12のS1044)>
以下、本発明の実施の形態1における保護データの暗号化処理(図12のS1044)を、図13のフローチャートを用いて説明する。
暗復号処理部1104は、保護データ管理部1004からの暗号化依頼を受けて、保護データ復号時に作成した、データ識別子と、鍵と、領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、まず、領域のハッシュ値を計算し、検証値を生成する(S1050)。生成した検証値は、データの末尾に格納する。
暗復号処理部1104は、不揮発性保護メモリ1206に格納している鍵A1214を取得する(S1051)。この時、保護データ復号時に作成した、データ識別子と、鍵と、領域情報との組のリストから、通知されたデータ識別子に対応する鍵として、鍵A1214を取得する。
暗復号処理部1104は、取得した鍵A1214を用いてトラステッドメモリ上の保護データを暗号化する。暗復号処理部1104は、この時、保護データの末尾に格納した検証値も一緒に暗号化する。暗復号処理部1104は、暗号化した保護データを、保護データ管理部1004から通知された領域に格納する。
暗復号処理部1104は、暗号化した保護データを格納していた領域のトラステッドメモリの設定解除をメモリ設定部1103へ依頼する(S1053)。暗復号処理部1104は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)をメモリ設定部1103へ通知する。メモリ設定部1103は、トラステッドメモリの設定解除をトラステッドメモリ制御部1203へ依頼する。
トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除する(S1054)。
設定解除処理終了後、トラステッドメモリ制御部1203からメモリ設定部1103、暗復号処理部1104へ処理が戻る。メモリ設定部1103では、設定を解除した領域を、空き領域として管理する。
<トラステッドメモリ制御部1203の構成>
図14は、本発明の実施の形態1におけるトラステッドメモリ制御部1203の構成図である。
図14において、トラステッドメモリ制御部1203は、アクセス判定部1300と、領域判定部1301と、モード判定部1302と、プログラム・領域対応判定部1303とを含む。
アクセス判定部1300は、メモリ1250へのアクセスを検出し、トラステッドメモリ領域1240へのアクセスであった場合には、アクセスされた領域に設定したアプリからのアクセスであるかを判定し、アクセス許可または不許可の判定を行う。
領域判定部1301は、システムLSI1200内部からメモリ1250へのアクセスを検出した時に、通常メモリ領域1220へのアクセスか、トラステッドメモリ領域1240へのアクセスかを判定する。トラステッドメモリ領域1240へのアクセスであった場合には、領域判定部1301は、さらに、トラステッドメモリ領域1240内のどの領域へのアクセスであるかの判定も行う。
モード判定部1302は、メモリ1250へアクセスしたプログラムが、非特権モードで動作するプログラム(アプリ)か、特権モードで動作するプログラム(デバドラ、汎用OS)かを判定する。
プログラム・領域対応判定部1303は、メモリ1250へアクセスしたアプリ(プログラム)が、アクセスした領域に設定したアプリかを判定する。アクセスした領域に関する情報は、領域判定部1301から取得する。
以下に、アクセス判定部1300と領域判定部1301、モード判定部1302、プログラム・領域対応判定部1303の各部の詳細を構成図を用いて説明する。
<アクセス判定部1300の構成>
図15は、本発明の実施の形態1におけるアクセス判定部1300の構成図である。
図15において、アクセス判定部1300は、アクセス制御部1310と、有効フラグ保持部1311と、判定部1312と、設定部1313とを含む。
アクセス制御部1310は、システムLSI1200とメモリ1250を接続する外部専用バスとシステムLSI1200の内部バスとに接続され、内部バスと外部専用バス間の中継を行う。内部バス側からメモリ1250へアクセスがあった場合には、アクセス制御部1310は、判定部1312の判定結果に応じてアクセス許可または不許可のアクセス制御を行う。アクセス制御部1310は、このアクセス制御を、有効フラグ保持部1311に保持されている有効フラグが、「有効」を示している時のみ行う。アクセス制御部1310は、有効フラグが「無効」を示している場合には、アクセス制御を行わず、すべてのアクセスを許可する。
有効フラグ保持部1311は、アクセス制御部1310のアクセス制御を行う(有効)か行わない(無効)かを示す有効フラグを保持する。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、領域判定部1301、モード判定部1302およびプログラム・領域対応判定部1303の判定結果を参照する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
設定部1313は、有効フラグ保持部1311が保持する有効フラグの状態を変更する。状態の変更は、保護環境1100で動作するプログラム(メモリ設定部1103)が行う。設定部1313は、有効フラグ保持部1311が保持する有効フラグの状態を通知された状態に変更する。設定部1313は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、有効フラグの状態を変更する。
なお、アクセス判定部1300は、アクセス制御部1310と判定部1312のみを含んで構成され、有効フラグ保持部1311と設定部1313を含まないとしてもよい。この時、アクセス制御部1310は、内部バス側からメモリ1250へアクセスがあった場合には、直ちに判定部1312に判定を依頼し、その判定結果に応じてアクセス許可または不許可のアクセス制御を行う。
<領域判定部1301の構成>
図16は、本発明の実施の形態1における領域判定部1301の構成図である。
図16において、領域判定部1301は、判定部1320と、アドレス取得部1321と、アドレス保持部1322と、設定部1323と、領域番号通知部1324とを含む。
判定部1320は、内部バス側からメモリ1250へアクセスがあった時に、そのアクセス先の物理アドレスがトラステッドメモリとして設定されている領域かどうかを判定する。アクセス先の物理アドレスは、アドレス取得部1321から取得し、トラステッドメモリとして設定されている領域(物理アドレス)は、アドレス保持部1322から取得する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
アドレス取得部1321は、内部バス側からメモリ1250へアクセスがあった時のアクセス情報から、アクセス先の物理アドレスを取得する。アクセス情報は、アクセス先物理アドレスと、属性(読み込み、書き込み、実行)と、動作モード(特権モード、非特権モード)とを含む。
なお、アクセス情報には、更に、どの回路(CPUまたは周辺回路)からのアクセスであるかを示す情報を含んでもよいし、実行環境が通常環境と保護環境のどちらの実行環境であるかを示す情報を含んでもよい。
アドレス保持部1322は、トラステッドメモリとして設定している領域の物理アドレスを保持する。保持する情報としては、トラステッドメモリとして設定している領域の先頭物理アドレス(開始アドレス)とその領域のサイズ、その領域設定が有効であるかどうかを示すフラグ(有効/無効フラグ)である。アドレス保持部1322は、トラステッドメモリを複数設定している場合には、アドレスリストとして先頭物理アドレスとサイズの組を管理する。また、アドレス保持部1322は、領域を識別するための領域番号も一緒に管理する。アドレスリストの構造は、図17Aに示すように、有効/無効フラグと、領域番号と、先頭物理アドレス(開始アドレス)と、サイズとを1つの組としたリストである。
設定部1323は、アドレス保持部1322が保持する領域情報(先頭物理アドレスとサイズと、有効/無効フラグ)の設定を変更する。領域情報の変更は、保護環境1100で動作するプログラム(メモリ設定部1103)のみが行う。設定部1323は、アドレス保持部1322が保持する領域情報を通知された領域情報に変更する。設定部1323は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、領域情報を変更する。
領域番号通知部1324は、判定部1320によりトラステッドメモリと判定された領域番号を、他の判定部へ通知する。
なお、トラステッドメモリとして、1つの領域のみ設定可能な場合には、領域番号通知部1324はなくてもよい。他の判定部においては、領域が1つしかないため、アクセス先物理アドレスがトラステッドメモリであった場合には、その領域を特定可能である。
なお、アドレス保持部1322で保持するアドレスリストの構造は、図17Bに示すように、有効/無効フラグと、領域番号と、開始アドレスと、終了アドレスとからなる形式であってもよい。
<モード判定部1302の構成>
図18は、本発明の実施の形態1におけるモード判定部1302の構成図である。
図18において、モード判定部1302は、判定部1330と、CPUモード取得部1331とを含む。
判定部1330は、メモリ1250へのアクセス時にCPUの動作モードが、非特権モードであるかどうかを判定し、非特権モードの場合はOKを、特権モードの場合NGを返す。CPUの動作モードは、CPUモード取得部1331から取得する。
CPUモード取得部1331は、メモリ1250へのアクセス時に、アクセス命令を発行したプログラムがCPUの特権モードと非特権モードのどちらのモードで動作していたかを、アクセス情報から取得する。
<プログラム・領域対応判定部1303の構成>
図19は、本発明の実施の形態1におけるプログラム・領域対応判定部1303の構成図である。
図19において、プログラム・領域対応判定部1303は、判定部1340と、アプリID取得部1341と、領域番号取得部1342と、アプリID・領域対応保持部1343と、設定部1344とを含む。
判定部1340は、アプリID取得部1341と領域番号取得部1342から、アプリを識別するアプリIDと領域判定部1301から通知される領域番号をそれぞれ取得する。そして、判定部1340は、アプリID・領域対応保持部1343に格納しているアプリID・領域対応リストから、取得した領域番号で示されるメモリ領域に、取得したアプリIDを持つプログラムがアクセス可能か判定する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
アプリID取得部1341は、メモリ1250へのアクセス時に、アクセス命令を発行したプログラムの識別子(アプリID)を取得する。アプリIDとしては、汎用OS1001がアプリの識別に使用しているプロセスIDが使用される。プロセスIDは、汎用OS1001がプロセスIDを管理するために使用しているデータ構造(プロセスディスクリプタ等)から取得する。
領域番号取得部1342は、領域判定部1301の領域番号通知部1324からの通知を受け、判定部1340へ領域番号を通知する。
アプリID・領域対応保持部1343は、領域番号とその領域にアクセス許可するアプリIDの組のリストをアプリID・領域対応リストとして保持する。アプリID・領域対応リストの構造は、図20Aに示すように、領域番号とアプリIDを1つの組としたリスト構造である。
設定部1344は、アプリID・領域対応保持部1343が保持する領域番号とアプリIDの対応関係を変更する。この変更は、保護環境1100で動作するプログラム(メモリ設定部1103)が行う。設定部1344は、アプリID・領域対応保持部1343が保持する領域番号とアプリIDの対応関係を、通知された領域番号とアプリIDの対応関係に変更する。設定部1344は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、領域番号とアプリIDの対応関係を変更する。
なお、トラステッドメモリとして、1つの領域のみ設定可能な場合には、領域番号取得部1342を含まない構成でもよい。この場合、アプリID・領域対応リストとしては、アプリIDのみのリスト、あるいは、アプリIDを1つだけ含むリストとなる。
なお、アプリID・領域対応リストの構造は、領域番号とアプリIDを1つの組としたリストであるとしたが、これに限定されるものではなく、アドレスリスト1400と同様に、有効/無効フラグと領域番号とアプリIDとを1つの組として管理してもよい。また、アプリID・領域対応リストの構造は、1つの領域番号に複数のアプリIDが登録できる構造でもよい。複数のアプリIDが登録できる構造としては、例えば図20Bに示すような構造である。例えば、領域番号「1」で指定されるトラステッドメモリの領域は、アプリIDが「1001」のアプリと「1104」のアプリとで共有されることが示されている。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態1におけるアクセス判定部1300のアクセス判定処理を、図21のフローチャートを用いて説明する。
アクセス制御部1310は、有効フラグ保持部1311に格納されている有効フラグを取得する(S1100)。
アクセス制御部1310は、有効フラグが「有効」を示しているか確認する(S1101)。
アクセス制御部1310は、ステップS1101で、「有効」であると確認した場合には、判定部1312へ、アクセス判定を依頼する(S1102)。
判定部1312は、領域判定部1301にトラステッドメモリへのアクセスかどうかの判定を依頼する(S1103)。領域判定部1301の判定処理の詳細は、後述する。
判定部1312は、ステップS1103の判定結果が、「トラステッドメモリへのアクセスである」である場合には、ステップS1104でYESと判定し、プログラム・領域対応判定部1303から判定結果を取得する(S1105)。プログラム・領域対応判定部1303の判定処理の詳細は、後述する。判定部1312は、ステップS1103で「トラステッドメモリへのアクセスではない」と判定した場合には、ステップS1104でNOと判定し、判定部1312の判定結果を「許可」とする(S1108)。
判定部1312は、さらに、モード判定部1302から判定結果を取得する(S1106)。判定処理の詳細は、モード判定部1302の構成で説明した通りである。
判定部1312は、プログラム・領域対応判定部1303とモード判定部1302から取得した判定結果が、どちらもOKであるか確認する(S1107)。
判定部1312は、ステップS1107で、どちらもOKであると確認した場合には、判定結果を「許可」とする(S1108)。ステップS1107で、少なくともどちらか一方がNGであると確認した場合には、判定結果を「不許可」とする(S1109)。
判定部1312は、判定結果をアクセス制御部1310へ通知する(S1110)。
アクセス制御部1310は、ステップS1101で、「無効」であると判断した場合には、判定結果を「許可」とする(S1111)。
アクセス制御部1310は、判定結果に応じてアクセス制御処理を行う(S1112)。判定結果が「許可」であった場合には、アクセス制御部1310は、メモリ1250へのアクセス処理を継続して行う。判定結果が「不許可」であった場合には、アクセス制御部1310は、メモリ1250へのアクセス処理を中止し、エラーを返す。
なお、アクセス制御部1310は、判定結果が「不許可」であった場合にはエラーを返すとしたが、これに限定されるものではなく、アクセス結果として特定の値(例えば、0x0000または0xFFFF)を返すとしてもよい。
<領域判定部1301の判定処理(図21のS1103)>
以下、本発明の実施の形態1における領域判定部1301の判定処理(図21のS1103)を、図22のフローチャートを用いて説明する。
判定部1320は、アドレス取得部1321から、アクセス先の物理アドレスを取得する(S1120)。
次に、判定部1320は、アドレス保持部1322からトラステッドメモリとして設定している領域の物理アドレスを取得する。取得する情報は、領域番号と、先頭物理アドレスと、サイズとである。
判定部1320は、取得したアクセス先物理アドレスがトラステッドメモリとして設定している領域に含まれるかを判定する(S1122)。つまり、判定部1320は、アドレスリストから1組の先頭物理アドレスとサイズの組を取得し、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認する。判定部1320は、条件を満たす場合、アクセス先物理アドレスがトラステッドメモリに含まれると判定し、その領域番号を記憶する。判定部1320は、この処理を、アドレス保持部1322に保持されているアドレスリスト内のすべての有効になっている領域に対して行う。アクセス先物理アドレスが、リスト内のどの領域にも含まれない場合には、判定部1320は、アクセス先物理アドレスがトラステッドメモリに含まれないと判定する。
判定部1320は、ステップS1122で、アクセス先物理アドレスがトラステッドメモリに含まれると判定した場合には、ステップS1123でYESと判定し、アクセス先物理アドレスが含まれる領域番号を、領域番号通知部1324を通して、プログラム・領域対応判定部1303などに通知する(S1124)。
最終的に、判定部1320は、メモリ1250へのアクセスがトラステッドメモリへのアクセスであると判定する(S1125)。
判定部1320は、ステップS1122で、アクセス先物理アドレスがトラステッドメモリに含まれないと判定した場合には、ステップS1123でNOと判定し、メモリ1250へのアクセスがトラステッドメモリへのアクセスではないと判定する(S1126)。
<プログラム・領域対応判定部1303の判定処理(図21のS1105)>
以下、プログラム・領域対応判定部1303の判定処理(図21のS1105)を、図23のフローチャートを用いて説明する。
判定部1340は、アプリID取得部1341からアプリIDを取得する(S1130)。
判定部1340は、領域番号取得部1342から領域判定部1301が通知する領域番号を取得する(S1131)。
判定部1340は、アプリID・領域対応保持部1343からアプリID・領域対応リストを取得する(S1132)。取得する情報は、領域番号とその領域にアクセス許可するアプリIDを1つの組としたリストである。
判定部1340は、ステップS1130で取得したアプリIDとステップS1131で取得した領域番号が、ステップS1132で取得したアプリID・領域対応リストに含まれる組み合わせであるかを判定する(S1133)。つまり、判定部1340は、ステップS1131で取得した領域番号がアプリID・領域対応リストに含まれるか調べる。ステップS1131で取得した領域番号が含まれる場合には、判定部1340は、その領域番号と組になっているアプリIDをアプリID・領域対応リストから抽出する。判定部1340は、抽出したアプリIDが、ステップS1130で取得したアプリIDと一致するか確認する。アプリIDが一致した場合には、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定する。アプリID・領域対応リストに領域番号が含まれない場合、またはアプリIDが一致しない場合には、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれないと判定する。ステップS1131で取得した領域番号が複数ある場合には、判定部1340は、それぞれの領域番号に対して、上記の処理を適用する。取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定した領域が1つもない場合には、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれないと判定する。それ以外の場合は、判定部1340は、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定する。
判定部1340は、ステップS1133で、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれると判定した場合には、ステップS1134でOKと判定し、領域に対応づけたアプリからのアクセスであると判定する(S1135)。
判定部1340は、ステップS1133で、取得したアプリIDと領域番号がアプリID・領域対応リストに含まれないと判定した場合には、ステップS1134でNGと判定し、領域に対応づけられていないアプリからのアクセスと判定する(S1136)。
<メモリ設定部1103の設定値の生成処理(図11のS1021)>
以下、本発明の実施の形態1におけるメモリ設定部1103の設定値の生成処理(図11のS1021)を、図24のフローチャートを用いて説明する。
メモリ設定部1103は、トラステッドメモリ領域1240を使用する前に、有効フラグ保持部1311が保持する有効フラグを確認する(S1140)。
メモリ設定部1103は、ステップS1140で、有効フラグが「無効」になっていると確認した場合には、アクセス判定部1300の設定部1313に依頼して、有効フラグ保持部1311が保持する有効フラグを「有効」に設定する(S1141)。
メモリ設定部1103は、ステップS1140で、「有効」になっていると確認した場合、または、ステップS1141の処理を実行後、ステップS1142へ遷移する。
メモリ設定部1103は、自身が管理する領域番号から、トラステッドメモリの領域番号として、トラステッドメモリ制御部1203に設定していない未使用の領域番号を取得する(S1142)。領域番号の数は、システム設定時に決定される。領域番号は、「使用」または「未使用」を示すフラグと、その領域番号に設定する領域情報(先頭物理アドレスとサイズ)と一緒に領域番号管理テーブルとして管理される。
メモリ設定部1103は、ステップS1142で取得した領域番号と、トラステッドメモリ設定依頼時に暗復号処理部1104から通知される復号用に確保したメモリの領域情報(先頭物理アドレスとサイズ)とを1つの組として、領域判定部1301への設定値を生成する(S1143)。
メモリ設定部1103は、ステップS1142で取得した領域番号と、汎用OS1001から取得したアプリIDとを1つの組として、プログラム・領域対応判定部1303への設定値を生成する(S1144)。
なお、メモリ設定部1103は、ステップS1143で、領域判定部1301への設定値を生成する時に、暗復号処理部1104から通知される領域情報が示す領域が、その時点で有効になっている領域と重なるかチェックしてもよい。メモリ設定部1103は、重なる場合は、エラーを返してもよいし、重ならない領域のみトラステッドメモリの設定をするために設定値を生成してもよい。
なお、メモリ設定部1103は、ステップS1144で、プログラム・領域対応判定部1303への設定値を生成する時に、トラステッドメモリに設定する領域が他の領域と重なる場合は、アプリIDが異なるかチェックしてもよい。メモリ設定部1103は、アプリIDが異なる場合は、エラーを返してもよいし、重ならない領域のみそのアプリIDを含む設定値を生成してもよい。メモリ設定部1103は、アプリIDが同じ場合は、重なる状態のまま設定値を生成してもよい。
<メモリ設定部1103の設定解除依頼処理>
以下、本発明の実施の形態1におけるメモリ設定部1103の設定解除依頼処理を、図25のフローチャートを用いて説明する。
メモリ設定部1103は、暗復号処理部1104から通知された設定を解除する領域の領域情報から、領域番号を取得する(S1150)。
メモリ設定部1103は、ステップS1150で取得した領域番号の有効/無効フラグを無効に設定するように、トラステッドメモリ制御部1203へ依頼する(S1151)。
メモリ設定部1103は、領域番号管理テーブルを参照し、すべての領域の設定が解除され、未使用の状態になっているか確認する(S1152)。
メモリ設定部1103は、ステップS1152で、すべての領域の設定が解除されていると判定した場合、「YES」と判定し、有効フラグ保持部1311が保持する有効フラグを「無効」に設定する(S1153)。
メモリ設定部1103は、ステップS1152で、すべての領域の設定が解除されていないと判定した場合、「NO」と判定し、処理を終了する。
なお、ステップS1151で、領域を無効に設定するようトラステッドメモリ制御部1203へ依頼するとしたが、その処理(S1151)後、メモリ設定部1103は、トラステッドメモリとして設定されていた領域を、異なる値(例えば、全ビット“0”、全ビット“1”、乱数、または所定のビットパターンなど)で上書きする処理を行ってもよい。また、上記処理は、メモリ設定部1103が行うのではなく、トラステッドメモリ制御部1203が行ってもよい。トラステッドメモリ制御部1203が行う場合は、ステップS1151の後で行ってもよいし、ステップS1151の依頼を受けた時に行ってもよい。ステップS1151の依頼を受けた時に行う場合は、トラステッドメモリ制御部1203は、設定を「無効」に変更する前に処理してもよいし、変更した後に処理してもよい。
以上説明したように、本発明の実施の形態1によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態1によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
(実施の形態2)
本発明の実施の形態2は、本発明の実施の形態1のトラステッドメモリ制御部1203に対して、トラステッドメモリ領域1240へのアクセス判定を、領域判定部1301とモード判定部1302と、プログラム・領域対応判定部1303との3つの判定部で判定するのではなく、モード判定部1302とプログラム・領域判定部1304の2つの判定部で判定する構成とする。
以下、本発明の実施の形態2におけるトラステッドメモリ制御部1203の構成および判定処理を説明する。なお、本発明の実施の形態1と同じ構成要素については同じ符号を用い、説明を省略する。
<トラステッドメモリ制御部1203の構成>
図26は、本発明の実施の形態2のトラステッドメモリ制御部1203の構成図である。
図26において、トラステッドメモリ制御部1203は、アクセス判定部1300と、モード判定部1302と、プログラム・領域判定部1304とを含む。
プログラム・領域判定部1304は、アクセス判定部1300がシステムLSI1200内部からメモリ1250へのアクセスを検出した時に、当該アクセスが、通常メモリ領域1220へのアクセスか、トラステッドメモリ領域1240へのアクセスかを判定し、トラステッドメモリ領域1240へアクセスしたアプリ(プログラム)が、アクセスした領域に設定されたアプリかを判定する。
以下に、本発明の実施の形態2におけるアクセス判定部1300とプログラム・領域判定部1304の各部の詳細を構成図を用いて説明する。
<アクセス判定部1300の構成>
アクセス判定部1300は、本発明の実施の形態1と同じ構成となり、アクセス制御部1310と、有効フラグ保持部1311と、判定部1312と、設定部1313とを含む。
以下、本発明の実施の形態1と動作が異なる判定部1312に関してのみ説明する。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、モード判定部1302およびプログラム・領域判定部1304の判定結果を参照する。判定処理の詳細は、後述する。
<プログラム・領域判定部1304の構成>
図27は、本発明の実施の形態2のプログラム・領域判定部1304の構成図である。
図27において、プログラム・領域判定部1304は、判定部1350と、アプリID取得部1351と、アドレス取得部1352と、アプリID・アドレス保持部1353と、設定部1354とを含む。
判定部1350は、アプリID取得部1351とアドレス取得部1352から、アプリを識別するアプリID(プロセスID)とアクセス先の物理アドレスとをそれぞれ取得する。そして、判定部1350は、アプリID・アドレス保持部1353に格納しているアプリID・アドレス対応リストに基づいて、取得した物理アドレスで示されるメモリ領域に、取得したアプリIDを持つプログラムがアクセス可能か判定する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
アプリID取得部1351は、本発明の実施の形態1における、アプリID取得部1341(図19)と同様の機能を持ち、メモリ1250へのアクセス時に、アクセス命令を発行したプログラムの識別子(アプリID)を取得する。
アドレス取得部1352は、本発明の実施の形態1における、アドレス取得部1321(図16)と同様の機能を持ち、内部バス側からメモリ1250へアクセスがあった時のアクセス情報から、アクセス先の物理アドレスを取得する。
アプリID・アドレス保持部1353は、領域情報(開始アドレスとサイズ)とその領域にアクセス許可するアプリIDとの組のリストをアプリID・アドレス対応リストとして保持する。アプリID・アドレス対応リストの構造は、図28Aに示すように、領域番号と、有効/無効フラグと、先頭物理アドレス(開始アドレス)と、サイズと、アプリIDとを1つの組とするリストである。
なお、アプリID・アドレス保持部1353で保持するアプリID・アドレス対応リストの構造は、図28Bに示すように、領域番号と、有効/無効フラグと、開始アドレスと、終了アドレスと、アプリIDとからなる形式であってもよい。
設定部1354は、アプリID・アドレス保持部1353が保持する有効/無効フラグと、領域情報(開始アドレスとサイズ)と、アプリIDの値とを変更する。この変更は、保護環境1100で動作するプログラム(メモリ設定部1103)が行う。設定部1354は、アプリID・アドレス保持部1353が保持する有効/無効フラグと、領域情報(開始アドレスとサイズ)と、アプリIDの値とを、通知された値に変更する。設定部1354は、実行環境切替部1204が通知する実行環境識別信号が保護環境を示す時のみ、有効/無効フラグと、領域情報(開始アドレスとサイズ)と、アプリIDの値とを変更する。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態2におけるアクセス判定部1300のアクセス判定処理を、図29のフローチャートを用いて説明する。本発明の実施の形態1と同じ構成要素については同じ符号を付す。
アクセス制御部1310は、有効フラグ保持部1311に格納されている有効フラグを取得する(S1200)。
アクセス制御部1310は、有効フラグが「有効」を示しているか確認する(S1201)。
アクセス制御部1310は、ステップS1201で、「有効」であると確認した場合には、判定部1312へ、アクセス判定を依頼する(S1202)。
判定部1312は、プログラム・領域判定部1304にトラステッドメモリへの許可されたアプリからのアクセスかどうかの判定を依頼する(S1203)。プログラム・領域判定部1304の判定処理の詳細は、後述する。
判定部1312は、ステップS1203の判定結果が、「プログラムがアクセス可能」である場合には、ステップS1204でOKと判定し、モード判定部1302から判定結果を取得する(S1205)。判定処理の詳細は、モード判定部1302の構成で説明した通りである。
判定部1312は、ステップS1205でOKであると判定した場合には、ステップS1206でOKと判定し、判定部1312の判定結果を「許可」とする(S1207)。
判定部1312は、ステップS1205でNGであると判定した場合には、ステップS1206でNGと判定し、判定部1312の判定結果を「不許可」とする(S1208)。
判定部1312は、ステップS1203の判定結果が、「プログラムがアクセス不可能」である場合には、ステップS1204でNGと判定し、判定部1312の判定結果を「不許可」とする(S1208)。
判定部1312は、ステップS1203の判定結果が、「トラステッドメモリの領域外」である場合には、ステップS1204で領域外と判定し、判定部1312の判定結果を「許可」とする(S1207)。
判定部1312は、判定結果をアクセス制御部1310へ通知する(S1209)。
アクセス制御部1310は、ステップS1201で、「無効」であると判断した場合には、判定結果を「許可」とする(S1210)。
アクセス制御部1310は、判定結果に応じてアクセス制御処理を行う(S1211)。判定結果が「許可」であった場合には、トラステッドメモリへのアクセス処理を継続して行う。判定結果が「不許可」であった場合には、トラステッドメモリへのアクセス処理を中止し、エラーを返す。
<プログラム・領域判定部1304の判定処理(図29のS1203)>
以下、本発明の実施の形態2におけるプログラム・領域判定部1304の判定処理(図29のS1203)を、図30のフローチャートを用いて説明する。
判定部1350は、アプリID取得部1351からアプリIDを取得する(S1230)。
判定部1350は、アドレス取得部1352からアクセス先の物理アドレスを取得する(S1231)。
判定部1350は、アプリID・アドレス保持部1353に保持されているアプリID・アドレス対応リストから、先頭物理アドレス、サイズ、アプリIDの組を1つ取得する(S1232)。この時、アプリID・アドレス対応リストの有効/無効フラグを確認し、「有効」と記されている項目のみを取得する。
判定部1350は、ステップS1231で取得したアクセス先物理アドレスがステップS1232で取得した先頭物理アドレスとサイズで表される領域に含まれるか判定する(S1233)。つまり、判定部1350は、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認する。判定部1350は、条件を満たす場合、アクセス先物理アドレスがトラステッドメモリに含まれると判定し、条件を満たさない場合、アクセス先の物理アドレスがトラステッドメモリに含まれないと判定する。
判定部1350は、ステップS1233で、アクセス先物理アドレスがトラステッドメモリに含まれると判定した場合には、ステップS1234でYESと判定し、ステップS1230で取得したアプリIDが、ステップS1232で取得したアプリIDと一致するか判定する(S1235)。
ステップS1233で、アクセス先物理アドレスがトラステッドメモリに含まれないと判定した場合(S1234でNO)、または、ステップS1235の処理の後、判定部1350は、アプリID・アドレス保持部1353が保持するアプリID・アドレス対応リストの「有効」と記されている項目に関して、すべての項目に関してステップS1233の判定が終了したか判定する(S1236)。判定部1350は、ステップS1236で、すべての項目に関して判定が終了したと判定した場合、「YES」と判定し、ステップS1237へ遷移する。判定部1350は、ステップS1236で、すべての項目に関して判定が終了していないと判定した場合、「NO」と判定し、ステップS1232へ遷移する。
判定部1350は、アプリID・アドレス対応リスト内の1つ以上の項目において、アクセス先物理アドレスが含まれる領域があった場合、ステップS1237で「YES」と判定し、ステップS1238へ遷移する。
判定部1350は、ステップS1235で一致すると判定した項目が1つでもあった場合、ステップS1238で「YES」と判定し、プログラムがアクセス可能と判定する(S1239)。
判定部1350は、ステップS1235で一致すると判定した項目が1つもなかった場合、ステップS1238で「NO」と判定し、プログラムがアクセス不可能と判定する(S1240)。
判定部1350は、アプリID・アドレス対応リスト内のすべての項目において、アクセス先物理アドレスが含まれる領域がなかった場合、ステップS1237で「NO」と判定し、アクセス先がトラステッドメモリの領域外と判定する(S1241)。
以上説明したように、本発明の実施の形態2によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態2によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
(実施の形態3)
本発明の実施の形態3は、本発明の実施の形態1の機器110、111のハードウェア構成において、トラステッドメモリの領域を汎用OS1001またはアプリA1008等を格納するメモリと同じメモリ1250上に設けるのではなく、トラステッドメモリ専用のメモリを利用する構成とする。また、トラステッドメモリ1270は、特権モードで動作するプログラム(汎用OS1001)からアクセス不可能なメモリとし、複数の領域を設定することができない場合について説明する。
以下、本発明の実施の形態3における機器110、111のハードウェア構成および判定処理を説明する。なお、本発明の実施の形態1と同じ構成要素については同じ符号を用い、説明を省略する。
<機器110、111のハードウェア構成>
図31は、本発明の実施の形態3における機器110、111のハードウェア構成図である。図31において、図3と同じ構成要素については同じ符号を用い、説明を省略する。
図31において、機器110、111は、システムLSI1200と、不揮発性記憶装置1230と、通常メモリ1260と、トラステッドメモリ1270とを含む。システムLSI1200は、不揮発性記憶装置1230、通常メモリ1260とそれぞれ外部バスを介して接続されている。また、システムLSI1200は、トラステッドメモリ1270と専用の外部バスを用いて接続されている。
システムLSI1200は、トラステッドメモリ制御部1203の構成、および、動作が異なるのみで、他の構成に関しては本発明の実施の形態1と同じである。トラステッドメモリ制御部1203の構成、および、動作に関しては後述する。
通常メモリ1260は、汎用OS1221と、ダウンロード制御アプリ1222と、アプリA1223と、アプリB1224と、ダウンロード制御アプリ用のデータ1225と、アプリA用のデータ1226と、アプリB用のデータ1227とを格納する。
トラステッドメモリ1270は、アプリA用の保護データ1241とアプリB用の保護データ1242を格納する。トラステッドメモリ1270は、アプリのみがアクセス可能なメモリ領域であり、アクセス可能または不可能の制御は、トラステッドメモリ制御部1203によって実現される。
<保護データの管理方法>
以下、本発明の実施の形態3の保護データの管理方法を、本発明の実施の形態1における保護データの管理方法の説明図(図10から図13)を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図10から図13のうち、本発明の実施の形態1と異なる処理の部分のみを説明する。
まず、図10を用いて、本発明の実施の形態3における保護データの読み込み処理に関して説明する。
ステップS1010からステップS1013に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1014において、保護データ管理部1004が、読み込んだ暗号化された保護データを復号した結果を書き込む領域をメモリ1250上に確保するとしていた。しかし、本発明の実施の形態3においては、トラステッドメモリ領域として利用可能なメモリは、トラステッドメモリ1270のみである。そのため、ステップS1014は、メモリ1250上に領域を確保するのではなく、トラステッドメモリ1270を使用するフラグを設定する処理となる。保護データ管理部1004は、追加の処理として、トラステッドメモリ1270を使用するフラグが既に設定されていた場合には、復号依頼(ステップS1015)は行わず、不揮発性メモリ管理部1003へ終了通知を行う。
また、本発明の実施の形態1では、ステップS1015において、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)を一緒に通知するとしていた。しかし、本発明の実施の形態3においては、ステップS1014でメモリ1250上に領域を確保しない。このため、保護データ管理部1004は、ステップS1014で確保したメモリ1250上の領域情報(先頭物理アドレスとサイズ)を暗復号処理部1104へ通知しない。
ステップS1106以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
次に、図11を用いて、本発明の実施の形態3における暗号化された保護データの復号処理(S1012)に関して説明する。
本発明の実施の形態1では、ステップS1020において、保護データ管理部1004から通知された復号用に確保したメモリの領域情報(先頭物理アドレスとサイズ)を一緒に通知するとしていた。しかし、本発明の実施の形態3においては、復号用に確保したメモリの領域情報は通知されないため、暗復号処理部1104は、メモリ設定部1103にはこの領域情報を通知しない。
本発明の実施の形態1では、ステップS1021において、設定値を生成するとしていた。しかし、本発明の実施の形態3では、領域情報とアプリIDは生成されない。トラステッドメモリ1270の領域情報は、設計時に決定されるため、メモリ設定部1103は、このステップでは領域情報を生成しない。また、トラステッドメモリ制御部1203にはアプリIDを設定しないため、メモリ設定部1103は、アプリIDも生成しない。本ステップは不要となる。
本発明の実施の形態1では、ステップS1022において、ステップS1021で生成した設定値を通知するとしていた。しかし、本発明の実施の形態3においては、ステップS1021が不要となるため、メモリ設定部1103は、設定値を通知しない。
本発明の実施の形態1では、ステップS1023において、トラステッドメモリ制御部1203は、メモリ設定部1103から通知された設定値を元にトラステッドメモリ領域1240を設定するとしていた。しかし、本発明の実施の形態3では、トラステッドメモリ制御部1203は、設計時に決定される領域情報を元に、トラステッドメモリ1270全体をトラステッドメモリ領域として設定する。
ステップS1024からステップS1028までの処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
本発明の実施の形態1では、ステップS1029において、暗復号処理部1104は、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)をメモリ設定部1103に通知するとしていた。しかし、本発明の実施の形態3においては、暗復号処理部1104は、領域情報を通知しない。
本発明の実施の形態1では、ステップS1030において、トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除するとしていた。しかし、本発明の実施の形態3においては、トラステッドメモリ1270全体がトラステッドメモリ領域のため、領域情報は通知されず、トラステッドメモリ制御部1203は、トラステッドメモリ1270の設定を解除する。
次に、図12を用いて、本発明の実施の形態3における保護データの書き込み方法に関して説明する。
ステップS1040からステップS1043に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1044において、暗復号処理部1104は、データ識別子と領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、トラステッドメモリ上の対応する領域の保護データを暗号化するとしていた。しかし、本発明の実施の形態3においては、暗復号処理部1104は、トラステッドメモリ1270全体を暗号化する。
ステップS1045以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
次に、図13を用いて、本発明の実施の形態3における保護データの暗号化処理(S1044)に関して説明する。
ステップS1050からステップS1052に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1053において、暗復号処理部1104は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報(先頭物理アドレスとサイズ)を、メモリ設定部1103に通知するとしていた。しかし、本発明の実施の形態3においては、設定を解除する領域は、トラステッドメモリ1270全体であるため、暗復号処理部1104は、領域情報をメモリ設定部1103に通知しない。
本発明の実施の形態1では、ステップS1054において、トラステッドメモリ制御部1203は、通知された領域情報が示す領域のトラステッドメモリの設定を解除するとしていた。しかし、本発明の実施の形態3においては、領域情報は通知されない。このため、トラステッドメモリ制御部1203は、トラステッドメモリの設定解除を、トラステッドメモリ1270全体に対して行う。
以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
<トラステッドメモリ制御部1203の構成>
図32は、本発明の実施の形態3におけるトラステッドメモリ制御部1203の構成図である。
図32において、トラステッドメモリ制御部1203は、アクセス判定部1300と、領域判定部1301と、モード判定部1302とを含む。
以下に、本発明の実施の形態3におけるアクセス判定部1300と領域判定部1301の各部の詳細を構成図を用いて説明する。
<アクセス判定部1300の構成>
図33は、本発明の実施の形態3におけるアクセス判定部1300の構成図である。
図33において、アクセス判定部1300は、アクセス制御部1310と判定部1312とを含む。
アクセス制御部1310は、システムLSI1200とメモリ1250とを接続する外部専用バスと、システムLSI1200の内部バスとに接続され、内部バスと外部専用バス間のデータ中継を行う。内部バス側からメモリ1250へアクセスがあった場合には、アクセス制御部1310は、判定部1312の判定結果に応じてアクセス許可または不許可のアクセス制御を行う。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、領域判定部1301およびモード判定部1302の判定結果を参照する。判定処理の詳細は、後述する。
<領域判定部1301の構成>
図34は、本発明の実施の形態3における領域判定部1301の構成図である。
図34において、領域判定部1301は、判定部1320と、アドレス取得部1321と、アドレス保持部1322とを含む。
以下、本発明の実施の形態1と動作が異なる判定部1320とアドレス保持部1322に関してのみ説明する。
判定部1320は、内部バス側からメモリ1250へアクセスがあった時に、そのアクセス先の物理アドレスがトラステッドメモリとして設定されている領域かどうかを判定する。アクセス先の物理アドレスは、アドレス取得部1321から取得し、トラステッドメモリとして設定されている領域(物理アドレス)は、アドレス保持部1322から取得する。判定処理の詳細は、後述する。
アドレス保持部1322は、トラステッドメモリとして設定している領域の物理アドレスを保持する。保持する情報としては、トラステッドメモリとして設定している領域の先頭物理アドレス(開始アドレス)とその領域のサイズである。これらの情報は、特権モードから変更できない領域に記憶される。例えば、システムLSI内のマスクROMもしくはPROM、システムLSIの内部レジスタ、内部保護メモリ1205、または不揮発性保護メモリ1206などに記憶される。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態3のアクセス判定部1300のアクセス判定処理を、本発明の実施の形態1におけるアクセス判定部1300のアクセス判定処理の説明図(図21)を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図21のうち、本発明の実施の形態1と異なる処理の部分のみを説明する。
ステップS1100からステップS1101とステップS1111とは、有効フラグが存在しないため、処理を行わない。
ステップS1102からステップS1104に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態3ではステップS1105の処理は実行されない。判定部1312は、ステップS1103の判定結果が、「トラステッドメモリである」である場合には、ステップS1104でYESと判定し、モード判定部1302から判定結果を取得する(S1106)。ステップS1106は、本発明の実施の形態1と同じ処理である。
本発明の実施の形態1では、ステップS1107において、判定部1312は、プログラム・領域対応判定部1303とモード判定部1302とから取得した判定結果が、どちらもOKであるか確認するとしていた。しかし、本発明の実施の形態3では、判定部1312は、モード判定部1302から取得した判定結果がOKであるか確認する。
ステップS1108以降(ステップS1111を除く)の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
<領域判定部1301の判定処理>
以下、本発明の実施の形態3の領域判定部1301の判定処理を、本発明の実施の形態1における領域判定部1301の判定処理の説明図(図22)を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図22のうち、本発明の実施の形態1と異なる処理の部分のみを説明する。
ステップS1120からステップS1121に関しては、本発明の実施の形態1と同じ処理となるため説明を省略する。
本発明の実施の形態1では、ステップS1122において、判定部1320は、アドレスリストから1組の先頭物理アドレスとサイズの組を取得し、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認するとしていた。また、判定部1320は、この処理を、アドレス保持部1322に保持されているアドレスリスト内のすべての有効になっている領域に対して行うとしていた。しかし、本発明の実施の形態3においては、アドレス保持部1322では、アドレスリストではなく、トラステッドメモリとして設定している領域の先頭物理アドレス(開始アドレス)とその領域のサイズを1組分保持しているのみである、そのため、ステップS1121とステップS1122を繰り返す処理は行われない。
ステップS1123以降の処理は、本発明の実施の形態1と同じ処理となるため、説明を省略する。
以上説明したように、本発明の実施の形態3によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態3によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
(実施の形態4)
本発明の実施の形態1のアクセス判定部1300は、モード判定部1302の判定結果を用いてアクセス許可または不許可の判定を行うとしたが、本発明の実施の形態4では、アプリとデバドラの間でデータの送受信が必要な場合は、モード判定部1302の判定結果を用いずに、アクセス許可または不許可の判定を行う。
図35は、アプリとデバドラの間でデータの送受信を可能にするアクセス判定部1300の構成図である。
図35において、アクセス判定部1300は、アクセス制御部1310と、有効フラグ保持部1311と、判定部1312と、設定部1313と、デバドラアクセス許可アプリIDリスト保持部1314とを含む。
以下、本発明の実施の形態1と動作が異なる判定部1312とデバドラアクセス許可アプリIDリスト保持部1314に関してのみ説明する。
判定部1312は、内部バス側からメモリ1250へアクセスがあった場合に、領域判定部1301、モード判定部1302およびプログラム・領域対応判定部1303の判定結果を参照し、アクセスの許可または不許可を判定する。本発明の実施の形態4においては、アプリから呼び出されたデバドラがメモリ1250へアクセスした時には、プログラム・領域対応判定部1303のアプリID取得部1351は、デバドラを呼び出したアプリのアプリIDを取得する。
デバドラアクセス許可アプリIDリスト保持部1314は、特権モードで動作するデバドラによるトラステッドメモリへのアクセスを許可するアプリのアプリIDのリスト(デバドラアクセス許可アプリIDリスト)を保持する。デバドラアクセス許可アプリIDリストの構造は、図36に示すように、アプリIDをリストで管理する。
<アクセス判定部1300のアクセス判定処理>
以下、本発明の実施の形態4におけるアクセス判定部1300のアクセス判定処理を、本発明の実施の形態1におけるアクセス判定部1300のアクセス判定処理の説明図(図21)と図37を用いて、説明する。なお、本発明の実施の形態1と同じ処理については説明を省略し、図21のうち、本発明の実施の形態1と異なるステップS1107の処理のみを説明する。
本発明の実施の形態1では、ステップS1107において、判定部1312は、プログラム・領域対応判定部1303とモード判定部1302から取得した判定結果が、どちらもOKであるか確認する。しかし、本発明の実施の形態4では、デバドラアクセス許可アプリIDリストに含まれるアプリIDを持つアプリからのアクセスがあった場合には、判定部1312は、プログラム・領域対応判定部1303から取得した判定結果がOKであるか確認する。処理の詳細を、図37を用いて説明する。
ステップS1106の処理後、判定部1312は、デバドラアクセス許可アプリIDリスト保持部1314からデバドラアクセス許可アプリIDリストを取得する(S1113)。
判定部1312は、プログラム・領域対応判定部1303からアプリIDを取得する(S1114)。
判定部1312は、ステップS1114で取得したアプリIDが、ステップS1113で取得したデバドラアクセス許可アプリIDリストに含まれるか判定する(S1115)。
判定部1312は、ステップS1115で、アプリIDがデバドラアクセス許可アプリIDリストに含まれないと判定した場合には、ステップS1116で「NO」と判定し、本発明の実施の形態1と同様にステップS1107からS1109の処理を実施する。
判定部1312は、ステップS1115で、アプリIDがデバドラアクセス許可アプリIDリストに含まれると判定した場合には、ステップS1116で「YES」と判定し、プログラム・領域対応判定部1303がOKと判定したかどうかを確認する(S1117)。
判定部1312は、プログラム・領域対応判定部1303がOKと判定した場合には、ステップS1117で、「OK」と判定し、判定結果を「許可」とし(S1108)、プログラム・領域対応判定部1303がOKと判定しなかった場合には、ステップS1117で、「NG」と判定し、判定結果を「不許可」とする(S1109)。
以上説明したように、本発明の実施の形態4によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみならず、アプリが呼び出すデバドラからもアクセス可能とした。このため、アプリが使用するデータに、アプリが呼び出さない不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
このように、本発明の実施の形態4によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
また、アプリとデバドラとの間でデータの送受信が必要な場合には、例外的に、デバドラからもトラステッドメモリ領域にアクセス可能とした。なお、デバドラは、特権モードで実行されることとなる。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記実施の形態におけるトラステッドメモリ制御部1203の各部は、すべてハードウェアで構成されていてもよい。また、アクセス制御部1310と各保持部(有効フラグ保持部1311、アドレス保持部1322、アプリID・領域対応保持部1343、アプリID・アドレス保持部1353)以外は、ソフトウェアで構成されていてもよい。また、アクセス制御部1310と各保持部(有効フラグ保持部1311、アドレス保持部1322、アプリID・領域対応保持部1343、アプリID・アドレス保持部1353)を含むいくつかの構成要素がハードウェアで構成され、それ以外の各部がソフトウェアで構成されていてもよい。
(2)上記実施の形態における機器110、111のハードウェア構成は、図38に示すように、CPU1201と、トラステッドメモリ制御部1203と、通常メモリ1260と、トラステッドメモリ1270とが最低限あればよい。
(3)上記実施の形態における各リスト(アドレスリスト1400、1401、アプリID・領域対応リスト1402、アプリID・アドレス対応リスト1404、1405)は、トラステッドメモリ制御部1203内のメモリまたはレジスタに格納してもよいし、内部保護メモリ1205に格納してもよいし、トラステッドメモリ領域1240またはトラステッドメモリ1270に格納してもよい。また、各リストは構造図で示した表形式で格納されなくてもよい。設計時に、どの領域(レジスタ)にどの情報を格納するかの関係が決められていればよい。
(4)上記実施の形態におけるアプリIDは、プロセスIDを使用するとしたが、これに限定されるものではなく、個々のアプリが識別できる情報であればよい。例えば、MMUに設定されるページテーブルのベースアドレスであってもよいし、特定の仮想アドレスに記されたデータ(識別子)であってもよい。また、アプリIDは、保護環境で動作するプログラムが設定する値としてもよい。この時、アプリID取得部1341は、保護環境で動作するプログラムがアプリIDを設定した領域からアプリIDを取得する。
(5)上記実施の形態では、領域判定部1301でのアドレスリスト1400にアクセス先物理アドレスが含まれるかを判定する処理(S1122)、または、プログラム・領域判定部1304でのアプリID・アドレス対応リスト1404、1405にアクセス先物理アドレスが含まれるか、およびそれに対応するアプリIDが一致するかを判定する処理(S1233もしくはS1235)において、これらの処理をリスト内のすべてのデータが判定できるまで繰り返し処理するとしたが、これに限定されるものではない。つまり、ハードウェアまたはマルチプロセッサを利用してこれらの処理を並列に処理してもよい。
(6)上記実施の形態では、暗号化された保護データ1231、1232は、機器110、111の工場製造時に不揮発性記憶装置1230に格納するとしたが、これに限定されるものではない。つまり、暗号化された保護データ1231、1232が、機器製造後、初めて読み込まれる時に生成されてもよい。この場合、保護データの読み込み処理では、アプリAまたはアプリBから指定された暗号化された保護データ1231または1232が既に存在しているかが確認され、存在していない場合は、保護データの生成処理が実行される。
保護データの初期化処理を、図10、図11および図39のフローチャートを用いて説明する。
図10において、暗号化された保護データ1231、1232が存在しない場合には、保護データ管理部1004は、ステップS1013をスキップし、ステップS1015の代わりに、暗復号処理部1104に初期化依頼を行う。その後、暗復号処理部1104は、初期化処理を行う。
次に、初期化処理の詳細を、図39を用いて説明する。
まず初めに、暗復号処理部1104は、トラステッドメモリの設定を行う。設定処理(ステップS1020からステップS1023)は、図11の復号処理と同じ処理のため説明を省略する。
暗復号処理部1104は、トラステッドメモリの設定処理終了後、保護データを暗号化するための鍵の生成を行い(S1031)、不揮発性保護メモリ1206に格納する。
暗復号処理部1104は、ステップS1020でトラステッドメモリに設定した領域を初期化する(S1032)。
最後に、暗復号処理部1104は、データ識別子を生成(S1028)し、処理を終了する。ステップS1028は、図11の復号処理と同じ処理のため説明を省略する。
なお、保護データの生成処理は、アプリAまたはアプリBからデータの読み込み依頼の代わりに、データの初期化依頼があった時に行うとしてもよい。
(7)上記実施の形態では、暗号化された保護データ1231、1232を復号した保護データ1241、1242のようなデータを、トラステッドメモリ制御部1203を用いて不正アプリまたは不正デバドラから保護するとしたが、これに限定されるものではない。たとえば、不揮発性記憶装置1230に格納されたアプリA1008またはアプリB1009を通常メモリ領域1220または通常メモリ1260にロードする代わりに、トラステッドメモリ領域1240またはトラステッドメモリ1270にロードし、アプリA1008およびアプリB1009のようなプログラムを保護するとしてもよい。
(8)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(9)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部または全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)、またはLSI内部の回路セルの接続および設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(10)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(11)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(12)上記実施の形態および上記変形例をそれぞれ組み合わせるとしてもよい。
本発明は、CPUが特権モードの時に動作するプログラムからのアクセスを防止するトラステッドメモリ制御部を有し、特権モードで、悪意を持った攻撃者によるプログラムが動作しても、ユーザのデータを保護可能な情報処理装置等として有用である。また特権モードで、悪意を持った攻撃者によるプログラムによる攻撃から、アプリケーションプログラムを保護可能な情報処理装置等にも適用できる。
100 アプリ配信システム
110、111 機器
120 アプリ配信サーバ
130 開発装置
1000 通常のソフトウェア実行環境(通常環境)
1001、1221 汎用オペレーティングシステム(汎用OS)
1002 カーネル
1003 不揮発性メモリ管理部
1004 保護データ管理部
1005 デバドラA
1006 デバドラB
1007、1222 ダウンロード制御アプリ
1008、1223 アプリA
1009、1224 アプリB
1100 安全なソフトウェア実行環境(保護環境)
1101、1210 セキュアオペレーティングシステム(セキュアOS)
1102、1211 セキュアブート部
1103、1212 メモリ設定部
1104、1213 暗復号処理部
1200 システムLSI
1201 CPU
1202 IPL(Initial Program Loader)
1203 トラステッドメモリ制御部
1204 実行環境切替部
1205 内部保護メモリ
1206 不揮発性保護メモリ
1220 通常メモリ領域
1225 ダウンロード制御アプリ用のデータ
1226 アプリA用のデータ
1227 アプリB用のデータ
1230 不揮発性記憶装置
1231 アプリA用の暗号化された保護データ
1232 アプリB用の暗号化された保護データ
1240 トラステッドメモリ領域
1241 アプリA用の保護データ
1242 アプリB用の保護データ
1250 メモリ
1260 通常メモリ
1270 トラステッドメモリ
1300 アクセス判定部
1301 領域判定部
1302 モード判定部
1303 プログラム・領域対応判定部
1304 プログラム・領域判定部
1310 アクセス制御部
1311 有効フラグ保持部
1312 判定部
1313 設定部
1314 デバドラアクセス許可アプリIDリスト保持部
1320 判定部
1321 アドレス取得部
1322 アドレス保持部
1323 設定部
1324 領域番号通知部
1330 判定部
1331 CPUモード取得部
1340 判定部
1341 アプリID取得部
1342 領域番号取得部
1343 アプリID・領域対応保持部
1344 設定部
1350 判定部
1351 アプリID取得部
1352 アドレス取得部
1353 アプリID・アドレス保持部
1354 設定部
2000 アプリ保持部
2001 アプリ受信処理部
2002 アプリ送信処理部
3000 パッケージ生成部
3001 設定ファイル生成部
3002 鍵ペア保持部
3003 鍵ペア生成部
3004 デバッグ処理部
3005 アップロード処理部
3100 コンパイラ
3101 リンカ
3102 パッケージ生成ツール
3110 プログラムソースコード
3111 ダウンロードパッケージ
3112 秘密鍵
3113、3206 公開鍵証明書
3114、3204 設定ファイル
3202 アプリ
3203 デバドラ
3205 アプリ署名リスト