JPWO2006129641A1 - コンピュータシステム及びプログラム生成装置 - Google Patents
コンピュータシステム及びプログラム生成装置 Download PDFInfo
- Publication number
- JPWO2006129641A1 JPWO2006129641A1 JP2007518997A JP2007518997A JPWO2006129641A1 JP WO2006129641 A1 JPWO2006129641 A1 JP WO2006129641A1 JP 2007518997 A JP2007518997 A JP 2007518997A JP 2007518997 A JP2007518997 A JP 2007518997A JP WO2006129641 A1 JPWO2006129641 A1 JP WO2006129641A1
- Authority
- JP
- Japan
- Prior art keywords
- program
- secure
- instruction
- secure program
- management area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
Description
例えば、パッケージとして売られているソフトウェアには、違法コピーによる使用を防ぐために、利用者に対してパスワードの入力を要求するものがある。このようなソフトウェアには、パスワードが正しいかどうかをチェックするコード(コンピュータプログラム)が含まれている。不正な利用者が、このソフトウェア内において、何らかの方法により、このチェックを行うコードが存在する場所を特定し、このチェックを無効にするようにこのコードに改ざんを加えたとするならば、この不正な利用者は、パスワードを知らなくてもこのソフトウェアを使用することができてしまう。
例えば、非特許文献1では、ソフトウェアの解析を防ぐための基本原則や具体的手法が記述されている。また、非特許文献2では、ソフトウェアの解析を防ぐためのツールとして開発されたTRCS(Tamper Resistant Coding System)の技術課題とその対策が記述されている。また、非特許文献3では、ソフトウェアの違法コピーを防ぐためのソフトウェア的な保護手段(コピープロテクト技術)を無効化されないようにする技術が解説されている。
「逆解析や改変からソフトを守る」日経エレクトロニクス 1998.1.5(P209−220) 「ソフトウェアの耐タンパー化技術」富士ゼロックス テクニカルレポート No.13 「ザ・プロテクト」秀和システム出版 1985年
そのため、OSに依存するライブラリを利用して、OS上で動作するソフトウェアが、秘匿情報を第三者に知られることなく、安全に処理するように、当該ソフトウェアについてセキュアな実装をした場合であっても、当該ソフトウェアについて、OS上で動作するデバッガに対して耐性が低いという問題点がある。すなわち、不正解析者により、OS上で動作するデバッガを用いて、OSに依存するライブラリを呼び出している部分が特定され、さらに、秘密情報が特定される危険性がある。
ここで、前記セキュアプログラムは、前記管理外領域において格納される秘匿すべき情報に関する秘匿処理を行う命令を含むとしてもよい。
ここで、前記管理領域は、さらに、基本プログラムの指示により、基本プログラムからセキュアプログラムへの実行の切替えを行う命令を含む切替プログラムを記憶しており、前記プロセッサは、さらに、前記管理領域に記憶されている前記切替プログラムに含まれている命令を読み出し、解読し、その解読結果に応じて動作し、前記基本プログラムは、さらに、前記切替プログラムに対して、セキュアプログラムへの切替を指示する命令を含み、前記セキュアプログラムは、さらに、前記秘匿処理の終了後、セキュアプログラムから基本プログラムへの実行の切替えを行う命令を含むとしてもよい。
この構成によると、セキュアプログラムから基本プログラムへの切り替えの際、スタックポインタの設定を基本プログラムが利用するものに戻すので、基本プログラムの処理を続行することができる。また、基本プログラムからセキュアプログラムへの切り替えの際に、スタックポインタの設定をセキュアプログラムが利用するものに戻すので、セキュアプログラムの処理を続行することができる。
この構成によると、難読化により、セキュアプログラムの解析が困難となるので、セキュアプログラムの安全性をさらに高めることができる。
また、一般にソフトウェアの処理が実行される前に、実行対象となるソフトウェアが利用するデータは初期化される。不正解析者は、解析対象のソフトウェアの解析を、ソフトウェア初期化シーケンスから行おうとする。この場合、不正解析者が、データ初期化処理に注目し、秘密情報の利用場所を特定する可能性がある。
この構成によると、複数の初期化プログラムを用いて、それぞれの初期化処理が行われることにより、初期化処理が分割・分散し、不正解析者によるデータ初期化処理に注目した秘密情報の利用場所の特定を困難にすることができる。
この構成によると、セキュアプログラムによる秘匿処理に先行して、各初期化プログラムに実行により、各初期化処理が行われるので、秘匿処理において、誤った初期値が使われて、誤った処理が行われることはない。
この構成によると、不正解析者によるデータ初期化処理に注目した秘密情報の利用場所の特定を、さらに、困難にすることができる。
さらに、携帯電話などの電子機器においても耐タンパ技術を適用する場合、耐タンパ化されたソフトウェアが、利用するメモリサイズは増加する。そのため、前記耐タンパ化されたソフトウェアの初期化処理に要する時間が大きくなってしまい、即応性の求められる電子機器においては、ユーザによる所望の処理要求から、実際にソフトウェアが処理を開始するまでの初期化処理に多大な時間を要することになってしまう。
ここで、一部の初期化プログラムは、当該コンピュータシステムのリセットの直後において実行され、セキュアプログラムに含まれる初期化プログラムは、セキュアプログラムの実行が要求された時に、実行されるとしてもよい。
以上説明したように、本発明によると、セキュアプログラムが実行するコード(ROM上に存在する)およびセキュアプログラムが利用するワークメモリ(RAM上に存在する)は、OS管理外の領域としているため、OS上で動作するソフトウェアデバッガからの解析を防ぐことが可能となる。
さらに、分割した初期化処理を分散して実行することにより、セキュアプログラムの初期化処理から解析を行う悪意のある解析者に対して、解析対象範囲を拡大させることが可能となるため、解析を困難にし、セキュリティレベルを向上させることができる。
20 メモリカード
30 コンパイル装置
40 コンパイル装置
101 デバッガI/F
102 CPU
103 MMU
104 割込コントローラ
105 入力部
106 表示部
107 メモリ
108 入出力部
109 バッファ
110 符号処理部
111 D/A変換部
112 無線通信制御部
113 スピーカ
114 マイク
115 通信部
116 アンテナ
117 バス
120 通常領域
122 入出力部
130 セキュア領域
132 セキュア処理部
201 IPLプログラム
202 セキュアプログラム
210 OSプログラム
211 ノンセキュアプログラム
212 セキュアプログラム呼出部
213 切替デバイスドライバ
310 OS依存コンパイル部
320 OS依存リンク部
330 形式変換部
350 情報記憶部
410 OS非依存コンパイル部
420 OS非依存リンク部
430 形式変換部
450 情報記憶部
以下、本発明に係る1の実施の形態としてのセキュア処理システム1について、図面を参照しながら説明する。
1.1 セキュア処理システム1の構成
セキュア処理システム1は、図1に示すように、コンパイル装置30、コンパイル装置40、携帯電話10及びメモリカード20から構成されている。メモリカード20は、携帯電話10に装着される。
携帯電話10は、ROMに書き込まれたOS依存バイナリデータ及びOS非依存バイナリデータに従って動作することにより、メモリカード20から暗号化コンテンツを読み出し、読み出した暗号化コンテンツを前記コンテンツ鍵を用いて復号し、復号コンテンツを生成し、生成した復号コンテンツを音楽又は映像として出力する。
コンパイル装置(プログラム生成装置とも呼ぶ。)30は、図2に示すように、OS依存コンパイル部310、OS依存リンク部320、形式変換部330及び情報記憶部350から構成されている。コンパイル装置30は、携帯電話10の後述するメモリ107のOSの管理領域に配置するバイナリデータを生成する。
情報記憶部350は、OSカーネルソース301a、301b、301c、・・・、ノンセキュアプログラムソース302a、302b、302c、・・・、セキュアプログラム呼出部ソース303a、303b、303c、・・・、切替デバイスドライバソース304a、304b、304c、・・・、アドレス指定ファイル322、OS依存ライブラリ321a、321b、321c、・・・を記憶している。また、OS依存バイナリデータ340a、340b、340c、・・・を記憶するための領域を備えている。
OS依存コンパイル部310は、これらのOSカーネルソース301a、301b、301c、・・・、ノンセキュアプログラムソース302a、302b、302c、・・・、セキュアプログラム呼出部ソース303a、303b、303c、・・・、切替デバイスドライバソース304a、304b、304c、・・・を入力とし、高級言語で記述されたプログラムコードを低レベルなマシンコード(オブジェクトコード)、つまり、実行形式のコンピュータプログラムに変換して、それぞれ、オブジェクトファイルを生成する。
OS依存リンク部320は、OS依存コンパイル部310で生成された各オブジェクトファイルに対し、再配置とシンボルの解決を行い、各オブジェクトファイル内にOS依存ライブラリ321a、321b、321c、・・・の関数シンボルが存在するのであれば、関連するOS依存ライブラリをリンクして、OS依存バイナリデータを生成する。
(4)形式変換部330
形式変換部330は、OS依存リンク部320により生成された各OS依存バイナリデータを、ROMライターにより実際のROMメモリに書き込み可能な形式に変換して、OS依存バイナリデータ340a、340b、・・・を生成し、生成したOS依存バイナリデータ340a、340b、・・・を情報記憶部350へ書き込む。形式変換部330により生成されるデータ形式には、インテルHEX形式やモトローラSレコード形式などがある。
コンパイル装置30は、以下に示すようにして、OS管理外のROM/RAMの設定を行う。
(a)OS管理外のRAM領域の確保
例えば、物理アドレス「0x10000000」から物理アドレス「0x11FFFFFF」までをアクセス対象のメモリ空間として扱うことができるOSに対して、物理アドレス「0x10000000」から物理アドレス「0x11E00000」までをOS管理のRAM領域として割り当て、物理アドレス「0x11F00000」から物理アドレス「0x11FFFFFF」までをOS管理外のRAM領域として割り当てる場合には、カーネル起動時に必要なRAMメモリパラメタのサイズを「0x1E00000」(バイト)と指定して、コンパイルする。
(b)セキュアプログラム用のOS管理外のROM領域とOS管理外のRAM領域の物理−論理のマッピングの設定
セキュアプログラム用のOS管理外のROM領域とOS管理外のRAM領域の物理−論理のマッピングを設定する場合には、以下に示すようにする。
map_desc standard_io_desc[]_initdata
が用意されている。
static struct map_desc_standard_io_desc[]_initdata={
MAP_DESC(論理アドレス、物理アドレス、サイズ、ドメイン属性、
READ属性、WRITE属性、CACHE属性、BUFFER属性);
};
ここで、論理アドレスでは、物理アドレスに対応付けたい論理アドレスを指定し、物理アドレスでは、論理アドレスに対応付けたい物理アドレスを指定し、サイズでは、上記アドレスから論理・物理アドレスの対応付けを行いたいサイズを指定する。ドメイン属性では、カーネル領域かユーザ領域なのかを指定し、READ属性では、READ可なら「1」を設定し、READ不可なら「0」を設定し、WRITE属性では、WRITE可なら「1」を設定し、WRITE不可なら「0」を設定し、CACHE属性では、キャッシュ有効なら「1」を設定し、キャッシュ無効なら「0」を設定し、BUFFER属性では、BUFFER有効なら「1」を設定し、BUFFER無効なら「0」を設定する。
static struct map_desc_standard_io_desc[]_initdata={
MAP_DESC(0xFFB00000,0x11F00000,0x000FFFFF,DOMAIN_KERNEL,0,1,1,1),
/*セキュアプログラム用RAM*/
MAP_DESC(0xFFA00000,0x00260000,0x000FFFFF,DOMAIN_KERNEL,0,0,1,1),
/*セキュアプログラム用ROM*/
};
なお、セキュアプログラムのドメイン属性は、カーネルドメインとし、OS上で動作する通常ソフトウェアからのアクセスを禁止する。
(6)まとめ
以上説明したように、OSカーネルソース301a、301b、301c、・・・、ノンセキュアプログラムソース302a、302b、302c、・・・、セキュアプログラム呼出部ソース303a、303b、303c、・・・、切替デバイスドライバソース304a、304b、304c、・・・は、それぞれ、OS依存コンパイル部310によりコンパイルされ、コンパイルによって作成されたオブジェクトファイルはOS依存リンク部320によりリンク処理が行われる。OS依存リンク部320によって生成されたOS依存バイナリデータは、形式変換部330により、ROMに書き込める形式に変換され、OS依存バイナリデータ340a、340b、・・・が情報記憶部350に書き込まれる。
ノンセキュアプログラム(通常プログラム)は、OS(基本プログラム)を介して、前記管理領域にアクセスする命令を含む。
セキュアプログラムは、前記管理外領域のみをアクセス空間とし、前記管理外領域へアクセスする命令を含む。また、セキュアプログラムの対象処理、例えば、暗号化コンテンツの前記コンテンツ鍵を用いた復号の処理の終了後、セキュアプログラムから基本プログラムへの実行の切替えを行う命令を含む。
コンパイル装置(プログラム生成装置とも呼ぶ。)40は、図3に示すように、OS非依存コンパイル部410、OS非依存リンク部420、形式変換部430及び情報記憶部450から構成されている。コンパイル装置40は、携帯電話10の後述するメモリ107のOSの管理外領域に配置するバイナリデータを生成する。
セキュアプログラムソース401aは、秘密情報を利用した処理が記述されているソースコード(ソースプログラム)であるコンピュータプログラムであってコンピュータ命令を含む。このセキュアプログラムソース401aは、本実施の形態では、暗号化コンテンツを復号するための復号処理が記述されたコードであり、メモリ107上にセキュアプログラム202(後述する)として記憶されるバイナリデータに対応している。セキュアプログラムソース401b、401c、・・・についても同様である。
OS非依存リンク部420は、再配置とシンボル解決を行い、必要であればOS非依存ライブラリをリンクしCPU102で実行可能なバイナリデータを作成する。OS非依存とは、OS依存ライブラリ321a、321b、321c、・・・をリンクしないことを示している。
1.4 メモリカード20の構成
メモリカード20は、図4に示すように、通常領域120、セキュア領域130、入出力部122、セキュア処理部132から構成される。
通常領域120は、外部機器により自由にアクセスできる記憶領域であり、本実施の形態では暗号化コンテンツ121が記憶されている。
暗号化コンテンツ121は、暗号化された音楽データまたは動画データであり、コンテンツ鍵131を暗号鍵として暗号アルゴリズムを用いて暗号化されたデータである。各暗号化データは、コンテンツIDにより識別される。なお、本実施の形態では、暗号化コンテンツ121は共通鍵方式で暗号化されているものとし、コンテンツ鍵131を復号鍵として用いることにより、復号されたコンテンツ、すなわち音楽データまたは動画データを取得可能であるものとする。
セキュア処理部132は、外部機器との間で、CPRM(Content Protection for Recordable Media)の仕組みに基づいて相互認証を行い、認証に成功した場合に、認証した機器と鍵を共有する。共有した鍵を用いて、外部機器との間で安全にデータの入出力を行う。なお、CPRMは公知であるので説明を省略する。
携帯電話10は、図4に示すように、デバッガIF101、CPU102、MMU(Memory Management Unit)103、割込コントローラ104、入力部105、表示部106、メモリ107、入出力部108、バッファ109、符号処理部110、D/A変換部111、無線通信制御部112、スピーカ113、マイク114、通信部115、アンテナ116から構成され、各回路はバス117で接続されている。
メモリ107は、ROMおよびRAMから構成され、CPU102により実行される各種プログラムを記憶している。
CPU102は、命令フェッチ部、命令デコーダ、演算器、プログラムカウンタ、リンクレジスタ、スタックポインタなどを備え、メモリ107上のプログラムから命令をフェッチし、フェッチした命令を解読し、解読した命令を実行する。
デバッガIF101は、携帯電話10と外部のデバッガとを接続するためのインターフェースである。
割込コントローラ104は、FIQ、IRQなどのハードウェア割込みやソフトウェア割込み(SWI)、プリフェッチアボート、データアボート、リセットなどの各種割込みを検知し、CPU102の割込検出用のレジスタへ割込み発生通知を出力する。
無線通信制御部112は、ベースバンド部、変復調部、増幅部などを備えており、通信部およびアンテナ116を介して送受信される各種情報の信号処理を行う。
符号処理部110は、バッファ109に記憶されている音楽データにMP3などの符号化技術に従った復号処理を施し、D/A変換部111へ出力する。
入力部105は、テンキー、決定ボタンなどの各種ボタンを備え、利用者によるこれらの操作を受け付ける。
表示部106は、VRAM、液晶画面を備え、各種の画面を表示する。
スピーカ113は、無線通信制御部112およびD/A変換部111から、アナログ信号を受け取り、受け取ったアナログ信号を音に変換して出力する。
(2)メモリ107の構成
メモリ107の構成を図5に示す。メモリ107は、ROMとRAMから構成される。図5では、ROMとRAMとを区別して図示していないが、ROMとRAMとの区別は、図7において図示している。
さらに、本実施の形態では、メモリ107に、OSが管理する管理領域とOSの管理外である管理外領域との2つを割り当てて利用する。OS上で動作するノンセキュアプログラム211、セキュアプログラム呼出部212、切替デバイスドライバ213は、OSの管理領域に記憶される。一方、IPLプログラム201、セキュアプログラム202はOSの管理外領域に記憶される。この割り当て方法については、後述する。
(各プログラムの説明)
IPLプログラム201は、アセンブラで書かれたコード(コンピュータプログラム)であり、OSが起動するために必要なハードウェアの初期化を行い、OSのカーネル初期化処理へ分岐する命令を含む。また、IPLプログラム201は、後述するZIセクションA711のデータの初期化を実施する命令を含む。
ノンセキュアプログラム211とセキュアプログラム呼出部212と切替デバイスドライバ213は、OSが管理するメモリで動作するプログラム群である。
切替デバイスドライバ213は、管理外領域に記憶されたセキュアプログラム202へ処理を移すインターフェースの役割をする。
こうして生成された1個以上のOS依存バイナリデータと1個以上のOS非依存バイナリデータとが、ROMライタにより、ROMに書き込まれる。図5は、こうしてROMに書き込まれた結果を示している。
ここで、コンパイル装置30におけるコンパイル及びリンクにより生成された各OS依存バイナリデータのセクション構成について説明する。
各OS依存バイナリデータは、図6に示すように、ZIセクション501、RWセクション502及びROセクション503から構成されている。
RWセクション502は、読み書き可能なセクションであり、読み書き可能なデータが配置されるセクションである。
ROセクション503は、読み込みのみ可能なセクションであり、実行可能なコード(命令)が配置されるセクションである。
また、コンパイル装置40におけるコンパイル及びリンクにより生成された各OS非依存バイナリデータ440a、440b、・・・も、それぞれ、図6に示すように、ZIセクション、RWセクション及びROセクションから構成されている。
次に、メモリ107の論理アドレスと物理アドレスの関係について簡単に説明をする。
各プログラム中において用いられるアドレスは、論理アドレスであり、これをMMU103が物理アドレスに変換して実際にメモリ107にアクセスする。つまり、上述したOSプログラム210、ノンセキュアプログラム211、セキュアプログラム呼出部212、切替デバイスドライバ213及びセキュアプログラム202において、メモリ107が形成する記憶空間を指し示すアドレスは、論理アドレスであり、MMU103は、これらのプログラムにおいて用いられる論理アドレスを物理アドレスへ変更し、物理アドレスにより、メモリ107が形成する記憶空間を指し示す領域へのアクセスが行われる。
(メモリ107のメモリマップ)
メモリ107における物理アドレスと論理アドレスとの対応関係を図7に示す。
ここで、セキュアプログラム202は、ROM上におけるOSの管理外領域651に配置され、OSプログラム210、ノンセキュアプログラム211、セキュアプログラム呼出部212及び切替デバイスドライバ213は、ROM上におけるOSの管理領域652に配置されている。また、OS用メインメモリ601は、RAM上におけるOSの管理領域653に配置され、セキュアプログラム用ワークメモリ602は、RAM上におけるOSの管理外領域654に配置されている。
OS用メインメモリ601は、OSやOS上で動作するプログラムが利用するワークメモリであり、物理アドレスが0x10000000から0x11E00000のRAM内の領域に存在し、この領域には、論理アドレス0xC0000000から0xC1E00000が割り当てられる。
セキュアプログラム用ワークメモリ602は、セキュアプログラム202が利用するワークメモリであり、物理アドレス0x11F00000から0x11FFFFFFのRAM内の領域に存在し、この領域には、論理アドレス0xFFB00000から0xFFBFFFFFが割り当てられる。
なお、コンパイル装置30が記憶しOS依存リンク部320において用いられるアドレス指定ファイル322、及びコンパイル装置40が記憶しOS非依存リンク部420において用いられるアドレス指定ファイル422においては、上述したようにアドレスが割り当てられるように記述されている。
(セキュアプログラム202とセキュアプログラム用ワークメモリ602)
次に、セキュアプログラム202とセキュアプログラム用ワークメモリ602の内容について、図8を用いて、さらに詳しく説明する。
ZIセクションA711及びZIセクションB712は、セキュアプログラム202が実行される前にゼロ初期化され、セキュアプログラム202により利用されるデータが格納されるデータ格納セクションである。本実施の形態では、セキュアプログラム202の初期化処理を高速にするために、ZIセクションは、ZIセクションA711及びZIセクションB712に分割されている。
RWセクション713は、セキュアプログラム202が利用する読み書き可能なデータが格納される領域である。
セキュアプログラム202は、セキュアAPI分岐処理701、ZIセクションB初期化API702、セキュアAPI_A703及びセキュアAPI_B704から構成される。
セキュアAPI分岐処理701は、ZIセクションB初期化API702、セキュアAPI_A703及びセキュアAPI_B704のそれぞれへの分岐先アドレス情報を含むAPI分岐テーブル800(後述する)を格納している。
セキュアAPI_A703及びセキュアAPI_B704は、それぞれ、セキュアプログラムのAPI処理を行う実行コード(プログラム命令)である。
なお、本実施の形態1では、セキュアプログラムのセキュアなAPIをセキュアAPI_A703及びセキュアAPI_B704の2個として説明しているが、2個に限定するわけではなく、2個以上存在してもよい。
API分岐テーブル800のデータ構造を図9に示す。
API分岐テーブル800は、複数の分岐先アドレス情報811、812及び813から構成されており、分岐先アドレス情報811、812及び813は、それぞれ、セキュアプログラム202に含まれているZIセクションB初期化API702、セキュアAPI_A703及びセキュアAPI_B704に対応しており、各分岐先アドレス情報は、識別子と分岐先アドレスとを含む。
次に、分岐先アドレス情報811、812及び813についてさらに説明する。
また、分岐先アドレス情報812は、図9に示すように、識別子803「2」と分岐先アドレス804「0xFFA02000」とを含む。分岐先アドレス情報812は、セキュアAPI_A703に対して、識別子803「2」が割り当てられ、論理アドレス「0xFFA02000」により開始位置が示されるセキュアプログラム202内の領域において、セキュアAPI_A703の実行コード(プログラム命令)が記憶されていることを示している。
さらに、分岐先アドレス情報813は、図9に示すように、識別子805「3」と分岐先アドレス806「0xFFA03000」とを含む。分岐先アドレス情報813は、セキュアAPI_B704に対して、識別子805「3」が割り当てられ、論理アドレス「0xFFA03000」により開始位置が示されるセキュアプログラム202内の領域において、セキュアAPI_B704の実行コード(プログラム命令)が記憶されていることを示している。
なお、本実施の形態では、API分岐テーブル800は、識別子と分岐先アドレスとを含む複数個の分岐先アドレス情報から構成されているが、この構成に限定されるわけではなく、所望のAPIに分岐する処理を行うるためのアドレス情報が格納されていればよい。
次に、セキュアプログラム202のセキュアAPIが実行されるまでのシーケンスについて説明する。
(a)アプリケーションソフト起動までのシーケンス
ここでは、リセットの後、OSプログラム210を起動し、OS上で動作するアプリケーションソフトが起動されるまでのシーケンスについて、図10を用いて説明する。
リセット後、IPLプログラム201は、OSの起動に必要なハードウェアを初期化する。(ステップS901)
次に、IPLプログラム201は、ZIセクションA711のデータの初期化を実施する。(ステップS902)
ZIセクションA711のデータの初期化が終了すると、カーネルに分岐する(ステップS903〜S904)。
カーネルの初期化が終了すると、OSが起動されたことになり、その後、各アプリケーションソフトが起動される(ステップS907)。
(b)セキュアプログラム202の実行までのシーケンス
ここでは、セキュアプログラム202が実行されるまでのシーケンスを、図11及び図12を用いて、説明する。
ユーザによる音楽再生のボタン操作が行われると(ステップS1000)、OSは、セキュアプログラム呼出部212へ処理を移す(ステップS1001〜ステップS1002)。
次に識別子「1」を受け取った切替デバイスドライバ213は、セキュアAPI分岐処理701に分岐し、セキュアAPI分岐処理701へ処理が移る(ステップS1006〜ステップS1007)。
ZIセクションB712の初期化が完了すると、セキュアAPI分岐処理701は、スタックポインタの設定を、OSが利用するものに戻す(ステップS1012)。
その後、OS上で動作するセキュアプログラム呼出部212へ処理が移る(ステップS1013〜ステップS1014)。
次に、セキュアプログラム呼出部212は、セキュアAPIの識別子を指定し、切替デバイスドライバ213に対し、ライブラリコールし、切替デバイスドライバ213へ処理が移る(ステップS1015〜ステップS1016)。
セキュアAPI分岐処理701は、スタックポインタの設定を、セキュアプログラム202が利用するものに戻し(ステップS1019)、次に、API分岐テーブル800から、受け取った識別子に対応する分岐先アドレスを取得し、取得した分岐先アドレスへ分岐する(ステップS1020〜ステップS1021)。
セキュアAPIの処理が終了すると、スタックポインタの設定を、OSが利用するものに戻し(ステップS1023)、その後、セキュアプログラム呼出部212及びOSへ処理が移る(ステップS1024〜ステップS1026)。
なお、本実施の形態では、セキュアAPI_A703は、コンテンツ鍵取得を行うコンピュータプログラムであり、セキュアAPI_B704は、暗号化コンテンツ121をコンテンツ鍵131を用いて復号するコンピュータプログラムである。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)セキュアプログラム202は、セキュアプログラム202の実行中に、IRQ、FIQ、ソフトウェア割込み等の割込みが発生した場合に、セキュアプログラム202による処理を一時的に中断し、セキュアプログラム202による処理対象のセキュアデータを暗号化し、割込みに対応する処理が完了した後に、暗号化セキュアデータを復号し、セキュアプログラム202による処理を一時的に中断した点から、セキュアプログラム202による処理を継続して実行するとしてもよい。具体的には、以下に示す通りである。
一般的に、コンピュータシステムにおいては、IRQ、FIQ、ソフトウェア割込み等の割込みが発生すると、CPUの例外ベクタテーブルに分岐する。例外ベクタテーブルには、割込み要因毎に割込み処理ルーチンが登録されており、例外ベクタテーブルにより、割込み要因毎に、割込み処理ルーチンへ分岐し、所望の割込み処理が行われる。
セキュアプログラム202の実行中に割込みが発生した場合のシーケンスを、図13を用いて、説明する。
セキュアプログラム202が、実行されている間は、初期化完了フラグは、常に、「1」となっている。
セキュアプログラム202は、セキュアAPIの実行を開始する(ステップS1022)。
セキュアプログラム202に分岐後、セキュアプログラム202は、初期化完了フラグが「1」であるか否かを判断する(ステップS1204)。
初期化完了フラグが、「1」でなければ(ステップS1204でNO、又はステップS1211でNO)、OSへ処理を移す(ステップS1205、又はステップS1212)。
(3)本実施の形態では、切替デバイスドライバ213が、OS依存バイナリデータからOS非依存バイナリデータへの切替インターフェースの働きをしているが、切替デバイスドライバ213を利用することなく、セキュアプログラム呼出部212からセキュアAPI分岐処理701へ直接分岐するようにしてもよい。
切替デバイスドライバ213は、OSからセキュアプログラムへの切替の際に、切替の時点でOSが利用しているスタックポインタを退避し、スタックポインタの設定を、予め退避しておいたセキュアプログラム用のスタックポインタへ戻す命令を含むとしてもよい。また、切替デバイスドライバ213は、セキュアプログラムからOSへの切替の際に、切替の時点でセキュアプログラムが利用しているスタックポインタを退避し、スタックポインタの設定を、予め退避しておいたOS用のスタックポインタへ戻す命令を含むとしてもよい。
(5)上述したセキュアプログラムは、BIOS(Basic Input/Output System)を構成するその一部のプログラムであるとしてもよい。BIOSとは、一般的に、コンピュータに接続されたディスクドライブ、キーボード、ビデオカードなどの周辺機器を制御するプログラム群である。
このコンパイル装置は、オペレーティングシステムを構成するソースコードにコンパイルを施して、第1オブジェクトを生成する第1コンパイル部と、前記第1オブジェクトのシンボル解決と再配置と第1ライブラリに含まれるプログラムとのリンクとを行って、オペレーティングシステムである実行可能形式の第1ソフトウェアを生成する第1リンク部と、秘匿情報を利用する処理を構成するソースコードにコンパイルを施して、第2オブジェクトを生成する第2コンパイル部と、前記第2オブジェクトのシンボル解決と再配置と第2ライブラリに含まれるプログラムとのリンクを行って、秘匿情報を利用する処理からなる実行可能形式の第2ソフトウェアを生成する第2リンク部とを備える。
耐タンパ化手法とは、オリジナルコード(プログラム命令)に対して、実行に影響のない不要な冗長コードの追加、ある命令コードの別の等価な命令コードへの置換え、制御構造の複雑化、1つのモジュール(プログラム命令の集合)の複数のモジュールへの分割化などの難読化をしておくこと、又はオリジナルコードを予め暗号化しておき、実行時に復号することである。耐タンパ化手法を適用させることでセキュアプログラム202のセキュリティレベルを向上させてもよい。コード暗号化を施す場合は、復号したコードを展開するRAM領域は、OSがアクセス不可能なエリア、つまり、管理外領域とする。
(8)上記の実施の形態では、IPLプログラム201により、ZIセクションA711のゼロ初期化処理が実行され、次にユーザによるコンテンツ再生要求がされ、セキュアプログラム202の起動直後に、セキュアプログラム202により、ZIセクションB712のゼロ初期化処理が実行されるとしているが、これには、限定されない。
また、上記の実施の形態及び変形例においては、ZIセクションを、ゼロ値で初期するとしているが、これには限定されない。ゼロ値以外の固定値、例えば、「0xffff」などを、ZIセクションに書き込むとしてもよい。
ここで、第一コンパイラは、第一ソフトウェアのソースコードを入力とし、第一オブジェクトを出力し、第一リンカは、前記第一オブジェクトのシンボル解決と再配置と第一ライブラリをリンクする機能を有し、前記第一オブジェクトを入力とし、前記第一ソフトウェアを出力し、前記第一ソフトウェアは、前記第一コンパイラおよび前記第一リンカで作成された実行可能データであり、第二コンパイラは、前記第一コンパイラとは異なるコンパイラであって、前記第二ソフトウェアのソースコードを入力とし、第二オブジェクトを出力し、第二リンカは、前記第一リンカとは異なるリンカであり、前記第二オブジェクトのシンボル解決と再配置と第二ライブラリ群をリンクする機能を有し、前記第二オブジェクトを入力とし、前記第二ソフトウェアを出力し、前記第二ソフトウェアは、前記第二コンパイラおよび前記第二リンカで作成された実行可能データであるとしてもよい。
ここで、前記第二ソフトウェアが利用する前記第二データ記憶部の初期化処理を少なくとも1つ以上の分割初期化処理に分割するとしてもよい。
ここで、前記分割初期化処理のうち、少なくとも1つ以上の分割初期化処理は、前記第二ソフトウェアの実行要求が発生するよりも前に実行されるとしてもよい。
ここで、前記プログラム記憶部は、さらにIPLを含み、前記IPLが少なくとも1つ以上の前記分割初期化処理を実行するとしてもよい。
ここで、前記プログラム記憶部は、さらに切替デバイスドライバを含み、前記切替デバイスドライバが、前記第一ソフトウェアから第二ソフトウェアに処理を移すとしてもよい。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)やLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
(12)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
(14)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
例えば、パッケージとして売られているソフトウェアには、違法コピーによる使用を防ぐために、利用者に対してパスワードの入力を要求するものがある。このようなソフトウェアには、パスワードが正しいかどうかをチェックするコード(コンピュータプログラム)が含まれている。不正な利用者が、このソフトウェア内において、何らかの方法により、このチェックを行うコードが存在する場所を特定し、このチェックを無効にするようにこのコードに改ざんを加えたとするならば、この不正な利用者は、パスワードを知らなくてもこのソフトウェアを使用することができてしまう。
例えば、非特許文献1では、ソフトウェアの解析を防ぐための基本原則や具体的手法が記述されている。また、非特許文献2では、ソフトウェアの解析を防ぐためのツールとして開発されたTRCS(Tamper Resistant Coding System)の技術課題とその対策が記述されている。また、非特許文献3では、ソフトウェアの違法コピーを防ぐためのソフトウェア的な保護手段(コピープロテクト技術)を無効化されないようにする技術が解説されている。
「逆解析や改変からソフトを守る」 日経エレクトロニクス 1998.1.5 (P209−220) 「ソフトウェアの耐タンパー化技術」富士ゼロックス テクニカルレポート No.13 「ザ・プロテクト」秀和システム出版 1985年
そのため、OSに依存するライブラリを利用して、OS上で動作するソフトウェアが、秘匿情報を第三者に知られることなく、安全に処理するように、当該ソフトウェアについてセキュアな実装をした場合であっても、当該ソフトウェアについて、OS上で動作するデバッガに対して耐性が低いという問題点がある。すなわち、不正解析者により、OS上で動作するデバッガを用いて、OSに依存するライブラリを呼び出している部分が特定され、さらに、秘密情報が特定される危険性がある。
ここで、前記セキュアプログラムは、前記管理外領域において格納される秘匿すべき情報に関する秘匿処理を行う命令を含むとしてもよい。
ここで、前記管理領域は、さらに、基本プログラムの指示により、基本プログラムからセキュアプログラムへの実行の切替えを行う命令を含む切替プログラムを記憶しており、前記プロセッサは、さらに、前記管理領域に記憶されている前記切替プログラムに含まれている命令を読み出し、解読し、その解読結果に応じて動作し、前記基本プログラムは、さらに、前記切替プログラムに対して、セキュアプログラムへの切替を指示する命令を含み、前記セキュアプログラムは、さらに、前記秘匿処理の終了後、セキュアプログラムから基本プログラムへの実行の切替えを行う命令を含むとしてもよい。
この構成によると、セキュアプログラムから基本プログラムへの切り替えの際、スタックポインタの設定を基本プログラムが利用するものに戻すので、基本プログラムの処理を続行することができる。また、基本プログラムからセキュアプログラムへの切り替えの際に、スタックポインタの設定をセキュアプログラムが利用するものに戻すので、セキュアプログラムの処理を続行することができる。
この構成によると、難読化により、セキュアプログラムの解析が困難となるので、セキュアプログラムの安全性をさらに高めることができる。
また、一般にソフトウェアの処理が実行される前に、実行対象となるソフトウェアが利用するデータは初期化される。不正解析者は、解析対象のソフトウェアの解析を、ソフトウェア初期化シーケンスから行おうとする。この場合、不正解析者が、データ初期化処理に注目し、秘密情報の利用場所を特定する可能性がある。
この構成によると、複数の初期化プログラムを用いて、それぞれの初期化処理が行われることにより、初期化処理が分割・分散し、不正解析者によるデータ初期化処理に注目した秘密情報の利用場所の特定を困難にすることができる。
この構成によると、セキュアプログラムによる秘匿処理に先行して、各初期化プログラムに実行により、各初期化処理が行われるので、秘匿処理において、誤った初期値が使われて、誤った処理が行われることはない。
この構成によると、不正解析者によるデータ初期化処理に注目した秘密情報の利用場所の特定を、さらに、困難にすることができる。
さらに、携帯電話などの電子機器においても耐タンパ技術を適用する場合、耐タンパ化されたソフトウェアが、利用するメモリサイズは増加する。そのため、前記耐タンパ化されたソフトウェアの初期化処理に要する時間が大きくなってしまい、即応性の求められる電子機器においては、ユーザによる所望の処理要求から、実際にソフトウェアが処理を開始するまでの初期化処理に多大な時間を要することになってしまう。
ここで、一部の初期化プログラムは、当該コンピュータシステムのリセットの直後において実行され、セキュアプログラムに含まれる初期化プログラムは、セキュアプログラムの実行が要求された時に、実行されるとしてもよい。
以上説明したように、本発明によると、セキュアプログラムが実行するコード(ROM上に存在する)およびセキュアプログラムが利用するワークメモリ(RAM上に存在する)は、OS管理外の領域としているため、OS上で動作するソフトウェアデバッガからの解析を防ぐことが可能となる。
さらに、分割した初期化処理を分散して実行することにより、セキュアプログラムの初期化処理から解析を行う悪意のある解析者に対して、解析対象範囲を拡大させることが可能となるため、解析を困難にし、セキュリティレベルを向上させることができる。
以下、本発明に係る1の実施の形態としてのセキュア処理システム1について、図面を参照しながら説明する。
1.1 セキュア処理システム1の構成
セキュア処理システム1は、図1に示すように、コンパイル装置30、コンパイル装置40、携帯電話10及びメモリカード20から構成されている。メモリカード20は、携帯電話10に装着される。
携帯電話10は、ROMに書き込まれたOS依存バイナリデータ及びOS非依存バイナリデータに従って動作することにより、メモリカード20から暗号化コンテンツを読み出し、読み出した暗号化コンテンツを前記コンテンツ鍵を用いて復号し、復号コンテンツを生成し、生成した復号コンテンツを音楽又は映像として出力する。
コンパイル装置(プログラム生成装置とも呼ぶ。)30は、図2に示すように、OS依存コンパイル部310、OS依存リンク部320、形式変換部330及び情報記憶部350から構成されている。コンパイル装置30は、携帯電話10の後述するメモリ107のOSの管理領域に配置するバイナリデータを生成する。
情報記憶部350は、OSカーネルソース301a、301b、301c、・・・、ノンセキュアプログラムソース302a、302b、302c、・・・、セキュアプログラム呼出部ソース303a、303b、303c、・・・、切替デバイスドライバソース304a、304b、304c、・・・、アドレス指定ファイル322、OS依存ライブラリ321a、321b、321c、・・・を記憶している。また、OS依存バイナリデータ340a、340b、340c、・・・を記憶するための領域を備えている。
OS依存コンパイル部310は、これらのOSカーネルソース301a、301b、301c、・・・、ノンセキュアプログラムソース302a、302b、302c、・・・、セキュアプログラム呼出部ソース303a、303b、303c、・・・、切替デバイスドライバソース304a、304b、304c、・・・を入力とし、高級言語で記述されたプログラムコードを低レベルなマシンコード(オブジェクトコード)、つまり、実行形式のコンピュータプログラムに変換して、それぞれ、オブジェクトファイルを生成する。
OS依存リンク部320は、OS依存コンパイル部310で生成された各オブジェクトファイルに対し、再配置とシンボルの解決を行い、各オブジェクトファイル内にOS依存ライブラリ321a、321b、321c、・・・の関数シンボルが存在するのであれば、関連するOS依存ライブラリをリンクして、OS依存バイナリデータを生成する。
(4)形式変換部330
形式変換部330は、OS依存リンク部320により生成された各OS依存バイナリデータを、ROMライターにより実際のROMメモリに書き込み可能な形式に変換して、OS依存バイナリデータ340a、340b、・・・を生成し、生成したOS依存バイナリデータ340a、340b、・・・を情報記憶部350へ書き込む。形式変換部330により生成されるデータ形式には、インテルHEX形式やモトローラSレコード形式などがある。
コンパイル装置30は、以下に示すようにして、OS管理外のROM/RAMの設定を行う。
(a)OS管理外のRAM領域の確保
例えば、物理アドレス「0x10000000」から物理アドレス「0x11FFFFFF」までをアクセス対象のメモリ空間として扱うことができるOSに対して、物理アドレス「0x10000000」から物理アドレス「0x11E00000」までをOS管理のRAM領域として割り当て、物理アドレス「0x11F00000」から物理アドレス「0x11FFFFFF」までをOS管理外のRAM領域として割り当てる場合には、カーネル起動時に必要なRAMメモリパラメタのサイズを「0x1E00000」(バイト)と指定して、コンパイルする。
(b)セキュアプログラム用のOS管理外のROM領域とOS管理外のRAM領域の物理−論理のマッピングの設定
セキュアプログラム用のOS管理外のROM領域とOS管理外のRAM領域の物理−論理のマッピングを設定する場合には、以下に示すようにする。
map_desc standard_io_desc[]_initdata
が用意されている。
static struct map_desc standard_io_desc[]_initdata={
MAP_DESC(論理アドレス、物理アドレス、サイズ、ドメイン属性、
READ属性、WRITE属性、CACHE属性、BUFFER属性);
};
ここで、論理アドレスでは、物理アドレスに対応付けたい論理アドレスを指定し、物理アドレスでは、論理アドレスに対応付けたい物理アドレスを指定し、サイズでは、上記アドレスから論理・物理アドレスの対応付けを行いたいサイズを指定する。ドメイン属性では、カーネル領域かユーザ領域なのかを指定し、READ属性では、READ可なら「1」を設定し、READ不可なら「0」を設定し、WRITE属性では、WRITE可なら「1」を設定し、WRITE不可なら「0」を設定し、CACHE属性では、キャッシュ有効なら「1」を設定し、キャッシュ無効なら「0」を設定し、BUFFER属性では、BUFFER有効なら「1」を設定し、BUFFER無効なら「0」を設定する。
static struct map_desc standard_io_desc[]_initdata={
MAP_DESC(0xFFB00000,0x11F00000,0x000FFFFF,DOMAIN_KERNEL,0,1,1,1),
/*セキュアプログラム用RAM*/
MAP_DESC(0xFFA00000,0x00260000,0x000FFFFF,DOMAIN_KERNEL,0,0,1,1),
/*セキュアプログラム用ROM*/
};
なお、セキュアプログラムのドメイン属性は、カーネルドメインとし、OS上で動作する通常ソフトウェアからのアクセスを禁止する。
(6)まとめ
以上説明したように、OSカーネルソース301a、301b、301c、・・・、ノンセキュアプログラムソース302a、302b、302c、・・・、セキュアプログラム呼出部ソース303a、303b、303c、・・・、切替デバイスドライバソース304a、304b、304c、・・・は、それぞれ、OS依存コンパイル部310によりコンパイルされ、コンパイルによって作成されたオブジェクトファイルはOS依存リンク部320によりリンク処理が行われる。OS依存リンク部320によって生成されたOS依存バイナリデータは、形式変換部330により、ROMに書き込める形式に変換され、OS依存バイナリデータ340a、340b、・・・が情報記憶部350に書き込まれる。
ノンセキュアプログラム(通常プログラム)は、OS(基本プログラム)を介して、前記管理領域にアクセスする命令を含む。
セキュアプログラムは、前記管理外領域のみをアクセス空間とし、前記管理外領域へアクセスする命令を含む。また、セキュアプログラムの対象処理、例えば、暗号化コンテンツの前記コンテンツ鍵を用いた復号の処理の終了後、セキュアプログラムから基本プログラムへの実行の切替えを行う命令を含む。
コンパイル装置(プログラム生成装置とも呼ぶ。)40は、図3に示すように、OS非依存コンパイル部410、OS非依存リンク部420、形式変換部430及び情報記憶部450から構成されている。コンパイル装置40は、携帯電話10の後述するメモリ107のOSの管理外領域に配置するバイナリデータを生成する。
セキュアプログラムソース401aは、秘密情報を利用した処理が記述されているソースコード(ソースプログラム)であるコンピュータプログラムであってコンピュータ命令を含む。このセキュアプログラムソース401aは、本実施の形態では、暗号化コンテンツを復号するための復号処理が記述されたコードであり、メモリ107上にセキュアプログラム202(後述する)として記憶されるバイナリデータに対応している。セキュアプログラムソース401b、401c、・・・についても同様である。
OS非依存リンク部420は、再配置とシンボル解決を行い、必要であればOS非依存ライブラリをリンクしCPU102で実行可能なバイナリデータを作成する。OS非依存とは、OS依存ライブラリ321a、321b、321c、・・・をリンクしないことを示している。
1.4 メモリカード20の構成
メモリカード20は、図4に示すように、通常領域120、セキュア領域130、入出力部122、セキュア処理部132から構成される。
通常領域120は、外部機器により自由にアクセスできる記憶領域であり、本実施の形態では暗号化コンテンツ121が記憶されている。
暗号化コンテンツ121は、暗号化された音楽データまたは動画データであり、コンテンツ鍵131を暗号鍵として暗号アルゴリズムを用いて暗号化されたデータである。各暗号化データは、コンテンツIDにより識別される。なお、本実施の形態では、暗号化コンテンツ121は共通鍵方式で暗号化されているものとし、コンテンツ鍵131を復号鍵として用いることにより、復号されたコンテンツ、すなわち音楽データまたは動画データを取得可能であるものとする。
セキュア処理部132は、外部機器との間で、CPRM(Content Protection forRecordable Media)の仕組みに基づいて相互認証を行い、認証に成功した場合に、認証した機器と鍵を共有する。共有した鍵を用いて、外部機器との間で安全にデータの入出力を行う。なお、CPRMは公知であるので説明を省略する。
携帯電話10は、図4に示すように、デバッガIF101、CPU102、MMU(MemoryManagement Unit )103、割込コントローラ104、入力部105、表示部106、メモリ107、入出力部108、バッファ109、符号処理部110、D/A変換部111、無線通信制御部112、スピーカ113、マイク114、通信部115、アンテナ116から構成され、各回路はバス117で接続されている。
メモリ107は、ROMおよびRAMから構成され、CPU102により実行される各種プログラムを記憶している。
CPU102は、命令フェッチ部、命令デコーダ、演算器、プログラムカウンタ、リンクレジスタ、スタックポインタなどを備え、メモリ107上のプログラムから命令をフェッチし、フェッチした命令を解読し、解読した命令を実行する。
デバッガIF101は、携帯電話10と外部のデバッガとを接続するためのインターフェースである。
割込コントローラ104は、FIQ、IRQなどのハードウェア割込みやソフトウェア割込み(SWI)、プリフェッチアボート、データアボート、リセットなどの各種割込みを検知し、CPU102の割込検出用のレジスタへ割込み発生通知を出力する。
無線通信制御部112は、ベースバンド部、変復調部、増幅部などを備えており、通信部およびアンテナ116を介して送受信される各種情報の信号処理を行う。
符号処理部110は、バッファ109に記憶されている音楽データにMP3などの符号化技術に従った復号処理を施し、D/A変換部111へ出力する。
入力部105は、テンキー、決定ボタンなどの各種ボタンを備え、利用者によるこれらの操作を受け付ける。
表示部106は、VRAM、液晶画面を備え、各種の画面を表示する。
スピーカ113は、無線通信制御部112およびD/A変換部111から、アナログ信号を受け取り、受け取ったアナログ信号を音に変換して出力する。
(2)メモリ107の構成
メモリ107の構成を図5に示す。メモリ107は、ROMとRAMから構成される。図5では、ROMとRAMとを区別して図示していないが、ROMとRAMとの区別は、図7において図示している。
さらに、本実施の形態では、メモリ107に、OSが管理する管理領域とOSの管理外である管理外領域との2つを割り当てて利用する。OS上で動作するノンセキュアプログラム211、セキュアプログラム呼出部212、切替デバイスドライバ213は、OSの管理領域に記憶される。一方、IPLプログラム201、セキュアプログラム202はOSの管理外領域に記憶される。この割り当て方法については、後述する。
(各プログラムの説明)
IPLプログラム201は、アセンブラで書かれたコード(コンピュータプログラム)であり、OSが起動するために必要なハードウェアの初期化を行い、OSのカーネル初期化処理へ分岐する命令を含む。また、IPLプログラム201は、後述するZIセクションA711のデータの初期化を実施する命令を含む。
ノンセキュアプログラム211とセキュアプログラム呼出部212と切替デバイスドライバ213は、OSが管理するメモリで動作するプログラム群である。
切替デバイスドライバ213は、管理外領域に記憶されたセキュアプログラム202へ処理を移すインターフェースの役割をする。
こうして生成された1個以上のOS依存バイナリデータと1個以上のOS非依存バイナリデータとが、ROMライタにより、ROMに書き込まれる。図5は、こうしてROMに書き込まれた結果を示している。
ここで、コンパイル装置30におけるコンパイル及びリンクにより生成された各OS依存バイナリデータのセクション構成について説明する。
各OS依存バイナリデータは、図6に示すように、ZIセクション501、RWセクション502及びROセクション503から構成されている。
RWセクション502は、読み書き可能なセクションであり、読み書き可能なデータが配置されるセクションである。
ROセクション503は、読み込みのみ可能なセクションであり、実行可能なコード(命令)が配置されるセクションである。
また、コンパイル装置40におけるコンパイル及びリンクにより生成された各OS非依存バイナリデータ440a、440b、・・・も、それぞれ、図6に示すように、ZIセクション、RWセクション及びROセクションから構成されている。
次に、メモリ107の論理アドレスと物理アドレスの関係について簡単に説明をする。
各プログラム中において用いられるアドレスは、論理アドレスであり、これをMMU103が物理アドレスに変換して実際にメモリ107にアクセスする。つまり、上述したOSプログラム210、ノンセキュアプログラム211、セキュアプログラム呼出部212、切替デバイスドライバ213及びセキュアプログラム202において、メモリ107が形成する記憶空間を指し示すアドレスは、論理アドレスであり、MMU103は、これらのプログラムにおいて用いられる論理アドレスを物理アドレスへ変更し、物理アドレスにより、メモリ107が形成する記憶空間を指し示す領域へのアクセスが行われる。
(メモリ107のメモリマップ)
メモリ107における物理アドレスと論理アドレスとの対応関係を図7に示す。
ここで、セキュアプログラム202は、ROM上におけるOSの管理外領域651に配置され、OSプログラム210、ノンセキュアプログラム211、セキュアプログラム呼出部212及び切替デバイスドライバ213は、ROM上におけるOSの管理領域652に配置されている。また、OS用メインメモリ601は、RAM上におけるOSの管理領域653に配置され、セキュアプログラム用ワークメモリ602は、RAM上におけるOSの管理外領域654に配置されている。
OS用メインメモリ601は、OSやOS上で動作するプログラムが利用するワークメモリであり、物理アドレスが0x10000000から0x11E00000のRAM内の領域に存在し、この領域には、論理アドレス0xC0000000から0xC1E00000が割り当てられる。
セキュアプログラム用ワークメモリ602は、セキュアプログラム202が利用するワークメモリであり、物理アドレス0x11F00000から0x11FFFFFFのRAM内の領域に存在し、この領域には、論理アドレス0xFFB00000から0xFFBFFFFFが割り当てられる。
なお、コンパイル装置30が記憶しOS依存リンク部320において用いられるアドレス指定ファイル322、及びコンパイル装置40が記憶しOS非依存リンク部420において用いられるアドレス指定ファイル422においては、上述したようにアドレスが割り当てられるように記述されている。
(セキュアプログラム202とセキュアプログラム用ワークメモリ602)
次に、セキュアプログラム202とセキュアプログラム用ワークメモリ602の内容について、図8を用いて、さらに詳しく説明する。
ZIセクションA711及びZIセクションB712は、セキュアプログラム202が実行される前にゼロ初期化され、セキュアプログラム202により利用されるデータが格納されるデータ格納セクションである。本実施の形態では、セキュアプログラム202の初期化処理を高速にするために、ZIセクションは、ZIセクションA711及びZIセクションB712に分割されている。
RWセクション713は、セキュアプログラム202が利用する読み書き可能なデータが格納される領域である。
セキュアプログラム202は、セキュアAPI分岐処理701、ZIセクションB初期化API702、セキュアAPI_A703及びセキュアAPI_B704から構成される。
セキュアAPI分岐処理701は、ZIセクションB初期化API702、セキュアAPI_A703及びセキュアAPI_B704のそれぞれへの分岐先アドレス情報を含むAPI分岐テーブル800(後述する)を格納している。
セキュアAPI_A703及びセキュアAPI_B704は、それぞれ、セキュアプログラムのAPI処理を行う実行コード(プログラム命令)である。
なお、本実施の形態1では、セキュアプログラムのセキュアなAPIをセキュアAPI_A703及びセキュアAPI_B704の2個として説明しているが、2個に限定するわけではなく、2個以上存在してもよい。
API分岐テーブル800のデータ構造を図9に示す。
API分岐テーブル800は、複数の分岐先アドレス情報811、812及び813から構成されており、分岐先アドレス情報811、812及び813は、それぞれ、セキュアプログラム202に含まれているZIセクションB初期化API702、セキュアAPI_A703及びセキュアAPI_B704に対応しており、各分岐先アドレス情報は、識別子と分岐先アドレスとを含む。
次に、分岐先アドレス情報811、812及び813についてさらに説明する。
また、分岐先アドレス情報812は、図9に示すように、識別子803「2」と分岐先アドレス804「0xFFA02000」とを含む。分岐先アドレス情報812は、セキュアAPI_A703に対して、識別子803「2」が割り当てられ、論理アドレス「0xFFA02000」により開始位置が示されるセキュアプログラム202内の領域において、セキュアAPI_A703の実行コード(プログラム命令)が記憶されていることを示している。
さらに、分岐先アドレス情報813は、図9に示すように、識別子805「3」と分岐先アドレス806「0xFFA03000」とを含む。分岐先アドレス情報813は、セキュアAPI_B704に対して、識別子805「3」が割り当てられ、論理アドレス「0xFFA03000」により開始位置が示されるセキュアプログラム202内の領域において、セキュアAPI_B704の実行コード(プログラム命令)が記憶されていることを示している。
なお、本実施の形態では、API分岐テーブル800は、識別子と分岐先アドレスとを含む複数個の分岐先アドレス情報から構成されているが、この構成に限定されるわけではなく、所望のAPIに分岐する処理を行うるためのアドレス情報が格納されていればよい。
次に、セキュアプログラム202のセキュアAPIが実行されるまでのシーケンスについて説明する。
(a)アプリケーションソフト起動までのシーケンス
ここでは、リセットの後、OSプログラム210を起動し、OS上で動作するアプリケーションソフトが起動されるまでのシーケンスについて、図10を用いて説明する。
リセット後、IPLプログラム201は、OSの起動に必要なハードウェアを初期化する。(ステップS901)
次に、IPLプログラム201は、ZIセクションA711のデータの初期化を実施する。(ステップS902)
ZIセクションA711のデータの初期化が終了すると、カーネルに分岐する(ステップS903〜S904)。
カーネルの初期化が終了すると、OSが起動されたことになり、その後、各アプリケーションソフトが起動される(ステップS907)。
(b)セキュアプログラム202の実行までのシーケンス
ここでは、セキュアプログラム202が実行されるまでのシーケンスを、図11及び図12を用いて、説明する。
ユーザによる音楽再生のボタン操作が行われると(ステップS1000)、OSは、セキュアプログラム呼出部212へ処理を移す(ステップS1001〜ステップS1002)。
次に識別子「1」を受け取った切替デバイスドライバ213は、セキュアAPI分岐処理701に分岐し、セキュアAPI分岐処理701へ処理が移る(ステップS1006〜ステップS1007)。
ZIセクションB712の初期化が完了すると、セキュアAPI分岐処理701は、スタックポインタの設定を、OSが利用するものに戻す(ステップS1012)。
その後、OS上で動作するセキュアプログラム呼出部212へ処理が移る(ステップS1013〜ステップS1014)。
次に、セキュアプログラム呼出部212は、セキュアAPIの識別子を指定し、切替デバイスドライバ213に対し、ライブラリコールし、切替デバイスドライバ213へ処理が移る(ステップS1015〜ステップS1016)。
セキュアAPI分岐処理701は、スタックポインタの設定を、セキュアプログラム202が利用するものに戻し(ステップS1019)、次に、API分岐テーブル800から、受け取った識別子に対応する分岐先アドレスを取得し、取得した分岐先アドレスへ分岐する(ステップS1020〜ステップS1021)。
セキュアAPIの処理が終了すると、スタックポインタの設定を、OSが利用するものに戻し(ステップS1023)、その後、セキュアプログラム呼出部212及びOSへ処理が移る(ステップS1024〜ステップS1026)。
なお、本実施の形態では、セキュアAPI_A703は、コンテンツ鍵取得を行うコンピュータプログラムであり、セキュアAPI_B704は、暗号化コンテンツ121をコンテンツ鍵131を用いて復号するコンピュータプログラムである。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)セキュアプログラム202は、セキュアプログラム202の実行中に、IRQ、FIQ、ソフトウェア割込み等の割込みが発生した場合に、セキュアプログラム202による処理を一時的に中断し、セキュアプログラム202による処理対象のセキュアデータを暗号化し、割込みに対応する処理が完了した後に、暗号化セキュアデータを復号し、セキュアプログラム202による処理を一時的に中断した点から、セキュアプログラム202による処理を継続して実行するとしてもよい。具体的には、以下に示す通りである。
一般的に、コンピュータシステムにおいては、IRQ、FIQ、ソフトウェア割込み等の割込みが発生すると、CPUの例外ベクタテーブルに分岐する。例外ベクタテーブルには、割込み要因毎に割込み処理ルーチンが登録されており、例外ベクタテーブルにより、割込み要因毎に、割込み処理ルーチンへ分岐し、所望の割込み処理が行われる。
セキュアプログラム202の実行中に割込みが発生した場合のシーケンスを、図13を用いて、説明する。
セキュアプログラム202が、実行されている間は、初期化完了フラグは、常に、「1」となっている。
セキュアプログラム202は、セキュアAPIの実行を開始する(ステップS1022)。
セキュアプログラム202に分岐後、セキュアプログラム202は、初期化完了フラグが「1」であるか否かを判断する(ステップS1204)。
初期化完了フラグが、「1」でなければ(ステップS1204でNO、又はステップS1211でNO)、OSへ処理を移す(ステップS1205、又はステップS1212)。
(3)本実施の形態では、切替デバイスドライバ213が、OS依存バイナリデータからOS非依存バイナリデータへの切替インターフェースの働きをしているが、切替デバイスドライバ213を利用することなく、セキュアプログラム呼出部212からセキュアAPI分岐処理701へ直接分岐するようにしてもよい。
切替デバイスドライバ213は、OSからセキュアプログラムへの切替の際に、切替の時点でOSが利用しているスタックポインタを退避し、スタックポインタの設定を、予め退避しておいたセキュアプログラム用のスタックポインタへ戻す命令を含むとしてもよい。また、切替デバイスドライバ213は、セキュアプログラムからOSへの切替の際に、切替の時点でセキュアプログラムが利用しているスタックポインタを退避し、スタックポインタの設定を、予め退避しておいたOS用のスタックポインタへ戻す命令を含むとしてもよい。
(5)上述したセキュアプログラムは、BIOS(Basic Input/Output System)を構成するその一部のプログラムであるとしてもよい。BIOSとは、一般的に、コンピュータに接続されたディスクドライブ、キーボード、ビデオカードなどの周辺機器を制御するプログラム群である。
このコンパイル装置は、オペレーティングシステムを構成するソースコードにコンパイルを施して、第1オブジェクトを生成する第1コンパイル部と、前記第1オブジェクトのシンボル解決と再配置と第1ライブラリに含まれるプログラムとのリンクとを行って、オペレーティングシステムである実行可能形式の第1ソフトウェアを生成する第1リンク部と、秘匿情報を利用する処理を構成するソースコードにコンパイルを施して、第2オブジェクトを生成する第2コンパイル部と、前記第2オブジェクトのシンボル解決と再配置と第2ライブラリに含まれるプログラムとのリンクを行って、秘匿情報を利用する処理からなる実行可能形式の第2ソフトウェアを生成する第2リンク部とを備える。
耐タンパ化手法とは、オリジナルコード(プログラム命令)に対して、実行に影響のない不要な冗長コードの追加、ある命令コードの別の等価な命令コードへの置換え、制御構造の複雑化、1つのモジュール(プログラム命令の集合)の複数のモジュールへの分割化などの難読化をしておくこと、又はオリジナルコードを予め暗号化しておき、実行時に復号することである。耐タンパ化手法を適用させることでセキュアプログラム202のセキュリティレベルを向上させてもよい。コード暗号化を施す場合は、復号したコードを展開するRAM領域は、OSがアクセス不可能なエリア、つまり、管理外領域とする。
(8)上記の実施の形態では、IPLプログラム201により、ZIセクションA711のゼロ初期化処理が実行され、次にユーザによるコンテンツ再生要求がされ、セキュアプログラム202の起動直後に、セキュアプログラム202により、ZIセクションB712のゼロ初期化処理が実行されるとしているが、これには、限定されない。
また、上記の実施の形態及び変形例においては、ZIセクションを、ゼロ値で初期するとしているが、これには限定されない。ゼロ値以外の固定値、例えば、「0xffff」などを、ZIセクションに書き込むとしてもよい。
ここで、第一コンパイラは、第一ソフトウェアのソースコードを入力とし、第一オブジェクトを出力し、第一リンカは、前記第一オブジェクトのシンボル解決と再配置と第一ライブラリをリンクする機能を有し、前記第一オブジェクトを入力とし、前記第一ソフトウェアを出力し、前記第一ソフトウェアは、前記第一コンパイラおよび前記第一リンカで作成された実行可能データであり、第二コンパイラは、前記第一コンパイラとは異なるコンパイラであって、前記第二ソフトウェアのソースコードを入力とし、第二オブジェクトを出力し、第二リンカは、前記第一リンカとは異なるリンカであり、前記第二オブジェクトのシンボル解決と再配置と第二ライブラリ群をリンクする機能を有し、前記第二オブジェクトを入力とし、前記第二ソフトウェアを出力し、前記第二ソフトウェアは、前記第二コンパイラおよび前記第二リンカで作成された実行可能データであるとしてもよい。
ここで、前記第二ソフトウェアが利用する前記第二データ記憶部の初期化処理を少なくとも1つ以上の分割初期化処理に分割するとしてもよい。
ここで、前記分割初期化処理のうち、少なくとも1つ以上の分割初期化処理は、前記第二ソフトウェアの実行要求が発生するよりも前に実行されるとしてもよい。
ここで、前記プログラム記憶部は、さらにIPLを含み、前記IPLが少なくとも1つ以上の前記分割初期化処理を実行するとしてもよい。
ここで、前記プログラム記憶部は、さらに切替デバイスドライバを含み、前記切替デバイスドライバが、前記第一ソフトウェアから第二ソフトウェアに処理を移すとしてもよい。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)やLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
(12)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
(14)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
20 メモリカード
30 コンパイル装置
40 コンパイル装置
101 デバッガI/F
102 CPU
103 MMU
104 割込コントローラ
105 入力部
106 表示部
107 メモリ
108 入出力部
109 バッファ
110 符号処理部
111 D/A変換部
112 無線通信制御部
113 スピーカ
114 マイク
115 通信部
116 アンテナ
117 バス
120 通常領域
122 入出力部
130 セキュア領域
132 セキュア処理部
201 IPLプログラム
202 セキュアプログラム
210 OSプログラム
211 ノンセキュアプログラム
212 セキュアプログラム呼出部
213 切替デバイスドライバ
310 OS依存コンパイル部
320 OS依存リンク部
330 形式変換部
350 情報記憶部
410 OS非依存コンパイル部
420 OS非依存リンク部
430 形式変換部
450 情報記憶部
Claims (13)
- コンピュータシステムであって、
基本プログラム、通常プログラム及びセキュアプログラムに含まれている各命令を読み出し、解読し、その解読結果に応じて動作するプロセッサと、
管理領域及び前記管理領域とは異なる管理外領域から構成されるメモリ手段とを備え、
前記基本プログラムは、オペレーティングシステムを構成し、前記通常プログラムに対して前記管理領域のみをアクセス空間とするアクセスを仲介する命令を含み、
前記通常プログラムは、前記基本プログラムを介して、前記管理領域にアクセスする命令を含み、
前記セキュアプログラムは、オペレーティングシステムに依存しないプログラムであり、前記管理外領域のみをアクセス空間としてアクセスする命令を含む
ことを特徴とするコンピュータシステム。 - 前記管理領域は、さらに、前記基本プログラム及び前記通常プログラムを記憶しており、
前記管理外領域は、さらに、前記セキュアプログラムを記憶しており、
前記プロセッサは、前記管理領域に記憶されている前記基本プログラム、前記通常プログラムに含まれている各命令を読み出し、前記管理外領域に記憶されている前記セキュアプログラムに含まれている各命令を読み出す
ことを特徴とする請求項1に記載のコンピュータシステム。 - 前記セキュアプログラムは、前記管理外領域において格納される秘匿すべき情報に関する秘匿処理を行う命令を含む
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記管理領域は、さらに、基本プログラムの指示により、基本プログラムからセキュアプログラムへの実行の切替えを行う命令を含む切替プログラムを記憶しており、
前記プロセッサは、さらに、前記管理領域に記憶されている前記切替プログラムに含まれている命令を読み出し、解読し、その解読結果に応じて動作し、
前記基本プログラムは、さらに、前記切替プログラムに対して、セキュアプログラムへの切替を指示する命令を含み、
前記セキュアプログラムは、さらに、前記秘匿処理の終了後、セキュアプログラムから基本プログラムへの実行の切替えを行う命令を含む
ことを特徴とする請求項3に記載のコンピュータシステム。 - 前記切替プログラムは、セキュアプログラムから基本プログラムへの実行の切替えの際に、スタックポインタの設定を基本プログラムが利用するものに戻す命令を含み、セキュアプログラムから基本プログラムへの実行の切替えの際に、スタックポインタの設定をセキュアプログラムが利用するものに戻す命令を含む
ことを特徴とする請求項4に記載のコンピュータシステム。 - 前記セキュアプログラムは、難読化が施されている
ことを特徴とする請求項3に記載のコンピュータシステム。 - 前記セキュアプログラムは、初期化処理を必要とし、初期化処理は、複数のプログラムにより行われる
ことを特徴とする請求項3に記載のコンピュータシステム。 - 前記複数の初期化プログラムは、前記セキュアプログラムによる前記秘匿処理に先行して実行される
ことを特徴とする請求項7に記載のコンピュータシステム。 - 前記複数の初期化プログラムのうちの一部の初期化プログラムは、他の初期プログラムとは異なる時期において、実行される
ことを特徴とする請求項8に記載のコンピュータシステム。 - 一部の初期化プログラムは、当該コンピュータシステムのリセットの直後において実行され、
セキュアプログラムに含まれる初期化プログラムは、セキュアプログラムの実行が要求された時に、実行される
ことを特徴とする請求項9に記載のコンピュータシステム。 - 集積回路であって、
基本プログラム、通常プログラム及びセキュアプログラムに含まれている各命令を読み出し、解読し、その解読結果に応じて動作するプロセッサと、
管理領域及び前記管理領域とは異なる管理外領域から構成されるメモリ手段とを備え、
前記基本プログラムは、オペレーティングシステムを構成し、前記通常プログラムに対して前記管理領域のみをアクセス空間とするアクセスを仲介する命令を含み、
前記通常プログラムは、前記基本プログラムを介して、前記管理領域にアクセスする命令を含み、
前記セキュアプログラムは、オペレーティングシステムに依存しないプログラムであり、前記管理外領域のみをアクセス空間としてアクセスする命令を含む
ことを特徴とする集積回路。 - プログラム生成装置であって、
オペレーティングシステムを構成するソースコードから、実行対象の装置が有する管理領域にのみアクセスする第1オブジェクトを生成する第1オブジェクト生成部と、
秘匿情報を使う処理のソースコードから、前記実行対象の装置が有し、前記管理領域とは異なる管理外領域にのみアクセスする第2オブジェクトを生成する第2オブジェクト生成部と
を備えることを特徴とするプログラム生成装置。 - 基本プログラム及びセキュアプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記基本プログラムは、オペレーティングシステムを構成し、前記オペレーティングシステムの管理下で動作する通常プログラムに対して、実行対象の装置が有する管理領域のみをアクセス空間とするアクセスを仲介する命令を含み、
前記セキュアプログラムは、オペレーティングシステムに依存しないプログラムであり、前記実行対象の装置が有し、前記管理領域とは異なる管理外領域のみをアクセス空間としてアクセスする命令を含む
ことを特徴とする記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007518997A JP4850830B2 (ja) | 2005-06-01 | 2006-05-30 | コンピュータシステム及びプログラム生成装置 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005161359 | 2005-06-01 | ||
JP2005161359 | 2005-06-01 | ||
PCT/JP2006/310744 WO2006129641A1 (ja) | 2005-06-01 | 2006-05-30 | コンピュータシステム及びプログラム生成装置 |
JP2007518997A JP4850830B2 (ja) | 2005-06-01 | 2006-05-30 | コンピュータシステム及びプログラム生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2006129641A1 true JPWO2006129641A1 (ja) | 2009-01-08 |
JP4850830B2 JP4850830B2 (ja) | 2012-01-11 |
Family
ID=37481570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007518997A Active JP4850830B2 (ja) | 2005-06-01 | 2006-05-30 | コンピュータシステム及びプログラム生成装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7962746B2 (ja) |
EP (1) | EP1890237A1 (ja) |
JP (1) | JP4850830B2 (ja) |
KR (1) | KR20080014786A (ja) |
CN (1) | CN101189586B (ja) |
WO (1) | WO2006129641A1 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861046B2 (en) * | 2007-06-29 | 2010-12-28 | Sandisk Corporation | Secure digital host sector application flag compression |
JP2009070327A (ja) * | 2007-09-18 | 2009-04-02 | Panasonic Corp | 情報端末及び情報端末の制御方法 |
US8775824B2 (en) * | 2008-01-02 | 2014-07-08 | Arm Limited | Protecting the security of secure data sent from a central processor for processing by a further processing device |
JP4953385B2 (ja) * | 2008-03-17 | 2012-06-13 | 株式会社日立ソリューションズ | アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置 |
US9086913B2 (en) * | 2008-12-31 | 2015-07-21 | Intel Corporation | Processor extensions for execution of secure embedded containers |
US9207968B2 (en) * | 2009-11-03 | 2015-12-08 | Mediatek Inc. | Computing system using single operating system to provide normal security services and high security services, and methods thereof |
US20120079278A1 (en) * | 2010-09-28 | 2012-03-29 | Microsoft Corporation | Object security over network |
US8910307B2 (en) | 2012-05-10 | 2014-12-09 | Qualcomm Incorporated | Hardware enforced output security settings |
GB2515047B (en) | 2013-06-12 | 2021-02-10 | Advanced Risc Mach Ltd | Security protection of software libraries in a data processing apparatus |
CN103365687B (zh) * | 2013-06-28 | 2017-02-08 | 北京创毅讯联科技股份有限公司 | 处理器启动方法、装置及提供初始程序装入程序的装置 |
US10754967B1 (en) * | 2014-12-15 | 2020-08-25 | Marvell Asia Pte, Ltd. | Secure interrupt handling between security zones |
KR102000861B1 (ko) * | 2015-01-27 | 2019-07-16 | 애리스 엔터프라이지즈 엘엘씨 | 스트리밍 미디어 및 다른 데이터 흐름들의 보호를 위한 난독화 |
CN108416209B (zh) * | 2018-03-07 | 2021-10-22 | 北京元心科技有限公司 | 程序安全验证方法、装置及终端设备 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0290330A (ja) * | 1988-09-28 | 1990-03-29 | Hitachi Ltd | プログラム構成方式 |
US5522072A (en) * | 1990-09-04 | 1996-05-28 | At&T Corp. | Arrangement for efficiently transferring program execution between subprograms |
US5303378A (en) * | 1991-05-21 | 1994-04-12 | Compaq Computer Corporation | Reentrant protected mode kernel using virtual 8086 mode interrupt service routines |
US5826057A (en) * | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
US5892899A (en) * | 1996-06-13 | 1999-04-06 | Intel Corporation | Tamper resistant methods and apparatus |
US5757919A (en) * | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
US6393569B1 (en) * | 1996-12-18 | 2002-05-21 | Alexander S. Orenshteyn | Secured system for accessing application services from a remote station |
JP3718578B2 (ja) | 1997-06-25 | 2005-11-24 | ソニー株式会社 | メモリ管理方法及びメモリ管理装置 |
US6269409B1 (en) * | 1997-09-02 | 2001-07-31 | Lsi Logic Corporation | Method and apparatus for concurrent execution of operating systems |
US6772419B1 (en) * | 1997-09-12 | 2004-08-03 | Hitachi, Ltd. | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS |
US6996828B1 (en) * | 1997-09-12 | 2006-02-07 | Hitachi, Ltd. | Multi-OS configuration method |
US6385727B1 (en) * | 1998-09-25 | 2002-05-07 | Hughes Electronics Corporation | Apparatus for providing a secure processing environment |
US7140015B1 (en) * | 1999-09-29 | 2006-11-21 | Network Appliance, Inc. | Microkernel for real time applications |
JP2001290665A (ja) * | 2000-04-11 | 2001-10-19 | Nec Software Hokuriku Ltd | プロセッサシステム |
AU2001247941B2 (en) * | 2000-04-11 | 2007-09-06 | Mathis, Richard M. | Method and apparatus for computer memory protection and verification |
US6889378B2 (en) * | 2000-07-24 | 2005-05-03 | Sony Corporation | Information processing method, inter-task communication method, and computer-executable program for the same |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
JP2002251326A (ja) * | 2001-02-22 | 2002-09-06 | Hitachi Ltd | 耐タンパ計算機システム |
JP2002353960A (ja) * | 2001-05-30 | 2002-12-06 | Fujitsu Ltd | コード実行装置およびコード配布方法 |
US7272832B2 (en) * | 2001-10-25 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform |
JP2003280754A (ja) * | 2002-03-25 | 2003-10-02 | Nec Corp | 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム |
JP2003280755A (ja) * | 2002-03-25 | 2003-10-02 | Nec Corp | 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム |
US7313797B2 (en) * | 2002-09-18 | 2007-12-25 | Wind River Systems, Inc. | Uniprocessor operating system design facilitating fast context switching |
GB2395583B (en) * | 2002-11-18 | 2005-11-30 | Advanced Risc Mach Ltd | Diagnostic data capture control for multi-domain processors |
KR100941104B1 (ko) * | 2002-11-18 | 2010-02-10 | 에이알엠 리미티드 | 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체 |
GB2411254B (en) * | 2002-11-18 | 2006-06-28 | Advanced Risc Mach Ltd | Monitoring control for multi-domain processors |
KR101099463B1 (ko) * | 2002-11-18 | 2011-12-28 | 에이알엠 리미티드 | 보안 도메인과 비보안 도메인을 갖는 시스템 내에서 가상메모리 어드레스의 물리적 메모리 어드레스로의 매핑 |
US7383587B2 (en) * | 2002-11-18 | 2008-06-03 | Arm Limited | Exception handling control in a secure processing system |
AU2003278342A1 (en) * | 2002-11-18 | 2004-06-15 | Arm Limited | Security mode switching via an exception vector |
DE60308215T2 (de) * | 2002-11-18 | 2007-08-23 | Arm Ltd., Cherry Hinton | Prozessorschaltung zwischen sicheren und nicht sicheren modi |
GB2396930B (en) * | 2002-11-18 | 2005-09-07 | Advanced Risc Mach Ltd | Apparatus and method for managing access to a memory |
GB2396451B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Delivering data processing requests to a suspended operating system |
GB0226874D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
US7539853B2 (en) * | 2002-11-18 | 2009-05-26 | Arm Limited | Handling interrupts in data processing of data in which only a portion of a function has been processed |
US7370210B2 (en) * | 2002-11-18 | 2008-05-06 | Arm Limited | Apparatus and method for managing processor configuration data |
GB2411027B (en) * | 2002-11-18 | 2006-03-15 | Advanced Risc Mach Ltd | Control of access to a memory by a device |
US7231476B2 (en) * | 2002-11-18 | 2007-06-12 | Arm Limited | Function control for a processor |
GB2396034B (en) * | 2002-11-18 | 2006-03-08 | Advanced Risc Mach Ltd | Technique for accessing memory in a data processing apparatus |
US7171539B2 (en) * | 2002-11-18 | 2007-01-30 | Arm Limited | Apparatus and method for controlling access to a memory |
GB2396712B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Handling multiple interrupts in a data processing system utilising multiple operating systems |
US7117284B2 (en) * | 2002-11-18 | 2006-10-03 | Arm Limited | Vectored interrupt control within a system having a secure domain and a non-secure domain |
GB2396713B (en) * | 2002-11-18 | 2005-09-14 | Advanced Risc Mach Ltd | Apparatus and method for controlling access to a memory unit |
US7149862B2 (en) * | 2002-11-18 | 2006-12-12 | Arm Limited | Access control in a data processing apparatus |
US20040168078A1 (en) * | 2002-12-04 | 2004-08-26 | Brodley Carla E. | Apparatus, system and method for protecting function return address |
JP4347582B2 (ja) * | 2003-02-04 | 2009-10-21 | パナソニック株式会社 | 情報処理装置 |
US7401335B2 (en) * | 2003-02-28 | 2008-07-15 | Wind River Systems, Inc. | Single stack kernel |
US20040243783A1 (en) * | 2003-05-30 | 2004-12-02 | Zhimin Ding | Method and apparatus for multi-mode operation in a semiconductor circuit |
US7415618B2 (en) * | 2003-09-25 | 2008-08-19 | Sun Microsystems, Inc. | Permutation of opcode values for application program obfuscation |
KR20070005917A (ko) * | 2003-09-30 | 2007-01-10 | 쟈루나 에스에이 | 운영체제 |
WO2005052769A1 (ja) * | 2003-11-28 | 2005-06-09 | Matsushita Electric Industrial Co.,Ltd. | データ処理装置 |
JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
FR2872933B1 (fr) * | 2004-07-06 | 2008-01-25 | Trusted Logic Sa | Procede de partage de temps d'un processeur |
EP2296089B1 (en) * | 2004-08-18 | 2019-07-03 | Red Bend Software | Operating systems |
US7568186B2 (en) * | 2005-06-07 | 2009-07-28 | International Business Machines Corporation | Employing a mirror probe handler for seamless access to arguments of a probed function |
US7797681B2 (en) * | 2006-05-11 | 2010-09-14 | Arm Limited | Stack memory selection upon exception in a data processing system |
-
2006
- 2006-05-30 JP JP2007518997A patent/JP4850830B2/ja active Active
- 2006-05-30 CN CN2006800191820A patent/CN101189586B/zh not_active Expired - Fee Related
- 2006-05-30 WO PCT/JP2006/310744 patent/WO2006129641A1/ja active Application Filing
- 2006-05-30 US US11/915,198 patent/US7962746B2/en active Active
- 2006-05-30 KR KR1020077027157A patent/KR20080014786A/ko not_active Application Discontinuation
- 2006-05-30 EP EP06756740A patent/EP1890237A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CN101189586B (zh) | 2011-06-15 |
US7962746B2 (en) | 2011-06-14 |
WO2006129641A1 (ja) | 2006-12-07 |
CN101189586A (zh) | 2008-05-28 |
EP1890237A1 (en) | 2008-02-20 |
US20090106832A1 (en) | 2009-04-23 |
JP4850830B2 (ja) | 2012-01-11 |
KR20080014786A (ko) | 2008-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4850830B2 (ja) | コンピュータシステム及びプログラム生成装置 | |
JP6815385B2 (ja) | アプリケーションのコード難読化のためのシステムおよび方法 | |
JP5175856B2 (ja) | セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法 | |
JP5821034B2 (ja) | 情報処理装置、仮想マシン生成方法及びアプリ配信システム | |
JP5828081B2 (ja) | 情報処理装置、情報処理方法、及びプログラム配信システム | |
US7107459B2 (en) | Secure CPU and memory management unit with cryptographic extensions | |
US7690023B2 (en) | Software safety execution system | |
US6996710B1 (en) | Platform and method for issuing and certifying a hardware-protected attestation key | |
US8307215B2 (en) | System and method for an autonomous software protection device | |
WO2005098570A1 (ja) | 実行装置 | |
US7908450B2 (en) | Memory management unit, code verifying apparatus, and code decrypting apparatus | |
WO2006009081A1 (ja) | アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法 | |
WO2007011001A1 (ja) | 実行装置 | |
JP4551231B2 (ja) | プログラム実行保護システム、プログラム実行保護方法 | |
JP2005216027A (ja) | 暗号化装置及びこれを備えた暗号化システム並びに復号化装置及びこれを備えた半導体システム | |
JP6696352B2 (ja) | プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラム | |
WO2023041462A1 (en) | Storing diagnostic state of secure virtual machines | |
JP4507569B2 (ja) | 情報処理装置および情報処理方法、プログラム、並びに記録媒体 | |
JP2004272594A (ja) | データ利用装置及びデータ利用方法、並びにコンピュータ・プログラム | |
JP2008310678A (ja) | 記憶装置、情報機器、及びコンテンツ変換方法 | |
TWI791995B (zh) | 軟體保護方法及其系統 | |
JP2023065323A (ja) | コンピュータに実装された方法、システム及びコンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110705 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110831 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110927 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20111019 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4850830 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20141028 Year of fee payment: 3 |